@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,2740 @@
1
+ /****************************************************************************
2
+ *
3
+ * ttgload.c
4
+ *
5
+ * TrueType Glyph Loader (body).
6
+ *
7
+ * Copyright (C) 1996-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 <ft2build.h>
20
+ #include <freetype/internal/ftdebug.h>
21
+ #include FT_CONFIG_CONFIG_H
22
+ #include <freetype/internal/ftcalc.h>
23
+ #include <freetype/internal/ftstream.h>
24
+ #include <freetype/internal/sfnt.h>
25
+ #include <freetype/tttags.h>
26
+ #include <freetype/ftoutln.h>
27
+ #include <freetype/ftdriver.h>
28
+ #include <freetype/ftlist.h>
29
+
30
+ #include "ttgload.h"
31
+ #include "ttpload.h"
32
+
33
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
34
+ #include "ttgxvar.h"
35
+ #endif
36
+
37
+ #include "tterrors.h"
38
+
39
+
40
+ /**************************************************************************
41
+ *
42
+ * The macro FT_COMPONENT is used in trace mode. It is an implicit
43
+ * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
44
+ * messages during execution.
45
+ */
46
+ #undef FT_COMPONENT
47
+ #define FT_COMPONENT ttgload
48
+
49
+
50
+ /**************************************************************************
51
+ *
52
+ * Simple glyph flags.
53
+ */
54
+ #define ON_CURVE_POINT 0x01 /* same value as FT_CURVE_TAG_ON */
55
+ #define X_SHORT_VECTOR 0x02
56
+ #define Y_SHORT_VECTOR 0x04
57
+ #define REPEAT_FLAG 0x08
58
+ #define X_POSITIVE 0x10 /* two meanings depending on X_SHORT_VECTOR */
59
+ #define SAME_X 0x10
60
+ #define Y_POSITIVE 0x20 /* two meanings depending on Y_SHORT_VECTOR */
61
+ #define SAME_Y 0x20
62
+ #define OVERLAP_SIMPLE 0x40 /* retained as FT_OUTLINE_OVERLAP */
63
+
64
+
65
+ /**************************************************************************
66
+ *
67
+ * Composite glyph flags.
68
+ */
69
+ #define ARGS_ARE_WORDS 0x0001
70
+ #define ARGS_ARE_XY_VALUES 0x0002
71
+ #define ROUND_XY_TO_GRID 0x0004
72
+ #define WE_HAVE_A_SCALE 0x0008
73
+ /* reserved 0x0010 */
74
+ #define MORE_COMPONENTS 0x0020
75
+ #define WE_HAVE_AN_XY_SCALE 0x0040
76
+ #define WE_HAVE_A_2X2 0x0080
77
+ #define WE_HAVE_INSTR 0x0100
78
+ #define USE_MY_METRICS 0x0200
79
+ #define OVERLAP_COMPOUND 0x0400 /* retained as FT_OUTLINE_OVERLAP */
80
+ #define SCALED_COMPONENT_OFFSET 0x0800
81
+ #define UNSCALED_COMPONENT_OFFSET 0x1000
82
+
83
+
84
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
85
+ #define IS_DEFAULT_INSTANCE( _face ) \
86
+ ( !( FT_IS_NAMED_INSTANCE( _face ) || \
87
+ FT_IS_VARIATION( _face ) ) )
88
+ #else
89
+ #define IS_DEFAULT_INSTANCE( _face ) 1
90
+ #endif
91
+
92
+
93
+ /**************************************************************************
94
+ *
95
+ * Return the horizontal metrics in font units for a given glyph.
96
+ */
97
+ FT_LOCAL_DEF( void )
98
+ TT_Get_HMetrics( TT_Face face,
99
+ FT_UInt idx,
100
+ FT_Short* lsb,
101
+ FT_UShort* aw )
102
+ {
103
+ ( (SFNT_Service)face->sfnt )->get_metrics( face, 0, idx, lsb, aw );
104
+
105
+ FT_TRACE5(( " advance width (font units): %d\n", *aw ));
106
+ FT_TRACE5(( " left side bearing (font units): %d\n", *lsb ));
107
+ }
108
+
109
+
110
+ /**************************************************************************
111
+ *
112
+ * Return the vertical metrics in font units for a given glyph.
113
+ * See function `tt_loader_set_pp' below for explanations.
114
+ */
115
+ FT_LOCAL_DEF( void )
116
+ TT_Get_VMetrics( TT_Face face,
117
+ FT_UInt idx,
118
+ FT_Pos yMax,
119
+ FT_Short* tsb,
120
+ FT_UShort* ah )
121
+ {
122
+ if ( face->vertical_info )
123
+ ( (SFNT_Service)face->sfnt )->get_metrics( face, 1, idx, tsb, ah );
124
+
125
+ else if ( face->os2.version != 0xFFFFU )
126
+ {
127
+ *tsb = (FT_Short)( face->os2.sTypoAscender - yMax );
128
+ *ah = (FT_UShort)FT_ABS( face->os2.sTypoAscender -
129
+ face->os2.sTypoDescender );
130
+ }
131
+
132
+ else
133
+ {
134
+ *tsb = (FT_Short)( face->horizontal.Ascender - yMax );
135
+ *ah = (FT_UShort)FT_ABS( face->horizontal.Ascender -
136
+ face->horizontal.Descender );
137
+ }
138
+
139
+ #ifdef FT_DEBUG_LEVEL_TRACE
140
+ if ( !face->vertical_info )
141
+ FT_TRACE5(( " [vertical metrics missing, computing values]\n" ));
142
+ #endif
143
+
144
+ FT_TRACE5(( " advance height (font units): %d\n", *ah ));
145
+ FT_TRACE5(( " top side bearing (font units): %d\n", *tsb ));
146
+ }
147
+
148
+
149
+ static FT_Error
150
+ tt_get_metrics( TT_Loader loader,
151
+ FT_UInt glyph_index )
152
+ {
153
+ TT_Face face = loader->face;
154
+
155
+ FT_Error error;
156
+ FT_Stream stream = loader->stream;
157
+
158
+ FT_Short left_bearing = 0, top_bearing = 0;
159
+ FT_UShort advance_width = 0, advance_height = 0;
160
+
161
+ /* we must preserve the stream position */
162
+ /* (which gets altered by the metrics functions) */
163
+ FT_ULong pos = FT_STREAM_POS();
164
+
165
+
166
+ TT_Get_HMetrics( face, glyph_index,
167
+ &left_bearing,
168
+ &advance_width );
169
+ TT_Get_VMetrics( face, glyph_index,
170
+ loader->bbox.yMax,
171
+ &top_bearing,
172
+ &advance_height );
173
+
174
+ if ( FT_STREAM_SEEK( pos ) )
175
+ return error;
176
+
177
+ loader->left_bearing = left_bearing;
178
+ loader->advance = advance_width;
179
+ loader->top_bearing = top_bearing;
180
+ loader->vadvance = advance_height;
181
+
182
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
183
+ /* With the incremental interface, these values are set by */
184
+ /* a call to `tt_get_metrics_incremental'. */
185
+ if ( face->root.internal->incremental_interface == NULL )
186
+ #endif
187
+ {
188
+ if ( !loader->linear_def )
189
+ {
190
+ loader->linear_def = 1;
191
+ loader->linear = advance_width;
192
+ }
193
+ }
194
+
195
+ return FT_Err_Ok;
196
+ }
197
+
198
+
199
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
200
+
201
+ static void
202
+ tt_get_metrics_incremental( TT_Loader loader,
203
+ FT_UInt glyph_index )
204
+ {
205
+ TT_Face face = loader->face;
206
+
207
+ FT_Short left_bearing = 0, top_bearing = 0;
208
+ FT_UShort advance_width = 0, advance_height = 0;
209
+
210
+
211
+ /* If this is an incrementally loaded font check whether there are */
212
+ /* overriding metrics for this glyph. */
213
+ if ( face->root.internal->incremental_interface &&
214
+ face->root.internal->incremental_interface->funcs->get_glyph_metrics )
215
+ {
216
+ FT_Incremental_MetricsRec incr_metrics;
217
+ FT_Error error;
218
+
219
+
220
+ incr_metrics.bearing_x = loader->left_bearing;
221
+ incr_metrics.bearing_y = 0;
222
+ incr_metrics.advance = loader->advance;
223
+ incr_metrics.advance_v = 0;
224
+
225
+ error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
226
+ face->root.internal->incremental_interface->object,
227
+ glyph_index, FALSE, &incr_metrics );
228
+ if ( error )
229
+ goto Exit;
230
+
231
+ left_bearing = (FT_Short)incr_metrics.bearing_x;
232
+ advance_width = (FT_UShort)incr_metrics.advance;
233
+
234
+ #if 0
235
+
236
+ /* GWW: Do I do the same for vertical metrics? */
237
+ incr_metrics.bearing_x = 0;
238
+ incr_metrics.bearing_y = loader->top_bearing;
239
+ incr_metrics.advance = loader->vadvance;
240
+
241
+ error = face->root.internal->incremental_interface->funcs->get_glyph_metrics(
242
+ face->root.internal->incremental_interface->object,
243
+ glyph_index, TRUE, &incr_metrics );
244
+ if ( error )
245
+ goto Exit;
246
+
247
+ top_bearing = (FT_Short)incr_metrics.bearing_y;
248
+ advance_height = (FT_UShort)incr_metrics.advance;
249
+
250
+ #endif /* 0 */
251
+
252
+ loader->left_bearing = left_bearing;
253
+ loader->advance = advance_width;
254
+ loader->top_bearing = top_bearing;
255
+ loader->vadvance = advance_height;
256
+
257
+ if ( !loader->linear_def )
258
+ {
259
+ loader->linear_def = 1;
260
+ loader->linear = advance_width;
261
+ }
262
+ }
263
+
264
+ Exit:
265
+ return;
266
+ }
267
+
268
+ #endif /* FT_CONFIG_OPTION_INCREMENTAL */
269
+
270
+
271
+ /**************************************************************************
272
+ *
273
+ * The following functions are used by default with TrueType fonts.
274
+ * However, they can be replaced by alternatives if we need to support
275
+ * TrueType-compressed formats (like MicroType) in the future.
276
+ *
277
+ */
278
+
279
+ FT_CALLBACK_DEF( FT_Error )
280
+ TT_Access_Glyph_Frame( TT_Loader loader,
281
+ FT_UInt glyph_index,
282
+ FT_ULong offset,
283
+ FT_UInt byte_count )
284
+ {
285
+ FT_Error error;
286
+ FT_Stream stream = loader->stream;
287
+
288
+ FT_UNUSED( glyph_index );
289
+
290
+
291
+ /* the following line sets the `error' variable through macros! */
292
+ if ( FT_STREAM_SEEK( offset ) || FT_FRAME_ENTER( byte_count ) )
293
+ return error;
294
+
295
+ loader->cursor = stream->cursor;
296
+ loader->limit = stream->limit;
297
+
298
+ return FT_Err_Ok;
299
+ }
300
+
301
+
302
+ FT_CALLBACK_DEF( void )
303
+ TT_Forget_Glyph_Frame( TT_Loader loader )
304
+ {
305
+ FT_Stream stream = loader->stream;
306
+
307
+
308
+ FT_FRAME_EXIT();
309
+ }
310
+
311
+
312
+ FT_CALLBACK_DEF( FT_Error )
313
+ TT_Load_Glyph_Header( TT_Loader loader )
314
+ {
315
+ FT_Byte* p = loader->cursor;
316
+ FT_Byte* limit = loader->limit;
317
+
318
+
319
+ if ( p + 10 > limit )
320
+ return FT_THROW( Invalid_Outline );
321
+
322
+ loader->n_contours = FT_NEXT_SHORT( p );
323
+
324
+ loader->bbox.xMin = FT_NEXT_SHORT( p );
325
+ loader->bbox.yMin = FT_NEXT_SHORT( p );
326
+ loader->bbox.xMax = FT_NEXT_SHORT( p );
327
+ loader->bbox.yMax = FT_NEXT_SHORT( p );
328
+
329
+ FT_TRACE5(( " # of contours: %d\n", loader->n_contours ));
330
+ FT_TRACE5(( " xMin: %4ld xMax: %4ld\n", loader->bbox.xMin,
331
+ loader->bbox.xMax ));
332
+ FT_TRACE5(( " yMin: %4ld yMax: %4ld\n", loader->bbox.yMin,
333
+ loader->bbox.yMax ));
334
+ loader->cursor = p;
335
+
336
+ return FT_Err_Ok;
337
+ }
338
+
339
+
340
+ FT_CALLBACK_DEF( FT_Error )
341
+ TT_Load_Simple_Glyph( TT_Loader load )
342
+ {
343
+ FT_Error error;
344
+ FT_Byte* p = load->cursor;
345
+ FT_Byte* limit = load->limit;
346
+ FT_GlyphLoader gloader = load->gloader;
347
+ FT_Outline* outline = &gloader->current.outline;
348
+ FT_Int n_contours = load->n_contours;
349
+ FT_Int n_points;
350
+ FT_UShort n_ins;
351
+
352
+ FT_Byte *flag, *flag_limit;
353
+ FT_Byte c, count;
354
+ FT_Vector *vec, *vec_limit;
355
+ FT_Pos x, y;
356
+ FT_UShort *cont, *cont_limit;
357
+ FT_Int last;
358
+
359
+
360
+ /* check that we can add the contours to the glyph */
361
+ error = FT_GLYPHLOADER_CHECK_POINTS( gloader, 0, n_contours );
362
+ if ( error )
363
+ goto Fail;
364
+
365
+ /* check space for contours array + instructions count */
366
+ if ( n_contours >= 0xFFF || p + 2 * n_contours + 2 > limit )
367
+ goto Invalid_Outline;
368
+
369
+ /* reading the contours' endpoints & number of points */
370
+ cont = outline->contours;
371
+ cont_limit = cont + n_contours;
372
+
373
+ last = -1;
374
+ for ( ; cont < cont_limit; cont++ )
375
+ {
376
+ *cont = FT_NEXT_USHORT( p );
377
+
378
+ if ( *cont <= last )
379
+ goto Invalid_Outline;
380
+
381
+ last = *cont;
382
+ }
383
+
384
+ n_points = last + 1;
385
+
386
+ FT_TRACE5(( " # of points: %d\n", n_points ));
387
+
388
+ /* note that we will add four phantom points later */
389
+ error = FT_GLYPHLOADER_CHECK_POINTS( gloader, n_points + 4, 0 );
390
+ if ( error )
391
+ goto Fail;
392
+
393
+ /* space checked above */
394
+ n_ins = FT_NEXT_USHORT( p );
395
+
396
+ FT_TRACE5(( " Instructions size: %u\n", n_ins ));
397
+
398
+ /* check instructions size */
399
+ if ( p + n_ins > limit )
400
+ {
401
+ FT_TRACE1(( "TT_Load_Simple_Glyph: excessive instruction count\n" ));
402
+ error = FT_THROW( Too_Many_Hints );
403
+ goto Fail;
404
+ }
405
+
406
+ #ifdef TT_USE_BYTECODE_INTERPRETER
407
+
408
+ if ( IS_HINTED( load->load_flags ) )
409
+ {
410
+ TT_ExecContext exec = load->exec;
411
+ FT_Memory memory = exec->memory;
412
+
413
+
414
+ if ( exec->glyphSize )
415
+ FT_FREE( exec->glyphIns );
416
+ exec->glyphSize = 0;
417
+
418
+ /* we don't trust `maxSizeOfInstructions' in the `maxp' table */
419
+ /* and thus allocate the bytecode array size by ourselves */
420
+ if ( n_ins )
421
+ {
422
+ if ( FT_DUP( exec->glyphIns, p, n_ins ) )
423
+ return error;
424
+
425
+ exec->glyphSize = n_ins;
426
+ }
427
+ }
428
+
429
+ #endif /* TT_USE_BYTECODE_INTERPRETER */
430
+
431
+ p += n_ins;
432
+
433
+ /* reading the point tags */
434
+ flag = outline->tags;
435
+ flag_limit = flag + n_points;
436
+
437
+ FT_ASSERT( flag );
438
+
439
+ while ( flag < flag_limit )
440
+ {
441
+ if ( p + 1 > limit )
442
+ goto Invalid_Outline;
443
+
444
+ *flag++ = c = FT_NEXT_BYTE( p );
445
+ if ( c & REPEAT_FLAG )
446
+ {
447
+ if ( p + 1 > limit )
448
+ goto Invalid_Outline;
449
+
450
+ count = FT_NEXT_BYTE( p );
451
+ if ( flag + (FT_Int)count > flag_limit )
452
+ goto Invalid_Outline;
453
+
454
+ for ( ; count > 0; count-- )
455
+ *flag++ = c;
456
+ }
457
+ }
458
+
459
+ /* retain the overlap flag */
460
+ if ( n_points && outline->tags[0] & OVERLAP_SIMPLE )
461
+ gloader->base.outline.flags |= FT_OUTLINE_OVERLAP;
462
+
463
+ /* reading the X coordinates */
464
+
465
+ vec = outline->points;
466
+ vec_limit = vec + n_points;
467
+ flag = outline->tags;
468
+ x = 0;
469
+
470
+ for ( ; vec < vec_limit; vec++, flag++ )
471
+ {
472
+ FT_Pos delta = 0;
473
+ FT_Byte f = *flag;
474
+
475
+
476
+ if ( f & X_SHORT_VECTOR )
477
+ {
478
+ if ( p + 1 > limit )
479
+ goto Invalid_Outline;
480
+
481
+ delta = (FT_Pos)FT_NEXT_BYTE( p );
482
+ if ( !( f & X_POSITIVE ) )
483
+ delta = -delta;
484
+ }
485
+ else if ( !( f & SAME_X ) )
486
+ {
487
+ if ( p + 2 > limit )
488
+ goto Invalid_Outline;
489
+
490
+ delta = (FT_Pos)FT_NEXT_SHORT( p );
491
+ }
492
+
493
+ x += delta;
494
+ vec->x = x;
495
+ }
496
+
497
+ /* reading the Y coordinates */
498
+
499
+ vec = outline->points;
500
+ vec_limit = vec + n_points;
501
+ flag = outline->tags;
502
+ y = 0;
503
+
504
+ for ( ; vec < vec_limit; vec++, flag++ )
505
+ {
506
+ FT_Pos delta = 0;
507
+ FT_Byte f = *flag;
508
+
509
+
510
+ if ( f & Y_SHORT_VECTOR )
511
+ {
512
+ if ( p + 1 > limit )
513
+ goto Invalid_Outline;
514
+
515
+ delta = (FT_Pos)FT_NEXT_BYTE( p );
516
+ if ( !( f & Y_POSITIVE ) )
517
+ delta = -delta;
518
+ }
519
+ else if ( !( f & SAME_Y ) )
520
+ {
521
+ if ( p + 2 > limit )
522
+ goto Invalid_Outline;
523
+
524
+ delta = (FT_Pos)FT_NEXT_SHORT( p );
525
+ }
526
+
527
+ y += delta;
528
+ vec->y = y;
529
+
530
+ /* the cast is for stupid compilers */
531
+ *flag = (FT_Byte)( f & ON_CURVE_POINT );
532
+ }
533
+
534
+ outline->n_points = (FT_UShort)n_points;
535
+ outline->n_contours = (FT_UShort)n_contours;
536
+
537
+ load->cursor = p;
538
+
539
+ Fail:
540
+ return error;
541
+
542
+ Invalid_Outline:
543
+ error = FT_THROW( Invalid_Outline );
544
+ goto Fail;
545
+ }
546
+
547
+
548
+ FT_CALLBACK_DEF( FT_Error )
549
+ TT_Load_Composite_Glyph( TT_Loader loader )
550
+ {
551
+ FT_Error error;
552
+ FT_Byte* p = loader->cursor;
553
+ FT_Byte* limit = loader->limit;
554
+ FT_GlyphLoader gloader = loader->gloader;
555
+ FT_Long num_glyphs = loader->face->root.num_glyphs;
556
+ FT_SubGlyph subglyph;
557
+ FT_UInt num_subglyphs;
558
+
559
+
560
+ num_subglyphs = 0;
561
+
562
+ do
563
+ {
564
+ FT_Fixed xx, xy, yy, yx;
565
+ FT_UInt count;
566
+
567
+
568
+ /* check that we can load a new subglyph */
569
+ error = FT_GlyphLoader_CheckSubGlyphs( gloader, num_subglyphs + 1 );
570
+ if ( error )
571
+ goto Fail;
572
+
573
+ /* check space */
574
+ if ( p + 4 > limit )
575
+ goto Invalid_Composite;
576
+
577
+ subglyph = gloader->current.subglyphs + num_subglyphs;
578
+
579
+ subglyph->arg1 = subglyph->arg2 = 0;
580
+
581
+ subglyph->flags = FT_NEXT_USHORT( p );
582
+ subglyph->index = FT_NEXT_USHORT( p );
583
+
584
+ /* we reject composites that have components */
585
+ /* with invalid glyph indices */
586
+ if ( subglyph->index >= num_glyphs )
587
+ goto Invalid_Composite;
588
+
589
+ /* check space */
590
+ count = 2;
591
+ if ( subglyph->flags & ARGS_ARE_WORDS )
592
+ count += 2;
593
+ if ( subglyph->flags & WE_HAVE_A_SCALE )
594
+ count += 2;
595
+ else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE )
596
+ count += 4;
597
+ else if ( subglyph->flags & WE_HAVE_A_2X2 )
598
+ count += 8;
599
+
600
+ if ( p + count > limit )
601
+ goto Invalid_Composite;
602
+
603
+ /* read arguments */
604
+ if ( subglyph->flags & ARGS_ARE_XY_VALUES )
605
+ {
606
+ if ( subglyph->flags & ARGS_ARE_WORDS )
607
+ {
608
+ subglyph->arg1 = FT_NEXT_SHORT( p );
609
+ subglyph->arg2 = FT_NEXT_SHORT( p );
610
+ }
611
+ else
612
+ {
613
+ subglyph->arg1 = FT_NEXT_CHAR( p );
614
+ subglyph->arg2 = FT_NEXT_CHAR( p );
615
+ }
616
+ }
617
+ else
618
+ {
619
+ if ( subglyph->flags & ARGS_ARE_WORDS )
620
+ {
621
+ subglyph->arg1 = (FT_Int)FT_NEXT_USHORT( p );
622
+ subglyph->arg2 = (FT_Int)FT_NEXT_USHORT( p );
623
+ }
624
+ else
625
+ {
626
+ subglyph->arg1 = (FT_Int)FT_NEXT_BYTE( p );
627
+ subglyph->arg2 = (FT_Int)FT_NEXT_BYTE( p );
628
+ }
629
+ }
630
+
631
+ /* read transform */
632
+ xx = yy = 0x10000L;
633
+ xy = yx = 0;
634
+
635
+ if ( subglyph->flags & WE_HAVE_A_SCALE )
636
+ {
637
+ xx = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
638
+ yy = xx;
639
+ }
640
+ else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE )
641
+ {
642
+ xx = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
643
+ yy = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
644
+ }
645
+ else if ( subglyph->flags & WE_HAVE_A_2X2 )
646
+ {
647
+ xx = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
648
+ yx = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
649
+ xy = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
650
+ yy = (FT_Fixed)FT_NEXT_SHORT( p ) * 4;
651
+ }
652
+
653
+ subglyph->transform.xx = xx;
654
+ subglyph->transform.xy = xy;
655
+ subglyph->transform.yx = yx;
656
+ subglyph->transform.yy = yy;
657
+
658
+ num_subglyphs++;
659
+
660
+ } while ( subglyph->flags & MORE_COMPONENTS );
661
+
662
+ gloader->current.num_subglyphs = num_subglyphs;
663
+ FT_TRACE5(( " %d component%s\n",
664
+ num_subglyphs,
665
+ num_subglyphs > 1 ? "s" : "" ));
666
+
667
+ #ifdef FT_DEBUG_LEVEL_TRACE
668
+ {
669
+ FT_UInt i;
670
+
671
+
672
+ subglyph = gloader->current.subglyphs;
673
+
674
+ for ( i = 0; i < num_subglyphs; i++ )
675
+ {
676
+ if ( num_subglyphs > 1 )
677
+ FT_TRACE7(( " subglyph %d:\n", i ));
678
+
679
+ FT_TRACE7(( " glyph index: %d\n", subglyph->index ));
680
+
681
+ if ( subglyph->flags & ARGS_ARE_XY_VALUES )
682
+ FT_TRACE7(( " offset: x=%d, y=%d\n",
683
+ subglyph->arg1,
684
+ subglyph->arg2 ));
685
+ else
686
+ FT_TRACE7(( " matching points: base=%d, component=%d\n",
687
+ subglyph->arg1,
688
+ subglyph->arg2 ));
689
+
690
+ if ( subglyph->flags & WE_HAVE_A_SCALE )
691
+ FT_TRACE7(( " scaling: %f\n",
692
+ (double)subglyph->transform.xx / 65536 ));
693
+ else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE )
694
+ FT_TRACE7(( " scaling: x=%f, y=%f\n",
695
+ (double)subglyph->transform.xx / 65536,
696
+ (double)subglyph->transform.yy / 65536 ));
697
+ else if ( subglyph->flags & WE_HAVE_A_2X2 )
698
+ {
699
+ FT_TRACE7(( " scaling: xx=%f, yx=%f\n",
700
+ (double)subglyph->transform.xx / 65536,
701
+ (double)subglyph->transform.yx / 65536 ));
702
+ FT_TRACE7(( " xy=%f, yy=%f\n",
703
+ (double)subglyph->transform.xy / 65536,
704
+ (double)subglyph->transform.yy / 65536 ));
705
+ }
706
+
707
+ subglyph++;
708
+ }
709
+ }
710
+ #endif /* FT_DEBUG_LEVEL_TRACE */
711
+
712
+ #ifdef TT_USE_BYTECODE_INTERPRETER
713
+
714
+ {
715
+ FT_Stream stream = loader->stream;
716
+
717
+
718
+ /* we must undo the FT_FRAME_ENTER in order to point */
719
+ /* to the composite instructions, if we find some. */
720
+ /* We will process them later. */
721
+ /* */
722
+ loader->ins_pos = (FT_ULong)( FT_STREAM_POS() +
723
+ p - limit );
724
+ }
725
+
726
+ #endif
727
+
728
+ loader->cursor = p;
729
+
730
+ Fail:
731
+ return error;
732
+
733
+ Invalid_Composite:
734
+ error = FT_THROW( Invalid_Composite );
735
+ goto Fail;
736
+ }
737
+
738
+
739
+ FT_LOCAL_DEF( void )
740
+ TT_Init_Glyph_Loading( TT_Face face )
741
+ {
742
+ face->access_glyph_frame = TT_Access_Glyph_Frame;
743
+ face->read_glyph_header = TT_Load_Glyph_Header;
744
+ face->read_simple_glyph = TT_Load_Simple_Glyph;
745
+ face->read_composite_glyph = TT_Load_Composite_Glyph;
746
+ face->forget_glyph_frame = TT_Forget_Glyph_Frame;
747
+ }
748
+
749
+
750
+ static void
751
+ tt_prepare_zone( TT_GlyphZone zone,
752
+ FT_GlyphLoad load,
753
+ FT_UInt start_point,
754
+ FT_UInt start_contour )
755
+ {
756
+ zone->n_points = load->outline.n_points + 4 - (FT_UShort)start_point;
757
+ zone->n_contours = load->outline.n_contours - (FT_UShort)start_contour;
758
+ zone->org = load->extra_points + start_point;
759
+ zone->cur = load->outline.points + start_point;
760
+ zone->orus = load->extra_points2 + start_point;
761
+ zone->tags = load->outline.tags + start_point;
762
+ zone->contours = load->outline.contours + start_contour;
763
+ zone->first_point = (FT_UShort)start_point;
764
+ }
765
+
766
+
767
+ /**************************************************************************
768
+ *
769
+ * @Function:
770
+ * TT_Hint_Glyph
771
+ *
772
+ * @Description:
773
+ * Hint the glyph using the zone prepared by the caller. Note that
774
+ * the zone is supposed to include four phantom points.
775
+ */
776
+ static FT_Error
777
+ TT_Hint_Glyph( TT_Loader loader,
778
+ FT_Bool is_composite )
779
+ {
780
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
781
+ TT_Face face = loader->face;
782
+ TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face );
783
+ #endif
784
+
785
+ TT_GlyphZone zone = &loader->zone;
786
+
787
+ #ifdef TT_USE_BYTECODE_INTERPRETER
788
+ TT_ExecContext exec = loader->exec;
789
+ FT_Long n_ins = exec->glyphSize;
790
+ #else
791
+ FT_UNUSED( is_composite );
792
+ #endif
793
+
794
+
795
+ #ifdef TT_USE_BYTECODE_INTERPRETER
796
+ /* save original point positions in `org' array */
797
+ if ( n_ins > 0 )
798
+ FT_ARRAY_COPY( zone->org, zone->cur, zone->n_points );
799
+
800
+ /* Reset graphics state. */
801
+ exec->GS = loader->size->GS;
802
+
803
+ /* XXX: UNDOCUMENTED! Hinting instructions of a composite glyph */
804
+ /* completely refer to the (already) hinted subglyphs. */
805
+ if ( is_composite )
806
+ {
807
+ exec->metrics.x_scale = 1 << 16;
808
+ exec->metrics.y_scale = 1 << 16;
809
+
810
+ FT_ARRAY_COPY( zone->orus, zone->cur, zone->n_points );
811
+ }
812
+ else
813
+ {
814
+ exec->metrics.x_scale = loader->size->metrics->x_scale;
815
+ exec->metrics.y_scale = loader->size->metrics->y_scale;
816
+ }
817
+ #endif
818
+
819
+ /* round phantom points */
820
+ zone->cur[zone->n_points - 4].x =
821
+ FT_PIX_ROUND( zone->cur[zone->n_points - 4].x );
822
+ zone->cur[zone->n_points - 3].x =
823
+ FT_PIX_ROUND( zone->cur[zone->n_points - 3].x );
824
+ zone->cur[zone->n_points - 2].y =
825
+ FT_PIX_ROUND( zone->cur[zone->n_points - 2].y );
826
+ zone->cur[zone->n_points - 1].y =
827
+ FT_PIX_ROUND( zone->cur[zone->n_points - 1].y );
828
+
829
+ #ifdef TT_USE_BYTECODE_INTERPRETER
830
+
831
+ if ( n_ins > 0 )
832
+ {
833
+ FT_Error error;
834
+
835
+
836
+ TT_Set_CodeRange( exec, tt_coderange_glyph, exec->glyphIns, n_ins );
837
+
838
+ exec->is_composite = is_composite;
839
+ exec->pts = *zone;
840
+
841
+ error = TT_Run_Context( exec );
842
+ if ( error && exec->pedantic_hinting )
843
+ return error;
844
+
845
+ /* store drop-out mode in bits 5-7; set bit 2 also as a marker */
846
+ loader->gloader->current.outline.tags[0] |=
847
+ ( exec->GS.scan_type << 5 ) | FT_CURVE_TAG_HAS_SCANMODE;
848
+ }
849
+
850
+ #endif
851
+
852
+ /* Save possibly modified glyph phantom points unless in v40 backward */
853
+ /* compatibility mode, where no movement on the x axis means no reason */
854
+ /* to change bearings or advance widths. */
855
+
856
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
857
+ if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
858
+ exec->backward_compatibility )
859
+ return FT_Err_Ok;
860
+ #endif
861
+
862
+ loader->pp1 = zone->cur[zone->n_points - 4];
863
+ loader->pp2 = zone->cur[zone->n_points - 3];
864
+ loader->pp3 = zone->cur[zone->n_points - 2];
865
+ loader->pp4 = zone->cur[zone->n_points - 1];
866
+
867
+ return FT_Err_Ok;
868
+ }
869
+
870
+
871
+ /**************************************************************************
872
+ *
873
+ * @Function:
874
+ * TT_Process_Simple_Glyph
875
+ *
876
+ * @Description:
877
+ * Once a simple glyph has been loaded, it needs to be processed.
878
+ * Usually, this means scaling and hinting through bytecode
879
+ * interpretation.
880
+ */
881
+ static FT_Error
882
+ TT_Process_Simple_Glyph( TT_Loader loader )
883
+ {
884
+ FT_Error error = FT_Err_Ok;
885
+ FT_GlyphLoader gloader = loader->gloader;
886
+ FT_Outline* outline = &gloader->current.outline;
887
+ FT_Int n_points = outline->n_points;
888
+
889
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
890
+ FT_Memory memory = loader->face->root.memory;
891
+ FT_Vector* unrounded = NULL;
892
+ #endif
893
+
894
+
895
+ /* set phantom points */
896
+ outline->points[n_points ] = loader->pp1;
897
+ outline->points[n_points + 1] = loader->pp2;
898
+ outline->points[n_points + 2] = loader->pp3;
899
+ outline->points[n_points + 3] = loader->pp4;
900
+
901
+ n_points += 4;
902
+
903
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
904
+
905
+ if ( !IS_DEFAULT_INSTANCE( FT_FACE( loader->face ) ) )
906
+ {
907
+ if ( FT_QNEW_ARRAY( unrounded, n_points ) )
908
+ goto Exit;
909
+
910
+ /* Deltas apply to the unscaled data. */
911
+ error = TT_Vary_Apply_Glyph_Deltas( loader,
912
+ outline,
913
+ unrounded );
914
+ if ( error )
915
+ goto Exit;
916
+ }
917
+
918
+ #endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
919
+
920
+ if ( IS_HINTED( loader->load_flags ) )
921
+ {
922
+ tt_prepare_zone( &loader->zone, &gloader->current, 0, 0 );
923
+
924
+ FT_ARRAY_COPY( loader->zone.orus, loader->zone.cur,
925
+ loader->zone.n_points );
926
+ }
927
+
928
+ {
929
+ FT_Vector* vec = outline->points;
930
+ FT_Vector* limit = outline->points + n_points;
931
+
932
+ FT_Fixed x_scale = 0; /* pacify compiler */
933
+ FT_Fixed y_scale = 0;
934
+
935
+ FT_Bool do_scale = FALSE;
936
+
937
+
938
+ {
939
+ /* scale the glyph */
940
+ if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
941
+ {
942
+ x_scale = loader->size->metrics->x_scale;
943
+ y_scale = loader->size->metrics->y_scale;
944
+
945
+ do_scale = TRUE;
946
+ }
947
+ }
948
+
949
+ if ( do_scale )
950
+ {
951
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
952
+ if ( !IS_DEFAULT_INSTANCE( FT_FACE( loader->face ) ) )
953
+ {
954
+ FT_Vector* u = unrounded;
955
+
956
+
957
+ for ( ; vec < limit; vec++, u++ )
958
+ {
959
+ vec->x = ADD_LONG( FT_MulFix( u->x, x_scale ), 32 ) >> 6;
960
+ vec->y = ADD_LONG( FT_MulFix( u->y, y_scale ), 32 ) >> 6;
961
+ }
962
+ }
963
+ else
964
+ #endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
965
+ {
966
+ for ( ; vec < limit; vec++ )
967
+ {
968
+ vec->x = FT_MulFix( vec->x, x_scale );
969
+ vec->y = FT_MulFix( vec->y, y_scale );
970
+ }
971
+ }
972
+ }
973
+
974
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
975
+ /* if we have a HVAR table, `pp1' and/or `pp2' */
976
+ /* are already adjusted but unscaled */
977
+ if ( ( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) &&
978
+ IS_HINTED( loader->load_flags ) )
979
+ {
980
+ loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale );
981
+ loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale );
982
+ /* pp1.y and pp2.y are always zero */
983
+ }
984
+ else
985
+ #endif
986
+ {
987
+ loader->pp1 = outline->points[n_points - 4];
988
+ loader->pp2 = outline->points[n_points - 3];
989
+ }
990
+
991
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
992
+ /* if we have a VVAR table, `pp3' and/or `pp4' */
993
+ /* are already adjusted but unscaled */
994
+ if ( ( loader->face->variation_support & TT_FACE_FLAG_VAR_VADVANCE ) &&
995
+ IS_HINTED( loader->load_flags ) )
996
+ {
997
+ loader->pp3.x = FT_MulFix( loader->pp3.x, x_scale );
998
+ loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale );
999
+ loader->pp4.x = FT_MulFix( loader->pp4.x, x_scale );
1000
+ loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale );
1001
+ }
1002
+ else
1003
+ #endif
1004
+ {
1005
+ loader->pp3 = outline->points[n_points - 2];
1006
+ loader->pp4 = outline->points[n_points - 1];
1007
+ }
1008
+ }
1009
+
1010
+ if ( IS_HINTED( loader->load_flags ) )
1011
+ error = TT_Hint_Glyph( loader, 0 );
1012
+
1013
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1014
+ Exit:
1015
+ FT_FREE( unrounded );
1016
+ #endif
1017
+
1018
+ return error;
1019
+ }
1020
+
1021
+
1022
+ /**************************************************************************
1023
+ *
1024
+ * @Function:
1025
+ * TT_Process_Composite_Component
1026
+ *
1027
+ * @Description:
1028
+ * Once a composite component has been loaded, it needs to be
1029
+ * processed. Usually, this means transforming and translating.
1030
+ */
1031
+ static FT_Error
1032
+ TT_Process_Composite_Component( TT_Loader loader,
1033
+ FT_SubGlyph subglyph,
1034
+ FT_UInt start_point,
1035
+ FT_UInt num_base_points )
1036
+ {
1037
+ FT_GlyphLoader gloader = loader->gloader;
1038
+ FT_Outline current;
1039
+ FT_Bool have_scale;
1040
+ FT_Pos x, y;
1041
+
1042
+
1043
+ current.points = gloader->base.outline.points +
1044
+ num_base_points;
1045
+ current.n_points = gloader->base.outline.n_points -
1046
+ (FT_UShort)num_base_points;
1047
+
1048
+ have_scale = FT_BOOL( subglyph->flags & ( WE_HAVE_A_SCALE |
1049
+ WE_HAVE_AN_XY_SCALE |
1050
+ WE_HAVE_A_2X2 ) );
1051
+
1052
+ /* perform the transform required for this subglyph */
1053
+ if ( have_scale )
1054
+ FT_Outline_Transform( &current, &subglyph->transform );
1055
+
1056
+ /* get offset */
1057
+ if ( !( subglyph->flags & ARGS_ARE_XY_VALUES ) )
1058
+ {
1059
+ FT_UInt num_points = gloader->base.outline.n_points;
1060
+ FT_UInt k = (FT_UInt)subglyph->arg1;
1061
+ FT_UInt l = (FT_UInt)subglyph->arg2;
1062
+ FT_Vector* p1;
1063
+ FT_Vector* p2;
1064
+
1065
+
1066
+ /* match l-th point of the newly loaded component to the k-th point */
1067
+ /* of the previously loaded components. */
1068
+
1069
+ /* change to the point numbers used by our outline */
1070
+ k += start_point;
1071
+ l += num_base_points;
1072
+ if ( k >= num_base_points ||
1073
+ l >= num_points )
1074
+ return FT_THROW( Invalid_Composite );
1075
+
1076
+ p1 = gloader->base.outline.points + k;
1077
+ p2 = gloader->base.outline.points + l;
1078
+
1079
+ x = SUB_LONG( p1->x, p2->x );
1080
+ y = SUB_LONG( p1->y, p2->y );
1081
+ }
1082
+ else
1083
+ {
1084
+ x = subglyph->arg1;
1085
+ y = subglyph->arg2;
1086
+
1087
+ if ( !x && !y )
1088
+ return FT_Err_Ok;
1089
+
1090
+ /* Use a default value dependent on */
1091
+ /* TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED. This is useful for old */
1092
+ /* TT fonts which don't set the xxx_COMPONENT_OFFSET bit. */
1093
+
1094
+ if ( have_scale &&
1095
+ #ifdef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
1096
+ !( subglyph->flags & UNSCALED_COMPONENT_OFFSET ) )
1097
+ #else
1098
+ ( subglyph->flags & SCALED_COMPONENT_OFFSET ) )
1099
+ #endif
1100
+ {
1101
+
1102
+ #if 0
1103
+
1104
+ /********************************************************************
1105
+ *
1106
+ * This algorithm is what Apple documents. But it doesn't work.
1107
+ */
1108
+ int a = subglyph->transform.xx > 0 ? subglyph->transform.xx
1109
+ : -subglyph->transform.xx;
1110
+ int b = subglyph->transform.yx > 0 ? subglyph->transform.yx
1111
+ : -subglyph->transform.yx;
1112
+ int c = subglyph->transform.xy > 0 ? subglyph->transform.xy
1113
+ : -subglyph->transform.xy;
1114
+ int d = subglyph->transform.yy > 0 ? subglyph->transform.yy
1115
+ : -subglyph->transform.yy;
1116
+ int m = a > b ? a : b;
1117
+ int n = c > d ? c : d;
1118
+
1119
+
1120
+ if ( a - b <= 33 && a - b >= -33 )
1121
+ m *= 2;
1122
+ if ( c - d <= 33 && c - d >= -33 )
1123
+ n *= 2;
1124
+ x = FT_MulFix( x, m );
1125
+ y = FT_MulFix( y, n );
1126
+
1127
+ #else /* 1 */
1128
+
1129
+ /********************************************************************
1130
+ *
1131
+ * This algorithm is a guess and works much better than the above.
1132
+ */
1133
+ FT_Fixed mac_xscale = FT_Hypot( subglyph->transform.xx,
1134
+ subglyph->transform.xy );
1135
+ FT_Fixed mac_yscale = FT_Hypot( subglyph->transform.yy,
1136
+ subglyph->transform.yx );
1137
+
1138
+
1139
+ x = FT_MulFix( x, mac_xscale );
1140
+ y = FT_MulFix( y, mac_yscale );
1141
+
1142
+ #endif /* 1 */
1143
+
1144
+ }
1145
+
1146
+ if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
1147
+ {
1148
+ FT_Fixed x_scale = loader->size->metrics->x_scale;
1149
+ FT_Fixed y_scale = loader->size->metrics->y_scale;
1150
+
1151
+
1152
+ x = FT_MulFix( x, x_scale );
1153
+ y = FT_MulFix( y, y_scale );
1154
+
1155
+ if ( subglyph->flags & ROUND_XY_TO_GRID )
1156
+ {
1157
+ TT_Face face = loader->face;
1158
+ TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( face );
1159
+
1160
+
1161
+ if ( IS_HINTED( loader->load_flags ) )
1162
+ {
1163
+ /*
1164
+ * We round the horizontal offset only if there is hinting along
1165
+ * the x axis; this corresponds to integer advance width values.
1166
+ *
1167
+ * Theoretically, a glyph's bytecode can toggle ClearType's
1168
+ * `backward compatibility' mode, which would allow modification
1169
+ * of the advance width. In reality, however, applications
1170
+ * neither allow nor expect modified advance widths if subpixel
1171
+ * rendering is active.
1172
+ *
1173
+ */
1174
+ if ( driver->interpreter_version == TT_INTERPRETER_VERSION_35 )
1175
+ x = FT_PIX_ROUND( x );
1176
+
1177
+ y = FT_PIX_ROUND( y );
1178
+ }
1179
+ }
1180
+ }
1181
+ }
1182
+
1183
+ if ( x || y )
1184
+ FT_Outline_Translate( &current, x, y );
1185
+
1186
+ return FT_Err_Ok;
1187
+ }
1188
+
1189
+
1190
+ /**************************************************************************
1191
+ *
1192
+ * @Function:
1193
+ * TT_Process_Composite_Glyph
1194
+ *
1195
+ * @Description:
1196
+ * This is slightly different from TT_Process_Simple_Glyph, in that
1197
+ * its sole purpose is to hint the glyph. Thus this function is
1198
+ * only available when bytecode interpreter is enabled.
1199
+ */
1200
+ static FT_Error
1201
+ TT_Process_Composite_Glyph( TT_Loader loader,
1202
+ FT_UInt start_point,
1203
+ FT_UInt start_contour )
1204
+ {
1205
+ FT_Error error;
1206
+ FT_Outline* outline = &loader->gloader->base.outline;
1207
+ FT_Stream stream = loader->stream;
1208
+ FT_UShort n_ins;
1209
+ FT_UInt i;
1210
+
1211
+
1212
+ /* make room for phantom points */
1213
+ error = FT_GLYPHLOADER_CHECK_POINTS( loader->gloader,
1214
+ outline->n_points + 4,
1215
+ 0 );
1216
+ if ( error )
1217
+ return error;
1218
+
1219
+ outline->points[outline->n_points ] = loader->pp1;
1220
+ outline->points[outline->n_points + 1] = loader->pp2;
1221
+ outline->points[outline->n_points + 2] = loader->pp3;
1222
+ outline->points[outline->n_points + 3] = loader->pp4;
1223
+
1224
+ #ifdef TT_USE_BYTECODE_INTERPRETER
1225
+
1226
+ {
1227
+ TT_ExecContext exec = loader->exec;
1228
+ FT_Memory memory = exec->memory;
1229
+
1230
+
1231
+ if ( exec->glyphSize )
1232
+ FT_FREE( exec->glyphIns );
1233
+ exec->glyphSize = 0;
1234
+
1235
+ /* TT_Load_Composite_Glyph only gives us the offset of instructions */
1236
+ /* so we read them here */
1237
+ if ( FT_STREAM_SEEK( loader->ins_pos ) ||
1238
+ FT_READ_USHORT( n_ins ) )
1239
+ return error;
1240
+
1241
+ FT_TRACE5(( " Instructions size = %hu\n", n_ins ));
1242
+
1243
+ if ( !n_ins )
1244
+ return FT_Err_Ok;
1245
+
1246
+ /* don't trust `maxSizeOfInstructions'; */
1247
+ /* only do a rough safety check */
1248
+ if ( n_ins > loader->byte_len )
1249
+ {
1250
+ FT_TRACE1(( "TT_Process_Composite_Glyph:"
1251
+ " too many instructions (%hu) for glyph with length %u\n",
1252
+ n_ins, loader->byte_len ));
1253
+ return FT_THROW( Too_Many_Hints );
1254
+ }
1255
+
1256
+ if ( FT_QNEW_ARRAY( exec->glyphIns, n_ins ) ||
1257
+ FT_STREAM_READ( exec->glyphIns, n_ins ) )
1258
+ return error;
1259
+
1260
+ exec->glyphSize = n_ins;
1261
+ }
1262
+
1263
+ #endif
1264
+
1265
+ tt_prepare_zone( &loader->zone, &loader->gloader->base,
1266
+ start_point, start_contour );
1267
+
1268
+ /* Some points are likely touched during execution of */
1269
+ /* instructions on components. So let's untouch them. */
1270
+ for ( i = 0; i < loader->zone.n_points - 4U; i++ )
1271
+ loader->zone.tags[i] &= ~FT_CURVE_TAG_TOUCH_BOTH;
1272
+
1273
+ return TT_Hint_Glyph( loader, 1 );
1274
+ }
1275
+
1276
+
1277
+ /*
1278
+ * Calculate the phantom points
1279
+ *
1280
+ * Defining the right side bearing (rsb) as
1281
+ *
1282
+ * rsb = aw - (lsb + xmax - xmin)
1283
+ *
1284
+ * (with `aw' the advance width, `lsb' the left side bearing, and `xmin'
1285
+ * and `xmax' the glyph's minimum and maximum x value), the OpenType
1286
+ * specification defines the initial position of horizontal phantom points
1287
+ * as
1288
+ *
1289
+ * pp1 = (round(xmin - lsb), 0) ,
1290
+ * pp2 = (round(pp1 + aw), 0) .
1291
+ *
1292
+ * Note that the rounding to the grid (in the device space) is not
1293
+ * documented currently in the specification.
1294
+ *
1295
+ * However, the specification lacks the precise definition of vertical
1296
+ * phantom points. Greg Hitchcock provided the following explanation.
1297
+ *
1298
+ * - a `vmtx' table is present
1299
+ *
1300
+ * For any glyph, the minimum and maximum y values (`ymin' and `ymax')
1301
+ * are given in the `glyf' table, the top side bearing (tsb) and advance
1302
+ * height (ah) are given in the `vmtx' table. The bottom side bearing
1303
+ * (bsb) is then calculated as
1304
+ *
1305
+ * bsb = ah - (tsb + ymax - ymin) ,
1306
+ *
1307
+ * and the initial position of vertical phantom points is
1308
+ *
1309
+ * pp3 = (x, round(ymax + tsb)) ,
1310
+ * pp4 = (x, round(pp3 - ah)) .
1311
+ *
1312
+ * See below for value `x'.
1313
+ *
1314
+ * - no `vmtx' table in the font
1315
+ *
1316
+ * If there is an `OS/2' table, we set
1317
+ *
1318
+ * DefaultAscender = sTypoAscender ,
1319
+ * DefaultDescender = sTypoDescender ,
1320
+ *
1321
+ * otherwise we use data from the `hhea' table:
1322
+ *
1323
+ * DefaultAscender = Ascender ,
1324
+ * DefaultDescender = Descender .
1325
+ *
1326
+ * With these two variables we can now set
1327
+ *
1328
+ * ah = DefaultAscender - sDefaultDescender ,
1329
+ * tsb = DefaultAscender - yMax ,
1330
+ *
1331
+ * and proceed as if a `vmtx' table was present.
1332
+ *
1333
+ * Usually we have
1334
+ *
1335
+ * x = aw / 2 , (1)
1336
+ *
1337
+ * but there is one compatibility case where it can be set to
1338
+ *
1339
+ * x = -DefaultDescender -
1340
+ * ((DefaultAscender - DefaultDescender - aw) / 2) . (2)
1341
+ *
1342
+ * and another one with
1343
+ *
1344
+ * x = 0 . (3)
1345
+ *
1346
+ * In Windows, the history of those values is quite complicated,
1347
+ * depending on the hinting engine (that is, the graphics framework).
1348
+ *
1349
+ * framework from to formula
1350
+ * ----------------------------------------------------------
1351
+ * GDI Windows 98 current (1)
1352
+ * (Windows 2000 for NT)
1353
+ * GDI+ Windows XP Windows 7 (2)
1354
+ * GDI+ Windows 8 current (3)
1355
+ * DWrite Windows 7 current (3)
1356
+ *
1357
+ * For simplicity, FreeType uses (1) for grayscale subpixel hinting and
1358
+ * (3) for everything else.
1359
+ *
1360
+ */
1361
+ static void
1362
+ tt_loader_set_pp( TT_Loader loader )
1363
+ {
1364
+ loader->pp1.x = loader->bbox.xMin - loader->left_bearing;
1365
+ loader->pp1.y = 0;
1366
+ loader->pp2.x = loader->pp1.x + loader->advance;
1367
+ loader->pp2.y = 0;
1368
+
1369
+ loader->pp3.x = 0;
1370
+ loader->pp3.y = loader->bbox.yMax + loader->top_bearing;
1371
+ loader->pp4.x = 0;
1372
+ loader->pp4.y = loader->pp3.y - loader->vadvance;
1373
+
1374
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
1375
+ {
1376
+ TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( loader->face );
1377
+
1378
+
1379
+ if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
1380
+ loader->exec &&
1381
+ loader->exec->subpixel_hinting_lean &&
1382
+ loader->exec->grayscale_cleartype )
1383
+ {
1384
+ loader->pp3.x = loader->advance / 2;
1385
+ loader->pp4.x = loader->advance / 2;
1386
+ }
1387
+ }
1388
+ #endif
1389
+ }
1390
+
1391
+
1392
+ /* a utility function to retrieve i-th node from given FT_List */
1393
+ static FT_ListNode
1394
+ ft_list_get_node_at( FT_List list,
1395
+ FT_UInt idx )
1396
+ {
1397
+ FT_ListNode cur;
1398
+
1399
+
1400
+ if ( !list )
1401
+ return NULL;
1402
+
1403
+ for ( cur = list->head; cur; cur = cur->next )
1404
+ {
1405
+ if ( !idx )
1406
+ return cur;
1407
+
1408
+ idx--;
1409
+ }
1410
+
1411
+ return NULL;
1412
+ }
1413
+
1414
+
1415
+ /**************************************************************************
1416
+ *
1417
+ * @Function:
1418
+ * load_truetype_glyph
1419
+ *
1420
+ * @Description:
1421
+ * Loads a given truetype glyph. Handles composites and uses a
1422
+ * TT_Loader object.
1423
+ */
1424
+ static FT_Error
1425
+ load_truetype_glyph( TT_Loader loader,
1426
+ FT_UInt glyph_index,
1427
+ FT_UInt recurse_count,
1428
+ FT_Bool header_only )
1429
+ {
1430
+ FT_Error error = FT_Err_Ok;
1431
+ FT_Fixed x_scale, y_scale;
1432
+ FT_ULong offset;
1433
+ TT_Face face = loader->face;
1434
+ FT_GlyphLoader gloader = loader->gloader;
1435
+
1436
+ FT_Bool opened_frame = 0;
1437
+
1438
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1439
+ FT_StreamRec inc_stream;
1440
+ FT_Data glyph_data;
1441
+ FT_Bool glyph_data_loaded = 0;
1442
+ #endif
1443
+
1444
+
1445
+ #ifdef FT_DEBUG_LEVEL_TRACE
1446
+ if ( recurse_count )
1447
+ FT_TRACE5(( " nesting level: %d\n", recurse_count ));
1448
+ #endif
1449
+
1450
+ /* some fonts have an incorrect value of `maxComponentDepth' */
1451
+ if ( recurse_count > face->max_profile.maxComponentDepth )
1452
+ {
1453
+ FT_TRACE1(( "load_truetype_glyph: maxComponentDepth set to %d\n",
1454
+ recurse_count ));
1455
+ face->max_profile.maxComponentDepth = (FT_UShort)recurse_count;
1456
+ }
1457
+
1458
+ #ifndef FT_CONFIG_OPTION_INCREMENTAL
1459
+ /* check glyph index */
1460
+ if ( glyph_index >= (FT_UInt)face->root.num_glyphs )
1461
+ {
1462
+ error = FT_THROW( Invalid_Glyph_Index );
1463
+ goto Exit;
1464
+ }
1465
+ #endif
1466
+
1467
+ loader->glyph_index = glyph_index;
1468
+
1469
+ if ( loader->load_flags & FT_LOAD_NO_SCALE )
1470
+ {
1471
+ x_scale = 0x10000L;
1472
+ y_scale = 0x10000L;
1473
+ }
1474
+ else
1475
+ {
1476
+ x_scale = loader->size->metrics->x_scale;
1477
+ y_scale = loader->size->metrics->y_scale;
1478
+ }
1479
+
1480
+ /* Set `offset' to the start of the glyph relative to the start of */
1481
+ /* the `glyf' table, and `byte_len' to the length of the glyph in */
1482
+ /* bytes. */
1483
+
1484
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1485
+
1486
+ /* If we are loading glyph data via the incremental interface, set */
1487
+ /* the loader stream to a memory stream reading the data returned */
1488
+ /* by the interface. */
1489
+ if ( face->root.internal->incremental_interface )
1490
+ {
1491
+ error = face->root.internal->incremental_interface->funcs->get_glyph_data(
1492
+ face->root.internal->incremental_interface->object,
1493
+ glyph_index, &glyph_data );
1494
+ if ( error )
1495
+ goto Exit;
1496
+
1497
+ glyph_data_loaded = 1;
1498
+ offset = 0;
1499
+ loader->byte_len = glyph_data.length;
1500
+
1501
+ FT_ZERO( &inc_stream );
1502
+ FT_Stream_OpenMemory( &inc_stream,
1503
+ glyph_data.pointer,
1504
+ glyph_data.length );
1505
+
1506
+ loader->stream = &inc_stream;
1507
+ }
1508
+ else
1509
+
1510
+ #endif /* FT_CONFIG_OPTION_INCREMENTAL */
1511
+ {
1512
+ FT_ULong len;
1513
+
1514
+
1515
+ offset = tt_face_get_location( FT_FACE( face ), glyph_index, &len );
1516
+
1517
+ loader->byte_len = (FT_UInt)len;
1518
+ }
1519
+
1520
+ if ( loader->byte_len > 0 )
1521
+ {
1522
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1523
+ /* for the incremental interface, `glyf_offset' is always zero */
1524
+ if ( !face->glyf_offset &&
1525
+ !face->root.internal->incremental_interface )
1526
+ #else
1527
+ if ( !face->glyf_offset )
1528
+ #endif /* FT_CONFIG_OPTION_INCREMENTAL */
1529
+ {
1530
+ FT_TRACE2(( "no `glyf' table but non-zero `loca' entry\n" ));
1531
+ error = FT_THROW( Invalid_Table );
1532
+ goto Exit;
1533
+ }
1534
+
1535
+ error = face->access_glyph_frame( loader, glyph_index,
1536
+ face->glyf_offset + offset,
1537
+ loader->byte_len );
1538
+ if ( error )
1539
+ goto Exit;
1540
+
1541
+ /* read glyph header first */
1542
+ error = face->read_glyph_header( loader );
1543
+
1544
+ face->forget_glyph_frame( loader );
1545
+
1546
+ if ( error )
1547
+ goto Exit;
1548
+ }
1549
+
1550
+ /* a space glyph */
1551
+ if ( loader->byte_len == 0 || loader->n_contours == 0 )
1552
+ {
1553
+ loader->bbox.xMin = 0;
1554
+ loader->bbox.xMax = 0;
1555
+ loader->bbox.yMin = 0;
1556
+ loader->bbox.yMax = 0;
1557
+ }
1558
+
1559
+ /* the metrics must be computed after loading the glyph header */
1560
+ /* since we need the glyph's `yMax' value in case the vertical */
1561
+ /* metrics must be emulated */
1562
+ error = tt_get_metrics( loader, glyph_index );
1563
+ if ( error )
1564
+ goto Exit;
1565
+
1566
+ if ( header_only )
1567
+ goto Exit;
1568
+
1569
+ if ( loader->byte_len == 0 || loader->n_contours == 0 )
1570
+ {
1571
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1572
+ tt_get_metrics_incremental( loader, glyph_index );
1573
+ #endif
1574
+ tt_loader_set_pp( loader );
1575
+
1576
+
1577
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1578
+
1579
+ if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) ||
1580
+ FT_IS_VARIATION( FT_FACE( face ) ) )
1581
+ {
1582
+ /* a small outline structure with four elements for */
1583
+ /* communication with `TT_Vary_Apply_Glyph_Deltas' */
1584
+ FT_Vector points[4];
1585
+ FT_Outline outline;
1586
+
1587
+ /* unrounded values */
1588
+ FT_Vector unrounded[4] = { {0, 0}, {0, 0}, {0, 0}, {0, 0} };
1589
+
1590
+
1591
+ points[0] = loader->pp1;
1592
+ points[1] = loader->pp2;
1593
+ points[2] = loader->pp3;
1594
+ points[3] = loader->pp4;
1595
+
1596
+ outline.n_points = 0;
1597
+ outline.n_contours = 0;
1598
+ outline.points = points;
1599
+ outline.tags = NULL;
1600
+ outline.contours = NULL;
1601
+
1602
+ /* this must be done before scaling */
1603
+ error = TT_Vary_Apply_Glyph_Deltas( loader,
1604
+ &outline,
1605
+ unrounded );
1606
+ if ( error )
1607
+ goto Exit;
1608
+ }
1609
+
1610
+ #endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
1611
+
1612
+ /* scale phantom points, if necessary; */
1613
+ /* they get rounded in `TT_Hint_Glyph' */
1614
+ if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1615
+ {
1616
+ loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale );
1617
+ loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale );
1618
+ /* pp1.y and pp2.y are always zero */
1619
+
1620
+ loader->pp3.x = FT_MulFix( loader->pp3.x, x_scale );
1621
+ loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale );
1622
+ loader->pp4.x = FT_MulFix( loader->pp4.x, x_scale );
1623
+ loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale );
1624
+ }
1625
+
1626
+ error = FT_Err_Ok;
1627
+ goto Exit;
1628
+ }
1629
+
1630
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1631
+ tt_get_metrics_incremental( loader, glyph_index );
1632
+ #endif
1633
+ tt_loader_set_pp( loader );
1634
+
1635
+
1636
+ /***********************************************************************/
1637
+ /***********************************************************************/
1638
+ /***********************************************************************/
1639
+
1640
+ /* we now open a frame again, right after the glyph header */
1641
+ /* (which consists of 10 bytes) */
1642
+ error = face->access_glyph_frame( loader, glyph_index,
1643
+ face->glyf_offset + offset + 10,
1644
+ loader->byte_len - 10 );
1645
+ if ( error )
1646
+ goto Exit;
1647
+
1648
+ opened_frame = 1;
1649
+
1650
+ /* if it is a simple glyph, load it */
1651
+
1652
+ if ( loader->n_contours > 0 )
1653
+ {
1654
+ error = face->read_simple_glyph( loader );
1655
+ if ( error )
1656
+ goto Exit;
1657
+
1658
+ /* all data have been read */
1659
+ face->forget_glyph_frame( loader );
1660
+ opened_frame = 0;
1661
+
1662
+ error = TT_Process_Simple_Glyph( loader );
1663
+ if ( error )
1664
+ goto Exit;
1665
+
1666
+ FT_GlyphLoader_Add( gloader );
1667
+ }
1668
+
1669
+ /***********************************************************************/
1670
+ /***********************************************************************/
1671
+ /***********************************************************************/
1672
+
1673
+ /* otherwise, load a composite! */
1674
+ else if ( loader->n_contours < 0 )
1675
+ {
1676
+ FT_Memory memory = face->root.memory;
1677
+
1678
+ FT_UInt start_point;
1679
+ FT_UInt start_contour;
1680
+ FT_ULong ins_pos; /* position of composite instructions, if any */
1681
+
1682
+ FT_ListNode node, node2;
1683
+
1684
+
1685
+ /* normalize the `n_contours' value */
1686
+ loader->n_contours = -1;
1687
+
1688
+ /*
1689
+ * We store the glyph index directly in the `node->data' pointer,
1690
+ * following the glib solution (cf. macro `GUINT_TO_POINTER') with a
1691
+ * double cast to make this portable. Note, however, that this needs
1692
+ * pointers with a width of at least 32 bits.
1693
+ */
1694
+
1695
+ /* clear the nodes filled by sibling chains */
1696
+ node = ft_list_get_node_at( &loader->composites, recurse_count );
1697
+ for ( node2 = node; node2; node2 = node2->next )
1698
+ node2->data = (void*)-1;
1699
+
1700
+ /* check whether we already have a composite glyph with this index */
1701
+ if ( FT_List_Find( &loader->composites,
1702
+ FT_UINT_TO_POINTER( glyph_index ) ) )
1703
+ {
1704
+ FT_TRACE1(( "TT_Load_Composite_Glyph:"
1705
+ " infinite recursion detected\n" ));
1706
+ error = FT_THROW( Invalid_Composite );
1707
+ goto Exit;
1708
+ }
1709
+
1710
+ else if ( node )
1711
+ node->data = FT_UINT_TO_POINTER( glyph_index );
1712
+
1713
+ else
1714
+ {
1715
+ if ( FT_QNEW( node ) )
1716
+ goto Exit;
1717
+ node->data = FT_UINT_TO_POINTER( glyph_index );
1718
+ FT_List_Add( &loader->composites, node );
1719
+ }
1720
+
1721
+ start_point = gloader->base.outline.n_points;
1722
+ start_contour = gloader->base.outline.n_contours;
1723
+
1724
+ /* for each subglyph, read composite header */
1725
+ error = face->read_composite_glyph( loader );
1726
+ if ( error )
1727
+ goto Exit;
1728
+
1729
+ /* store the offset of instructions */
1730
+ ins_pos = loader->ins_pos;
1731
+
1732
+ /* all data we need are read */
1733
+ face->forget_glyph_frame( loader );
1734
+ opened_frame = 0;
1735
+
1736
+ #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
1737
+
1738
+ if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) ||
1739
+ FT_IS_VARIATION( FT_FACE( face ) ) )
1740
+ {
1741
+ FT_UShort i, limit;
1742
+ FT_SubGlyph subglyph;
1743
+
1744
+ FT_Outline outline = { 0, 0, NULL, NULL, NULL, 0 };
1745
+ FT_Vector* unrounded = NULL;
1746
+
1747
+
1748
+ limit = (FT_UShort)gloader->current.num_subglyphs;
1749
+
1750
+ /* construct an outline structure for */
1751
+ /* communication with `TT_Vary_Apply_Glyph_Deltas' */
1752
+ if ( FT_QNEW_ARRAY( outline.points, limit + 4 ) ||
1753
+ FT_QNEW_ARRAY( outline.tags, limit ) ||
1754
+ FT_QNEW_ARRAY( outline.contours, limit ) ||
1755
+ FT_QNEW_ARRAY( unrounded, limit + 4 ) )
1756
+ goto Exit1;
1757
+
1758
+ outline.n_contours = outline.n_points = limit;
1759
+
1760
+ subglyph = gloader->current.subglyphs;
1761
+
1762
+ for ( i = 0; i < limit; i++, subglyph++ )
1763
+ {
1764
+ /* applying deltas for anchor points doesn't make sense, */
1765
+ /* but we don't have to specially check this since */
1766
+ /* unused delta values are zero anyways */
1767
+ outline.points[i].x = subglyph->arg1;
1768
+ outline.points[i].y = subglyph->arg2;
1769
+ outline.tags[i] = ON_CURVE_POINT;
1770
+ outline.contours[i] = i;
1771
+ }
1772
+
1773
+ outline.points[i++] = loader->pp1;
1774
+ outline.points[i++] = loader->pp2;
1775
+ outline.points[i++] = loader->pp3;
1776
+ outline.points[i ] = loader->pp4;
1777
+
1778
+ /* this call provides additional offsets */
1779
+ /* for each component's translation */
1780
+ if ( FT_SET_ERROR( TT_Vary_Apply_Glyph_Deltas( loader,
1781
+ &outline,
1782
+ unrounded ) ) )
1783
+ goto Exit1;
1784
+
1785
+ subglyph = gloader->current.subglyphs;
1786
+
1787
+ for ( i = 0; i < limit; i++, subglyph++ )
1788
+ {
1789
+ if ( subglyph->flags & ARGS_ARE_XY_VALUES )
1790
+ {
1791
+ subglyph->arg1 = (FT_Int16)outline.points[i].x;
1792
+ subglyph->arg2 = (FT_Int16)outline.points[i].y;
1793
+ }
1794
+ }
1795
+
1796
+ Exit1:
1797
+ FT_FREE( outline.points );
1798
+ FT_FREE( outline.tags );
1799
+ FT_FREE( outline.contours );
1800
+ FT_FREE( unrounded );
1801
+
1802
+ if ( error )
1803
+ goto Exit;
1804
+ }
1805
+
1806
+ #endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */
1807
+
1808
+ /* scale phantom points, if necessary; */
1809
+ /* they get rounded in `TT_Hint_Glyph' */
1810
+ if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1811
+ {
1812
+ loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale );
1813
+ loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale );
1814
+ /* pp1.y and pp2.y are always zero */
1815
+
1816
+ loader->pp3.x = FT_MulFix( loader->pp3.x, x_scale );
1817
+ loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale );
1818
+ loader->pp4.x = FT_MulFix( loader->pp4.x, x_scale );
1819
+ loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale );
1820
+ }
1821
+
1822
+ /* if the flag FT_LOAD_NO_RECURSE is set, we return the subglyph */
1823
+ /* `as is' in the glyph slot (the client application will be */
1824
+ /* responsible for interpreting these data)... */
1825
+ if ( loader->load_flags & FT_LOAD_NO_RECURSE )
1826
+ {
1827
+ FT_GlyphLoader_Add( gloader );
1828
+ loader->glyph->format = FT_GLYPH_FORMAT_COMPOSITE;
1829
+
1830
+ goto Exit;
1831
+ }
1832
+
1833
+ /*********************************************************************/
1834
+ /*********************************************************************/
1835
+ /*********************************************************************/
1836
+
1837
+ {
1838
+ FT_UInt n, num_base_points;
1839
+ FT_SubGlyph subglyph = NULL;
1840
+
1841
+ FT_UInt num_points = start_point;
1842
+ FT_UInt num_subglyphs = gloader->current.num_subglyphs;
1843
+ FT_UInt num_base_subgs = gloader->base.num_subglyphs;
1844
+
1845
+ FT_Stream old_stream = loader->stream;
1846
+ FT_UInt old_byte_len = loader->byte_len;
1847
+
1848
+
1849
+ FT_GlyphLoader_Add( gloader );
1850
+
1851
+ /* read each subglyph independently */
1852
+ for ( n = 0; n < num_subglyphs; n++ )
1853
+ {
1854
+ FT_Vector pp[4];
1855
+
1856
+ FT_Int linear_hadvance;
1857
+ FT_Int linear_vadvance;
1858
+
1859
+
1860
+ /* Each time we call `load_truetype_glyph' in this loop, the */
1861
+ /* value of `gloader.base.subglyphs' can change due to table */
1862
+ /* reallocations. We thus need to recompute the subglyph */
1863
+ /* pointer on each iteration. */
1864
+ subglyph = gloader->base.subglyphs + num_base_subgs + n;
1865
+
1866
+ pp[0] = loader->pp1;
1867
+ pp[1] = loader->pp2;
1868
+ pp[2] = loader->pp3;
1869
+ pp[3] = loader->pp4;
1870
+
1871
+ linear_hadvance = loader->linear;
1872
+ linear_vadvance = loader->vadvance;
1873
+
1874
+ num_base_points = gloader->base.outline.n_points;
1875
+
1876
+ error = load_truetype_glyph( loader,
1877
+ (FT_UInt)subglyph->index,
1878
+ recurse_count + 1,
1879
+ FALSE );
1880
+ if ( error )
1881
+ goto Exit;
1882
+
1883
+ /* restore subglyph pointer */
1884
+ subglyph = gloader->base.subglyphs + num_base_subgs + n;
1885
+
1886
+ /* restore phantom points if necessary */
1887
+ if ( !( subglyph->flags & USE_MY_METRICS ) )
1888
+ {
1889
+ loader->pp1 = pp[0];
1890
+ loader->pp2 = pp[1];
1891
+ loader->pp3 = pp[2];
1892
+ loader->pp4 = pp[3];
1893
+
1894
+ loader->linear = linear_hadvance;
1895
+ loader->vadvance = linear_vadvance;
1896
+ }
1897
+
1898
+ num_points = gloader->base.outline.n_points;
1899
+
1900
+ if ( num_points == num_base_points )
1901
+ continue;
1902
+
1903
+ /* gloader->base.outline consists of three parts: */
1904
+ /* */
1905
+ /* 0 ----> start_point ----> num_base_points ----> n_points */
1906
+ /* (1) (2) (3) */
1907
+ /* */
1908
+ /* (1) points that exist from the beginning */
1909
+ /* (2) component points that have been loaded so far */
1910
+ /* (3) points of the newly loaded component */
1911
+ error = TT_Process_Composite_Component( loader,
1912
+ subglyph,
1913
+ start_point,
1914
+ num_base_points );
1915
+ if ( error )
1916
+ goto Exit;
1917
+ }
1918
+
1919
+ loader->stream = old_stream;
1920
+ loader->byte_len = old_byte_len;
1921
+
1922
+ /* process the glyph */
1923
+ loader->ins_pos = ins_pos;
1924
+ if ( IS_HINTED( loader->load_flags ) &&
1925
+ #ifdef TT_USE_BYTECODE_INTERPRETER
1926
+ subglyph &&
1927
+ subglyph->flags & WE_HAVE_INSTR &&
1928
+ #endif
1929
+ num_points > start_point )
1930
+ {
1931
+ error = TT_Process_Composite_Glyph( loader,
1932
+ start_point,
1933
+ start_contour );
1934
+ if ( error )
1935
+ goto Exit;
1936
+ }
1937
+ }
1938
+
1939
+ /* retain the overlap flag */
1940
+ if ( gloader->base.num_subglyphs &&
1941
+ gloader->base.subglyphs[0].flags & OVERLAP_COMPOUND )
1942
+ gloader->base.outline.flags |= FT_OUTLINE_OVERLAP;
1943
+ }
1944
+
1945
+ /***********************************************************************/
1946
+ /***********************************************************************/
1947
+ /***********************************************************************/
1948
+
1949
+ Exit:
1950
+
1951
+ if ( opened_frame )
1952
+ face->forget_glyph_frame( loader );
1953
+
1954
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
1955
+
1956
+ if ( glyph_data_loaded )
1957
+ face->root.internal->incremental_interface->funcs->free_glyph_data(
1958
+ face->root.internal->incremental_interface->object,
1959
+ &glyph_data );
1960
+
1961
+ #endif
1962
+
1963
+ return error;
1964
+ }
1965
+
1966
+
1967
+ static FT_Error
1968
+ compute_glyph_metrics( TT_Loader loader,
1969
+ FT_UInt glyph_index )
1970
+ {
1971
+ TT_Face face = loader->face;
1972
+ TT_Size size = loader->size;
1973
+ TT_GlyphSlot glyph = loader->glyph;
1974
+ FT_BBox bbox;
1975
+ FT_Fixed y_scale;
1976
+
1977
+
1978
+ y_scale = 0x10000L;
1979
+ if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
1980
+ y_scale = size->metrics->y_scale;
1981
+
1982
+ if ( glyph->format != FT_GLYPH_FORMAT_COMPOSITE )
1983
+ FT_Outline_Get_CBox( &glyph->outline, &bbox );
1984
+ else
1985
+ bbox = loader->bbox;
1986
+
1987
+ /* get the device-independent horizontal advance; it is scaled later */
1988
+ /* by the base layer. */
1989
+ glyph->linearHoriAdvance = loader->linear;
1990
+
1991
+ glyph->metrics.horiBearingX = bbox.xMin;
1992
+ glyph->metrics.horiBearingY = bbox.yMax;
1993
+ if ( loader->widthp )
1994
+ glyph->metrics.horiAdvance = loader->widthp[glyph_index] * 64;
1995
+ else
1996
+ glyph->metrics.horiAdvance = SUB_LONG( loader->pp2.x, loader->pp1.x );
1997
+
1998
+ /* set glyph dimensions */
1999
+ glyph->metrics.width = SUB_LONG( bbox.xMax, bbox.xMin );
2000
+ glyph->metrics.height = SUB_LONG( bbox.yMax, bbox.yMin );
2001
+
2002
+ /* Now take care of vertical metrics. In the case where there is */
2003
+ /* no vertical information within the font (relatively common), */
2004
+ /* create some metrics manually */
2005
+ {
2006
+ FT_Pos top; /* scaled vertical top side bearing */
2007
+ FT_Pos advance; /* scaled vertical advance height */
2008
+
2009
+
2010
+ /* Get the unscaled top bearing and advance height. */
2011
+ if ( face->vertical_info &&
2012
+ face->vertical.number_Of_VMetrics > 0 )
2013
+ {
2014
+ top = (FT_Short)FT_DivFix( SUB_LONG( loader->pp3.y, bbox.yMax ),
2015
+ y_scale );
2016
+
2017
+ if ( loader->pp3.y <= loader->pp4.y )
2018
+ advance = 0;
2019
+ else
2020
+ advance = (FT_UShort)FT_DivFix( SUB_LONG( loader->pp3.y,
2021
+ loader->pp4.y ),
2022
+ y_scale );
2023
+ }
2024
+ else
2025
+ {
2026
+ FT_Pos height;
2027
+
2028
+
2029
+ /* XXX Compute top side bearing and advance height in */
2030
+ /* Get_VMetrics instead of here. */
2031
+
2032
+ /* NOTE: The OS/2 values are the only `portable' ones, */
2033
+ /* which is why we use them, if there is an OS/2 */
2034
+ /* table in the font. Otherwise, we use the */
2035
+ /* values defined in the horizontal header. */
2036
+
2037
+ height = (FT_Short)FT_DivFix( SUB_LONG( bbox.yMax,
2038
+ bbox.yMin ),
2039
+ y_scale );
2040
+ if ( face->os2.version != 0xFFFFU )
2041
+ advance = (FT_Pos)( face->os2.sTypoAscender -
2042
+ face->os2.sTypoDescender );
2043
+ else
2044
+ advance = (FT_Pos)( face->horizontal.Ascender -
2045
+ face->horizontal.Descender );
2046
+
2047
+ top = ( advance - height ) / 2;
2048
+ }
2049
+
2050
+ #ifdef FT_CONFIG_OPTION_INCREMENTAL
2051
+ {
2052
+ FT_Incremental_InterfaceRec* incr;
2053
+ FT_Incremental_MetricsRec incr_metrics;
2054
+ FT_Error error;
2055
+
2056
+
2057
+ incr = face->root.internal->incremental_interface;
2058
+
2059
+ /* If this is an incrementally loaded font see if there are */
2060
+ /* overriding metrics for this glyph. */
2061
+ if ( incr && incr->funcs->get_glyph_metrics )
2062
+ {
2063
+ incr_metrics.bearing_x = 0;
2064
+ incr_metrics.bearing_y = top;
2065
+ incr_metrics.advance = advance;
2066
+
2067
+ error = incr->funcs->get_glyph_metrics( incr->object,
2068
+ glyph_index,
2069
+ TRUE,
2070
+ &incr_metrics );
2071
+ if ( error )
2072
+ return error;
2073
+
2074
+ top = incr_metrics.bearing_y;
2075
+ advance = incr_metrics.advance;
2076
+ }
2077
+ }
2078
+
2079
+ /* GWW: Do vertical metrics get loaded incrementally too? */
2080
+
2081
+ #endif /* FT_CONFIG_OPTION_INCREMENTAL */
2082
+
2083
+ glyph->linearVertAdvance = advance;
2084
+
2085
+ /* scale the metrics */
2086
+ if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) )
2087
+ {
2088
+ top = FT_MulFix( top, y_scale );
2089
+ advance = FT_MulFix( advance, y_scale );
2090
+ }
2091
+
2092
+ /* XXX: for now, we have no better algorithm for the lsb, but it */
2093
+ /* should work fine. */
2094
+ /* */
2095
+ glyph->metrics.vertBearingX = SUB_LONG( glyph->metrics.horiBearingX,
2096
+ glyph->metrics.horiAdvance / 2 );
2097
+ glyph->metrics.vertBearingY = top;
2098
+ glyph->metrics.vertAdvance = advance;
2099
+ }
2100
+
2101
+ return FT_Err_Ok;
2102
+ }
2103
+
2104
+
2105
+ #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
2106
+
2107
+ static FT_Error
2108
+ load_sbit_image( TT_Size size,
2109
+ TT_GlyphSlot glyph,
2110
+ FT_UInt glyph_index,
2111
+ FT_Int32 load_flags )
2112
+ {
2113
+ TT_Face face = (TT_Face)glyph->face;
2114
+ SFNT_Service sfnt = (SFNT_Service)face->sfnt;
2115
+ FT_Stream stream = face->root.stream;
2116
+ FT_Error error;
2117
+ TT_SBit_MetricsRec sbit_metrics;
2118
+
2119
+
2120
+ error = sfnt->load_sbit_image( face,
2121
+ size->strike_index,
2122
+ glyph_index,
2123
+ (FT_UInt)load_flags,
2124
+ stream,
2125
+ &glyph->bitmap,
2126
+ &sbit_metrics );
2127
+ if ( !error )
2128
+ {
2129
+ glyph->outline.n_points = 0;
2130
+ glyph->outline.n_contours = 0;
2131
+
2132
+ glyph->metrics.width = (FT_Pos)sbit_metrics.width * 64;
2133
+ glyph->metrics.height = (FT_Pos)sbit_metrics.height * 64;
2134
+
2135
+ glyph->metrics.horiBearingX = (FT_Pos)sbit_metrics.horiBearingX * 64;
2136
+ glyph->metrics.horiBearingY = (FT_Pos)sbit_metrics.horiBearingY * 64;
2137
+ glyph->metrics.horiAdvance = (FT_Pos)sbit_metrics.horiAdvance * 64;
2138
+
2139
+ glyph->metrics.vertBearingX = (FT_Pos)sbit_metrics.vertBearingX * 64;
2140
+ glyph->metrics.vertBearingY = (FT_Pos)sbit_metrics.vertBearingY * 64;
2141
+ glyph->metrics.vertAdvance = (FT_Pos)sbit_metrics.vertAdvance * 64;
2142
+
2143
+ glyph->format = FT_GLYPH_FORMAT_BITMAP;
2144
+
2145
+ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
2146
+ {
2147
+ glyph->bitmap_left = sbit_metrics.vertBearingX;
2148
+ glyph->bitmap_top = sbit_metrics.vertBearingY;
2149
+ }
2150
+ else
2151
+ {
2152
+ glyph->bitmap_left = sbit_metrics.horiBearingX;
2153
+ glyph->bitmap_top = sbit_metrics.horiBearingY;
2154
+ }
2155
+ }
2156
+
2157
+ return error;
2158
+ }
2159
+
2160
+ #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
2161
+
2162
+
2163
+ static FT_Error
2164
+ tt_loader_init( TT_Loader loader,
2165
+ TT_Size size,
2166
+ TT_GlyphSlot glyph,
2167
+ FT_Int32 load_flags,
2168
+ FT_Bool glyf_table_only )
2169
+ {
2170
+ TT_Face face = (TT_Face)glyph->face;
2171
+ FT_Stream stream = face->root.stream;
2172
+
2173
+ #ifdef TT_USE_BYTECODE_INTERPRETER
2174
+ FT_Error error;
2175
+ FT_Bool pedantic = FT_BOOL( load_flags & FT_LOAD_PEDANTIC );
2176
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2177
+ TT_Driver driver = (TT_Driver)FT_FACE_DRIVER( glyph->face );
2178
+ #endif
2179
+ #endif
2180
+
2181
+
2182
+ FT_ZERO( loader );
2183
+
2184
+ #ifdef TT_USE_BYTECODE_INTERPRETER
2185
+
2186
+ /* load execution context */
2187
+ if ( IS_HINTED( load_flags ) && !glyf_table_only )
2188
+ {
2189
+ TT_ExecContext exec;
2190
+ FT_Bool grayscale = TRUE;
2191
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2192
+ FT_Bool subpixel_hinting_lean;
2193
+ FT_Bool grayscale_cleartype;
2194
+ #endif
2195
+
2196
+ FT_Bool reexecute = FALSE;
2197
+
2198
+
2199
+ if ( size->bytecode_ready < 0 || size->cvt_ready < 0 )
2200
+ {
2201
+ error = tt_size_ready_bytecode( size, pedantic );
2202
+ if ( error )
2203
+ return error;
2204
+ }
2205
+ else if ( size->bytecode_ready )
2206
+ return size->bytecode_ready;
2207
+ else if ( size->cvt_ready )
2208
+ return size->cvt_ready;
2209
+
2210
+ /* query new execution context */
2211
+ exec = size->context;
2212
+ if ( !exec )
2213
+ return FT_THROW( Could_Not_Find_Context );
2214
+
2215
+ grayscale = FT_BOOL( FT_LOAD_TARGET_MODE( load_flags ) !=
2216
+ FT_RENDER_MODE_MONO );
2217
+
2218
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2219
+ if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 )
2220
+ {
2221
+ subpixel_hinting_lean =
2222
+ FT_BOOL( FT_LOAD_TARGET_MODE( load_flags ) !=
2223
+ FT_RENDER_MODE_MONO );
2224
+ grayscale_cleartype =
2225
+ FT_BOOL( subpixel_hinting_lean &&
2226
+ !( ( load_flags &
2227
+ FT_LOAD_TARGET_LCD ) ||
2228
+ ( load_flags &
2229
+ FT_LOAD_TARGET_LCD_V ) ) );
2230
+ exec->vertical_lcd_lean =
2231
+ FT_BOOL( subpixel_hinting_lean &&
2232
+ ( load_flags &
2233
+ FT_LOAD_TARGET_LCD_V ) );
2234
+ grayscale = FT_BOOL( grayscale && !subpixel_hinting_lean );
2235
+ }
2236
+ else
2237
+ {
2238
+ subpixel_hinting_lean = FALSE;
2239
+ grayscale_cleartype = FALSE;
2240
+ exec->vertical_lcd_lean = FALSE;
2241
+ }
2242
+ #endif
2243
+
2244
+ error = TT_Load_Context( exec, face, size );
2245
+ if ( error )
2246
+ return error;
2247
+
2248
+ {
2249
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2250
+ if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 )
2251
+ {
2252
+ /* a change from mono to subpixel rendering (and vice versa) */
2253
+ /* requires a re-execution of the CVT program */
2254
+ if ( subpixel_hinting_lean != exec->subpixel_hinting_lean )
2255
+ {
2256
+ FT_TRACE4(( "tt_loader_init: subpixel hinting change,"
2257
+ " re-executing `prep' table\n" ));
2258
+
2259
+ exec->subpixel_hinting_lean = subpixel_hinting_lean;
2260
+ reexecute = TRUE;
2261
+ }
2262
+
2263
+ /* a change from colored to grayscale subpixel rendering (and */
2264
+ /* vice versa) requires a re-execution of the CVT program */
2265
+ if ( grayscale_cleartype != exec->grayscale_cleartype )
2266
+ {
2267
+ FT_TRACE4(( "tt_loader_init: grayscale subpixel hinting change,"
2268
+ " re-executing `prep' table\n" ));
2269
+
2270
+ exec->grayscale_cleartype = grayscale_cleartype;
2271
+ reexecute = TRUE;
2272
+ }
2273
+ }
2274
+ #endif
2275
+
2276
+ /* a change from mono to grayscale rendering (and vice versa) */
2277
+ /* requires a re-execution of the CVT program */
2278
+ if ( grayscale != exec->grayscale )
2279
+ {
2280
+ FT_TRACE4(( "tt_loader_init: grayscale hinting change,"
2281
+ " re-executing `prep' table\n" ));
2282
+
2283
+ exec->grayscale = grayscale;
2284
+ reexecute = TRUE;
2285
+ }
2286
+ }
2287
+
2288
+ if ( reexecute )
2289
+ {
2290
+ error = tt_size_run_prep( size, pedantic );
2291
+ if ( error )
2292
+ return error;
2293
+ error = TT_Load_Context( exec, face, size );
2294
+ if ( error )
2295
+ return error;
2296
+ }
2297
+
2298
+ /* check whether the cvt program has disabled hinting */
2299
+ if ( exec->GS.instruct_control & 1 )
2300
+ load_flags |= FT_LOAD_NO_HINTING;
2301
+
2302
+ /* load default graphics state -- if needed */
2303
+ if ( exec->GS.instruct_control & 2 )
2304
+ exec->GS = tt_default_graphics_state;
2305
+
2306
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2307
+ /*
2308
+ * Toggle backward compatibility according to what font wants, except
2309
+ * when
2310
+ *
2311
+ * 1) we have a `tricky' font that heavily relies on the interpreter to
2312
+ * render glyphs correctly, for example DFKai-SB, or
2313
+ * 2) FT_RENDER_MODE_MONO (i.e, monochrome rendering) is requested.
2314
+ *
2315
+ * In those cases, backward compatibility needs to be turned off to get
2316
+ * correct rendering. The rendering is then completely up to the
2317
+ * font's programming.
2318
+ *
2319
+ */
2320
+ if ( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
2321
+ subpixel_hinting_lean &&
2322
+ !FT_IS_TRICKY( glyph->face ) )
2323
+ exec->backward_compatibility = !( exec->GS.instruct_control & 4 );
2324
+ else
2325
+ exec->backward_compatibility = FALSE;
2326
+ #endif /* TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL */
2327
+
2328
+ exec->pedantic_hinting = FT_BOOL( load_flags & FT_LOAD_PEDANTIC );
2329
+ loader->exec = exec;
2330
+ loader->instructions = exec->glyphIns;
2331
+
2332
+ /* Use the hdmx table if any unless FT_LOAD_COMPUTE_METRICS */
2333
+ /* is set or backward compatibility mode of the v38 or v40 */
2334
+ /* interpreters is active. See `ttinterp.h' for details on */
2335
+ /* backward compatibility mode. */
2336
+ if ( IS_HINTED( loader->load_flags ) &&
2337
+ !( loader->load_flags & FT_LOAD_COMPUTE_METRICS ) &&
2338
+ #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
2339
+ !( driver->interpreter_version == TT_INTERPRETER_VERSION_40 &&
2340
+ exec->backward_compatibility ) &&
2341
+ #endif
2342
+ !face->postscript.isFixedPitch )
2343
+ {
2344
+ loader->widthp = size->widthp;
2345
+ }
2346
+ else
2347
+ loader->widthp = NULL;
2348
+ }
2349
+
2350
+ #endif /* TT_USE_BYTECODE_INTERPRETER */
2351
+
2352
+ /* get face's glyph loader */
2353
+ if ( !glyf_table_only )
2354
+ {
2355
+ FT_GlyphLoader gloader = glyph->internal->loader;
2356
+
2357
+
2358
+ FT_GlyphLoader_Rewind( gloader );
2359
+ loader->gloader = gloader;
2360
+ }
2361
+
2362
+ loader->load_flags = (FT_ULong)load_flags;
2363
+
2364
+ loader->face = face;
2365
+ loader->size = size;
2366
+ loader->glyph = (FT_GlyphSlot)glyph;
2367
+ loader->stream = stream;
2368
+
2369
+ loader->composites.head = NULL;
2370
+ loader->composites.tail = NULL;
2371
+
2372
+ return FT_Err_Ok;
2373
+ }
2374
+
2375
+
2376
+ static void
2377
+ tt_loader_done( TT_Loader loader )
2378
+ {
2379
+ FT_List_Finalize( &loader->composites,
2380
+ NULL,
2381
+ loader->face->root.memory,
2382
+ NULL );
2383
+ }
2384
+
2385
+
2386
+ /**************************************************************************
2387
+ *
2388
+ * @Function:
2389
+ * TT_Load_Glyph
2390
+ *
2391
+ * @Description:
2392
+ * A function used to load a single glyph within a given glyph slot,
2393
+ * for a given size.
2394
+ *
2395
+ * @InOut:
2396
+ * glyph ::
2397
+ * A handle to a target slot object where the glyph
2398
+ * will be loaded.
2399
+ *
2400
+ * @Input:
2401
+ * size ::
2402
+ * A handle to the source face size at which the glyph
2403
+ * must be scaled/loaded.
2404
+ *
2405
+ * glyph_index ::
2406
+ * The index of the glyph in the font file.
2407
+ *
2408
+ * load_flags ::
2409
+ * A flag indicating what to load for this glyph. The
2410
+ * FT_LOAD_XXX constants can be used to control the
2411
+ * glyph loading process (e.g., whether the outline
2412
+ * should be scaled, whether to load bitmaps or not,
2413
+ * whether to hint the outline, etc).
2414
+ *
2415
+ * @Return:
2416
+ * FreeType error code. 0 means success.
2417
+ */
2418
+ FT_LOCAL_DEF( FT_Error )
2419
+ TT_Load_Glyph( TT_Size size,
2420
+ TT_GlyphSlot glyph,
2421
+ FT_UInt glyph_index,
2422
+ FT_Int32 load_flags )
2423
+ {
2424
+ TT_Face face = (TT_Face)glyph->face;
2425
+ FT_Error error;
2426
+ TT_LoaderRec loader;
2427
+
2428
+
2429
+ FT_TRACE1(( "TT_Load_Glyph: glyph index %d\n", glyph_index ));
2430
+
2431
+ #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
2432
+
2433
+ /* try to load embedded bitmap (if any) */
2434
+ if ( size->strike_index != 0xFFFFFFFFUL &&
2435
+ ( load_flags & FT_LOAD_NO_BITMAP ) == 0 &&
2436
+ IS_DEFAULT_INSTANCE( glyph->face ) )
2437
+ {
2438
+ FT_Fixed x_scale = size->root.metrics.x_scale;
2439
+ FT_Fixed y_scale = size->root.metrics.y_scale;
2440
+
2441
+
2442
+ error = load_sbit_image( size, glyph, glyph_index, load_flags );
2443
+ if ( FT_ERR_EQ( error, Missing_Bitmap ) )
2444
+ {
2445
+ /* the bitmap strike is incomplete and misses the requested glyph; */
2446
+ /* if we have a bitmap-only font, return an empty glyph */
2447
+ if ( !FT_IS_SCALABLE( glyph->face ) )
2448
+ {
2449
+ FT_Short left_bearing = 0;
2450
+ FT_Short top_bearing = 0;
2451
+
2452
+ FT_UShort advance_width = 0;
2453
+ FT_UShort advance_height = 0;
2454
+
2455
+
2456
+ /* to return an empty glyph, however, we need metrics data */
2457
+ /* from the `hmtx' (or `vmtx') table; the assumption is that */
2458
+ /* empty glyphs are missing intentionally, representing */
2459
+ /* whitespace - not having at least horizontal metrics is */
2460
+ /* thus considered an error */
2461
+ if ( !face->horz_metrics_size )
2462
+ return error;
2463
+
2464
+ /* we now construct an empty bitmap glyph */
2465
+ TT_Get_HMetrics( face, glyph_index,
2466
+ &left_bearing,
2467
+ &advance_width );
2468
+ TT_Get_VMetrics( face, glyph_index,
2469
+ 0,
2470
+ &top_bearing,
2471
+ &advance_height );
2472
+
2473
+ glyph->outline.n_points = 0;
2474
+ glyph->outline.n_contours = 0;
2475
+
2476
+ glyph->metrics.width = 0;
2477
+ glyph->metrics.height = 0;
2478
+
2479
+ glyph->metrics.horiBearingX = FT_MulFix( left_bearing, x_scale );
2480
+ glyph->metrics.horiBearingY = 0;
2481
+ glyph->metrics.horiAdvance = FT_MulFix( advance_width, x_scale );
2482
+
2483
+ glyph->metrics.vertBearingX = 0;
2484
+ glyph->metrics.vertBearingY = FT_MulFix( top_bearing, y_scale );
2485
+ glyph->metrics.vertAdvance = FT_MulFix( advance_height, y_scale );
2486
+
2487
+ glyph->format = FT_GLYPH_FORMAT_BITMAP;
2488
+ glyph->bitmap.pixel_mode = FT_PIXEL_MODE_MONO;
2489
+
2490
+ glyph->bitmap_left = 0;
2491
+ glyph->bitmap_top = 0;
2492
+
2493
+ return FT_Err_Ok;
2494
+ }
2495
+ }
2496
+ else if ( error )
2497
+ {
2498
+ /* return error if font is not scalable */
2499
+ if ( !FT_IS_SCALABLE( glyph->face ) )
2500
+ return error;
2501
+ }
2502
+ else
2503
+ {
2504
+ if ( FT_IS_SCALABLE( glyph->face ) ||
2505
+ FT_HAS_SBIX( glyph->face ) )
2506
+ {
2507
+ /* for the bbox we need the header only */
2508
+ (void)tt_loader_init( &loader, size, glyph, load_flags, TRUE );
2509
+ (void)load_truetype_glyph( &loader, glyph_index, 0, TRUE );
2510
+ tt_loader_done( &loader );
2511
+ glyph->linearHoriAdvance = loader.linear;
2512
+ glyph->linearVertAdvance = loader.vadvance;
2513
+
2514
+ /* Bitmaps from the 'sbix' table need special treatment: */
2515
+ /* if there is a glyph contour, the bitmap origin must be */
2516
+ /* shifted to be relative to the lower left corner of the */
2517
+ /* glyph bounding box, also taking the left-side bearing */
2518
+ /* (or top bearing) into account. */
2519
+ if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX &&
2520
+ loader.n_contours > 0 )
2521
+ {
2522
+ FT_Int bitmap_left;
2523
+ FT_Int bitmap_top;
2524
+
2525
+
2526
+ if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
2527
+ {
2528
+ /* This is a guess, since Apple's CoreText engine doesn't */
2529
+ /* really do vertical typesetting. */
2530
+ bitmap_left = loader.bbox.xMin;
2531
+ bitmap_top = loader.top_bearing;
2532
+ }
2533
+ else
2534
+ {
2535
+ bitmap_left = loader.left_bearing;
2536
+ bitmap_top = loader.bbox.yMin;
2537
+ }
2538
+
2539
+ glyph->bitmap_left += FT_MulFix( bitmap_left, x_scale ) >> 6;
2540
+ glyph->bitmap_top += FT_MulFix( bitmap_top, y_scale ) >> 6;
2541
+ }
2542
+
2543
+ /* sanity checks: if `xxxAdvance' in the sbit metric */
2544
+ /* structure isn't set, use `linearXXXAdvance' */
2545
+ if ( !glyph->metrics.horiAdvance && glyph->linearHoriAdvance )
2546
+ glyph->metrics.horiAdvance = FT_MulFix( glyph->linearHoriAdvance,
2547
+ x_scale );
2548
+ if ( !glyph->metrics.vertAdvance && glyph->linearVertAdvance )
2549
+ glyph->metrics.vertAdvance = FT_MulFix( glyph->linearVertAdvance,
2550
+ y_scale );
2551
+ }
2552
+
2553
+ return FT_Err_Ok;
2554
+ }
2555
+ }
2556
+
2557
+ if ( load_flags & FT_LOAD_SBITS_ONLY )
2558
+ {
2559
+ error = FT_THROW( Invalid_Argument );
2560
+ goto Exit;
2561
+ }
2562
+
2563
+ #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
2564
+
2565
+ /* if FT_LOAD_NO_SCALE is not set, `ttmetrics' must be valid */
2566
+ if ( !( load_flags & FT_LOAD_NO_SCALE ) && !size->ttmetrics.valid )
2567
+ {
2568
+ error = FT_THROW( Invalid_Size_Handle );
2569
+ goto Exit;
2570
+ }
2571
+
2572
+ #ifdef FT_CONFIG_OPTION_SVG
2573
+
2574
+ /* check for OT-SVG */
2575
+ if ( ( load_flags & FT_LOAD_NO_SVG ) == 0 &&
2576
+ ( load_flags & FT_LOAD_COLOR ) &&
2577
+ face->svg )
2578
+ {
2579
+ SFNT_Service sfnt = (SFNT_Service)face->sfnt;
2580
+
2581
+
2582
+ FT_TRACE3(( "Trying to load SVG glyph\n" ));
2583
+
2584
+ error = sfnt->load_svg_doc( glyph, glyph_index );
2585
+ if ( !error )
2586
+ {
2587
+ FT_Fixed x_scale = size->root.metrics.x_scale;
2588
+ FT_Fixed y_scale = size->root.metrics.y_scale;
2589
+
2590
+ FT_Short leftBearing;
2591
+ FT_Short topBearing;
2592
+ FT_UShort advanceX;
2593
+ FT_UShort advanceY;
2594
+
2595
+
2596
+ FT_TRACE3(( "Successfully loaded SVG glyph\n" ));
2597
+
2598
+ glyph->format = FT_GLYPH_FORMAT_SVG;
2599
+
2600
+ sfnt->get_metrics( face,
2601
+ FALSE,
2602
+ glyph_index,
2603
+ &leftBearing,
2604
+ &advanceX );
2605
+ sfnt->get_metrics( face,
2606
+ TRUE,
2607
+ glyph_index,
2608
+ &topBearing,
2609
+ &advanceY );
2610
+
2611
+ glyph->linearHoriAdvance = advanceX;
2612
+ glyph->linearVertAdvance = advanceY;
2613
+
2614
+ glyph->metrics.horiAdvance = FT_MulFix( advanceX, x_scale );
2615
+ glyph->metrics.vertAdvance = FT_MulFix( advanceY, y_scale );
2616
+
2617
+ return error;
2618
+ }
2619
+
2620
+ FT_TRACE3(( "Failed to load SVG glyph\n" ));
2621
+ }
2622
+
2623
+ /* return immediately if we only want SVG glyphs */
2624
+ if ( load_flags & FT_LOAD_SVG_ONLY )
2625
+ {
2626
+ error = FT_THROW( Invalid_Argument );
2627
+ goto Exit;
2628
+ }
2629
+
2630
+ #endif /* FT_CONFIG_OPTION_SVG */
2631
+
2632
+ error = tt_loader_init( &loader, size, glyph, load_flags, FALSE );
2633
+ if ( error )
2634
+ goto Exit;
2635
+
2636
+ /* done if we are only interested in the `hdmx` advance */
2637
+ if ( load_flags & FT_LOAD_ADVANCE_ONLY &&
2638
+ !( load_flags & FT_LOAD_VERTICAL_LAYOUT ) &&
2639
+ loader.widthp )
2640
+ {
2641
+ glyph->metrics.horiAdvance = loader.widthp[glyph_index] * 64;
2642
+ goto Done;
2643
+ }
2644
+
2645
+ glyph->format = FT_GLYPH_FORMAT_OUTLINE;
2646
+ glyph->num_subglyphs = 0;
2647
+ glyph->outline.flags = 0;
2648
+
2649
+ /* main loading loop */
2650
+ error = load_truetype_glyph( &loader, glyph_index, 0, FALSE );
2651
+ if ( !error )
2652
+ {
2653
+ if ( glyph->format == FT_GLYPH_FORMAT_COMPOSITE )
2654
+ {
2655
+ glyph->num_subglyphs = loader.gloader->base.num_subglyphs;
2656
+ glyph->subglyphs = loader.gloader->base.subglyphs;
2657
+ }
2658
+ else
2659
+ {
2660
+ glyph->outline = loader.gloader->base.outline;
2661
+ glyph->outline.flags &= ~FT_OUTLINE_SINGLE_PASS;
2662
+
2663
+ /* Translate array so that (0,0) is the glyph's origin. Note */
2664
+ /* that this behaviour is independent on the value of bit 1 of */
2665
+ /* the `flags' field in the `head' table -- at least major */
2666
+ /* applications like Acroread indicate that. */
2667
+ if ( loader.pp1.x )
2668
+ FT_Outline_Translate( &glyph->outline, -loader.pp1.x, 0 );
2669
+ }
2670
+
2671
+ #ifdef TT_USE_BYTECODE_INTERPRETER
2672
+
2673
+ if ( IS_HINTED( load_flags ) )
2674
+ {
2675
+ glyph->control_data = loader.exec->glyphIns;
2676
+ glyph->control_len = loader.exec->glyphSize;
2677
+
2678
+ if ( loader.exec->GS.scan_control )
2679
+ {
2680
+ /* convert scan conversion mode to FT_OUTLINE_XXX flags */
2681
+ switch ( loader.exec->GS.scan_type )
2682
+ {
2683
+ case 0: /* simple drop-outs including stubs */
2684
+ glyph->outline.flags |= FT_OUTLINE_INCLUDE_STUBS;
2685
+ break;
2686
+ case 1: /* simple drop-outs excluding stubs */
2687
+ /* nothing; it's the default rendering mode */
2688
+ break;
2689
+ case 4: /* smart drop-outs including stubs */
2690
+ glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS |
2691
+ FT_OUTLINE_INCLUDE_STUBS;
2692
+ break;
2693
+ case 5: /* smart drop-outs excluding stubs */
2694
+ glyph->outline.flags |= FT_OUTLINE_SMART_DROPOUTS;
2695
+ break;
2696
+
2697
+ default: /* no drop-out control */
2698
+ glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
2699
+ break;
2700
+ }
2701
+ }
2702
+ else
2703
+ glyph->outline.flags |= FT_OUTLINE_IGNORE_DROPOUTS;
2704
+ }
2705
+
2706
+ #endif /* TT_USE_BYTECODE_INTERPRETER */
2707
+
2708
+ error = compute_glyph_metrics( &loader, glyph_index );
2709
+ }
2710
+
2711
+ /* Set the `high precision' bit flag. */
2712
+ /* This is _critical_ to get correct output for monochrome */
2713
+ /* TrueType glyphs at all sizes using the bytecode interpreter. */
2714
+ /* */
2715
+ if ( !( load_flags & FT_LOAD_NO_SCALE ) &&
2716
+ size->metrics->y_ppem < 24 )
2717
+ glyph->outline.flags |= FT_OUTLINE_HIGH_PRECISION;
2718
+
2719
+ FT_TRACE1(( " subglyphs = %u, contours = %hu, points = %hu,"
2720
+ " flags = 0x%.3x\n",
2721
+ loader.gloader->base.num_subglyphs,
2722
+ glyph->outline.n_contours,
2723
+ glyph->outline.n_points,
2724
+ glyph->outline.flags ));
2725
+
2726
+ Done:
2727
+ tt_loader_done( &loader );
2728
+
2729
+ Exit:
2730
+ #ifdef FT_DEBUG_LEVEL_TRACE
2731
+ if ( error )
2732
+ FT_TRACE1(( " failed (error code 0x%x)\n",
2733
+ error ));
2734
+ #endif
2735
+
2736
+ return error;
2737
+ }
2738
+
2739
+
2740
+ /* END */