@hxa-rn/react-native-gcanvas 6.0.24-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1280) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +207 -0
  4. package/harmony/gcanvas/LICENSE +21 -0
  5. package/harmony/gcanvas/NOTICE +33 -0
  6. package/harmony/gcanvas/OAT.xml +38 -0
  7. package/harmony/gcanvas/build-profile.json5 +16 -0
  8. package/harmony/gcanvas/consumer-rules.txt +0 -0
  9. package/harmony/gcanvas/hvigorfile.ts +2 -0
  10. package/harmony/gcanvas/index.ets +1 -0
  11. package/harmony/gcanvas/oh-package.json5 +14 -0
  12. package/harmony/gcanvas/src/main/cpp/CMakeLists.txt +126 -0
  13. package/harmony/gcanvas/src/main/cpp/GCanvasEngine.cpp +665 -0
  14. package/harmony/gcanvas/src/main/cpp/GCanvasEngine.h +123 -0
  15. package/harmony/gcanvas/src/main/cpp/GCanvasNapi.cpp +485 -0
  16. package/harmony/gcanvas/src/main/cpp/GCanvasXComponent.cpp +166 -0
  17. package/harmony/gcanvas/src/main/cpp/GcanvasPackage.h +24 -0
  18. package/harmony/gcanvas/src/main/cpp/core/CMakeLists.txt +221 -0
  19. package/harmony/gcanvas/src/main/cpp/core/README.md +1 -0
  20. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/gmanager.cpp +69 -0
  21. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/gmanager.h +34 -0
  22. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/jsc/weexjsc.h +14 -0
  23. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/util/auto_ptr.h +110 -0
  24. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/util/i_delete.h +23 -0
  25. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/util/ref_count.h +34 -0
  26. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/GcanvasWeexOhos.cpp +28 -0
  27. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/GcanvasWeexOhos.h +27 -0
  28. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/grenderer.cpp +677 -0
  29. package/harmony/gcanvas/src/main/cpp/core/harmony/3d/view/grenderer.h +127 -0
  30. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/LICENSE.TXT +46 -0
  31. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/README +107 -0
  32. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftconfig.h +51 -0
  33. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftheader.h +836 -0
  34. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftmodule.h +33 -0
  35. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftoption.h +1030 -0
  36. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/ftstdlib.h +185 -0
  37. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/integer-types.h +250 -0
  38. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/mac-support.h +49 -0
  39. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/config/public-macros.h +138 -0
  40. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/freetype.h +5289 -0
  41. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftadvanc.h +188 -0
  42. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbbox.h +101 -0
  43. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbdf.h +212 -0
  44. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbitmap.h +329 -0
  45. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftbzip2.h +102 -0
  46. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftcache.h +1087 -0
  47. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftchapters.h +168 -0
  48. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftcid.h +167 -0
  49. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftcolor.h +1667 -0
  50. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftdriver.h +1320 -0
  51. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fterrdef.h +283 -0
  52. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fterrors.h +296 -0
  53. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftfntfmt.h +93 -0
  54. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftgasp.h +143 -0
  55. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftglyph.h +750 -0
  56. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftgxval.h +354 -0
  57. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftgzip.h +151 -0
  58. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftimage.h +1289 -0
  59. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftincrem.h +348 -0
  60. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlcdfil.h +323 -0
  61. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlist.h +296 -0
  62. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlogging.h +184 -0
  63. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftlzw.h +100 -0
  64. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmac.h +289 -0
  65. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmm.h +834 -0
  66. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmodapi.h +807 -0
  67. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftmoderr.h +204 -0
  68. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftotval.h +206 -0
  69. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftoutln.h +588 -0
  70. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftparams.h +218 -0
  71. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftpfr.h +179 -0
  72. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftrender.h +244 -0
  73. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsizes.h +159 -0
  74. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsnames.h +272 -0
  75. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftstroke.h +773 -0
  76. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsynth.h +104 -0
  77. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftsystem.h +350 -0
  78. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fttrigon.h +350 -0
  79. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/fttypes.h +617 -0
  80. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ftwinfnt.h +276 -0
  81. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/autohint.h +234 -0
  82. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/cffotypes.h +107 -0
  83. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/cfftypes.h +416 -0
  84. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/compiler-macros.h +343 -0
  85. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftcalc.h +584 -0
  86. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftdebug.h +442 -0
  87. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftdrv.h +289 -0
  88. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftgloadr.h +147 -0
  89. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/fthash.h +135 -0
  90. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftmemory.h +401 -0
  91. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftmmtypes.h +91 -0
  92. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftobjs.h +1232 -0
  93. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftpsprop.h +47 -0
  94. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftrfork.h +245 -0
  95. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftserv.h +495 -0
  96. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftstream.h +570 -0
  97. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/fttrace.h +173 -0
  98. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/ftvalid.h +160 -0
  99. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/psaux.h +1447 -0
  100. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/pshints.h +699 -0
  101. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svbdf.h +66 -0
  102. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svcfftl.h +90 -0
  103. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svcid.h +69 -0
  104. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svfntfmt.h +55 -0
  105. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svgldict.h +72 -0
  106. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svgxval.h +72 -0
  107. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svkern.h +51 -0
  108. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svmetric.h +131 -0
  109. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svmm.h +214 -0
  110. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svotval.h +55 -0
  111. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpfr.h +65 -0
  112. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpostnm.h +65 -0
  113. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svprop.h +66 -0
  114. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpscmap.h +145 -0
  115. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svpsinfo.h +86 -0
  116. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svsfnt.h +88 -0
  117. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svttcmap.h +90 -0
  118. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svtteng.h +53 -0
  119. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svttglyf.h +56 -0
  120. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/services/svwinfnt.h +50 -0
  121. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/sfnt.h +1099 -0
  122. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/svginterface.h +46 -0
  123. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/t1types.h +307 -0
  124. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/tttypes.h +1747 -0
  125. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/internal/wofftypes.h +312 -0
  126. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/otsvg.h +336 -0
  127. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/t1tables.h +735 -0
  128. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/ttnameid.h +1235 -0
  129. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/tttables.h +856 -0
  130. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/freetype/tttags.h +124 -0
  131. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/include/ft2build.h +42 -0
  132. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.c +779 -0
  133. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.cin +39 -0
  134. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.dat +1121 -0
  135. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.h +429 -0
  136. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afblue.hin +146 -0
  137. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afcjk.c +2383 -0
  138. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afcjk.h +141 -0
  139. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afcover.h +105 -0
  140. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afdummy.c +77 -0
  141. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afdummy.h +40 -0
  142. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aferrors.h +42 -0
  143. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afglobal.c +513 -0
  144. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afglobal.h +173 -0
  145. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afhints.c +1796 -0
  146. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afhints.h +467 -0
  147. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afindic.c +157 -0
  148. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afindic.h +41 -0
  149. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aflatin.c +3643 -0
  150. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aflatin.h +194 -0
  151. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afloader.c +706 -0
  152. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afloader.h +91 -0
  153. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afmodule.c +527 -0
  154. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afmodule.h +55 -0
  155. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afranges.c +1072 -0
  156. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afranges.h +47 -0
  157. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afscript.h +408 -0
  158. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afshaper.c +690 -0
  159. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afshaper.h +71 -0
  160. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afstyles.h +487 -0
  161. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/aftypes.h +511 -0
  162. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afws-decl.h +33 -0
  163. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/afws-iter.h +31 -0
  164. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/autofit.c +35 -0
  165. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/ft-hb.c +115 -0
  166. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/ft-hb.h +48 -0
  167. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/module.mk +23 -0
  168. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/autofit/rules.mk +88 -0
  169. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftadvanc.c +174 -0
  170. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbase.c +41 -0
  171. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbase.h +82 -0
  172. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbbox.c +542 -0
  173. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbdf.c +90 -0
  174. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftbitmap.c +1144 -0
  175. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftcalc.c +1126 -0
  176. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftcid.c +117 -0
  177. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftcolor.c +156 -0
  178. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftdbgmem.c +971 -0
  179. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftdebug.c +644 -0
  180. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fterrors.c +45 -0
  181. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftfntfmt.c +54 -0
  182. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftfstype.c +61 -0
  183. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftgasp.c +60 -0
  184. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftgloadr.c +383 -0
  185. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftglyph.c +911 -0
  186. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftgxval.c +141 -0
  187. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fthash.c +338 -0
  188. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftinit.c +263 -0
  189. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftlcdfil.c +437 -0
  190. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftmac.c +1099 -0
  191. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftmm.c +704 -0
  192. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftobjs.c +5917 -0
  193. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftotval.c +90 -0
  194. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftoutln.c +1120 -0
  195. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftpatent.c +50 -0
  196. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftpfr.c +152 -0
  197. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftpsprop.c +284 -0
  198. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftrfork.c +934 -0
  199. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftsnames.c +185 -0
  200. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftstream.c +872 -0
  201. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftstroke.c +2403 -0
  202. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftsynth.c +180 -0
  203. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftsystem.c +338 -0
  204. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fttrigon.c +517 -0
  205. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/fttype1.c +126 -0
  206. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftutil.c +442 -0
  207. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftver.rc +61 -0
  208. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/ftwinfnt.c +52 -0
  209. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/md5.c +291 -0
  210. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/md5.h +45 -0
  211. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/base/rules.mk +108 -0
  212. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/README +152 -0
  213. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdf.c +34 -0
  214. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdf.h +253 -0
  215. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdfdrivr.c +1013 -0
  216. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdfdrivr.h +72 -0
  217. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdferror.h +45 -0
  218. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/bdflib.c +2378 -0
  219. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/module.mk +34 -0
  220. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bdf/rules.mk +84 -0
  221. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bzip2/ftbzip2.c +535 -0
  222. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/bzip2/rules.mk +64 -0
  223. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcache.c +31 -0
  224. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcbasic.c +598 -0
  225. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccache.c +584 -0
  226. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccache.h +359 -0
  227. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccback.h +85 -0
  228. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftccmap.c +323 -0
  229. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcerror.h +42 -0
  230. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcglyph.c +204 -0
  231. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcglyph.h +314 -0
  232. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcimage.c +158 -0
  233. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcimage.h +106 -0
  234. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmanag.c +677 -0
  235. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmanag.h +175 -0
  236. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmru.c +341 -0
  237. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcmru.h +242 -0
  238. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcsbits.c +413 -0
  239. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/ftcsbits.h +91 -0
  240. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cache/rules.mk +85 -0
  241. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cff.c +28 -0
  242. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffcmap.c +230 -0
  243. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffcmap.h +67 -0
  244. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffdrivr.c +1263 -0
  245. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffdrivr.h +35 -0
  246. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cfferrs.h +42 -0
  247. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffgload.c +762 -0
  248. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffgload.h +62 -0
  249. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffload.c +2570 -0
  250. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffload.h +124 -0
  251. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffobjs.c +1175 -0
  252. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffobjs.h +84 -0
  253. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffparse.c +1550 -0
  254. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cffparse.h +144 -0
  255. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/cfftoken.h +150 -0
  256. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/module.mk +23 -0
  257. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cff/rules.mk +75 -0
  258. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/ciderrs.h +41 -0
  259. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidgload.c +618 -0
  260. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidgload.h +58 -0
  261. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidload.c +937 -0
  262. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidload.h +52 -0
  263. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidobjs.c +543 -0
  264. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidobjs.h +154 -0
  265. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidparse.c +311 -0
  266. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidparse.h +130 -0
  267. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidriver.c +274 -0
  268. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidriver.h +36 -0
  269. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/cidtoken.h +115 -0
  270. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/module.mk +23 -0
  271. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/rules.mk +73 -0
  272. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/cid/type1cid.c +28 -0
  273. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/dlg/dlgwrap.c +32 -0
  274. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/dlg/rules.mk +70 -0
  275. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/README +532 -0
  276. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvalid.c +46 -0
  277. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvalid.h +107 -0
  278. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvbsln.c +334 -0
  279. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvcommn.c +1747 -0
  280. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvcommn.h +581 -0
  281. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxverror.h +51 -0
  282. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvfeat.c +339 -0
  283. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvfeat.h +173 -0
  284. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvfgen.c +484 -0
  285. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvjust.c +721 -0
  286. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvkern.c +920 -0
  287. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvlcar.c +224 -0
  288. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmod.c +288 -0
  289. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmod.h +46 -0
  290. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort.c +301 -0
  291. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort.h +99 -0
  292. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort0.c +152 -0
  293. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort1.c +260 -0
  294. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort2.c +312 -0
  295. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort4.c +126 -0
  296. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmort5.c +234 -0
  297. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx.c +199 -0
  298. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx.h +73 -0
  299. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx0.c +112 -0
  300. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx1.c +278 -0
  301. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx2.c +331 -0
  302. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx4.c +56 -0
  303. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvmorx5.c +226 -0
  304. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvopbd.c +218 -0
  305. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvprop.c +330 -0
  306. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/gxvtrak.c +288 -0
  307. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/module.mk +23 -0
  308. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gxvalid/rules.mk +98 -0
  309. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/README.freetype +22 -0
  310. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/adler32.c +168 -0
  311. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/crc32.c +1061 -0
  312. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/crc32.h +9446 -0
  313. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/ftgzip.c +805 -0
  314. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/ftzconf.h +551 -0
  315. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/gzguts.h +218 -0
  316. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inffast.c +320 -0
  317. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inffast.h +11 -0
  318. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inffixed.h +94 -0
  319. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inflate.c +1534 -0
  320. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inflate.h +131 -0
  321. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inftrees.c +299 -0
  322. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/inftrees.h +67 -0
  323. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/patches/freetype-zlib.diff +451 -0
  324. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/rules.mk +81 -0
  325. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/zlib.h +1972 -0
  326. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/zutil.c +305 -0
  327. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/gzip/zutil.h +281 -0
  328. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/ftlzw.c +415 -0
  329. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/ftzopen.c +429 -0
  330. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/ftzopen.h +174 -0
  331. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/lzw/rules.mk +72 -0
  332. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/module.mk +23 -0
  333. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvalid.c +31 -0
  334. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvalid.h +77 -0
  335. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvbase.c +345 -0
  336. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvcommn.c +1099 -0
  337. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvcommn.h +468 -0
  338. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otverror.h +42 -0
  339. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgdef.c +303 -0
  340. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgpos.c +1051 -0
  341. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgpos.h +36 -0
  342. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvgsub.c +627 -0
  343. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvjstf.c +259 -0
  344. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvmath.c +453 -0
  345. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvmod.c +281 -0
  346. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/otvmod.h +38 -0
  347. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/otvalid/rules.mk +81 -0
  348. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/README +96 -0
  349. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/module.mk +34 -0
  350. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcf.c +35 -0
  351. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcf.h +251 -0
  352. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfdrivr.c +836 -0
  353. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfdrivr.h +44 -0
  354. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcferror.h +41 -0
  355. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfread.c +1731 -0
  356. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfread.h +44 -0
  357. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfutil.c +119 -0
  358. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/pcfutil.h +55 -0
  359. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pcf/rules.mk +82 -0
  360. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/module.mk +23 -0
  361. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfr.c +29 -0
  362. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrcmap.c +188 -0
  363. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrcmap.h +45 -0
  364. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrdrivr.c +212 -0
  365. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrdrivr.h +36 -0
  366. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrerror.h +41 -0
  367. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrgload.c +849 -0
  368. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrgload.h +49 -0
  369. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrload.c +1062 -0
  370. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrload.h +123 -0
  371. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrobjs.c +603 -0
  372. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrobjs.h +96 -0
  373. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrsbit.c +813 -0
  374. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrsbit.h +37 -0
  375. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/pfrtypes.h +331 -0
  376. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pfr/rules.mk +76 -0
  377. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/afmparse.c +1094 -0
  378. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/afmparse.h +88 -0
  379. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/cffdecode.c +2411 -0
  380. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/cffdecode.h +63 -0
  381. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/module.mk +23 -0
  382. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psarrst.c +240 -0
  383. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psarrst.h +99 -0
  384. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psaux.c +40 -0
  385. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psauxerr.h +42 -0
  386. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psauxmod.c +190 -0
  387. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psauxmod.h +60 -0
  388. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psblues.c +571 -0
  389. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psblues.h +185 -0
  390. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psconv.c +610 -0
  391. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psconv.h +70 -0
  392. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pserror.c +52 -0
  393. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pserror.h +120 -0
  394. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psfixed.h +94 -0
  395. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psfont.c +566 -0
  396. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psfont.h +134 -0
  397. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psft.c +895 -0
  398. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psft.h +167 -0
  399. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psglue.h +144 -0
  400. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pshints.c +1952 -0
  401. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pshints.h +288 -0
  402. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psintrp.c +3050 -0
  403. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psintrp.h +83 -0
  404. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psobjs.c +2560 -0
  405. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psobjs.h +312 -0
  406. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psread.c +112 -0
  407. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psread.h +68 -0
  408. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psstack.c +329 -0
  409. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/psstack.h +122 -0
  410. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/pstypes.h +77 -0
  411. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/rules.mk +89 -0
  412. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1cmap.c +393 -0
  413. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1cmap.h +104 -0
  414. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1decode.c +2159 -0
  415. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psaux/t1decode.h +73 -0
  416. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/module.mk +23 -0
  417. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshalgo.c +2191 -0
  418. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshalgo.h +233 -0
  419. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshglob.c +795 -0
  420. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshglob.h +196 -0
  421. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshinter.c +27 -0
  422. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshmod.c +125 -0
  423. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshmod.h +38 -0
  424. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshnterr.h +41 -0
  425. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshrec.c +1224 -0
  426. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/pshrec.h +171 -0
  427. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/pshinter/rules.mk +75 -0
  428. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/module.mk +23 -0
  429. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psmodule.c +621 -0
  430. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psmodule.h +37 -0
  431. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psnamerr.h +42 -0
  432. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/psnames.c +24 -0
  433. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/pstables.h +4238 -0
  434. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/psnames/rules.mk +73 -0
  435. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftmisc.h +118 -0
  436. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftraster.c +2738 -0
  437. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftraster.h +47 -0
  438. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftrend1.c +209 -0
  439. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/ftrend1.h +37 -0
  440. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/module.mk +23 -0
  441. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/raster.c +25 -0
  442. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/rasterrs.h +42 -0
  443. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/raster/rules.mk +72 -0
  444. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftbsdf.c +1350 -0
  445. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdf.c +3932 -0
  446. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdf.h +97 -0
  447. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfcommon.c +104 -0
  448. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfcommon.h +140 -0
  449. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdferrs.h +37 -0
  450. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfrend.c +603 -0
  451. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/ftsdfrend.h +118 -0
  452. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/module.mk +29 -0
  453. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/rules.mk +78 -0
  454. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sdf/sdf.c +29 -0
  455. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/module.mk +23 -0
  456. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/pngshim.c +474 -0
  457. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/pngshim.h +50 -0
  458. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/rules.mk +87 -0
  459. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfdriver.c +1384 -0
  460. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfdriver.h +35 -0
  461. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sferrors.h +41 -0
  462. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfnt.c +41 -0
  463. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfobjs.c +1552 -0
  464. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfobjs.h +58 -0
  465. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff.c +426 -0
  466. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff.h +43 -0
  467. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff2.c +2380 -0
  468. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/sfwoff2.h +78 -0
  469. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttbdf.c +257 -0
  470. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttbdf.h +49 -0
  471. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcmap.c +3902 -0
  472. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcmap.h +126 -0
  473. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcmapc.h +56 -0
  474. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcolr.c +1923 -0
  475. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcolr.h +83 -0
  476. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcpal.c +310 -0
  477. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttcpal.h +48 -0
  478. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttgpos.c +598 -0
  479. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttgpos.h +53 -0
  480. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttkern.c +317 -0
  481. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttkern.h +51 -0
  482. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttload.c +1496 -0
  483. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttload.h +111 -0
  484. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttmtx.c +338 -0
  485. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttmtx.h +54 -0
  486. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttpost.c +484 -0
  487. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttpost.h +46 -0
  488. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsbit.c +1685 -0
  489. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsbit.h +62 -0
  490. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsvg.c +413 -0
  491. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/ttsvg.h +43 -0
  492. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/woff2tags.c +119 -0
  493. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/sfnt/woff2tags.h +41 -0
  494. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftgrays.c +2149 -0
  495. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftgrays.h +57 -0
  496. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftsmerrs.h +42 -0
  497. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftsmooth.c +605 -0
  498. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/ftsmooth.h +37 -0
  499. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/module.mk +23 -0
  500. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/rules.mk +73 -0
  501. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/smooth/smooth.c +25 -0
  502. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/ftsvg.c +355 -0
  503. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/ftsvg.h +35 -0
  504. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/module.mk +23 -0
  505. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/rules.mk +70 -0
  506. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/svg.c +24 -0
  507. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/svg/svgtypes.h +42 -0
  508. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/afblue.pl +551 -0
  509. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/apinames.c +556 -0
  510. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/chktrcmp.py +119 -0
  511. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/cordic.py +32 -0
  512. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/ftrandom/Makefile +45 -0
  513. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/ftrandom/README +69 -0
  514. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/ftrandom/ftrandom.c +720 -0
  515. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/glnames.py +5533 -0
  516. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/make_distribution_archives.py +208 -0
  517. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/no-copyright +66 -0
  518. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/test_afm.c +156 -0
  519. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/test_bbox.c +187 -0
  520. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/test_trig.c +257 -0
  521. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/update-copyright +14 -0
  522. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/update-copyright-year +157 -0
  523. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/tools/vms_shorten_symbol.c +250 -0
  524. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/module.mk +23 -0
  525. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/rules.mk +75 -0
  526. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/truetype.c +29 -0
  527. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttdriver.c +704 -0
  528. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttdriver.h +35 -0
  529. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/tterrors.h +42 -0
  530. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgload.c +2740 -0
  531. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgload.h +61 -0
  532. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgxvar.c +4594 -0
  533. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttgxvar.h +453 -0
  534. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttinterp.c +7751 -0
  535. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttinterp.h +465 -0
  536. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttobjs.c +1543 -0
  537. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttobjs.h +426 -0
  538. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttpload.c +665 -0
  539. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/truetype/ttpload.h +74 -0
  540. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/module.mk +23 -0
  541. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/rules.mk +76 -0
  542. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1afm.c +413 -0
  543. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1afm.h +53 -0
  544. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1driver.c +807 -0
  545. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1driver.h +35 -0
  546. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1errors.h +41 -0
  547. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1gload.c +606 -0
  548. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1gload.h +52 -0
  549. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1load.c +2755 -0
  550. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1load.h +126 -0
  551. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1objs.c +655 -0
  552. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1objs.h +160 -0
  553. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1parse.c +487 -0
  554. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1parse.h +137 -0
  555. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/t1tokens.h +143 -0
  556. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type1/type1.c +29 -0
  557. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/module.mk +23 -0
  558. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/rules.mk +73 -0
  559. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42drivr.c +248 -0
  560. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42drivr.h +36 -0
  561. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42error.h +41 -0
  562. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42objs.c +698 -0
  563. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42objs.h +123 -0
  564. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42parse.c +1351 -0
  565. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42parse.h +91 -0
  566. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/t42types.h +56 -0
  567. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/type42/type42.c +26 -0
  568. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/fnterrs.h +42 -0
  569. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/module.mk +23 -0
  570. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/rules.mk +68 -0
  571. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/winfnt.c +1219 -0
  572. package/harmony/gcanvas/src/main/cpp/core/harmony/freetype/src/winfonts/winfnt.h +164 -0
  573. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/.appveyor.yml +69 -0
  574. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/.travis.yml +41 -0
  575. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ANNOUNCE +55 -0
  576. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/AUTHORS +46 -0
  577. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/CHANGES +6111 -0
  578. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/CMakeLists.txt +1042 -0
  579. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/INSTALL +465 -0
  580. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/LICENSE +134 -0
  581. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/Makefile.am +392 -0
  582. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/Makefile.in +2420 -0
  583. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/README +183 -0
  584. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/TODO +23 -0
  585. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/TRADEMARK +8 -0
  586. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/aclocal.m4 +1196 -0
  587. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/arm_init.c +136 -0
  588. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/filter_neon.S +253 -0
  589. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/filter_neon_intrinsics.c +402 -0
  590. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/arm/palette_neon_intrinsics.c +149 -0
  591. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/autogen.sh +225 -0
  592. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ci/ci_autotools.sh +95 -0
  593. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ci/ci_cmake.sh +127 -0
  594. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ci/ci_legacy.sh +116 -0
  595. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/compile +348 -0
  596. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/config.guess +1476 -0
  597. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/config.h.in +126 -0
  598. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/config.sub +1801 -0
  599. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/configure +16116 -0
  600. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/configure.ac +532 -0
  601. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/README.txt +5 -0
  602. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/README +83 -0
  603. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/android-ndk.c +39 -0
  604. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/linux-auxv.c +120 -0
  605. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/arm-neon/linux.c +161 -0
  606. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/README +49 -0
  607. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/pngcp.dfa +57 -0
  608. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/read.dfa +58 -0
  609. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/s_read.dfa +35 -0
  610. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/s_write.dfa +33 -0
  611. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/simple.dfa +36 -0
  612. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/conftest/write.dfa +45 -0
  613. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/README.txt +24 -0
  614. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/iccfrompng.c +185 -0
  615. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/pngpixel.c +371 -0
  616. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/pngtopng.c +98 -0
  617. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/examples/simpleover.c +648 -0
  618. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/COPYING +340 -0
  619. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/LICENSE +50 -0
  620. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.mingw32 +131 -0
  621. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.sgi +105 -0
  622. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.unx +134 -0
  623. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/Makefile.w32 +114 -0
  624. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/README +186 -0
  625. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/makevms.com +132 -0
  626. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng.c +323 -0
  627. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng.h +88 -0
  628. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng2.c +521 -0
  629. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readpng2.h +116 -0
  630. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/readppm.c +188 -0
  631. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng-win.c +735 -0
  632. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng-x.c +911 -0
  633. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng2-win.c +1261 -0
  634. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/rpng2-x.c +2143 -0
  635. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/toucan.png +0 -0
  636. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/wpng.c +865 -0
  637. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/writepng.c +401 -0
  638. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/gregbook/writepng.h +133 -0
  639. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/fakepng.c +65 -0
  640. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/gentests.sh +100 -0
  641. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/makepng.c +1948 -0
  642. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngimage.c +1722 -0
  643. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngstest-errors.h +165 -0
  644. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngstest.c +3832 -0
  645. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngunknown.c +1305 -0
  646. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/pngvalid.c +12279 -0
  647. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/readpng.c +114 -0
  648. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/tarith.c +1011 -0
  649. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/libtests/timepng.c +607 -0
  650. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/mips-msa/README +83 -0
  651. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/mips-msa/linux.c +67 -0
  652. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/Dockerfile +25 -0
  653. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/README.txt +37 -0
  654. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/build.sh +51 -0
  655. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/libpng_read_fuzzer.cc +209 -0
  656. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/libpng_read_fuzzer.options +2 -0
  657. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/oss-fuzz/png.dict +39 -0
  658. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/README +5 -0
  659. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/decoder/README +10 -0
  660. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/decoder/pngusr.dfa +40 -0
  661. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/decoder/pngusr.h +23 -0
  662. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/encoder/README +10 -0
  663. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/encoder/pngusr.dfa +39 -0
  664. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/encoder/pngusr.h +23 -0
  665. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/preader/README +15 -0
  666. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/preader/pngusr.dfa +40 -0
  667. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminim/preader/pngusr.h +23 -0
  668. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/CHANGES.txt +13 -0
  669. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/CMakeLists.txt +34 -0
  670. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/LICENSE.txt +22 -0
  671. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/README.txt +120 -0
  672. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/makevms.com +92 -0
  673. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/png2pnm.bat +41 -0
  674. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/png2pnm.c +427 -0
  675. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/png2pnm.sh +42 -0
  676. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pngminus.bat +4 -0
  677. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pngminus.sh +5 -0
  678. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pnm2png.bat +41 -0
  679. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pnm2png.c +620 -0
  680. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngminus/pnm2png.sh +42 -0
  681. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/README +107 -0
  682. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/bad_interlace_conversions.txt +9 -0
  683. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g01.png +0 -0
  684. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g02.png +0 -0
  685. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g04.png +0 -0
  686. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g08.png +0 -0
  687. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn0g16.png +0 -0
  688. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn2c08.png +0 -0
  689. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn2c16.png +0 -0
  690. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p01.png +0 -0
  691. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p02.png +0 -0
  692. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p04.png +0 -0
  693. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn3p08.png +0 -0
  694. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn4a08.png +0 -0
  695. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn4a16.png +0 -0
  696. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn6a08.png +0 -0
  697. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/basn6a16.png +0 -0
  698. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn0g01.png +0 -0
  699. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn0g02.png +0 -0
  700. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn0g04.png +0 -0
  701. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn2c16.png +0 -0
  702. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbbn3p08.png +0 -0
  703. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbgn2c16.png +0 -0
  704. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbgn3p08.png +0 -0
  705. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbrn2c08.png +0 -0
  706. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbwn0g16.png +0 -0
  707. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbwn3p08.png +0 -0
  708. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftbyn3p08.png +0 -0
  709. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp0n0g08.png +0 -0
  710. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp0n2c08.png +0 -0
  711. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp0n3p08.png +0 -0
  712. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ftp1n3p08.png +0 -0
  713. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn0g08.png +0 -0
  714. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn0g16.png +0 -0
  715. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn2c08.png +0 -0
  716. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn2c16.png +0 -0
  717. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn3p08.png +0 -0
  718. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn4a08.png +0 -0
  719. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn4a16.png +0 -0
  720. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn6a08.png +0 -0
  721. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/ibasn6a16.png +0 -0
  722. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbbn2c16.png +0 -0
  723. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbbn3p08.png +0 -0
  724. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbgn2c16.png +0 -0
  725. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbgn3p08.png +0 -0
  726. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbrn2c08.png +0 -0
  727. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbwn0g16.png +0 -0
  728. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbwn3p08.png +0 -0
  729. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftbyn3p08.png +0 -0
  730. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp0n0g08.png +0 -0
  731. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp0n2c08.png +0 -0
  732. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp0n3p08.png +0 -0
  733. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/iftp1n3p08.png +0 -0
  734. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/README +2 -0
  735. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn0g01.png +0 -0
  736. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn0g02.png +0 -0
  737. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn0g04.png +0 -0
  738. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn3p01.png +0 -0
  739. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn3p02.png +0 -0
  740. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/ibasn3p04.png +0 -0
  741. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/iftbbn0g01.png +0 -0
  742. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/iftbbn0g02.png +0 -0
  743. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/pngsuite/interlaced/iftbbn0g04.png +0 -0
  744. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/powerpc-vsx/README +81 -0
  745. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/powerpc-vsx/linux.c +57 -0
  746. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/powerpc-vsx/linux_aux.c +34 -0
  747. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/bad_iCCP.png +0 -0
  748. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/badadler.png +0 -0
  749. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/badcrc.png +0 -0
  750. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/empty_ancillary_chunks.png +0 -0
  751. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_IDAT.png +0 -0
  752. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_bKGD_chunk.png +0 -0
  753. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_cHRM_chunk.png +0 -0
  754. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_eXIf_chunk.png +0 -0
  755. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_gAMA_chunk.png +0 -0
  756. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_hIST_chunk.png +0 -0
  757. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_iCCP_chunk.png +0 -0
  758. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_iTXt_chunk.png +0 -0
  759. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_juNK_unsafe_to_copy.png +0 -0
  760. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_juNk_safe_to_copy.png +0 -0
  761. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_pCAL_chunk.png +0 -0
  762. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_pHYs_chunk.png +0 -0
  763. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sCAL_chunk.png +0 -0
  764. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sPLT_chunk.png +0 -0
  765. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sRGB_chunk.png +0 -0
  766. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_sTER_chunk.png +0 -0
  767. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_tEXt_chunk.png +0 -0
  768. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_tIME_chunk.png +0 -0
  769. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/crashers/huge_zTXt_chunk.png +0 -0
  770. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-1.8-tRNS.png +0 -0
  771. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-1.8.png +0 -0
  772. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-linear-tRNS.png +0 -0
  773. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-linear.png +0 -0
  774. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-sRGB-tRNS.png +0 -0
  775. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-sRGB.png +0 -0
  776. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1-tRNS.png +0 -0
  777. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-1.png +0 -0
  778. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-1.8-tRNS.png +0 -0
  779. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-1.8.png +0 -0
  780. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-linear-tRNS.png +0 -0
  781. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-linear.png +0 -0
  782. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-sRGB-tRNS.png +0 -0
  783. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-sRGB.png +0 -0
  784. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16-tRNS.png +0 -0
  785. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-16.png +0 -0
  786. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-1.8-tRNS.png +0 -0
  787. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-1.8.png +0 -0
  788. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-linear-tRNS.png +0 -0
  789. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-linear.png +0 -0
  790. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-sRGB-tRNS.png +0 -0
  791. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-sRGB.png +0 -0
  792. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2-tRNS.png +0 -0
  793. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-2.png +0 -0
  794. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-1.8-tRNS.png +0 -0
  795. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-1.8.png +0 -0
  796. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-linear-tRNS.png +0 -0
  797. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-linear.png +0 -0
  798. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-sRGB-tRNS.png +0 -0
  799. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-sRGB.png +0 -0
  800. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4-tRNS.png +0 -0
  801. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-4.png +0 -0
  802. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-1.8-tRNS.png +0 -0
  803. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-1.8.png +0 -0
  804. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-linear-tRNS.png +0 -0
  805. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-linear.png +0 -0
  806. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-sRGB-tRNS.png +0 -0
  807. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-sRGB.png +0 -0
  808. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8-tRNS.png +0 -0
  809. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-8.png +0 -0
  810. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16-1.8.png +0 -0
  811. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16-linear.png +0 -0
  812. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16-sRGB.png +0 -0
  813. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-16.png +0 -0
  814. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8-1.8.png +0 -0
  815. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8-linear.png +0 -0
  816. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8-sRGB.png +0 -0
  817. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/gray-alpha-8.png +0 -0
  818. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/makepngs.sh +94 -0
  819. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-1.8-tRNS.png +0 -0
  820. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-1.8.png +0 -0
  821. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-linear-tRNS.png +0 -0
  822. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-linear.png +0 -0
  823. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-sRGB-tRNS.png +0 -0
  824. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-sRGB.png +0 -0
  825. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1-tRNS.png +0 -0
  826. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-1.png +0 -0
  827. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-1.8-tRNS.png +0 -0
  828. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-1.8.png +0 -0
  829. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-linear-tRNS.png +0 -0
  830. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-linear.png +0 -0
  831. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-sRGB-tRNS.png +0 -0
  832. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-sRGB.png +0 -0
  833. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2-tRNS.png +0 -0
  834. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-2.png +0 -0
  835. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-1.8-tRNS.png +0 -0
  836. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-1.8.png +0 -0
  837. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-linear-tRNS.png +0 -0
  838. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-linear.png +0 -0
  839. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-sRGB-tRNS.png +0 -0
  840. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-sRGB.png +0 -0
  841. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4-tRNS.png +0 -0
  842. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-4.png +0 -0
  843. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-1.8-tRNS.png +0 -0
  844. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-1.8.png +0 -0
  845. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-linear-tRNS.png +0 -0
  846. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-linear.png +0 -0
  847. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-sRGB-tRNS.png +0 -0
  848. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-sRGB.png +0 -0
  849. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8-tRNS.png +0 -0
  850. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/palette-8.png +0 -0
  851. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-1.8-tRNS.png +0 -0
  852. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-1.8.png +0 -0
  853. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-linear-tRNS.png +0 -0
  854. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-linear.png +0 -0
  855. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-sRGB-tRNS.png +0 -0
  856. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-sRGB.png +0 -0
  857. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16-tRNS.png +0 -0
  858. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-16.png +0 -0
  859. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-1.8-tRNS.png +0 -0
  860. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-1.8.png +0 -0
  861. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-linear-tRNS.png +0 -0
  862. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-linear.png +0 -0
  863. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-sRGB-tRNS.png +0 -0
  864. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-sRGB.png +0 -0
  865. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8-tRNS.png +0 -0
  866. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-8.png +0 -0
  867. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16-1.8.png +0 -0
  868. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16-linear.png +0 -0
  869. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16-sRGB.png +0 -0
  870. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-16.png +0 -0
  871. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8-1.8.png +0 -0
  872. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8-linear.png +0 -0
  873. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8-sRGB.png +0 -0
  874. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/testpngs/rgb-alpha-8.png +0 -0
  875. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/README.txt +27 -0
  876. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/checksum-icc.c +102 -0
  877. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/chkfmt +144 -0
  878. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/cvtcolor.c +188 -0
  879. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/genpng.c +881 -0
  880. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/intgamma.sh +110 -0
  881. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/makesRGB.c +430 -0
  882. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/png-fix-itxt.c +164 -0
  883. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/pngcp.c +2453 -0
  884. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/pngfix.c +4049 -0
  885. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/reindent +25 -0
  886. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/tools/sRGB.h +48 -0
  887. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/PngFile.c +454 -0
  888. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/PngFile.h +30 -0
  889. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/README.txt +61 -0
  890. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.c +978 -0
  891. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.dsp +147 -0
  892. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.dsw +29 -0
  893. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.ico +0 -0
  894. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.png +0 -0
  895. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/VisualPng.rc +152 -0
  896. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/cexcept.h +248 -0
  897. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/contrib/visupng/resource.h +23 -0
  898. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/depcomp +791 -0
  899. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/example.c +1041 -0
  900. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/install-sh +518 -0
  901. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/intel/filter_sse2_intrinsics.c +391 -0
  902. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/intel/intel_init.c +52 -0
  903. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng-config.in +127 -0
  904. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng-manual.txt +5409 -0
  905. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng.3 +6052 -0
  906. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpng.pc.in +12 -0
  907. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/libpngpf.3 +24 -0
  908. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/ltmain.sh +11147 -0
  909. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/mips/filter_msa_intrinsics.c +808 -0
  910. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/mips/mips_init.c +130 -0
  911. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/missing +215 -0
  912. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/png.5 +84 -0
  913. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/png.c +4607 -0
  914. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/png.h +3247 -0
  915. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngbar.jpg +0 -0
  916. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngbar.png +0 -0
  917. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngconf.h +623 -0
  918. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngdebug.h +153 -0
  919. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngerror.c +963 -0
  920. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngget.c +1249 -0
  921. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pnginfo.h +267 -0
  922. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pnglibconf.h +219 -0
  923. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngmem.c +284 -0
  924. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngnow.png +0 -0
  925. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngpread.c +1096 -0
  926. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngpriv.h +2152 -0
  927. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngread.c +4225 -0
  928. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngrio.c +120 -0
  929. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngrtran.c +5044 -0
  930. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngrutil.c +4678 -0
  931. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngset.c +1802 -0
  932. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngstruct.h +489 -0
  933. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngtest.c +2158 -0
  934. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngtest.png +0 -0
  935. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngtrans.c +864 -0
  936. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngusr.dfa +14 -0
  937. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwio.c +168 -0
  938. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwrite.c +2390 -0
  939. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwtran.c +575 -0
  940. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/pngwutil.c +2781 -0
  941. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/powerpc/filter_vsx_intrinsics.c +768 -0
  942. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/powerpc/powerpc_init.c +126 -0
  943. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/libpng.tgt +383 -0
  944. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/libpng.wpj +112 -0
  945. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngconfig.mak +160 -0
  946. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngstest.tgt +219 -0
  947. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngtest.tgt +179 -0
  948. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/owatcom/pngvalid.tgt +210 -0
  949. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/PRJ0041.mak +21 -0
  950. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/README.txt +58 -0
  951. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/README_zlib.txt +44 -0
  952. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/libpng.sln +60 -0
  953. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/libpng.vcproj +419 -0
  954. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/pngtest.vcproj +267 -0
  955. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/visualc71/zlib.vcproj +391 -0
  956. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/README.txt +87 -0
  957. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/libpng/libpng.vcxproj +234 -0
  958. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj +61 -0
  959. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/vstudio.sln +109 -0
  960. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/zlib/zlib.vcxproj +175 -0
  961. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/projects/vstudio/zlib.props +57 -0
  962. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/README.txt +83 -0
  963. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/SCOPTIONS.ppc +7 -0
  964. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/checksym.awk +173 -0
  965. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/descrip.mms +47 -0
  966. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/dfn.awk +203 -0
  967. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/genchk.cmake.in +37 -0
  968. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/genout.cmake.in +105 -0
  969. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/gensrc.cmake.in +138 -0
  970. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/intprefix.c +22 -0
  971. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libpng-config-body.in +96 -0
  972. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libpng-config-head.in +24 -0
  973. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libpng.pc.in +10 -0
  974. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/libtool.m4 +8369 -0
  975. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/ltoptions.m4 +437 -0
  976. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/ltsugar.m4 +124 -0
  977. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/ltversion.m4 +23 -0
  978. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/lt~obsolete.m4 +99 -0
  979. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/macro.lst +3 -0
  980. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.32sunu +241 -0
  981. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.64sunu +241 -0
  982. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.acorn +57 -0
  983. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.aix +116 -0
  984. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.amiga +58 -0
  985. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.atari +71 -0
  986. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.bc32 +158 -0
  987. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.beos +222 -0
  988. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.cegcc +116 -0
  989. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.clang +87 -0
  990. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.darwin +222 -0
  991. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.dec +210 -0
  992. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.dj2 +72 -0
  993. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.freebsd +66 -0
  994. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.gcc +87 -0
  995. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.hp64 +228 -0
  996. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.hpgcc +225 -0
  997. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.hpux +226 -0
  998. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.ibmc +90 -0
  999. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.intel +118 -0
  1000. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.linux +240 -0
  1001. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.linux-opt +258 -0
  1002. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.mips +100 -0
  1003. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.msys +199 -0
  1004. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.netbsd +55 -0
  1005. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.openbsd +86 -0
  1006. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sco +223 -0
  1007. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sggcc +233 -0
  1008. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sgi +234 -0
  1009. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.so9 +244 -0
  1010. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.solaris +240 -0
  1011. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.std +133 -0
  1012. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.sunos +112 -0
  1013. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makefile.vcwin32 +112 -0
  1014. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/makevms.com +142 -0
  1015. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/options.awk +898 -0
  1016. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pnglibconf.dfa +920 -0
  1017. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pnglibconf.h.prebuilt +219 -0
  1018. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pnglibconf.mak +55 -0
  1019. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/pngwin.rc +112 -0
  1020. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/prefix.c +24 -0
  1021. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/smakefile.ppc +34 -0
  1022. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/sym.c +15 -0
  1023. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/symbols.c +58 -0
  1024. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/symbols.def +255 -0
  1025. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/test.cmake.in +31 -0
  1026. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/scripts/vers.c +19 -0
  1027. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/test-driver +148 -0
  1028. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngimage-full +2 -0
  1029. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngimage-quick +2 -0
  1030. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-1.8 +2 -0
  1031. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-1.8-alpha +2 -0
  1032. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-linear +2 -0
  1033. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-linear-alpha +2 -0
  1034. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-none +2 -0
  1035. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-none-alpha +2 -0
  1036. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-sRGB +2 -0
  1037. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngstest-sRGB-alpha +2 -0
  1038. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngtest-all +16 -0
  1039. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-IDAT +2 -0
  1040. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-discard +2 -0
  1041. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-if-safe +2 -0
  1042. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-sAPI +2 -0
  1043. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-sTER +2 -0
  1044. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-save +2 -0
  1045. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngunknown-vpAg +2 -0
  1046. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-16-to-8 +2 -0
  1047. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-alpha-mode +2 -0
  1048. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-background +2 -0
  1049. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-expand16-alpha-mode +2 -0
  1050. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-expand16-background +2 -0
  1051. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-expand16-transform +2 -0
  1052. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-sbit +2 -0
  1053. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-threshold +2 -0
  1054. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-gamma-transform +2 -0
  1055. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-progressive-interlace-standard +2 -0
  1056. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-progressive-size +2 -0
  1057. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-progressive-standard +2 -0
  1058. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-standard +2 -0
  1059. package/harmony/gcanvas/src/main/cpp/core/harmony/libpng/tests/pngvalid-transform +2 -0
  1060. package/harmony/gcanvas/src/main/cpp/core/harmony/manager/GCanvasManagerOhos.cpp +50 -0
  1061. package/harmony/gcanvas/src/main/cpp/core/harmony/memory/AutoPtr.h +99 -0
  1062. package/harmony/gcanvas/src/main/cpp/core/harmony/memory/IDelete.h +25 -0
  1063. package/harmony/gcanvas/src/main/cpp/core/harmony/memory/RefCount.h +55 -0
  1064. package/harmony/gcanvas/src/main/cpp/core/harmony/png/IPngCoder.h +38 -0
  1065. package/harmony/gcanvas/src/main/cpp/core/harmony/png/LodePngCoder.cpp +101 -0
  1066. package/harmony/gcanvas/src/main/cpp/core/harmony/png/LodePngCoder.h +40 -0
  1067. package/harmony/gcanvas/src/main/cpp/core/harmony/png/PngLoader.cpp +114 -0
  1068. package/harmony/gcanvas/src/main/cpp/core/harmony/png/PngLoader.h +53 -0
  1069. package/harmony/gcanvas/src/main/cpp/core/harmony/png/thirdparty/lodepng.c +6292 -0
  1070. package/harmony/gcanvas/src/main/cpp/core/harmony/png/thirdparty/lodepng.h +1890 -0
  1071. package/harmony/gcanvas/src/main/cpp/core/src/GCanvas.cpp +89 -0
  1072. package/harmony/gcanvas/src/main/cpp/core/src/GCanvas.hpp +45 -0
  1073. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasManager.cpp +158 -0
  1074. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasManager.h +56 -0
  1075. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasWeex.cpp +1925 -0
  1076. package/harmony/gcanvas/src/main/cpp/core/src/GCanvasWeex.hpp +335 -0
  1077. package/harmony/gcanvas/src/main/cpp/core/src/RNCGCanvasBridge.h +225 -0
  1078. package/harmony/gcanvas/src/main/cpp/core/src/export.h +29 -0
  1079. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvas2dContext.cpp +2366 -0
  1080. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvas2dContext.h +449 -0
  1081. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvasState.cpp +189 -0
  1082. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GCanvasState.h +83 -0
  1083. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GContext2dType.h +68 -0
  1084. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GConvert.cpp +476 -0
  1085. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GConvert.h +25 -0
  1086. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFillStyle.h +191 -0
  1087. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFontManager.h +110 -0
  1088. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFontStyle.cpp +149 -0
  1089. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFontStyle.h +94 -0
  1090. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFrameBufferObject.cpp +226 -0
  1091. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GFrameBufferObject.h +116 -0
  1092. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GGL.h +45 -0
  1093. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GGlyphCache.cpp +106 -0
  1094. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GGlyphCache.h +159 -0
  1095. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GPath.cpp +1213 -0
  1096. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GPath.h +115 -0
  1097. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GPoint.h +117 -0
  1098. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShader.cpp +346 -0
  1099. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShader.h +360 -0
  1100. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShaderManager.cpp +140 -0
  1101. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GShaderManager.h +38 -0
  1102. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GStrSeparator.cpp +84 -0
  1103. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GStrSeparator.h +31 -0
  1104. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTextDefine.h +34 -0
  1105. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTexture.cpp +327 -0
  1106. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTexture.h +133 -0
  1107. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTransform.h +163 -0
  1108. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTreemap.cpp +61 -0
  1109. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GTreemap.h +88 -0
  1110. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GWebglContext.cpp +3259 -0
  1111. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/GWebglContext.h +13 -0
  1112. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/default.glsl +39 -0
  1113. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/grad.glsl +101 -0
  1114. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/pattern.glsl +45 -0
  1115. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/radiation.glsl +110 -0
  1116. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/shadow.glsl +39 -0
  1117. package/harmony/gcanvas/src/main/cpp/core/src/gcanvas/shaders/texture.glsl +34 -0
  1118. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvas2DContextAndroid.cpp +386 -0
  1119. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvas2DContextAndroid.h +113 -0
  1120. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvas2DContextImpl.cpp +67 -0
  1121. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvasAndroid.cpp +41 -0
  1122. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GCanvasAndroid.h +36 -0
  1123. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFont.cpp +806 -0
  1124. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFont.h +164 -0
  1125. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontCache.cpp +467 -0
  1126. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontCache.h +93 -0
  1127. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontFamily.cpp +187 -0
  1128. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontFamily.h +68 -0
  1129. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManager.cpp +205 -0
  1130. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManagerAndroid.cpp +328 -0
  1131. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManagerAndroid.h +63 -0
  1132. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFontManagerImpl.cpp +22 -0
  1133. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GFrameBufferObjectImpl.cpp +180 -0
  1134. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GPreCompiledShaders.cpp +175 -0
  1135. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GPreCompiledShaders.h +75 -0
  1136. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GSystemFontInformation.cpp +231 -0
  1137. package/harmony/gcanvas/src/main/cpp/core/src/platform/Android/GSystemFontInformation.h +69 -0
  1138. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/FontTool.hpp +892 -0
  1139. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFont.cpp +742 -0
  1140. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFontCache.cpp +296 -0
  1141. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFontFamily.cpp +162 -0
  1142. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GFontManager.cpp +230 -0
  1143. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/GSystemFontInformation.cpp +232 -0
  1144. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/PortableMap.hpp +621 -0
  1145. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/argh.h +434 -0
  1146. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/fonttool.cpp +109 -0
  1147. package/harmony/gcanvas/src/main/cpp/core/src/platform/Linux/utils.hpp +229 -0
  1148. package/harmony/gcanvas/src/main/cpp/core/src/platform/iOS/GCVFont.h +126 -0
  1149. package/harmony/gcanvas/src/main/cpp/core/src/platform/iOS/GCVFont.mm +573 -0
  1150. package/harmony/gcanvas/src/main/cpp/core/src/platform/iOS/GFontManager.mm +185 -0
  1151. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvas2DContextHarmony.cpp +391 -0
  1152. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvas2DContextHarmony.h +114 -0
  1153. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvas2DContextOHOS.cpp +49 -0
  1154. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvasHarmony.cpp +42 -0
  1155. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GCanvasHarmony.h +37 -0
  1156. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFont.cpp +806 -0
  1157. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFont.h +164 -0
  1158. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontCache.cpp +466 -0
  1159. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontCache.h +94 -0
  1160. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontFamily.cpp +188 -0
  1161. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontFamily.h +69 -0
  1162. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontManagerHarmony.cpp +329 -0
  1163. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontManagerHarmony.h +64 -0
  1164. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFontManagerImpl.cpp +23 -0
  1165. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GFrameBufferObjectImpl.cpp +221 -0
  1166. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GPreCompiledShaders.cpp +176 -0
  1167. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GPreCompiledShaders.h +76 -0
  1168. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GSystemFontInformation.cpp +232 -0
  1169. package/harmony/gcanvas/src/main/cpp/core/src/platform/ohos/GSystemFontInformation.h +70 -0
  1170. package/harmony/gcanvas/src/main/cpp/core/src/support/CharacterSet.cpp +126 -0
  1171. package/harmony/gcanvas/src/main/cpp/core/src/support/CharacterSet.h +30 -0
  1172. package/harmony/gcanvas/src/main/cpp/core/src/support/ConcurrenceQueue.h +128 -0
  1173. package/harmony/gcanvas/src/main/cpp/core/src/support/DynArray.h +157 -0
  1174. package/harmony/gcanvas/src/main/cpp/core/src/support/Encode.cpp +116 -0
  1175. package/harmony/gcanvas/src/main/cpp/core/src/support/Encode.h +20 -0
  1176. package/harmony/gcanvas/src/main/cpp/core/src/support/FileUtils.cpp +153 -0
  1177. package/harmony/gcanvas/src/main/cpp/core/src/support/FileUtils.h +56 -0
  1178. package/harmony/gcanvas/src/main/cpp/core/src/support/GLUtil.cpp +174 -0
  1179. package/harmony/gcanvas/src/main/cpp/core/src/support/GLUtil.h +25 -0
  1180. package/harmony/gcanvas/src/main/cpp/core/src/support/Lesser.h +27 -0
  1181. package/harmony/gcanvas/src/main/cpp/core/src/support/Log.cpp +158 -0
  1182. package/harmony/gcanvas/src/main/cpp/core/src/support/Log.h +100 -0
  1183. package/harmony/gcanvas/src/main/cpp/core/src/support/Util.cpp +118 -0
  1184. package/harmony/gcanvas/src/main/cpp/core/src/support/Util.h +38 -0
  1185. package/harmony/gcanvas/src/main/cpp/core/src/support/Value.cpp +180 -0
  1186. package/harmony/gcanvas/src/main/cpp/core/src/support/Value.h +76 -0
  1187. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/BaseGcanvasPackage.h +79 -0
  1188. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/components/GCanvasViewJSIBinder.h +37 -0
  1189. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/turbo_modules/GCanvasModule.cpp +35 -0
  1190. package/harmony/gcanvas/src/main/cpp/generated/RNOH/generated/turbo_modules/GCanvasModule.h +16 -0
  1191. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/ComponentDescriptors.h +24 -0
  1192. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/EventEmitters.cpp +33 -0
  1193. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/EventEmitters.h +31 -0
  1194. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/Props.cpp +28 -0
  1195. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/Props.h +30 -0
  1196. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/ShadowNodes.cpp +17 -0
  1197. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/ShadowNodes.h +32 -0
  1198. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/States.cpp +16 -0
  1199. package/harmony/gcanvas/src/main/cpp/generated/react/renderer/components/gcanvas/States.h +29 -0
  1200. package/harmony/gcanvas/src/main/ets/GCanvasModuleTurboModule.ts +448 -0
  1201. package/harmony/gcanvas/src/main/ets/GCanvasNativeEngine.ts +206 -0
  1202. package/harmony/gcanvas/src/main/ets/GcanvasTurboModulesFactory.ets +42 -0
  1203. package/harmony/gcanvas/src/main/ets/components/GCanvasView.ets +109 -0
  1204. package/harmony/gcanvas/src/main/ets/generated/components/GCanvasView.ts +126 -0
  1205. package/harmony/gcanvas/src/main/ets/generated/components/ts.ts +5 -0
  1206. package/harmony/gcanvas/src/main/ets/generated/index.ets +5 -0
  1207. package/harmony/gcanvas/src/main/ets/generated/ts.ts +6 -0
  1208. package/harmony/gcanvas/src/main/ets/generated/turboModules/GCanvasModule.ts +52 -0
  1209. package/harmony/gcanvas/src/main/ets/generated/turboModules/ts.ts +5 -0
  1210. package/harmony/gcanvas/src/main/module.json5 +21 -0
  1211. package/harmony/gcanvas/src/main/resources/base/element/string.json +12 -0
  1212. package/harmony/gcanvas/src/main/resources/en_US/element/string.json +8 -0
  1213. package/harmony/gcanvas/src/main/resources/zh_CN/element/string.json +12 -0
  1214. package/harmony/gcanvas.har +0 -0
  1215. package/package.json +69 -0
  1216. package/packages/gcanvas/.babelrc +5 -0
  1217. package/packages/gcanvas/.eslintrc.js +133 -0
  1218. package/packages/gcanvas/package.json +19 -0
  1219. package/packages/gcanvas/rollup.config.js +14 -0
  1220. package/packages/gcanvas/src/bridge/react-native.js +286 -0
  1221. package/packages/gcanvas/src/bridge/weex.js +210 -0
  1222. package/packages/gcanvas/src/context/2d/FillStyleLinearGradient.js +17 -0
  1223. package/packages/gcanvas/src/context/2d/FillStylePattern.js +8 -0
  1224. package/packages/gcanvas/src/context/2d/FillStyleRadialGradient.js +17 -0
  1225. package/packages/gcanvas/src/context/2d/OffScreenRenderingContext.js +49 -0
  1226. package/packages/gcanvas/src/context/2d/RenderingContext.js +787 -0
  1227. package/packages/gcanvas/src/context/webgl/ActiveInfo.js +11 -0
  1228. package/packages/gcanvas/src/context/webgl/Buffer.js +21 -0
  1229. package/packages/gcanvas/src/context/webgl/Framebuffer.js +21 -0
  1230. package/packages/gcanvas/src/context/webgl/GLenum.js +300 -0
  1231. package/packages/gcanvas/src/context/webgl/GLmethod.js +142 -0
  1232. package/packages/gcanvas/src/context/webgl/GLtype.js +22 -0
  1233. package/packages/gcanvas/src/context/webgl/Program.js +21 -0
  1234. package/packages/gcanvas/src/context/webgl/Renderbuffer.js +21 -0
  1235. package/packages/gcanvas/src/context/webgl/RenderingContext.js +1479 -0
  1236. package/packages/gcanvas/src/context/webgl/Shader.js +22 -0
  1237. package/packages/gcanvas/src/context/webgl/ShaderPrecisionFormat.js +11 -0
  1238. package/packages/gcanvas/src/context/webgl/Texture.js +22 -0
  1239. package/packages/gcanvas/src/context/webgl/UniformLocation.js +22 -0
  1240. package/packages/gcanvas/src/context/webgl/classUtils.js +3 -0
  1241. package/packages/gcanvas/src/env/canvas.js +210 -0
  1242. package/packages/gcanvas/src/env/image.js +76 -0
  1243. package/packages/gcanvas/src/env/off-screen-canvas.js +74 -0
  1244. package/packages/gcanvas/src/index.js +65 -0
  1245. package/src/components/CanvasView.js +20 -0
  1246. package/src/components/GCanvasComponent.js +408 -0
  1247. package/src/index.js +69 -0
  1248. package/src/packages/gcanvas/.babelrc +5 -0
  1249. package/src/packages/gcanvas/.eslintrc.js +133 -0
  1250. package/src/packages/gcanvas/package.json +19 -0
  1251. package/src/packages/gcanvas/rollup.config.js +14 -0
  1252. package/src/packages/gcanvas/src/bridge/react-native.js +288 -0
  1253. package/src/packages/gcanvas/src/bridge/weex.js +210 -0
  1254. package/src/packages/gcanvas/src/context/2d/FillStyleLinearGradient.js +17 -0
  1255. package/src/packages/gcanvas/src/context/2d/FillStylePattern.js +8 -0
  1256. package/src/packages/gcanvas/src/context/2d/FillStyleRadialGradient.js +17 -0
  1257. package/src/packages/gcanvas/src/context/2d/OffScreenRenderingContext.js +49 -0
  1258. package/src/packages/gcanvas/src/context/2d/RenderingContext.js +801 -0
  1259. package/src/packages/gcanvas/src/context/webgl/ActiveInfo.js +11 -0
  1260. package/src/packages/gcanvas/src/context/webgl/Buffer.js +21 -0
  1261. package/src/packages/gcanvas/src/context/webgl/Framebuffer.js +21 -0
  1262. package/src/packages/gcanvas/src/context/webgl/GLenum.js +300 -0
  1263. package/src/packages/gcanvas/src/context/webgl/GLmethod.js +142 -0
  1264. package/src/packages/gcanvas/src/context/webgl/GLtype.js +22 -0
  1265. package/src/packages/gcanvas/src/context/webgl/Program.js +21 -0
  1266. package/src/packages/gcanvas/src/context/webgl/Renderbuffer.js +21 -0
  1267. package/src/packages/gcanvas/src/context/webgl/RenderingContext.js +1479 -0
  1268. package/src/packages/gcanvas/src/context/webgl/Shader.js +22 -0
  1269. package/src/packages/gcanvas/src/context/webgl/ShaderPrecisionFormat.js +11 -0
  1270. package/src/packages/gcanvas/src/context/webgl/Texture.js +22 -0
  1271. package/src/packages/gcanvas/src/context/webgl/UniformLocation.js +22 -0
  1272. package/src/packages/gcanvas/src/context/webgl/classUtils.js +3 -0
  1273. package/src/packages/gcanvas/src/env/canvas.js +210 -0
  1274. package/src/packages/gcanvas/src/env/image.js +76 -0
  1275. package/src/packages/gcanvas/src/env/off-screen-canvas.js +74 -0
  1276. package/src/packages/gcanvas/src/index.js +65 -0
  1277. package/src/specs/v1/.gitkeep +1 -0
  1278. package/src/specs/v1/GCanvasViewNativeComponent.ts +47 -0
  1279. package/src/specs/v1/NativeGCanvasModule.ts +140 -0
  1280. package/src/specs/v2/.gitkeep +1 -0
@@ -0,0 +1,2403 @@
1
+ /****************************************************************************
2
+ *
3
+ * ftstroke.c
4
+ *
5
+ * FreeType path stroker (body).
6
+ *
7
+ * Copyright (C) 2002-2024 by
8
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
9
+ *
10
+ * This file is part of the FreeType project, and may only be used,
11
+ * modified, and distributed under the terms of the FreeType project
12
+ * license, LICENSE.TXT. By continuing to use, modify, or distribute
13
+ * this file you indicate that you have read the license and
14
+ * understand and accept it fully.
15
+ *
16
+ */
17
+
18
+
19
+ #include <freetype/ftstroke.h>
20
+ #include <freetype/fttrigon.h>
21
+ #include <freetype/ftoutln.h>
22
+ #include <freetype/internal/ftmemory.h>
23
+ #include <freetype/internal/ftdebug.h>
24
+ #include <freetype/internal/ftobjs.h>
25
+
26
+
27
+ /* declare an extern to access `ft_outline_glyph_class' globally */
28
+ /* allocated in `ftglyph.c' */
29
+ FT_CALLBACK_TABLE const FT_Glyph_Class ft_outline_glyph_class;
30
+
31
+
32
+ /* documentation is in ftstroke.h */
33
+
34
+ FT_EXPORT_DEF( FT_StrokerBorder )
35
+ FT_Outline_GetInsideBorder( FT_Outline* outline )
36
+ {
37
+ FT_Orientation o = FT_Outline_Get_Orientation( outline );
38
+
39
+
40
+ return o == FT_ORIENTATION_TRUETYPE ? FT_STROKER_BORDER_RIGHT
41
+ : FT_STROKER_BORDER_LEFT;
42
+ }
43
+
44
+
45
+ /* documentation is in ftstroke.h */
46
+
47
+ FT_EXPORT_DEF( FT_StrokerBorder )
48
+ FT_Outline_GetOutsideBorder( FT_Outline* outline )
49
+ {
50
+ FT_Orientation o = FT_Outline_Get_Orientation( outline );
51
+
52
+
53
+ return o == FT_ORIENTATION_TRUETYPE ? FT_STROKER_BORDER_LEFT
54
+ : FT_STROKER_BORDER_RIGHT;
55
+ }
56
+
57
+
58
+ /*************************************************************************/
59
+ /*************************************************************************/
60
+ /***** *****/
61
+ /***** BEZIER COMPUTATIONS *****/
62
+ /***** *****/
63
+ /*************************************************************************/
64
+ /*************************************************************************/
65
+
66
+ #define FT_SMALL_CONIC_THRESHOLD ( FT_ANGLE_PI / 6 )
67
+ #define FT_SMALL_CUBIC_THRESHOLD ( FT_ANGLE_PI / 8 )
68
+
69
+ #define FT_EPSILON 2
70
+
71
+ #define FT_IS_SMALL( x ) ( (x) > -FT_EPSILON && (x) < FT_EPSILON )
72
+
73
+
74
+ static FT_Pos
75
+ ft_pos_abs( FT_Pos x )
76
+ {
77
+ return x >= 0 ? x : -x;
78
+ }
79
+
80
+
81
+ static void
82
+ ft_conic_split( FT_Vector* base )
83
+ {
84
+ FT_Pos a, b;
85
+
86
+
87
+ base[4].x = base[2].x;
88
+ a = base[0].x + base[1].x;
89
+ b = base[1].x + base[2].x;
90
+ base[3].x = b >> 1;
91
+ base[2].x = ( a + b ) >> 2;
92
+ base[1].x = a >> 1;
93
+
94
+ base[4].y = base[2].y;
95
+ a = base[0].y + base[1].y;
96
+ b = base[1].y + base[2].y;
97
+ base[3].y = b >> 1;
98
+ base[2].y = ( a + b ) >> 2;
99
+ base[1].y = a >> 1;
100
+ }
101
+
102
+
103
+ static FT_Bool
104
+ ft_conic_is_small_enough( FT_Vector* base,
105
+ FT_Angle *angle_in,
106
+ FT_Angle *angle_out )
107
+ {
108
+ FT_Vector d1, d2;
109
+ FT_Angle theta;
110
+ FT_Int close1, close2;
111
+
112
+
113
+ d1.x = base[1].x - base[2].x;
114
+ d1.y = base[1].y - base[2].y;
115
+ d2.x = base[0].x - base[1].x;
116
+ d2.y = base[0].y - base[1].y;
117
+
118
+ close1 = FT_IS_SMALL( d1.x ) && FT_IS_SMALL( d1.y );
119
+ close2 = FT_IS_SMALL( d2.x ) && FT_IS_SMALL( d2.y );
120
+
121
+ if ( close1 )
122
+ {
123
+ if ( close2 )
124
+ {
125
+ /* basically a point; */
126
+ /* do nothing to retain original direction */
127
+ }
128
+ else
129
+ {
130
+ *angle_in =
131
+ *angle_out = FT_Atan2( d2.x, d2.y );
132
+ }
133
+ }
134
+ else /* !close1 */
135
+ {
136
+ if ( close2 )
137
+ {
138
+ *angle_in =
139
+ *angle_out = FT_Atan2( d1.x, d1.y );
140
+ }
141
+ else
142
+ {
143
+ *angle_in = FT_Atan2( d1.x, d1.y );
144
+ *angle_out = FT_Atan2( d2.x, d2.y );
145
+ }
146
+ }
147
+
148
+ theta = ft_pos_abs( FT_Angle_Diff( *angle_in, *angle_out ) );
149
+
150
+ return FT_BOOL( theta < FT_SMALL_CONIC_THRESHOLD );
151
+ }
152
+
153
+
154
+ static void
155
+ ft_cubic_split( FT_Vector* base )
156
+ {
157
+ FT_Pos a, b, c;
158
+
159
+
160
+ base[6].x = base[3].x;
161
+ a = base[0].x + base[1].x;
162
+ b = base[1].x + base[2].x;
163
+ c = base[2].x + base[3].x;
164
+ base[5].x = c >> 1;
165
+ c += b;
166
+ base[4].x = c >> 2;
167
+ base[1].x = a >> 1;
168
+ a += b;
169
+ base[2].x = a >> 2;
170
+ base[3].x = ( a + c ) >> 3;
171
+
172
+ base[6].y = base[3].y;
173
+ a = base[0].y + base[1].y;
174
+ b = base[1].y + base[2].y;
175
+ c = base[2].y + base[3].y;
176
+ base[5].y = c >> 1;
177
+ c += b;
178
+ base[4].y = c >> 2;
179
+ base[1].y = a >> 1;
180
+ a += b;
181
+ base[2].y = a >> 2;
182
+ base[3].y = ( a + c ) >> 3;
183
+ }
184
+
185
+
186
+ /* Return the average of `angle1' and `angle2'. */
187
+ /* This gives correct result even if `angle1' and `angle2' */
188
+ /* have opposite signs. */
189
+ static FT_Angle
190
+ ft_angle_mean( FT_Angle angle1,
191
+ FT_Angle angle2 )
192
+ {
193
+ return angle1 + FT_Angle_Diff( angle1, angle2 ) / 2;
194
+ }
195
+
196
+
197
+ static FT_Bool
198
+ ft_cubic_is_small_enough( FT_Vector* base,
199
+ FT_Angle *angle_in,
200
+ FT_Angle *angle_mid,
201
+ FT_Angle *angle_out )
202
+ {
203
+ FT_Vector d1, d2, d3;
204
+ FT_Angle theta1, theta2;
205
+ FT_Int close1, close2, close3;
206
+
207
+
208
+ d1.x = base[2].x - base[3].x;
209
+ d1.y = base[2].y - base[3].y;
210
+ d2.x = base[1].x - base[2].x;
211
+ d2.y = base[1].y - base[2].y;
212
+ d3.x = base[0].x - base[1].x;
213
+ d3.y = base[0].y - base[1].y;
214
+
215
+ close1 = FT_IS_SMALL( d1.x ) && FT_IS_SMALL( d1.y );
216
+ close2 = FT_IS_SMALL( d2.x ) && FT_IS_SMALL( d2.y );
217
+ close3 = FT_IS_SMALL( d3.x ) && FT_IS_SMALL( d3.y );
218
+
219
+ if ( close1 )
220
+ {
221
+ if ( close2 )
222
+ {
223
+ if ( close3 )
224
+ {
225
+ /* basically a point; */
226
+ /* do nothing to retain original direction */
227
+ }
228
+ else /* !close3 */
229
+ {
230
+ *angle_in =
231
+ *angle_mid =
232
+ *angle_out = FT_Atan2( d3.x, d3.y );
233
+ }
234
+ }
235
+ else /* !close2 */
236
+ {
237
+ if ( close3 )
238
+ {
239
+ *angle_in =
240
+ *angle_mid =
241
+ *angle_out = FT_Atan2( d2.x, d2.y );
242
+ }
243
+ else /* !close3 */
244
+ {
245
+ *angle_in =
246
+ *angle_mid = FT_Atan2( d2.x, d2.y );
247
+ *angle_out = FT_Atan2( d3.x, d3.y );
248
+ }
249
+ }
250
+ }
251
+ else /* !close1 */
252
+ {
253
+ if ( close2 )
254
+ {
255
+ if ( close3 )
256
+ {
257
+ *angle_in =
258
+ *angle_mid =
259
+ *angle_out = FT_Atan2( d1.x, d1.y );
260
+ }
261
+ else /* !close3 */
262
+ {
263
+ *angle_in = FT_Atan2( d1.x, d1.y );
264
+ *angle_out = FT_Atan2( d3.x, d3.y );
265
+ *angle_mid = ft_angle_mean( *angle_in, *angle_out );
266
+ }
267
+ }
268
+ else /* !close2 */
269
+ {
270
+ if ( close3 )
271
+ {
272
+ *angle_in = FT_Atan2( d1.x, d1.y );
273
+ *angle_mid =
274
+ *angle_out = FT_Atan2( d2.x, d2.y );
275
+ }
276
+ else /* !close3 */
277
+ {
278
+ *angle_in = FT_Atan2( d1.x, d1.y );
279
+ *angle_mid = FT_Atan2( d2.x, d2.y );
280
+ *angle_out = FT_Atan2( d3.x, d3.y );
281
+ }
282
+ }
283
+ }
284
+
285
+ theta1 = ft_pos_abs( FT_Angle_Diff( *angle_in, *angle_mid ) );
286
+ theta2 = ft_pos_abs( FT_Angle_Diff( *angle_mid, *angle_out ) );
287
+
288
+ return FT_BOOL( theta1 < FT_SMALL_CUBIC_THRESHOLD &&
289
+ theta2 < FT_SMALL_CUBIC_THRESHOLD );
290
+ }
291
+
292
+
293
+ /*************************************************************************/
294
+ /*************************************************************************/
295
+ /***** *****/
296
+ /***** STROKE BORDERS *****/
297
+ /***** *****/
298
+ /*************************************************************************/
299
+ /*************************************************************************/
300
+
301
+ typedef enum FT_StrokeTags_
302
+ {
303
+ FT_STROKE_TAG_ON = 1, /* on-curve point */
304
+ FT_STROKE_TAG_CUBIC = 2, /* cubic off-point */
305
+ FT_STROKE_TAG_BEGIN = 4, /* sub-path start */
306
+ FT_STROKE_TAG_END = 8 /* sub-path end */
307
+
308
+ } FT_StrokeTags;
309
+
310
+ #define FT_STROKE_TAG_BEGIN_END ( FT_STROKE_TAG_BEGIN | FT_STROKE_TAG_END )
311
+
312
+ typedef struct FT_StrokeBorderRec_
313
+ {
314
+ FT_UInt num_points;
315
+ FT_UInt max_points;
316
+ FT_Vector* points;
317
+ FT_Byte* tags;
318
+ FT_Bool movable; /* TRUE for ends of lineto borders */
319
+ FT_Int start; /* index of current sub-path start point */
320
+ FT_Memory memory;
321
+ FT_Bool valid;
322
+
323
+ } FT_StrokeBorderRec, *FT_StrokeBorder;
324
+
325
+
326
+ static FT_Error
327
+ ft_stroke_border_grow( FT_StrokeBorder border,
328
+ FT_UInt new_points )
329
+ {
330
+ FT_UInt old_max = border->max_points;
331
+ FT_UInt new_max = border->num_points + new_points;
332
+ FT_Error error = FT_Err_Ok;
333
+
334
+
335
+ if ( new_max > old_max )
336
+ {
337
+ FT_UInt cur_max = old_max;
338
+ FT_Memory memory = border->memory;
339
+
340
+
341
+ while ( cur_max < new_max )
342
+ cur_max += ( cur_max >> 1 ) + 16;
343
+
344
+ if ( FT_RENEW_ARRAY( border->points, old_max, cur_max ) ||
345
+ FT_RENEW_ARRAY( border->tags, old_max, cur_max ) )
346
+ goto Exit;
347
+
348
+ border->max_points = cur_max;
349
+ }
350
+
351
+ Exit:
352
+ return error;
353
+ }
354
+
355
+
356
+ static void
357
+ ft_stroke_border_close( FT_StrokeBorder border,
358
+ FT_Bool reverse )
359
+ {
360
+ FT_UInt start = (FT_UInt)border->start;
361
+ FT_UInt count = border->num_points;
362
+
363
+
364
+ FT_ASSERT( border->start >= 0 );
365
+
366
+ /* don't record empty paths! */
367
+ if ( count <= start + 1U )
368
+ border->num_points = start;
369
+ else
370
+ {
371
+ /* copy the last point to the start of this sub-path, since */
372
+ /* it contains the `adjusted' starting coordinates */
373
+ border->num_points = --count;
374
+ border->points[start] = border->points[count];
375
+ border->tags[start] = border->tags[count];
376
+
377
+ if ( reverse )
378
+ {
379
+ /* reverse the points */
380
+ {
381
+ FT_Vector* vec1 = border->points + start + 1;
382
+ FT_Vector* vec2 = border->points + count - 1;
383
+
384
+
385
+ for ( ; vec1 < vec2; vec1++, vec2-- )
386
+ {
387
+ FT_Vector tmp;
388
+
389
+
390
+ tmp = *vec1;
391
+ *vec1 = *vec2;
392
+ *vec2 = tmp;
393
+ }
394
+ }
395
+
396
+ /* then the tags */
397
+ {
398
+ FT_Byte* tag1 = border->tags + start + 1;
399
+ FT_Byte* tag2 = border->tags + count - 1;
400
+
401
+
402
+ for ( ; tag1 < tag2; tag1++, tag2-- )
403
+ {
404
+ FT_Byte tmp;
405
+
406
+
407
+ tmp = *tag1;
408
+ *tag1 = *tag2;
409
+ *tag2 = tmp;
410
+ }
411
+ }
412
+ }
413
+
414
+ border->tags[start ] |= FT_STROKE_TAG_BEGIN;
415
+ border->tags[count - 1] |= FT_STROKE_TAG_END;
416
+ }
417
+
418
+ border->start = -1;
419
+ border->movable = FALSE;
420
+ }
421
+
422
+
423
+ static FT_Error
424
+ ft_stroke_border_lineto( FT_StrokeBorder border,
425
+ FT_Vector* to,
426
+ FT_Bool movable )
427
+ {
428
+ FT_Error error = FT_Err_Ok;
429
+
430
+
431
+ FT_ASSERT( border->start >= 0 );
432
+
433
+ if ( border->movable )
434
+ {
435
+ /* move last point */
436
+ border->points[border->num_points - 1] = *to;
437
+ }
438
+ else
439
+ {
440
+ /* don't add zero-length lineto, but always add moveto */
441
+ if ( border->num_points > (FT_UInt)border->start &&
442
+ FT_IS_SMALL( border->points[border->num_points - 1].x - to->x ) &&
443
+ FT_IS_SMALL( border->points[border->num_points - 1].y - to->y ) )
444
+ return error;
445
+
446
+ /* add one point */
447
+ error = ft_stroke_border_grow( border, 1 );
448
+ if ( !error )
449
+ {
450
+ FT_Vector* vec = border->points + border->num_points;
451
+ FT_Byte* tag = border->tags + border->num_points;
452
+
453
+
454
+ vec[0] = *to;
455
+ tag[0] = FT_STROKE_TAG_ON;
456
+
457
+ border->num_points += 1;
458
+ }
459
+ }
460
+ border->movable = movable;
461
+ return error;
462
+ }
463
+
464
+
465
+ static FT_Error
466
+ ft_stroke_border_conicto( FT_StrokeBorder border,
467
+ FT_Vector* control,
468
+ FT_Vector* to )
469
+ {
470
+ FT_Error error;
471
+
472
+
473
+ FT_ASSERT( border->start >= 0 );
474
+
475
+ error = ft_stroke_border_grow( border, 2 );
476
+ if ( !error )
477
+ {
478
+ FT_Vector* vec = border->points + border->num_points;
479
+ FT_Byte* tag = border->tags + border->num_points;
480
+
481
+
482
+ vec[0] = *control;
483
+ vec[1] = *to;
484
+
485
+ tag[0] = 0;
486
+ tag[1] = FT_STROKE_TAG_ON;
487
+
488
+ border->num_points += 2;
489
+ }
490
+
491
+ border->movable = FALSE;
492
+
493
+ return error;
494
+ }
495
+
496
+
497
+ static FT_Error
498
+ ft_stroke_border_cubicto( FT_StrokeBorder border,
499
+ FT_Vector* control1,
500
+ FT_Vector* control2,
501
+ FT_Vector* to )
502
+ {
503
+ FT_Error error;
504
+
505
+
506
+ FT_ASSERT( border->start >= 0 );
507
+
508
+ error = ft_stroke_border_grow( border, 3 );
509
+ if ( !error )
510
+ {
511
+ FT_Vector* vec = border->points + border->num_points;
512
+ FT_Byte* tag = border->tags + border->num_points;
513
+
514
+
515
+ vec[0] = *control1;
516
+ vec[1] = *control2;
517
+ vec[2] = *to;
518
+
519
+ tag[0] = FT_STROKE_TAG_CUBIC;
520
+ tag[1] = FT_STROKE_TAG_CUBIC;
521
+ tag[2] = FT_STROKE_TAG_ON;
522
+
523
+ border->num_points += 3;
524
+ }
525
+
526
+ border->movable = FALSE;
527
+
528
+ return error;
529
+ }
530
+
531
+
532
+ #define FT_ARC_CUBIC_ANGLE ( FT_ANGLE_PI / 2 )
533
+
534
+
535
+ static FT_Error
536
+ ft_stroke_border_arcto( FT_StrokeBorder border,
537
+ FT_Vector* center,
538
+ FT_Fixed radius,
539
+ FT_Angle angle_start,
540
+ FT_Angle angle_diff )
541
+ {
542
+ FT_Fixed coef;
543
+ FT_Vector a0, a1, a2, a3;
544
+ FT_Int i, arcs = 1;
545
+ FT_Error error = FT_Err_Ok;
546
+
547
+
548
+ /* number of cubic arcs to draw */
549
+ while ( angle_diff > FT_ARC_CUBIC_ANGLE * arcs ||
550
+ -angle_diff > FT_ARC_CUBIC_ANGLE * arcs )
551
+ arcs++;
552
+
553
+ /* control tangents */
554
+ coef = FT_Tan( angle_diff / ( 4 * arcs ) );
555
+ coef += coef / 3;
556
+
557
+ /* compute start and first control point */
558
+ FT_Vector_From_Polar( &a0, radius, angle_start );
559
+ a1.x = FT_MulFix( -a0.y, coef );
560
+ a1.y = FT_MulFix( a0.x, coef );
561
+
562
+ a0.x += center->x;
563
+ a0.y += center->y;
564
+ a1.x += a0.x;
565
+ a1.y += a0.y;
566
+
567
+ for ( i = 1; i <= arcs; i++ )
568
+ {
569
+ /* compute end and second control point */
570
+ FT_Vector_From_Polar( &a3, radius,
571
+ angle_start + i * angle_diff / arcs );
572
+ a2.x = FT_MulFix( a3.y, coef );
573
+ a2.y = FT_MulFix( -a3.x, coef );
574
+
575
+ a3.x += center->x;
576
+ a3.y += center->y;
577
+ a2.x += a3.x;
578
+ a2.y += a3.y;
579
+
580
+ /* add cubic arc */
581
+ error = ft_stroke_border_cubicto( border, &a1, &a2, &a3 );
582
+ if ( error )
583
+ break;
584
+
585
+ /* a0 = a3; */
586
+ a1.x = a3.x - a2.x + a3.x;
587
+ a1.y = a3.y - a2.y + a3.y;
588
+ }
589
+
590
+ return error;
591
+ }
592
+
593
+
594
+ static FT_Error
595
+ ft_stroke_border_moveto( FT_StrokeBorder border,
596
+ FT_Vector* to )
597
+ {
598
+ /* close current open path if any ? */
599
+ if ( border->start >= 0 )
600
+ ft_stroke_border_close( border, FALSE );
601
+
602
+ border->start = (FT_Int)border->num_points;
603
+ border->movable = FALSE;
604
+
605
+ return ft_stroke_border_lineto( border, to, FALSE );
606
+ }
607
+
608
+
609
+ static void
610
+ ft_stroke_border_init( FT_StrokeBorder border,
611
+ FT_Memory memory )
612
+ {
613
+ border->memory = memory;
614
+ border->points = NULL;
615
+ border->tags = NULL;
616
+
617
+ border->num_points = 0;
618
+ border->max_points = 0;
619
+ border->start = -1;
620
+ border->valid = FALSE;
621
+ }
622
+
623
+
624
+ static void
625
+ ft_stroke_border_reset( FT_StrokeBorder border )
626
+ {
627
+ border->num_points = 0;
628
+ border->start = -1;
629
+ border->valid = FALSE;
630
+ }
631
+
632
+
633
+ static void
634
+ ft_stroke_border_done( FT_StrokeBorder border )
635
+ {
636
+ FT_Memory memory = border->memory;
637
+
638
+
639
+ FT_FREE( border->points );
640
+ FT_FREE( border->tags );
641
+
642
+ border->num_points = 0;
643
+ border->max_points = 0;
644
+ border->start = -1;
645
+ border->valid = FALSE;
646
+ }
647
+
648
+
649
+ static FT_Error
650
+ ft_stroke_border_get_counts( FT_StrokeBorder border,
651
+ FT_UInt *anum_points,
652
+ FT_UInt *anum_contours )
653
+ {
654
+ FT_Error error = FT_Err_Ok;
655
+ FT_UInt num_points = 0;
656
+ FT_UInt num_contours = 0;
657
+
658
+ FT_UInt count = border->num_points;
659
+ FT_Vector* point = border->points;
660
+ FT_Byte* tags = border->tags;
661
+ FT_Int in_contour = 0;
662
+
663
+
664
+ for ( ; count > 0; count--, num_points++, point++, tags++ )
665
+ {
666
+ if ( tags[0] & FT_STROKE_TAG_BEGIN )
667
+ {
668
+ if ( in_contour != 0 )
669
+ goto Fail;
670
+
671
+ in_contour = 1;
672
+ }
673
+ else if ( in_contour == 0 )
674
+ goto Fail;
675
+
676
+ if ( tags[0] & FT_STROKE_TAG_END )
677
+ {
678
+ in_contour = 0;
679
+ num_contours++;
680
+ }
681
+ }
682
+
683
+ if ( in_contour != 0 )
684
+ goto Fail;
685
+
686
+ border->valid = TRUE;
687
+
688
+ Exit:
689
+ *anum_points = num_points;
690
+ *anum_contours = num_contours;
691
+ return error;
692
+
693
+ Fail:
694
+ num_points = 0;
695
+ num_contours = 0;
696
+ goto Exit;
697
+ }
698
+
699
+
700
+ static void
701
+ ft_stroke_border_export( FT_StrokeBorder border,
702
+ FT_Outline* outline )
703
+ {
704
+ /* copy point locations */
705
+ if ( border->num_points )
706
+ FT_ARRAY_COPY( outline->points + outline->n_points,
707
+ border->points,
708
+ border->num_points );
709
+
710
+ /* copy tags */
711
+ {
712
+ FT_UInt count = border->num_points;
713
+ FT_Byte* read = border->tags;
714
+ FT_Byte* write = outline->tags + outline->n_points;
715
+
716
+
717
+ for ( ; count > 0; count--, read++, write++ )
718
+ {
719
+ if ( *read & FT_STROKE_TAG_ON )
720
+ *write = FT_CURVE_TAG_ON;
721
+ else if ( *read & FT_STROKE_TAG_CUBIC )
722
+ *write = FT_CURVE_TAG_CUBIC;
723
+ else
724
+ *write = FT_CURVE_TAG_CONIC;
725
+ }
726
+ }
727
+
728
+ /* copy contours */
729
+ {
730
+ FT_UInt count = border->num_points;
731
+ FT_Byte* tags = border->tags;
732
+ FT_UShort* write = outline->contours + outline->n_contours;
733
+ FT_UShort idx = outline->n_points;
734
+
735
+
736
+ for ( ; count > 0; count--, tags++, idx++ )
737
+ {
738
+ if ( *tags & FT_STROKE_TAG_END )
739
+ {
740
+ *write++ = idx;
741
+ outline->n_contours++;
742
+ }
743
+ }
744
+ }
745
+
746
+ outline->n_points += (FT_UShort)border->num_points;
747
+
748
+ FT_ASSERT( FT_Outline_Check( outline ) == 0 );
749
+ }
750
+
751
+
752
+ /*************************************************************************/
753
+ /*************************************************************************/
754
+ /***** *****/
755
+ /***** STROKER *****/
756
+ /***** *****/
757
+ /*************************************************************************/
758
+ /*************************************************************************/
759
+
760
+ #define FT_SIDE_TO_ROTATE( s ) ( FT_ANGLE_PI2 - (s) * FT_ANGLE_PI )
761
+
762
+ typedef struct FT_StrokerRec_
763
+ {
764
+ FT_Angle angle_in; /* direction into curr join */
765
+ FT_Angle angle_out; /* direction out of join */
766
+ FT_Vector center; /* current position */
767
+ FT_Fixed line_length; /* length of last lineto */
768
+ FT_Bool first_point; /* is this the start? */
769
+ FT_Bool subpath_open; /* is the subpath open? */
770
+ FT_Angle subpath_angle; /* subpath start direction */
771
+ FT_Vector subpath_start; /* subpath start position */
772
+ FT_Fixed subpath_line_length; /* subpath start lineto len */
773
+ FT_Bool handle_wide_strokes; /* use wide strokes logic? */
774
+
775
+ FT_Stroker_LineCap line_cap;
776
+ FT_Stroker_LineJoin line_join;
777
+ FT_Stroker_LineJoin line_join_saved;
778
+ FT_Fixed miter_limit;
779
+ FT_Fixed radius;
780
+
781
+ FT_StrokeBorderRec borders[2];
782
+ FT_Library library;
783
+
784
+ } FT_StrokerRec;
785
+
786
+
787
+ /* documentation is in ftstroke.h */
788
+
789
+ FT_EXPORT_DEF( FT_Error )
790
+ FT_Stroker_New( FT_Library library,
791
+ FT_Stroker *astroker )
792
+ {
793
+ FT_Error error; /* assigned in FT_NEW */
794
+ FT_Memory memory;
795
+ FT_Stroker stroker = NULL;
796
+
797
+
798
+ if ( !library )
799
+ return FT_THROW( Invalid_Library_Handle );
800
+
801
+ if ( !astroker )
802
+ return FT_THROW( Invalid_Argument );
803
+
804
+ memory = library->memory;
805
+
806
+ if ( !FT_NEW( stroker ) )
807
+ {
808
+ stroker->library = library;
809
+
810
+ ft_stroke_border_init( &stroker->borders[0], memory );
811
+ ft_stroke_border_init( &stroker->borders[1], memory );
812
+ }
813
+
814
+ *astroker = stroker;
815
+
816
+ return error;
817
+ }
818
+
819
+
820
+ /* documentation is in ftstroke.h */
821
+
822
+ FT_EXPORT_DEF( void )
823
+ FT_Stroker_Set( FT_Stroker stroker,
824
+ FT_Fixed radius,
825
+ FT_Stroker_LineCap line_cap,
826
+ FT_Stroker_LineJoin line_join,
827
+ FT_Fixed miter_limit )
828
+ {
829
+ if ( !stroker )
830
+ return;
831
+
832
+ stroker->radius = radius;
833
+ stroker->line_cap = line_cap;
834
+ stroker->line_join = line_join;
835
+ stroker->miter_limit = miter_limit;
836
+
837
+ /* ensure miter limit has sensible value */
838
+ if ( stroker->miter_limit < 0x10000L )
839
+ stroker->miter_limit = 0x10000L;
840
+
841
+ /* save line join style: */
842
+ /* line join style can be temporarily changed when stroking curves */
843
+ stroker->line_join_saved = line_join;
844
+
845
+ FT_Stroker_Rewind( stroker );
846
+ }
847
+
848
+
849
+ /* documentation is in ftstroke.h */
850
+
851
+ FT_EXPORT_DEF( void )
852
+ FT_Stroker_Rewind( FT_Stroker stroker )
853
+ {
854
+ if ( stroker )
855
+ {
856
+ ft_stroke_border_reset( &stroker->borders[0] );
857
+ ft_stroke_border_reset( &stroker->borders[1] );
858
+ }
859
+ }
860
+
861
+
862
+ /* documentation is in ftstroke.h */
863
+
864
+ FT_EXPORT_DEF( void )
865
+ FT_Stroker_Done( FT_Stroker stroker )
866
+ {
867
+ if ( stroker )
868
+ {
869
+ FT_Memory memory = stroker->library->memory;
870
+
871
+
872
+ ft_stroke_border_done( &stroker->borders[0] );
873
+ ft_stroke_border_done( &stroker->borders[1] );
874
+
875
+ stroker->library = NULL;
876
+ FT_FREE( stroker );
877
+ }
878
+ }
879
+
880
+
881
+ /* create a circular arc at a corner or cap */
882
+ static FT_Error
883
+ ft_stroker_arcto( FT_Stroker stroker,
884
+ FT_Int side )
885
+ {
886
+ FT_Angle total, rotate;
887
+ FT_Fixed radius = stroker->radius;
888
+ FT_Error error = FT_Err_Ok;
889
+ FT_StrokeBorder border = stroker->borders + side;
890
+
891
+
892
+ rotate = FT_SIDE_TO_ROTATE( side );
893
+
894
+ total = FT_Angle_Diff( stroker->angle_in, stroker->angle_out );
895
+ if ( total == FT_ANGLE_PI )
896
+ total = -rotate * 2;
897
+
898
+ error = ft_stroke_border_arcto( border,
899
+ &stroker->center,
900
+ radius,
901
+ stroker->angle_in + rotate,
902
+ total );
903
+ border->movable = FALSE;
904
+ return error;
905
+ }
906
+
907
+
908
+ /* add a cap at the end of an opened path */
909
+ static FT_Error
910
+ ft_stroker_cap( FT_Stroker stroker,
911
+ FT_Angle angle,
912
+ FT_Int side )
913
+ {
914
+ FT_Error error = FT_Err_Ok;
915
+
916
+
917
+ if ( stroker->line_cap == FT_STROKER_LINECAP_ROUND )
918
+ {
919
+ /* add a round cap */
920
+ stroker->angle_in = angle;
921
+ stroker->angle_out = angle + FT_ANGLE_PI;
922
+
923
+ error = ft_stroker_arcto( stroker, side );
924
+ }
925
+ else
926
+ {
927
+ /* add a square or butt cap */
928
+ FT_Vector middle, delta;
929
+ FT_Fixed radius = stroker->radius;
930
+ FT_StrokeBorder border = stroker->borders + side;
931
+
932
+
933
+ /* compute middle point and first angle point */
934
+ FT_Vector_From_Polar( &middle, radius, angle );
935
+ delta.x = side ? middle.y : -middle.y;
936
+ delta.y = side ? -middle.x : middle.x;
937
+
938
+ if ( stroker->line_cap == FT_STROKER_LINECAP_SQUARE )
939
+ {
940
+ middle.x += stroker->center.x;
941
+ middle.y += stroker->center.y;
942
+ }
943
+ else /* FT_STROKER_LINECAP_BUTT */
944
+ {
945
+ middle.x = stroker->center.x;
946
+ middle.y = stroker->center.y;
947
+ }
948
+
949
+ delta.x += middle.x;
950
+ delta.y += middle.y;
951
+
952
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
953
+ if ( error )
954
+ goto Exit;
955
+
956
+ /* compute second angle point */
957
+ delta.x = middle.x - delta.x + middle.x;
958
+ delta.y = middle.y - delta.y + middle.y;
959
+
960
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
961
+ }
962
+
963
+ Exit:
964
+ return error;
965
+ }
966
+
967
+
968
+ /* process an inside corner, i.e. compute intersection */
969
+ static FT_Error
970
+ ft_stroker_inside( FT_Stroker stroker,
971
+ FT_Int side,
972
+ FT_Fixed line_length )
973
+ {
974
+ FT_StrokeBorder border = stroker->borders + side;
975
+ FT_Angle phi, theta, rotate;
976
+ FT_Fixed length;
977
+ FT_Vector sigma = { 0, 0 };
978
+ FT_Vector delta;
979
+ FT_Error error = FT_Err_Ok;
980
+ FT_Bool intersect; /* use intersection of lines? */
981
+
982
+
983
+ rotate = FT_SIDE_TO_ROTATE( side );
984
+
985
+ theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ) / 2;
986
+
987
+ /* Only intersect borders if between two lineto's and both */
988
+ /* lines are long enough (line_length is zero for curves). */
989
+ /* Also avoid U-turns of nearly 180 degree. */
990
+ if ( !border->movable || line_length == 0 ||
991
+ theta > 0x59C000 || theta < -0x59C000 )
992
+ intersect = FALSE;
993
+ else
994
+ {
995
+ /* compute minimum required length of lines */
996
+ FT_Fixed min_length;
997
+
998
+
999
+ FT_Vector_Unit( &sigma, theta );
1000
+ min_length =
1001
+ ft_pos_abs( FT_MulDiv( stroker->radius, sigma.y, sigma.x ) );
1002
+
1003
+ intersect = FT_BOOL( min_length &&
1004
+ stroker->line_length >= min_length &&
1005
+ line_length >= min_length );
1006
+ }
1007
+
1008
+ if ( !intersect )
1009
+ {
1010
+ FT_Vector_From_Polar( &delta, stroker->radius,
1011
+ stroker->angle_out + rotate );
1012
+ delta.x += stroker->center.x;
1013
+ delta.y += stroker->center.y;
1014
+
1015
+ border->movable = FALSE;
1016
+ }
1017
+ else
1018
+ {
1019
+ /* compute median angle */
1020
+ phi = stroker->angle_in + theta + rotate;
1021
+
1022
+ length = FT_DivFix( stroker->radius, sigma.x );
1023
+
1024
+ FT_Vector_From_Polar( &delta, length, phi );
1025
+ delta.x += stroker->center.x;
1026
+ delta.y += stroker->center.y;
1027
+ }
1028
+
1029
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1030
+
1031
+ return error;
1032
+ }
1033
+
1034
+
1035
+ /* process an outside corner, i.e. compute bevel/miter/round */
1036
+ static FT_Error
1037
+ ft_stroker_outside( FT_Stroker stroker,
1038
+ FT_Int side,
1039
+ FT_Fixed line_length )
1040
+ {
1041
+ FT_StrokeBorder border = stroker->borders + side;
1042
+ FT_Error error;
1043
+ FT_Angle rotate;
1044
+
1045
+
1046
+ if ( stroker->line_join == FT_STROKER_LINEJOIN_ROUND )
1047
+ error = ft_stroker_arcto( stroker, side );
1048
+ else
1049
+ {
1050
+ /* this is a mitered (pointed) or beveled (truncated) corner */
1051
+ FT_Fixed radius = stroker->radius;
1052
+ FT_Vector sigma = { 0, 0 };
1053
+ FT_Angle theta = 0, phi = 0;
1054
+ FT_Bool bevel, fixed_bevel;
1055
+
1056
+
1057
+ rotate = FT_SIDE_TO_ROTATE( side );
1058
+
1059
+ bevel =
1060
+ FT_BOOL( stroker->line_join == FT_STROKER_LINEJOIN_BEVEL );
1061
+
1062
+ fixed_bevel =
1063
+ FT_BOOL( stroker->line_join != FT_STROKER_LINEJOIN_MITER_VARIABLE );
1064
+
1065
+ /* check miter limit first */
1066
+ if ( !bevel )
1067
+ {
1068
+ theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ) / 2;
1069
+
1070
+ if ( theta == FT_ANGLE_PI2 )
1071
+ theta = -rotate;
1072
+
1073
+ phi = stroker->angle_in + theta + rotate;
1074
+
1075
+ FT_Vector_From_Polar( &sigma, stroker->miter_limit, theta );
1076
+
1077
+ /* is miter limit exceeded? */
1078
+ if ( sigma.x < 0x10000L )
1079
+ {
1080
+ /* don't create variable bevels for very small deviations; */
1081
+ /* FT_Sin(x) = 0 for x <= 57 */
1082
+ if ( fixed_bevel || ft_pos_abs( theta ) > 57 )
1083
+ bevel = TRUE;
1084
+ }
1085
+ }
1086
+
1087
+ if ( bevel ) /* this is a bevel (broken angle) */
1088
+ {
1089
+ if ( fixed_bevel )
1090
+ {
1091
+ /* the outer corners are simply joined together */
1092
+ FT_Vector delta;
1093
+
1094
+
1095
+ /* add bevel */
1096
+ FT_Vector_From_Polar( &delta,
1097
+ radius,
1098
+ stroker->angle_out + rotate );
1099
+ delta.x += stroker->center.x;
1100
+ delta.y += stroker->center.y;
1101
+
1102
+ border->movable = FALSE;
1103
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1104
+ }
1105
+ else /* variable bevel or clipped miter */
1106
+ {
1107
+ /* the miter is truncated */
1108
+ FT_Vector middle, delta;
1109
+ FT_Fixed coef;
1110
+
1111
+
1112
+ /* compute middle point and first angle point */
1113
+ FT_Vector_From_Polar( &middle,
1114
+ FT_MulFix( radius, stroker->miter_limit ),
1115
+ phi );
1116
+
1117
+ coef = FT_DivFix( 0x10000L - sigma.x, sigma.y );
1118
+ delta.x = FT_MulFix( middle.y, coef );
1119
+ delta.y = FT_MulFix( -middle.x, coef );
1120
+
1121
+ middle.x += stroker->center.x;
1122
+ middle.y += stroker->center.y;
1123
+ delta.x += middle.x;
1124
+ delta.y += middle.y;
1125
+
1126
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1127
+ if ( error )
1128
+ goto Exit;
1129
+
1130
+ /* compute second angle point */
1131
+ delta.x = middle.x - delta.x + middle.x;
1132
+ delta.y = middle.y - delta.y + middle.y;
1133
+
1134
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1135
+ if ( error )
1136
+ goto Exit;
1137
+
1138
+ /* finally, add an end point; only needed if not lineto */
1139
+ /* (line_length is zero for curves) */
1140
+ if ( line_length == 0 )
1141
+ {
1142
+ FT_Vector_From_Polar( &delta,
1143
+ radius,
1144
+ stroker->angle_out + rotate );
1145
+
1146
+ delta.x += stroker->center.x;
1147
+ delta.y += stroker->center.y;
1148
+
1149
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1150
+ }
1151
+ }
1152
+ }
1153
+ else /* this is a miter (intersection) */
1154
+ {
1155
+ FT_Fixed length;
1156
+ FT_Vector delta;
1157
+
1158
+
1159
+ length = FT_MulDiv( stroker->radius, stroker->miter_limit, sigma.x );
1160
+
1161
+ FT_Vector_From_Polar( &delta, length, phi );
1162
+ delta.x += stroker->center.x;
1163
+ delta.y += stroker->center.y;
1164
+
1165
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1166
+ if ( error )
1167
+ goto Exit;
1168
+
1169
+ /* now add an end point; only needed if not lineto */
1170
+ /* (line_length is zero for curves) */
1171
+ if ( line_length == 0 )
1172
+ {
1173
+ FT_Vector_From_Polar( &delta,
1174
+ stroker->radius,
1175
+ stroker->angle_out + rotate );
1176
+ delta.x += stroker->center.x;
1177
+ delta.y += stroker->center.y;
1178
+
1179
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1180
+ }
1181
+ }
1182
+ }
1183
+
1184
+ Exit:
1185
+ return error;
1186
+ }
1187
+
1188
+
1189
+ static FT_Error
1190
+ ft_stroker_process_corner( FT_Stroker stroker,
1191
+ FT_Fixed line_length )
1192
+ {
1193
+ FT_Error error = FT_Err_Ok;
1194
+ FT_Angle turn;
1195
+ FT_Int inside_side;
1196
+
1197
+
1198
+ turn = FT_Angle_Diff( stroker->angle_in, stroker->angle_out );
1199
+
1200
+ /* no specific corner processing is required if the turn is 0 */
1201
+ if ( turn == 0 )
1202
+ goto Exit;
1203
+
1204
+ /* when we turn to the right, the inside side is 0 */
1205
+ /* otherwise, the inside side is 1 */
1206
+ inside_side = ( turn < 0 );
1207
+
1208
+ /* process the inside side */
1209
+ error = ft_stroker_inside( stroker, inside_side, line_length );
1210
+ if ( error )
1211
+ goto Exit;
1212
+
1213
+ /* process the outside side */
1214
+ error = ft_stroker_outside( stroker, !inside_side, line_length );
1215
+
1216
+ Exit:
1217
+ return error;
1218
+ }
1219
+
1220
+
1221
+ /* add two points to the left and right borders corresponding to the */
1222
+ /* start of the subpath */
1223
+ static FT_Error
1224
+ ft_stroker_subpath_start( FT_Stroker stroker,
1225
+ FT_Angle start_angle,
1226
+ FT_Fixed line_length )
1227
+ {
1228
+ FT_Vector delta;
1229
+ FT_Vector point;
1230
+ FT_Error error;
1231
+ FT_StrokeBorder border;
1232
+
1233
+
1234
+ FT_Vector_From_Polar( &delta, stroker->radius,
1235
+ start_angle + FT_ANGLE_PI2 );
1236
+
1237
+ point.x = stroker->center.x + delta.x;
1238
+ point.y = stroker->center.y + delta.y;
1239
+
1240
+ border = stroker->borders;
1241
+ error = ft_stroke_border_moveto( border, &point );
1242
+ if ( error )
1243
+ goto Exit;
1244
+
1245
+ point.x = stroker->center.x - delta.x;
1246
+ point.y = stroker->center.y - delta.y;
1247
+
1248
+ border++;
1249
+ error = ft_stroke_border_moveto( border, &point );
1250
+
1251
+ /* save angle, position, and line length for last join */
1252
+ /* (line_length is zero for curves) */
1253
+ stroker->subpath_angle = start_angle;
1254
+ stroker->first_point = FALSE;
1255
+ stroker->subpath_line_length = line_length;
1256
+
1257
+ Exit:
1258
+ return error;
1259
+ }
1260
+
1261
+
1262
+ /* documentation is in ftstroke.h */
1263
+
1264
+ FT_EXPORT_DEF( FT_Error )
1265
+ FT_Stroker_LineTo( FT_Stroker stroker,
1266
+ FT_Vector* to )
1267
+ {
1268
+ FT_Error error = FT_Err_Ok;
1269
+ FT_StrokeBorder border;
1270
+ FT_Vector delta;
1271
+ FT_Angle angle;
1272
+ FT_Int side;
1273
+ FT_Fixed line_length;
1274
+
1275
+
1276
+ if ( !stroker || !to )
1277
+ return FT_THROW( Invalid_Argument );
1278
+
1279
+ delta.x = to->x - stroker->center.x;
1280
+ delta.y = to->y - stroker->center.y;
1281
+
1282
+ /* a zero-length lineto is a no-op; avoid creating a spurious corner */
1283
+ if ( delta.x == 0 && delta.y == 0 )
1284
+ goto Exit;
1285
+
1286
+ /* compute length of line */
1287
+ line_length = FT_Vector_Length( &delta );
1288
+
1289
+ angle = FT_Atan2( delta.x, delta.y );
1290
+ FT_Vector_From_Polar( &delta, stroker->radius, angle + FT_ANGLE_PI2 );
1291
+
1292
+ /* process corner if necessary */
1293
+ if ( stroker->first_point )
1294
+ {
1295
+ /* This is the first segment of a subpath. We need to */
1296
+ /* add a point to each border at their respective starting */
1297
+ /* point locations. */
1298
+ error = ft_stroker_subpath_start( stroker, angle, line_length );
1299
+ if ( error )
1300
+ goto Exit;
1301
+ }
1302
+ else
1303
+ {
1304
+ /* process the current corner */
1305
+ stroker->angle_out = angle;
1306
+ error = ft_stroker_process_corner( stroker, line_length );
1307
+ if ( error )
1308
+ goto Exit;
1309
+ }
1310
+
1311
+ /* now add a line segment to both the `inside' and `outside' paths */
1312
+ for ( border = stroker->borders, side = 1; side >= 0; side--, border++ )
1313
+ {
1314
+ FT_Vector point;
1315
+
1316
+
1317
+ point.x = to->x + delta.x;
1318
+ point.y = to->y + delta.y;
1319
+
1320
+ /* the ends of lineto borders are movable */
1321
+ error = ft_stroke_border_lineto( border, &point, TRUE );
1322
+ if ( error )
1323
+ goto Exit;
1324
+
1325
+ delta.x = -delta.x;
1326
+ delta.y = -delta.y;
1327
+ }
1328
+
1329
+ stroker->angle_in = angle;
1330
+ stroker->center = *to;
1331
+ stroker->line_length = line_length;
1332
+
1333
+ Exit:
1334
+ return error;
1335
+ }
1336
+
1337
+
1338
+ /* documentation is in ftstroke.h */
1339
+
1340
+ FT_EXPORT_DEF( FT_Error )
1341
+ FT_Stroker_ConicTo( FT_Stroker stroker,
1342
+ FT_Vector* control,
1343
+ FT_Vector* to )
1344
+ {
1345
+ FT_Error error = FT_Err_Ok;
1346
+ FT_Vector bez_stack[34];
1347
+ FT_Vector* arc;
1348
+ FT_Vector* limit = bez_stack + 30;
1349
+ FT_Bool first_arc = TRUE;
1350
+
1351
+
1352
+ if ( !stroker || !control || !to )
1353
+ {
1354
+ error = FT_THROW( Invalid_Argument );
1355
+ goto Exit;
1356
+ }
1357
+
1358
+ /* if all control points are coincident, this is a no-op; */
1359
+ /* avoid creating a spurious corner */
1360
+ if ( FT_IS_SMALL( stroker->center.x - control->x ) &&
1361
+ FT_IS_SMALL( stroker->center.y - control->y ) &&
1362
+ FT_IS_SMALL( control->x - to->x ) &&
1363
+ FT_IS_SMALL( control->y - to->y ) )
1364
+ {
1365
+ stroker->center = *to;
1366
+ goto Exit;
1367
+ }
1368
+
1369
+ arc = bez_stack;
1370
+ arc[0] = *to;
1371
+ arc[1] = *control;
1372
+ arc[2] = stroker->center;
1373
+
1374
+ while ( arc >= bez_stack )
1375
+ {
1376
+ FT_Angle angle_in, angle_out;
1377
+
1378
+
1379
+ /* initialize with current direction */
1380
+ angle_in = angle_out = stroker->angle_in;
1381
+
1382
+ if ( arc < limit &&
1383
+ !ft_conic_is_small_enough( arc, &angle_in, &angle_out ) )
1384
+ {
1385
+ if ( stroker->first_point )
1386
+ stroker->angle_in = angle_in;
1387
+
1388
+ ft_conic_split( arc );
1389
+ arc += 2;
1390
+ continue;
1391
+ }
1392
+
1393
+ if ( first_arc )
1394
+ {
1395
+ first_arc = FALSE;
1396
+
1397
+ /* process corner if necessary */
1398
+ if ( stroker->first_point )
1399
+ error = ft_stroker_subpath_start( stroker, angle_in, 0 );
1400
+ else
1401
+ {
1402
+ stroker->angle_out = angle_in;
1403
+ error = ft_stroker_process_corner( stroker, 0 );
1404
+ }
1405
+ }
1406
+ else if ( ft_pos_abs( FT_Angle_Diff( stroker->angle_in, angle_in ) ) >
1407
+ FT_SMALL_CONIC_THRESHOLD / 4 )
1408
+ {
1409
+ /* if the deviation from one arc to the next is too great, */
1410
+ /* add a round corner */
1411
+ stroker->center = arc[2];
1412
+ stroker->angle_out = angle_in;
1413
+ stroker->line_join = FT_STROKER_LINEJOIN_ROUND;
1414
+
1415
+ error = ft_stroker_process_corner( stroker, 0 );
1416
+
1417
+ /* reinstate line join style */
1418
+ stroker->line_join = stroker->line_join_saved;
1419
+ }
1420
+
1421
+ if ( error )
1422
+ goto Exit;
1423
+
1424
+ /* the arc's angle is small enough; we can add it directly to each */
1425
+ /* border */
1426
+ {
1427
+ FT_Vector ctrl, end;
1428
+ FT_Angle theta, phi, rotate, alpha0 = 0;
1429
+ FT_Fixed length;
1430
+ FT_StrokeBorder border;
1431
+ FT_Int side;
1432
+
1433
+
1434
+ theta = FT_Angle_Diff( angle_in, angle_out ) / 2;
1435
+ phi = angle_in + theta;
1436
+ length = FT_DivFix( stroker->radius, FT_Cos( theta ) );
1437
+
1438
+ /* compute direction of original arc */
1439
+ if ( stroker->handle_wide_strokes )
1440
+ alpha0 = FT_Atan2( arc[0].x - arc[2].x, arc[0].y - arc[2].y );
1441
+
1442
+ for ( border = stroker->borders, side = 0;
1443
+ side <= 1;
1444
+ side++, border++ )
1445
+ {
1446
+ rotate = FT_SIDE_TO_ROTATE( side );
1447
+
1448
+ /* compute control point */
1449
+ FT_Vector_From_Polar( &ctrl, length, phi + rotate );
1450
+ ctrl.x += arc[1].x;
1451
+ ctrl.y += arc[1].y;
1452
+
1453
+ /* compute end point */
1454
+ FT_Vector_From_Polar( &end, stroker->radius, angle_out + rotate );
1455
+ end.x += arc[0].x;
1456
+ end.y += arc[0].y;
1457
+
1458
+ if ( stroker->handle_wide_strokes )
1459
+ {
1460
+ FT_Vector start;
1461
+ FT_Angle alpha1;
1462
+
1463
+
1464
+ /* determine whether the border radius is greater than the */
1465
+ /* radius of curvature of the original arc */
1466
+ start = border->points[border->num_points - 1];
1467
+
1468
+ alpha1 = FT_Atan2( end.x - start.x, end.y - start.y );
1469
+
1470
+ /* is the direction of the border arc opposite to */
1471
+ /* that of the original arc? */
1472
+ if ( ft_pos_abs( FT_Angle_Diff( alpha0, alpha1 ) ) >
1473
+ FT_ANGLE_PI / 2 )
1474
+ {
1475
+ FT_Angle beta, gamma;
1476
+ FT_Vector bvec, delta;
1477
+ FT_Fixed blen, sinA, sinB, alen;
1478
+
1479
+
1480
+ /* use the sine rule to find the intersection point */
1481
+ beta = FT_Atan2( arc[2].x - start.x, arc[2].y - start.y );
1482
+ gamma = FT_Atan2( arc[0].x - end.x, arc[0].y - end.y );
1483
+
1484
+ bvec.x = end.x - start.x;
1485
+ bvec.y = end.y - start.y;
1486
+
1487
+ blen = FT_Vector_Length( &bvec );
1488
+
1489
+ sinA = ft_pos_abs( FT_Sin( alpha1 - gamma ) );
1490
+ sinB = ft_pos_abs( FT_Sin( beta - gamma ) );
1491
+
1492
+ alen = FT_MulDiv( blen, sinA, sinB );
1493
+
1494
+ FT_Vector_From_Polar( &delta, alen, beta );
1495
+ delta.x += start.x;
1496
+ delta.y += start.y;
1497
+
1498
+ /* circumnavigate the negative sector backwards */
1499
+ border->movable = FALSE;
1500
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1501
+ if ( error )
1502
+ goto Exit;
1503
+ error = ft_stroke_border_lineto( border, &end, FALSE );
1504
+ if ( error )
1505
+ goto Exit;
1506
+ error = ft_stroke_border_conicto( border, &ctrl, &start );
1507
+ if ( error )
1508
+ goto Exit;
1509
+ /* and then move to the endpoint */
1510
+ error = ft_stroke_border_lineto( border, &end, FALSE );
1511
+ if ( error )
1512
+ goto Exit;
1513
+
1514
+ continue;
1515
+ }
1516
+
1517
+ /* else fall through */
1518
+ }
1519
+
1520
+ /* simply add an arc */
1521
+ error = ft_stroke_border_conicto( border, &ctrl, &end );
1522
+ if ( error )
1523
+ goto Exit;
1524
+ }
1525
+ }
1526
+
1527
+ arc -= 2;
1528
+
1529
+ stroker->angle_in = angle_out;
1530
+ }
1531
+
1532
+ stroker->center = *to;
1533
+ stroker->line_length = 0;
1534
+
1535
+ Exit:
1536
+ return error;
1537
+ }
1538
+
1539
+
1540
+ /* documentation is in ftstroke.h */
1541
+
1542
+ FT_EXPORT_DEF( FT_Error )
1543
+ FT_Stroker_CubicTo( FT_Stroker stroker,
1544
+ FT_Vector* control1,
1545
+ FT_Vector* control2,
1546
+ FT_Vector* to )
1547
+ {
1548
+ FT_Error error = FT_Err_Ok;
1549
+ FT_Vector bez_stack[37];
1550
+ FT_Vector* arc;
1551
+ FT_Vector* limit = bez_stack + 32;
1552
+ FT_Bool first_arc = TRUE;
1553
+
1554
+
1555
+ if ( !stroker || !control1 || !control2 || !to )
1556
+ {
1557
+ error = FT_THROW( Invalid_Argument );
1558
+ goto Exit;
1559
+ }
1560
+
1561
+ /* if all control points are coincident, this is a no-op; */
1562
+ /* avoid creating a spurious corner */
1563
+ if ( FT_IS_SMALL( stroker->center.x - control1->x ) &&
1564
+ FT_IS_SMALL( stroker->center.y - control1->y ) &&
1565
+ FT_IS_SMALL( control1->x - control2->x ) &&
1566
+ FT_IS_SMALL( control1->y - control2->y ) &&
1567
+ FT_IS_SMALL( control2->x - to->x ) &&
1568
+ FT_IS_SMALL( control2->y - to->y ) )
1569
+ {
1570
+ stroker->center = *to;
1571
+ goto Exit;
1572
+ }
1573
+
1574
+ arc = bez_stack;
1575
+ arc[0] = *to;
1576
+ arc[1] = *control2;
1577
+ arc[2] = *control1;
1578
+ arc[3] = stroker->center;
1579
+
1580
+ while ( arc >= bez_stack )
1581
+ {
1582
+ FT_Angle angle_in, angle_mid, angle_out;
1583
+
1584
+
1585
+ /* initialize with current direction */
1586
+ angle_in = angle_out = angle_mid = stroker->angle_in;
1587
+
1588
+ if ( arc < limit &&
1589
+ !ft_cubic_is_small_enough( arc, &angle_in,
1590
+ &angle_mid, &angle_out ) )
1591
+ {
1592
+ if ( stroker->first_point )
1593
+ stroker->angle_in = angle_in;
1594
+
1595
+ ft_cubic_split( arc );
1596
+ arc += 3;
1597
+ continue;
1598
+ }
1599
+
1600
+ if ( first_arc )
1601
+ {
1602
+ first_arc = FALSE;
1603
+
1604
+ /* process corner if necessary */
1605
+ if ( stroker->first_point )
1606
+ error = ft_stroker_subpath_start( stroker, angle_in, 0 );
1607
+ else
1608
+ {
1609
+ stroker->angle_out = angle_in;
1610
+ error = ft_stroker_process_corner( stroker, 0 );
1611
+ }
1612
+ }
1613
+ else if ( ft_pos_abs( FT_Angle_Diff( stroker->angle_in, angle_in ) ) >
1614
+ FT_SMALL_CUBIC_THRESHOLD / 4 )
1615
+ {
1616
+ /* if the deviation from one arc to the next is too great, */
1617
+ /* add a round corner */
1618
+ stroker->center = arc[3];
1619
+ stroker->angle_out = angle_in;
1620
+ stroker->line_join = FT_STROKER_LINEJOIN_ROUND;
1621
+
1622
+ error = ft_stroker_process_corner( stroker, 0 );
1623
+
1624
+ /* reinstate line join style */
1625
+ stroker->line_join = stroker->line_join_saved;
1626
+ }
1627
+
1628
+ if ( error )
1629
+ goto Exit;
1630
+
1631
+ /* the arc's angle is small enough; we can add it directly to each */
1632
+ /* border */
1633
+ {
1634
+ FT_Vector ctrl1, ctrl2, end;
1635
+ FT_Angle theta1, phi1, theta2, phi2, rotate, alpha0 = 0;
1636
+ FT_Fixed length1, length2;
1637
+ FT_StrokeBorder border;
1638
+ FT_Int side;
1639
+
1640
+
1641
+ theta1 = FT_Angle_Diff( angle_in, angle_mid ) / 2;
1642
+ theta2 = FT_Angle_Diff( angle_mid, angle_out ) / 2;
1643
+ phi1 = ft_angle_mean( angle_in, angle_mid );
1644
+ phi2 = ft_angle_mean( angle_mid, angle_out );
1645
+ length1 = FT_DivFix( stroker->radius, FT_Cos( theta1 ) );
1646
+ length2 = FT_DivFix( stroker->radius, FT_Cos( theta2 ) );
1647
+
1648
+ /* compute direction of original arc */
1649
+ if ( stroker->handle_wide_strokes )
1650
+ alpha0 = FT_Atan2( arc[0].x - arc[3].x, arc[0].y - arc[3].y );
1651
+
1652
+ for ( border = stroker->borders, side = 0;
1653
+ side <= 1;
1654
+ side++, border++ )
1655
+ {
1656
+ rotate = FT_SIDE_TO_ROTATE( side );
1657
+
1658
+ /* compute control points */
1659
+ FT_Vector_From_Polar( &ctrl1, length1, phi1 + rotate );
1660
+ ctrl1.x += arc[2].x;
1661
+ ctrl1.y += arc[2].y;
1662
+
1663
+ FT_Vector_From_Polar( &ctrl2, length2, phi2 + rotate );
1664
+ ctrl2.x += arc[1].x;
1665
+ ctrl2.y += arc[1].y;
1666
+
1667
+ /* compute end point */
1668
+ FT_Vector_From_Polar( &end, stroker->radius, angle_out + rotate );
1669
+ end.x += arc[0].x;
1670
+ end.y += arc[0].y;
1671
+
1672
+ if ( stroker->handle_wide_strokes )
1673
+ {
1674
+ FT_Vector start;
1675
+ FT_Angle alpha1;
1676
+
1677
+
1678
+ /* determine whether the border radius is greater than the */
1679
+ /* radius of curvature of the original arc */
1680
+ start = border->points[border->num_points - 1];
1681
+
1682
+ alpha1 = FT_Atan2( end.x - start.x, end.y - start.y );
1683
+
1684
+ /* is the direction of the border arc opposite to */
1685
+ /* that of the original arc? */
1686
+ if ( ft_pos_abs( FT_Angle_Diff( alpha0, alpha1 ) ) >
1687
+ FT_ANGLE_PI / 2 )
1688
+ {
1689
+ FT_Angle beta, gamma;
1690
+ FT_Vector bvec, delta;
1691
+ FT_Fixed blen, sinA, sinB, alen;
1692
+
1693
+
1694
+ /* use the sine rule to find the intersection point */
1695
+ beta = FT_Atan2( arc[3].x - start.x, arc[3].y - start.y );
1696
+ gamma = FT_Atan2( arc[0].x - end.x, arc[0].y - end.y );
1697
+
1698
+ bvec.x = end.x - start.x;
1699
+ bvec.y = end.y - start.y;
1700
+
1701
+ blen = FT_Vector_Length( &bvec );
1702
+
1703
+ sinA = ft_pos_abs( FT_Sin( alpha1 - gamma ) );
1704
+ sinB = ft_pos_abs( FT_Sin( beta - gamma ) );
1705
+
1706
+ alen = FT_MulDiv( blen, sinA, sinB );
1707
+
1708
+ FT_Vector_From_Polar( &delta, alen, beta );
1709
+ delta.x += start.x;
1710
+ delta.y += start.y;
1711
+
1712
+ /* circumnavigate the negative sector backwards */
1713
+ border->movable = FALSE;
1714
+ error = ft_stroke_border_lineto( border, &delta, FALSE );
1715
+ if ( error )
1716
+ goto Exit;
1717
+ error = ft_stroke_border_lineto( border, &end, FALSE );
1718
+ if ( error )
1719
+ goto Exit;
1720
+ error = ft_stroke_border_cubicto( border,
1721
+ &ctrl2,
1722
+ &ctrl1,
1723
+ &start );
1724
+ if ( error )
1725
+ goto Exit;
1726
+ /* and then move to the endpoint */
1727
+ error = ft_stroke_border_lineto( border, &end, FALSE );
1728
+ if ( error )
1729
+ goto Exit;
1730
+
1731
+ continue;
1732
+ }
1733
+
1734
+ /* else fall through */
1735
+ }
1736
+
1737
+ /* simply add an arc */
1738
+ error = ft_stroke_border_cubicto( border, &ctrl1, &ctrl2, &end );
1739
+ if ( error )
1740
+ goto Exit;
1741
+ }
1742
+ }
1743
+
1744
+ arc -= 3;
1745
+
1746
+ stroker->angle_in = angle_out;
1747
+ }
1748
+
1749
+ stroker->center = *to;
1750
+ stroker->line_length = 0;
1751
+
1752
+ Exit:
1753
+ return error;
1754
+ }
1755
+
1756
+
1757
+ /* documentation is in ftstroke.h */
1758
+
1759
+ FT_EXPORT_DEF( FT_Error )
1760
+ FT_Stroker_BeginSubPath( FT_Stroker stroker,
1761
+ FT_Vector* to,
1762
+ FT_Bool open )
1763
+ {
1764
+ if ( !stroker || !to )
1765
+ return FT_THROW( Invalid_Argument );
1766
+
1767
+ /* We cannot process the first point, because there is not enough */
1768
+ /* information regarding its corner/cap. The latter will be processed */
1769
+ /* in the `FT_Stroker_EndSubPath' routine. */
1770
+ /* */
1771
+ stroker->first_point = TRUE;
1772
+ stroker->center = *to;
1773
+ stroker->subpath_open = open;
1774
+
1775
+ /* Determine if we need to check whether the border radius is greater */
1776
+ /* than the radius of curvature of a curve, to handle this case */
1777
+ /* specially. This is only required if bevel joins or butt caps may */
1778
+ /* be created, because round & miter joins and round & square caps */
1779
+ /* cover the negative sector created with wide strokes. */
1780
+ stroker->handle_wide_strokes =
1781
+ FT_BOOL( stroker->line_join != FT_STROKER_LINEJOIN_ROUND ||
1782
+ ( stroker->subpath_open &&
1783
+ stroker->line_cap == FT_STROKER_LINECAP_BUTT ) );
1784
+
1785
+ /* record the subpath start point for each border */
1786
+ stroker->subpath_start = *to;
1787
+
1788
+ stroker->angle_in = 0;
1789
+
1790
+ return FT_Err_Ok;
1791
+ }
1792
+
1793
+
1794
+ static FT_Error
1795
+ ft_stroker_add_reverse_left( FT_Stroker stroker,
1796
+ FT_Bool open )
1797
+ {
1798
+ FT_StrokeBorder right = stroker->borders + 0;
1799
+ FT_StrokeBorder left = stroker->borders + 1;
1800
+ FT_Int new_points;
1801
+ FT_Error error = FT_Err_Ok;
1802
+
1803
+
1804
+ FT_ASSERT( left->start >= 0 );
1805
+
1806
+ new_points = (FT_Int)left->num_points - left->start;
1807
+ if ( new_points > 0 )
1808
+ {
1809
+ error = ft_stroke_border_grow( right, (FT_UInt)new_points );
1810
+ if ( error )
1811
+ goto Exit;
1812
+
1813
+ {
1814
+ FT_Vector* dst_point = right->points + right->num_points;
1815
+ FT_Byte* dst_tag = right->tags + right->num_points;
1816
+ FT_Vector* src_point = left->points + left->num_points - 1;
1817
+ FT_Byte* src_tag = left->tags + left->num_points - 1;
1818
+
1819
+
1820
+ while ( src_point >= left->points + left->start )
1821
+ {
1822
+ *dst_point = *src_point;
1823
+ *dst_tag = *src_tag;
1824
+
1825
+ if ( open )
1826
+ dst_tag[0] &= ~FT_STROKE_TAG_BEGIN_END;
1827
+ else
1828
+ {
1829
+ FT_Byte ttag =
1830
+ (FT_Byte)( dst_tag[0] & FT_STROKE_TAG_BEGIN_END );
1831
+
1832
+
1833
+ /* switch begin/end tags if necessary */
1834
+ if ( ttag == FT_STROKE_TAG_BEGIN ||
1835
+ ttag == FT_STROKE_TAG_END )
1836
+ dst_tag[0] ^= FT_STROKE_TAG_BEGIN_END;
1837
+ }
1838
+
1839
+ src_point--;
1840
+ src_tag--;
1841
+ dst_point++;
1842
+ dst_tag++;
1843
+ }
1844
+ }
1845
+
1846
+ left->num_points = (FT_UInt)left->start;
1847
+ right->num_points += (FT_UInt)new_points;
1848
+
1849
+ right->movable = FALSE;
1850
+ left->movable = FALSE;
1851
+ }
1852
+
1853
+ Exit:
1854
+ return error;
1855
+ }
1856
+
1857
+
1858
+ /* documentation is in ftstroke.h */
1859
+
1860
+ /* there's a lot of magic in this function! */
1861
+ FT_EXPORT_DEF( FT_Error )
1862
+ FT_Stroker_EndSubPath( FT_Stroker stroker )
1863
+ {
1864
+ FT_Error error = FT_Err_Ok;
1865
+
1866
+
1867
+ if ( !stroker )
1868
+ {
1869
+ error = FT_THROW( Invalid_Argument );
1870
+ goto Exit;
1871
+ }
1872
+
1873
+ if ( stroker->subpath_open )
1874
+ {
1875
+ FT_StrokeBorder right = stroker->borders;
1876
+
1877
+
1878
+ /* All right, this is an opened path, we need to add a cap between */
1879
+ /* right & left, add the reverse of left, then add a final cap */
1880
+ /* between left & right. */
1881
+ error = ft_stroker_cap( stroker, stroker->angle_in, 0 );
1882
+ if ( error )
1883
+ goto Exit;
1884
+
1885
+ /* add reversed points from `left' to `right' */
1886
+ error = ft_stroker_add_reverse_left( stroker, TRUE );
1887
+ if ( error )
1888
+ goto Exit;
1889
+
1890
+ /* now add the final cap */
1891
+ stroker->center = stroker->subpath_start;
1892
+ error = ft_stroker_cap( stroker,
1893
+ stroker->subpath_angle + FT_ANGLE_PI, 0 );
1894
+ if ( error )
1895
+ goto Exit;
1896
+
1897
+ /* Now end the right subpath accordingly. The left one is */
1898
+ /* rewind and doesn't need further processing. */
1899
+ ft_stroke_border_close( right, FALSE );
1900
+ }
1901
+ else
1902
+ {
1903
+ /* close the path if needed */
1904
+ if ( !FT_IS_SMALL( stroker->center.x - stroker->subpath_start.x ) ||
1905
+ !FT_IS_SMALL( stroker->center.y - stroker->subpath_start.y ) )
1906
+ {
1907
+ error = FT_Stroker_LineTo( stroker, &stroker->subpath_start );
1908
+ if ( error )
1909
+ goto Exit;
1910
+ }
1911
+
1912
+ /* process the corner */
1913
+ stroker->angle_out = stroker->subpath_angle;
1914
+
1915
+ error = ft_stroker_process_corner( stroker,
1916
+ stroker->subpath_line_length );
1917
+ if ( error )
1918
+ goto Exit;
1919
+
1920
+ /* then end our two subpaths */
1921
+ ft_stroke_border_close( stroker->borders + 0, FALSE );
1922
+ ft_stroke_border_close( stroker->borders + 1, TRUE );
1923
+ }
1924
+
1925
+ Exit:
1926
+ return error;
1927
+ }
1928
+
1929
+
1930
+ /* documentation is in ftstroke.h */
1931
+
1932
+ FT_EXPORT_DEF( FT_Error )
1933
+ FT_Stroker_GetBorderCounts( FT_Stroker stroker,
1934
+ FT_StrokerBorder border,
1935
+ FT_UInt *anum_points,
1936
+ FT_UInt *anum_contours )
1937
+ {
1938
+ FT_UInt num_points = 0, num_contours = 0;
1939
+ FT_Error error;
1940
+
1941
+
1942
+ if ( !stroker || border > 1 )
1943
+ {
1944
+ error = FT_THROW( Invalid_Argument );
1945
+ goto Exit;
1946
+ }
1947
+
1948
+ error = ft_stroke_border_get_counts( stroker->borders + border,
1949
+ &num_points, &num_contours );
1950
+ Exit:
1951
+ if ( anum_points )
1952
+ *anum_points = num_points;
1953
+
1954
+ if ( anum_contours )
1955
+ *anum_contours = num_contours;
1956
+
1957
+ return error;
1958
+ }
1959
+
1960
+
1961
+ /* documentation is in ftstroke.h */
1962
+
1963
+ FT_EXPORT_DEF( FT_Error )
1964
+ FT_Stroker_GetCounts( FT_Stroker stroker,
1965
+ FT_UInt *anum_points,
1966
+ FT_UInt *anum_contours )
1967
+ {
1968
+ FT_UInt count1, count2, num_points = 0;
1969
+ FT_UInt count3, count4, num_contours = 0;
1970
+ FT_Error error;
1971
+
1972
+
1973
+ if ( !stroker )
1974
+ {
1975
+ error = FT_THROW( Invalid_Argument );
1976
+ goto Exit;
1977
+ }
1978
+
1979
+ error = ft_stroke_border_get_counts( stroker->borders + 0,
1980
+ &count1, &count2 );
1981
+ if ( error )
1982
+ goto Exit;
1983
+
1984
+ error = ft_stroke_border_get_counts( stroker->borders + 1,
1985
+ &count3, &count4 );
1986
+ if ( error )
1987
+ goto Exit;
1988
+
1989
+ num_points = count1 + count3;
1990
+ num_contours = count2 + count4;
1991
+
1992
+ Exit:
1993
+ if ( anum_points )
1994
+ *anum_points = num_points;
1995
+
1996
+ if ( anum_contours )
1997
+ *anum_contours = num_contours;
1998
+
1999
+ return error;
2000
+ }
2001
+
2002
+
2003
+ /* documentation is in ftstroke.h */
2004
+
2005
+ FT_EXPORT_DEF( void )
2006
+ FT_Stroker_ExportBorder( FT_Stroker stroker,
2007
+ FT_StrokerBorder border,
2008
+ FT_Outline* outline )
2009
+ {
2010
+ if ( !stroker || !outline )
2011
+ return;
2012
+
2013
+ if ( border == FT_STROKER_BORDER_LEFT ||
2014
+ border == FT_STROKER_BORDER_RIGHT )
2015
+ {
2016
+ FT_StrokeBorder sborder = & stroker->borders[border];
2017
+
2018
+
2019
+ if ( sborder->valid )
2020
+ ft_stroke_border_export( sborder, outline );
2021
+ }
2022
+ }
2023
+
2024
+
2025
+ /* documentation is in ftstroke.h */
2026
+
2027
+ FT_EXPORT_DEF( void )
2028
+ FT_Stroker_Export( FT_Stroker stroker,
2029
+ FT_Outline* outline )
2030
+ {
2031
+ FT_Stroker_ExportBorder( stroker, FT_STROKER_BORDER_LEFT, outline );
2032
+ FT_Stroker_ExportBorder( stroker, FT_STROKER_BORDER_RIGHT, outline );
2033
+ }
2034
+
2035
+
2036
+ /* documentation is in ftstroke.h */
2037
+
2038
+ /*
2039
+ * The following is very similar to FT_Outline_Decompose, except
2040
+ * that we do support opened paths, and do not scale the outline.
2041
+ */
2042
+ FT_EXPORT_DEF( FT_Error )
2043
+ FT_Stroker_ParseOutline( FT_Stroker stroker,
2044
+ FT_Outline* outline,
2045
+ FT_Bool opened )
2046
+ {
2047
+ FT_Vector v_last;
2048
+ FT_Vector v_control;
2049
+ FT_Vector v_start;
2050
+
2051
+ FT_Vector* point;
2052
+ FT_Vector* limit;
2053
+ FT_Byte* tags;
2054
+
2055
+ FT_Error error;
2056
+
2057
+ FT_Int n; /* index of contour in outline */
2058
+ FT_Int first; /* index of first point in contour */
2059
+ FT_Int last; /* index of last point in contour */
2060
+
2061
+ FT_Int tag; /* current point's state */
2062
+
2063
+
2064
+ if ( !outline )
2065
+ return FT_THROW( Invalid_Outline );
2066
+
2067
+ if ( !stroker )
2068
+ return FT_THROW( Invalid_Argument );
2069
+
2070
+ FT_Stroker_Rewind( stroker );
2071
+
2072
+ last = -1;
2073
+ for ( n = 0; n < outline->n_contours; n++ )
2074
+ {
2075
+ first = last + 1;
2076
+ last = outline->contours[n];
2077
+
2078
+ /* skip empty points; we don't stroke these */
2079
+ if ( last <= first )
2080
+ continue;
2081
+
2082
+ limit = outline->points + last;
2083
+
2084
+ v_start = outline->points[first];
2085
+ v_last = outline->points[last];
2086
+
2087
+ v_control = v_start;
2088
+
2089
+ point = outline->points + first;
2090
+ tags = outline->tags + first;
2091
+ tag = FT_CURVE_TAG( tags[0] );
2092
+
2093
+ /* A contour cannot start with a cubic control point! */
2094
+ if ( tag == FT_CURVE_TAG_CUBIC )
2095
+ goto Invalid_Outline;
2096
+
2097
+ /* check first point to determine origin */
2098
+ if ( tag == FT_CURVE_TAG_CONIC )
2099
+ {
2100
+ /* First point is conic control. Yes, this happens. */
2101
+ if ( FT_CURVE_TAG( outline->tags[last] ) == FT_CURVE_TAG_ON )
2102
+ {
2103
+ /* start at last point if it is on the curve */
2104
+ v_start = v_last;
2105
+ limit--;
2106
+ }
2107
+ else
2108
+ {
2109
+ /* if both first and last points are conic, */
2110
+ /* start at their middle */
2111
+ v_start.x = ( v_start.x + v_last.x ) / 2;
2112
+ v_start.y = ( v_start.y + v_last.y ) / 2;
2113
+ }
2114
+ point--;
2115
+ tags--;
2116
+ }
2117
+
2118
+ error = FT_Stroker_BeginSubPath( stroker, &v_start, opened );
2119
+ if ( error )
2120
+ goto Exit;
2121
+
2122
+ while ( point < limit )
2123
+ {
2124
+ point++;
2125
+ tags++;
2126
+
2127
+ tag = FT_CURVE_TAG( tags[0] );
2128
+ switch ( tag )
2129
+ {
2130
+ case FT_CURVE_TAG_ON: /* emit a single line_to */
2131
+ {
2132
+ FT_Vector vec;
2133
+
2134
+
2135
+ vec.x = point->x;
2136
+ vec.y = point->y;
2137
+
2138
+ error = FT_Stroker_LineTo( stroker, &vec );
2139
+ if ( error )
2140
+ goto Exit;
2141
+ continue;
2142
+ }
2143
+
2144
+ case FT_CURVE_TAG_CONIC: /* consume conic arcs */
2145
+ v_control.x = point->x;
2146
+ v_control.y = point->y;
2147
+
2148
+ Do_Conic:
2149
+ if ( point < limit )
2150
+ {
2151
+ FT_Vector vec;
2152
+ FT_Vector v_middle;
2153
+
2154
+
2155
+ point++;
2156
+ tags++;
2157
+ tag = FT_CURVE_TAG( tags[0] );
2158
+
2159
+ vec = point[0];
2160
+
2161
+ if ( tag == FT_CURVE_TAG_ON )
2162
+ {
2163
+ error = FT_Stroker_ConicTo( stroker, &v_control, &vec );
2164
+ if ( error )
2165
+ goto Exit;
2166
+ continue;
2167
+ }
2168
+
2169
+ if ( tag != FT_CURVE_TAG_CONIC )
2170
+ goto Invalid_Outline;
2171
+
2172
+ v_middle.x = ( v_control.x + vec.x ) / 2;
2173
+ v_middle.y = ( v_control.y + vec.y ) / 2;
2174
+
2175
+ error = FT_Stroker_ConicTo( stroker, &v_control, &v_middle );
2176
+ if ( error )
2177
+ goto Exit;
2178
+
2179
+ v_control = vec;
2180
+ goto Do_Conic;
2181
+ }
2182
+
2183
+ error = FT_Stroker_ConicTo( stroker, &v_control, &v_start );
2184
+ goto Close;
2185
+
2186
+ default: /* FT_CURVE_TAG_CUBIC */
2187
+ {
2188
+ FT_Vector vec1, vec2;
2189
+
2190
+
2191
+ if ( point + 1 > limit ||
2192
+ FT_CURVE_TAG( tags[1] ) != FT_CURVE_TAG_CUBIC )
2193
+ goto Invalid_Outline;
2194
+
2195
+ point += 2;
2196
+ tags += 2;
2197
+
2198
+ vec1 = point[-2];
2199
+ vec2 = point[-1];
2200
+
2201
+ if ( point <= limit )
2202
+ {
2203
+ FT_Vector vec;
2204
+
2205
+
2206
+ vec = point[0];
2207
+
2208
+ error = FT_Stroker_CubicTo( stroker, &vec1, &vec2, &vec );
2209
+ if ( error )
2210
+ goto Exit;
2211
+ continue;
2212
+ }
2213
+
2214
+ error = FT_Stroker_CubicTo( stroker, &vec1, &vec2, &v_start );
2215
+ goto Close;
2216
+ }
2217
+ }
2218
+ }
2219
+
2220
+ Close:
2221
+ if ( error )
2222
+ goto Exit;
2223
+
2224
+ /* don't try to end the path if no segments have been generated */
2225
+ if ( !stroker->first_point )
2226
+ {
2227
+ error = FT_Stroker_EndSubPath( stroker );
2228
+ if ( error )
2229
+ goto Exit;
2230
+ }
2231
+ }
2232
+
2233
+ return FT_Err_Ok;
2234
+
2235
+ Exit:
2236
+ return error;
2237
+
2238
+ Invalid_Outline:
2239
+ return FT_THROW( Invalid_Outline );
2240
+ }
2241
+
2242
+
2243
+ /* documentation is in ftstroke.h */
2244
+
2245
+ FT_EXPORT_DEF( FT_Error )
2246
+ FT_Glyph_Stroke( FT_Glyph *pglyph,
2247
+ FT_Stroker stroker,
2248
+ FT_Bool destroy )
2249
+ {
2250
+ FT_Error error = FT_ERR( Invalid_Argument );
2251
+ FT_Glyph glyph = NULL;
2252
+
2253
+
2254
+ if ( !pglyph )
2255
+ goto Exit;
2256
+
2257
+ glyph = *pglyph;
2258
+ if ( !glyph || glyph->clazz != &ft_outline_glyph_class )
2259
+ goto Exit;
2260
+
2261
+ {
2262
+ FT_Glyph copy;
2263
+
2264
+
2265
+ error = FT_Glyph_Copy( glyph, &copy );
2266
+ if ( error )
2267
+ goto Exit;
2268
+
2269
+ glyph = copy;
2270
+ }
2271
+
2272
+ {
2273
+ FT_OutlineGlyph oglyph = (FT_OutlineGlyph)glyph;
2274
+ FT_Outline* outline = &oglyph->outline;
2275
+ FT_UInt num_points, num_contours;
2276
+
2277
+
2278
+ error = FT_Stroker_ParseOutline( stroker, outline, FALSE );
2279
+ if ( error )
2280
+ goto Fail;
2281
+
2282
+ FT_Stroker_GetCounts( stroker, &num_points, &num_contours );
2283
+
2284
+ FT_Outline_Done( glyph->library, outline );
2285
+
2286
+ error = FT_Outline_New( glyph->library,
2287
+ num_points,
2288
+ (FT_Int)num_contours,
2289
+ outline );
2290
+ if ( error )
2291
+ goto Fail;
2292
+
2293
+ outline->n_points = 0;
2294
+ outline->n_contours = 0;
2295
+
2296
+ FT_Stroker_Export( stroker, outline );
2297
+ }
2298
+
2299
+ if ( destroy )
2300
+ FT_Done_Glyph( *pglyph );
2301
+
2302
+ *pglyph = glyph;
2303
+ goto Exit;
2304
+
2305
+ Fail:
2306
+ FT_Done_Glyph( glyph );
2307
+ glyph = NULL;
2308
+
2309
+ if ( !destroy )
2310
+ *pglyph = NULL;
2311
+
2312
+ Exit:
2313
+ return error;
2314
+ }
2315
+
2316
+
2317
+ /* documentation is in ftstroke.h */
2318
+
2319
+ FT_EXPORT_DEF( FT_Error )
2320
+ FT_Glyph_StrokeBorder( FT_Glyph *pglyph,
2321
+ FT_Stroker stroker,
2322
+ FT_Bool inside,
2323
+ FT_Bool destroy )
2324
+ {
2325
+ FT_Error error = FT_ERR( Invalid_Argument );
2326
+ FT_Glyph glyph = NULL;
2327
+
2328
+
2329
+ if ( !pglyph )
2330
+ goto Exit;
2331
+
2332
+ glyph = *pglyph;
2333
+ if ( !glyph || glyph->clazz != &ft_outline_glyph_class )
2334
+ goto Exit;
2335
+
2336
+ {
2337
+ FT_Glyph copy;
2338
+
2339
+
2340
+ error = FT_Glyph_Copy( glyph, &copy );
2341
+ if ( error )
2342
+ goto Exit;
2343
+
2344
+ glyph = copy;
2345
+ }
2346
+
2347
+ {
2348
+ FT_OutlineGlyph oglyph = (FT_OutlineGlyph)glyph;
2349
+ FT_StrokerBorder border;
2350
+ FT_Outline* outline = &oglyph->outline;
2351
+ FT_UInt num_points, num_contours;
2352
+
2353
+
2354
+ border = FT_Outline_GetOutsideBorder( outline );
2355
+ if ( inside )
2356
+ {
2357
+ if ( border == FT_STROKER_BORDER_LEFT )
2358
+ border = FT_STROKER_BORDER_RIGHT;
2359
+ else
2360
+ border = FT_STROKER_BORDER_LEFT;
2361
+ }
2362
+
2363
+ error = FT_Stroker_ParseOutline( stroker, outline, FALSE );
2364
+ if ( error )
2365
+ goto Fail;
2366
+
2367
+ FT_Stroker_GetBorderCounts( stroker, border,
2368
+ &num_points, &num_contours );
2369
+
2370
+ FT_Outline_Done( glyph->library, outline );
2371
+
2372
+ error = FT_Outline_New( glyph->library,
2373
+ num_points,
2374
+ (FT_Int)num_contours,
2375
+ outline );
2376
+ if ( error )
2377
+ goto Fail;
2378
+
2379
+ outline->n_points = 0;
2380
+ outline->n_contours = 0;
2381
+
2382
+ FT_Stroker_ExportBorder( stroker, border, outline );
2383
+ }
2384
+
2385
+ if ( destroy )
2386
+ FT_Done_Glyph( *pglyph );
2387
+
2388
+ *pglyph = glyph;
2389
+ goto Exit;
2390
+
2391
+ Fail:
2392
+ FT_Done_Glyph( glyph );
2393
+ glyph = NULL;
2394
+
2395
+ if ( !destroy )
2396
+ *pglyph = NULL;
2397
+
2398
+ Exit:
2399
+ return error;
2400
+ }
2401
+
2402
+
2403
+ /* END */