@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,2380 @@
1
+ /****************************************************************************
2
+ *
3
+ * sfwoff2.c
4
+ *
5
+ * WOFF2 format management (base).
6
+ *
7
+ * Copyright (C) 2019-2024 by
8
+ * Nikhil Ramakrishnan, 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
+ #include "sfwoff2.h"
19
+ #include "woff2tags.h"
20
+ #include <freetype/tttags.h>
21
+ #include <freetype/internal/ftcalc.h>
22
+ #include <freetype/internal/ftdebug.h>
23
+ #include <freetype/internal/ftstream.h>
24
+
25
+
26
+ #ifdef FT_CONFIG_OPTION_USE_BROTLI
27
+
28
+ #include <brotli/decode.h>
29
+
30
+
31
+ /**************************************************************************
32
+ *
33
+ * The macro FT_COMPONENT is used in trace mode. It is an implicit
34
+ * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log
35
+ * messages during execution.
36
+ */
37
+ #undef FT_COMPONENT
38
+ #define FT_COMPONENT sfwoff2
39
+
40
+ /* An arbitrary, heuristic size limit (67MByte) for expanded WOFF2 data. */
41
+ #define MAX_SFNT_SIZE ( 1 << 26 )
42
+
43
+ #define READ_255USHORT( var ) FT_SET_ERROR( Read255UShort( stream, &var ) )
44
+
45
+ #define READ_BASE128( var ) FT_SET_ERROR( ReadBase128( stream, &var ) )
46
+
47
+ /* `var' should be FT_ULong */
48
+ #define ROUND4( var ) ( ( var + 3 ) & ~3UL )
49
+
50
+ #define WRITE_USHORT( p, v ) \
51
+ do \
52
+ { \
53
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
54
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
55
+ \
56
+ } while ( 0 )
57
+
58
+ #define WRITE_ULONG( p, v ) \
59
+ do \
60
+ { \
61
+ *(p)++ = (FT_Byte)( (v) >> 24 ); \
62
+ *(p)++ = (FT_Byte)( (v) >> 16 ); \
63
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
64
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
65
+ \
66
+ } while ( 0 )
67
+
68
+ #define WRITE_SHORT( p, v ) \
69
+ do \
70
+ { \
71
+ *(p)++ = (FT_Byte)( (v) >> 8 ); \
72
+ *(p)++ = (FT_Byte)( (v) >> 0 ); \
73
+ \
74
+ } while ( 0 )
75
+
76
+ #define WRITE_SFNT_BUF( buf, s ) \
77
+ write_buf( &sfnt, sfnt_size, &dest_offset, buf, s, memory )
78
+
79
+ #define WRITE_SFNT_BUF_AT( offset, buf, s ) \
80
+ write_buf( &sfnt, sfnt_size, &offset, buf, s, memory )
81
+
82
+ #define N_CONTOUR_STREAM 0
83
+ #define N_POINTS_STREAM 1
84
+ #define FLAG_STREAM 2
85
+ #define GLYPH_STREAM 3
86
+ #define COMPOSITE_STREAM 4
87
+ #define BBOX_STREAM 5
88
+ #define INSTRUCTION_STREAM 6
89
+
90
+ #define HAVE_OVERLAP_SIMPLE_BITMAP 0x1
91
+
92
+
93
+ static void
94
+ stream_close( FT_Stream stream )
95
+ {
96
+ FT_Memory memory = stream->memory;
97
+
98
+
99
+ FT_FREE( stream->base );
100
+
101
+ stream->size = 0;
102
+ stream->close = NULL;
103
+ }
104
+
105
+
106
+ FT_COMPARE_DEF( int )
107
+ compare_tags( const void* a,
108
+ const void* b )
109
+ {
110
+ WOFF2_Table table1 = *(WOFF2_Table*)a;
111
+ WOFF2_Table table2 = *(WOFF2_Table*)b;
112
+
113
+ FT_Tag tag1 = table1->Tag;
114
+ FT_Tag tag2 = table2->Tag;
115
+
116
+
117
+ if ( tag1 > tag2 )
118
+ return 1;
119
+ else if ( tag1 < tag2 )
120
+ return -1;
121
+ else
122
+ return 0;
123
+ }
124
+
125
+
126
+ static FT_Error
127
+ Read255UShort( FT_Stream stream,
128
+ FT_UShort* value )
129
+ {
130
+ const FT_Byte oneMoreByteCode1 = 255;
131
+ const FT_Byte oneMoreByteCode2 = 254;
132
+ const FT_Byte wordCode = 253;
133
+ const FT_UShort lowestUCode = 253;
134
+
135
+ FT_Error error = FT_Err_Ok;
136
+ FT_Byte code;
137
+ FT_Byte result_byte = 0;
138
+ FT_UShort result_short = 0;
139
+
140
+
141
+ if ( FT_READ_BYTE( code ) )
142
+ return error;
143
+ if ( code == wordCode )
144
+ {
145
+ /* Read next two bytes and store `FT_UShort' value. */
146
+ if ( FT_READ_USHORT( result_short ) )
147
+ return error;
148
+ *value = result_short;
149
+ return FT_Err_Ok;
150
+ }
151
+ else if ( code == oneMoreByteCode1 )
152
+ {
153
+ if ( FT_READ_BYTE( result_byte ) )
154
+ return error;
155
+ *value = result_byte + lowestUCode;
156
+ return FT_Err_Ok;
157
+ }
158
+ else if ( code == oneMoreByteCode2 )
159
+ {
160
+ if ( FT_READ_BYTE( result_byte ) )
161
+ return error;
162
+ *value = result_byte + lowestUCode * 2;
163
+ return FT_Err_Ok;
164
+ }
165
+ else
166
+ {
167
+ *value = code;
168
+ return FT_Err_Ok;
169
+ }
170
+ }
171
+
172
+
173
+ static FT_Error
174
+ ReadBase128( FT_Stream stream,
175
+ FT_ULong* value )
176
+ {
177
+ FT_ULong result = 0;
178
+ FT_Int i;
179
+ FT_Byte code;
180
+ FT_Error error = FT_Err_Ok;
181
+
182
+
183
+ for ( i = 0; i < 5; ++i )
184
+ {
185
+ code = 0;
186
+ if ( FT_READ_BYTE( code ) )
187
+ return error;
188
+
189
+ /* Leading zeros are invalid. */
190
+ if ( i == 0 && code == 0x80 )
191
+ return FT_THROW( Invalid_Table );
192
+
193
+ /* If any of top seven bits are set then we're about to overflow. */
194
+ if ( result & 0xfe000000 )
195
+ return FT_THROW( Invalid_Table );
196
+
197
+ result = ( result << 7 ) | ( code & 0x7f );
198
+
199
+ /* Spin until most significant bit of data byte is false. */
200
+ if ( ( code & 0x80 ) == 0 )
201
+ {
202
+ *value = result;
203
+ return FT_Err_Ok;
204
+ }
205
+ }
206
+
207
+ /* Make sure not to exceed the size bound. */
208
+ return FT_THROW( Invalid_Table );
209
+ }
210
+
211
+
212
+ /* Extend memory of `dst_bytes' buffer and copy data from `src'. */
213
+ static FT_Error
214
+ write_buf( FT_Byte** dst_bytes,
215
+ FT_ULong* dst_size,
216
+ FT_ULong* offset,
217
+ FT_Byte* src,
218
+ FT_ULong size,
219
+ FT_Memory memory )
220
+ {
221
+ FT_Error error = FT_Err_Ok;
222
+ /* We are reallocating memory for `dst', so its pointer may change. */
223
+ FT_Byte* dst = *dst_bytes;
224
+
225
+
226
+ /* Check whether we are within limits. */
227
+ if ( ( *offset + size ) > WOFF2_DEFAULT_MAX_SIZE )
228
+ return FT_THROW( Array_Too_Large );
229
+
230
+ /* Reallocate `dst'. */
231
+ if ( ( *offset + size ) > *dst_size )
232
+ {
233
+ FT_TRACE6(( "Reallocating %lu to %lu.\n",
234
+ *dst_size, (*offset + size) ));
235
+ if ( FT_QREALLOC( dst,
236
+ (FT_ULong)( *dst_size ),
237
+ (FT_ULong)( *offset + size ) ) )
238
+ goto Exit;
239
+
240
+ *dst_size = *offset + size;
241
+ }
242
+
243
+ /* Copy data. */
244
+ ft_memcpy( dst + *offset, src, size );
245
+
246
+ *offset += size;
247
+ /* Set pointer of `dst' to its correct value. */
248
+ *dst_bytes = dst;
249
+
250
+ Exit:
251
+ return error;
252
+ }
253
+
254
+
255
+ /* Pad buffer to closest multiple of 4. */
256
+ static FT_Error
257
+ pad4( FT_Byte** sfnt_bytes,
258
+ FT_ULong* sfnt_size,
259
+ FT_ULong* out_offset,
260
+ FT_Memory memory )
261
+ {
262
+ FT_Byte* sfnt = *sfnt_bytes;
263
+ FT_ULong dest_offset = *out_offset;
264
+
265
+ FT_Byte zeroes[] = { 0, 0, 0 };
266
+ FT_ULong pad_bytes;
267
+
268
+
269
+ if ( dest_offset + 3 < dest_offset )
270
+ return FT_THROW( Invalid_Table );
271
+
272
+ pad_bytes = ROUND4( dest_offset ) - dest_offset;
273
+ if ( pad_bytes > 0 )
274
+ {
275
+ if ( WRITE_SFNT_BUF( &zeroes[0], pad_bytes ) )
276
+ return FT_THROW( Invalid_Table );
277
+ }
278
+
279
+ *sfnt_bytes = sfnt;
280
+ *out_offset = dest_offset;
281
+ return FT_Err_Ok;
282
+ }
283
+
284
+
285
+ /* Calculate table checksum of `buf'. */
286
+ static FT_ULong
287
+ compute_ULong_sum( FT_Byte* buf,
288
+ FT_ULong size )
289
+ {
290
+ FT_ULong checksum = 0;
291
+ FT_ULong aligned_size = size & ~3UL;
292
+ FT_ULong i;
293
+ FT_Int shift;
294
+
295
+
296
+ for ( i = 0; i < aligned_size; i += 4 )
297
+ checksum += FT_NEXT_ULONG( buf );
298
+
299
+ /* remaining bytes can be shifted and added one at a time */
300
+ for ( shift = 24; i < size; i++, shift -= 8 )
301
+ checksum += (FT_UInt32)FT_NEXT_BYTE( buf ) << shift;
302
+
303
+ return checksum;
304
+ }
305
+
306
+
307
+ static FT_Error
308
+ woff2_decompress( FT_Byte* dst,
309
+ FT_ULong dst_size,
310
+ const FT_Byte* src,
311
+ FT_ULong src_size )
312
+ {
313
+ /* this cast is only of importance on 32bit systems; */
314
+ /* we don't validate it */
315
+ FT_Offset uncompressed_size = (FT_Offset)dst_size;
316
+ BrotliDecoderResult result;
317
+
318
+
319
+ result = BrotliDecoderDecompress( src_size,
320
+ src,
321
+ &uncompressed_size,
322
+ dst );
323
+
324
+ if ( result != BROTLI_DECODER_RESULT_SUCCESS ||
325
+ uncompressed_size != dst_size )
326
+ {
327
+ FT_ERROR(( "woff2_decompress: Stream length mismatch.\n" ));
328
+ return FT_THROW( Invalid_Table );
329
+ }
330
+
331
+ FT_TRACE2(( "woff2_decompress: Brotli stream decompressed.\n" ));
332
+ return FT_Err_Ok;
333
+ }
334
+
335
+
336
+ static WOFF2_Table
337
+ find_table( WOFF2_Table* tables,
338
+ FT_UShort num_tables,
339
+ FT_Tag tag )
340
+ {
341
+ FT_Int i;
342
+
343
+
344
+ for ( i = 0; i < num_tables; i++ )
345
+ {
346
+ if ( tables[i]->Tag == tag )
347
+ return tables[i];
348
+ }
349
+ return NULL;
350
+ }
351
+
352
+
353
+ /* Read `numberOfHMetrics' field from `hhea' table. */
354
+ static FT_Error
355
+ read_num_hmetrics( FT_Stream stream,
356
+ FT_UShort* num_hmetrics )
357
+ {
358
+ FT_Error error = FT_Err_Ok;
359
+ FT_UShort num_metrics;
360
+
361
+
362
+ if ( FT_STREAM_SKIP( 34 ) )
363
+ return FT_THROW( Invalid_Table );
364
+
365
+ if ( FT_READ_USHORT( num_metrics ) )
366
+ return FT_THROW( Invalid_Table );
367
+
368
+ *num_hmetrics = num_metrics;
369
+
370
+ return error;
371
+ }
372
+
373
+
374
+ /* An auxiliary function for overflow-safe addition. */
375
+ static FT_Int
376
+ with_sign( FT_Byte flag,
377
+ FT_Int base_val )
378
+ {
379
+ /* Precondition: 0 <= base_val < 65536 (to avoid overflow). */
380
+ return ( flag & 1 ) ? base_val : -base_val;
381
+ }
382
+
383
+
384
+ /* An auxiliary function for overflow-safe addition. */
385
+ static FT_Int
386
+ safe_int_addition( FT_Int a,
387
+ FT_Int b,
388
+ FT_Int* result )
389
+ {
390
+ if ( ( ( a > 0 ) && ( b > FT_INT_MAX - a ) ) ||
391
+ ( ( a < 0 ) && ( b < FT_INT_MIN - a ) ) )
392
+ return FT_THROW( Invalid_Table );
393
+
394
+ *result = a + b;
395
+ return FT_Err_Ok;
396
+ }
397
+
398
+
399
+ /*
400
+ * Decode variable-length (flag, xCoordinate, yCoordinate) triplet for a
401
+ * simple glyph. See
402
+ *
403
+ * https://www.w3.org/TR/WOFF2/#triplet_decoding
404
+ */
405
+ static FT_Error
406
+ triplet_decode( const FT_Byte* flags_in,
407
+ const FT_Byte* in,
408
+ FT_ULong in_size,
409
+ FT_ULong n_points,
410
+ WOFF2_Point result,
411
+ FT_ULong* in_bytes_used )
412
+ {
413
+ FT_Int x = 0;
414
+ FT_Int y = 0;
415
+ FT_Int dx;
416
+ FT_Int dy;
417
+ FT_Int b0, b1, b2;
418
+
419
+ FT_ULong triplet_index = 0;
420
+ FT_ULong data_bytes;
421
+
422
+ FT_UInt i;
423
+
424
+
425
+ if ( n_points > in_size )
426
+ return FT_THROW( Invalid_Table );
427
+
428
+ for ( i = 0; i < n_points; ++i )
429
+ {
430
+ FT_Byte flag = flags_in[i];
431
+ FT_Bool on_curve = !( flag >> 7 );
432
+
433
+
434
+ flag &= 0x7f;
435
+ if ( flag < 84 )
436
+ data_bytes = 1;
437
+ else if ( flag < 120 )
438
+ data_bytes = 2;
439
+ else if ( flag < 124 )
440
+ data_bytes = 3;
441
+ else
442
+ data_bytes = 4;
443
+
444
+ /* Overflow checks */
445
+ if ( triplet_index + data_bytes > in_size ||
446
+ triplet_index + data_bytes < triplet_index )
447
+ return FT_THROW( Invalid_Table );
448
+
449
+ if ( flag < 10 )
450
+ {
451
+ dx = 0;
452
+ dy = with_sign( flag,
453
+ ( ( flag & 14 ) << 7 ) + in[triplet_index] );
454
+ }
455
+ else if ( flag < 20 )
456
+ {
457
+ dx = with_sign( flag,
458
+ ( ( ( flag - 10 ) & 14 ) << 7 ) +
459
+ in[triplet_index] );
460
+ dy = 0;
461
+ }
462
+ else if ( flag < 84 )
463
+ {
464
+ b0 = flag - 20;
465
+ b1 = in[triplet_index];
466
+ dx = with_sign( flag,
467
+ 1 + ( b0 & 0x30 ) + ( b1 >> 4 ) );
468
+ dy = with_sign( flag >> 1,
469
+ 1 + ( ( b0 & 0x0c ) << 2 ) + ( b1 & 0x0f ) );
470
+ }
471
+ else if ( flag < 120 )
472
+ {
473
+ b0 = flag - 84;
474
+ dx = with_sign( flag,
475
+ 1 + ( ( b0 / 12 ) << 8 ) + in[triplet_index] );
476
+ dy = with_sign( flag >> 1,
477
+ 1 + ( ( ( b0 % 12 ) >> 2 ) << 8 ) +
478
+ in[triplet_index + 1] );
479
+ }
480
+ else if ( flag < 124 )
481
+ {
482
+ b2 = in[triplet_index + 1];
483
+ dx = with_sign( flag,
484
+ ( in[triplet_index] << 4 ) + ( b2 >> 4 ) );
485
+ dy = with_sign( flag >> 1,
486
+ ( ( b2 & 0x0f ) << 8 ) + in[triplet_index + 2] );
487
+ }
488
+ else
489
+ {
490
+ dx = with_sign( flag,
491
+ ( in[triplet_index] << 8 ) +
492
+ in[triplet_index + 1] );
493
+ dy = with_sign( flag >> 1,
494
+ ( in[triplet_index + 2] << 8 ) +
495
+ in[triplet_index + 3] );
496
+ }
497
+
498
+ triplet_index += data_bytes;
499
+
500
+ if ( safe_int_addition( x, dx, &x ) )
501
+ return FT_THROW( Invalid_Table );
502
+
503
+ if ( safe_int_addition( y, dy, &y ) )
504
+ return FT_THROW( Invalid_Table );
505
+
506
+ result[i].x = x;
507
+ result[i].y = y;
508
+ result[i].on_curve = on_curve;
509
+ }
510
+
511
+ *in_bytes_used = triplet_index;
512
+ return FT_Err_Ok;
513
+ }
514
+
515
+
516
+ /* Store decoded points in glyph buffer. */
517
+ static FT_Error
518
+ store_points( FT_ULong n_points,
519
+ const WOFF2_Point points,
520
+ FT_UShort n_contours,
521
+ FT_UShort instruction_len,
522
+ FT_Bool have_overlap,
523
+ FT_Byte* dst,
524
+ FT_ULong dst_size,
525
+ FT_ULong* glyph_size )
526
+ {
527
+ FT_UInt flag_offset = 10 + ( 2 * n_contours ) + 2 + instruction_len;
528
+ FT_Byte last_flag = 0xFFU;
529
+ FT_Byte repeat_count = 0;
530
+ FT_Int last_x = 0;
531
+ FT_Int last_y = 0;
532
+ FT_UInt x_bytes = 0;
533
+ FT_UInt y_bytes = 0;
534
+ FT_UInt xy_bytes;
535
+ FT_UInt i;
536
+ FT_UInt x_offset;
537
+ FT_UInt y_offset;
538
+ FT_Byte* pointer;
539
+
540
+
541
+ for ( i = 0; i < n_points; ++i )
542
+ {
543
+ const WOFF2_PointRec point = points[i];
544
+
545
+ FT_Byte flag = point.on_curve ? GLYF_ON_CURVE : 0;
546
+ FT_Int dx = point.x - last_x;
547
+ FT_Int dy = point.y - last_y;
548
+
549
+
550
+ if ( i == 0 && have_overlap )
551
+ flag |= GLYF_OVERLAP_SIMPLE;
552
+
553
+ if ( dx == 0 )
554
+ flag |= GLYF_THIS_X_IS_SAME;
555
+ else if ( dx > -256 && dx < 256 )
556
+ {
557
+ flag |= GLYF_X_SHORT | ( dx > 0 ? GLYF_THIS_X_IS_SAME : 0 );
558
+ x_bytes += 1;
559
+ }
560
+ else
561
+ x_bytes += 2;
562
+
563
+ if ( dy == 0 )
564
+ flag |= GLYF_THIS_Y_IS_SAME;
565
+ else if ( dy > -256 && dy < 256 )
566
+ {
567
+ flag |= GLYF_Y_SHORT | ( dy > 0 ? GLYF_THIS_Y_IS_SAME : 0 );
568
+ y_bytes += 1;
569
+ }
570
+ else
571
+ y_bytes += 2;
572
+
573
+ if ( flag == last_flag && repeat_count != 255 )
574
+ {
575
+ dst[flag_offset - 1] |= GLYF_REPEAT;
576
+ repeat_count++;
577
+ }
578
+ else
579
+ {
580
+ if ( repeat_count != 0 )
581
+ {
582
+ if ( flag_offset >= dst_size )
583
+ return FT_THROW( Invalid_Table );
584
+
585
+ dst[flag_offset++] = repeat_count;
586
+ }
587
+ if ( flag_offset >= dst_size )
588
+ return FT_THROW( Invalid_Table );
589
+
590
+ dst[flag_offset++] = flag;
591
+ repeat_count = 0;
592
+ }
593
+
594
+ last_x = point.x;
595
+ last_y = point.y;
596
+ last_flag = flag;
597
+ }
598
+
599
+ if ( repeat_count != 0 )
600
+ {
601
+ if ( flag_offset >= dst_size )
602
+ return FT_THROW( Invalid_Table );
603
+
604
+ dst[flag_offset++] = repeat_count;
605
+ }
606
+
607
+ xy_bytes = x_bytes + y_bytes;
608
+ if ( xy_bytes < x_bytes ||
609
+ flag_offset + xy_bytes < flag_offset ||
610
+ flag_offset + xy_bytes > dst_size )
611
+ return FT_THROW( Invalid_Table );
612
+
613
+ x_offset = flag_offset;
614
+ y_offset = flag_offset + x_bytes;
615
+ last_x = 0;
616
+ last_y = 0;
617
+
618
+ for ( i = 0; i < n_points; ++i )
619
+ {
620
+ FT_Int dx = points[i].x - last_x;
621
+ FT_Int dy = points[i].y - last_y;
622
+
623
+
624
+ if ( dx == 0 )
625
+ ;
626
+ else if ( dx > -256 && dx < 256 )
627
+ dst[x_offset++] = (FT_Byte)FT_ABS( dx );
628
+ else
629
+ {
630
+ pointer = dst + x_offset;
631
+ WRITE_SHORT( pointer, dx );
632
+ x_offset += 2;
633
+ }
634
+
635
+ last_x += dx;
636
+
637
+ if ( dy == 0 )
638
+ ;
639
+ else if ( dy > -256 && dy < 256 )
640
+ dst[y_offset++] = (FT_Byte)FT_ABS( dy );
641
+ else
642
+ {
643
+ pointer = dst + y_offset;
644
+ WRITE_SHORT( pointer, dy );
645
+ y_offset += 2;
646
+ }
647
+
648
+ last_y += dy;
649
+ }
650
+
651
+ *glyph_size = y_offset;
652
+ return FT_Err_Ok;
653
+ }
654
+
655
+
656
+ static void
657
+ compute_bbox( FT_ULong n_points,
658
+ const WOFF2_Point points,
659
+ FT_Byte* dst,
660
+ FT_UShort* src_x_min )
661
+ {
662
+ FT_Int x_min = 0;
663
+ FT_Int y_min = 0;
664
+ FT_Int x_max = 0;
665
+ FT_Int y_max = 0;
666
+
667
+ FT_UInt i;
668
+
669
+ FT_ULong offset;
670
+ FT_Byte* pointer;
671
+
672
+
673
+ if ( n_points > 0 )
674
+ {
675
+ x_min = points[0].x;
676
+ y_min = points[0].y;
677
+ x_max = points[0].x;
678
+ y_max = points[0].y;
679
+ }
680
+
681
+ for ( i = 1; i < n_points; ++i )
682
+ {
683
+ FT_Int x = points[i].x;
684
+ FT_Int y = points[i].y;
685
+
686
+
687
+ x_min = FT_MIN( x, x_min );
688
+ y_min = FT_MIN( y, y_min );
689
+ x_max = FT_MAX( x, x_max );
690
+ y_max = FT_MAX( y, y_max );
691
+ }
692
+
693
+ /* Write values to `glyf' record. */
694
+ offset = 2;
695
+ pointer = dst + offset;
696
+
697
+ WRITE_SHORT( pointer, x_min );
698
+ WRITE_SHORT( pointer, y_min );
699
+ WRITE_SHORT( pointer, x_max );
700
+ WRITE_SHORT( pointer, y_max );
701
+
702
+ *src_x_min = (FT_UShort)x_min;
703
+ }
704
+
705
+
706
+ static FT_Error
707
+ compositeGlyph_size( FT_Stream stream,
708
+ FT_ULong offset,
709
+ FT_ULong* size,
710
+ FT_Bool* have_instructions )
711
+ {
712
+ FT_Error error = FT_Err_Ok;
713
+ FT_ULong start_offset = offset;
714
+ FT_Bool we_have_inst = FALSE;
715
+ FT_UShort flags = FLAG_MORE_COMPONENTS;
716
+
717
+
718
+ if ( FT_STREAM_SEEK( start_offset ) )
719
+ goto Exit;
720
+ while ( flags & FLAG_MORE_COMPONENTS )
721
+ {
722
+ FT_ULong arg_size;
723
+
724
+
725
+ if ( FT_READ_USHORT( flags ) )
726
+ goto Exit;
727
+ we_have_inst |= ( flags & FLAG_WE_HAVE_INSTRUCTIONS ) != 0;
728
+ /* glyph index */
729
+ arg_size = 2;
730
+ if ( flags & FLAG_ARG_1_AND_2_ARE_WORDS )
731
+ arg_size += 4;
732
+ else
733
+ arg_size += 2;
734
+
735
+ if ( flags & FLAG_WE_HAVE_A_SCALE )
736
+ arg_size += 2;
737
+ else if ( flags & FLAG_WE_HAVE_AN_X_AND_Y_SCALE )
738
+ arg_size += 4;
739
+ else if ( flags & FLAG_WE_HAVE_A_TWO_BY_TWO )
740
+ arg_size += 8;
741
+
742
+ if ( FT_STREAM_SKIP( arg_size ) )
743
+ goto Exit;
744
+ }
745
+
746
+ *size = FT_STREAM_POS() - start_offset;
747
+ *have_instructions = we_have_inst;
748
+
749
+ Exit:
750
+ return error;
751
+ }
752
+
753
+
754
+ /* Store loca values (provided by `reconstruct_glyf') to output stream. */
755
+ static FT_Error
756
+ store_loca( FT_ULong* loca_values,
757
+ FT_ULong loca_values_size,
758
+ FT_UShort index_format,
759
+ FT_ULong* checksum,
760
+ FT_Byte** sfnt_bytes,
761
+ FT_ULong* sfnt_size,
762
+ FT_ULong* out_offset,
763
+ FT_Memory memory )
764
+ {
765
+ FT_Error error = FT_Err_Ok;
766
+ FT_Byte* sfnt = *sfnt_bytes;
767
+ FT_ULong dest_offset = *out_offset;
768
+
769
+ FT_Byte* loca_buf = NULL;
770
+ FT_Byte* dst = NULL;
771
+
772
+ FT_UInt i = 0;
773
+ FT_ULong loca_buf_size;
774
+
775
+ const FT_ULong offset_size = index_format ? 4 : 2;
776
+
777
+
778
+ if ( ( loca_values_size << 2 ) >> 2 != loca_values_size )
779
+ goto Fail;
780
+
781
+ loca_buf_size = loca_values_size * offset_size;
782
+ if ( FT_QALLOC( loca_buf, loca_buf_size ) )
783
+ goto Fail;
784
+
785
+ dst = loca_buf;
786
+ for ( i = 0; i < loca_values_size; i++ )
787
+ {
788
+ FT_ULong value = loca_values[i];
789
+
790
+
791
+ if ( index_format )
792
+ WRITE_ULONG( dst, value );
793
+ else
794
+ WRITE_USHORT( dst, ( value >> 1 ) );
795
+ }
796
+
797
+ *checksum = compute_ULong_sum( loca_buf, loca_buf_size );
798
+ /* Write `loca' table to sfnt buffer. */
799
+ if ( WRITE_SFNT_BUF( loca_buf, loca_buf_size ) )
800
+ goto Fail;
801
+
802
+ /* Set pointer `sfnt_bytes' to its correct value. */
803
+ *sfnt_bytes = sfnt;
804
+ *out_offset = dest_offset;
805
+
806
+ FT_FREE( loca_buf );
807
+ return error;
808
+
809
+ Fail:
810
+ if ( !error )
811
+ error = FT_THROW( Invalid_Table );
812
+
813
+ FT_FREE( loca_buf );
814
+
815
+ return error;
816
+ }
817
+
818
+
819
+ static FT_Error
820
+ reconstruct_glyf( FT_Stream stream,
821
+ FT_ULong* glyf_checksum,
822
+ FT_ULong* loca_checksum,
823
+ FT_Byte** sfnt_bytes,
824
+ FT_ULong* sfnt_size,
825
+ FT_ULong* out_offset,
826
+ WOFF2_Info info,
827
+ FT_Memory memory )
828
+ {
829
+ FT_Error error = FT_Err_Ok;
830
+ FT_Byte* sfnt = *sfnt_bytes;
831
+
832
+ /* current position in stream */
833
+ const FT_ULong pos = FT_STREAM_POS();
834
+
835
+ FT_UInt num_substreams = 7;
836
+
837
+ FT_UShort option_flags;
838
+ FT_UShort num_glyphs;
839
+ FT_UShort index_format;
840
+ FT_ULong expected_loca_length;
841
+ FT_UInt offset;
842
+ FT_UInt i;
843
+ FT_ULong points_size;
844
+ FT_ULong glyph_buf_size;
845
+ FT_ULong bbox_bitmap_offset;
846
+ FT_ULong bbox_bitmap_length;
847
+ FT_ULong overlap_bitmap_offset = 0;
848
+ FT_ULong overlap_bitmap_length = 0;
849
+
850
+ const FT_ULong glyf_start = *out_offset;
851
+ FT_ULong dest_offset = *out_offset;
852
+
853
+ WOFF2_Substream substreams = NULL;
854
+
855
+ FT_ULong* loca_values = NULL;
856
+ FT_UShort* n_points_arr = NULL;
857
+ FT_Byte* glyph_buf = NULL;
858
+ WOFF2_Point points = NULL;
859
+
860
+
861
+ if ( FT_QNEW_ARRAY( substreams, num_substreams ) )
862
+ goto Fail;
863
+
864
+ if ( FT_STREAM_SKIP( 2 ) )
865
+ goto Fail;
866
+ if ( FT_READ_USHORT( option_flags ) )
867
+ goto Fail;
868
+ if ( FT_READ_USHORT( num_glyphs ) )
869
+ goto Fail;
870
+ if ( FT_READ_USHORT( index_format ) )
871
+ goto Fail;
872
+
873
+ FT_TRACE4(( "option_flags = %u; num_glyphs = %u; index_format = %u\n",
874
+ option_flags, num_glyphs, index_format ));
875
+
876
+ info->num_glyphs = num_glyphs;
877
+
878
+ /* Calculate expected length of loca and compare. */
879
+ /* See https://www.w3.org/TR/WOFF2/#conform-mustRejectLoca */
880
+ /* index_format = 0 => Short version `loca'. */
881
+ /* index_format = 1 => Long version `loca'. */
882
+ expected_loca_length = ( index_format ? 4 : 2 ) *
883
+ ( (FT_ULong)num_glyphs + 1 );
884
+ if ( info->loca_table->dst_length != expected_loca_length )
885
+ goto Fail;
886
+
887
+ offset = 2 + 2 + 2 + 2 + ( num_substreams * 4 );
888
+ if ( offset > info->glyf_table->TransformLength )
889
+ goto Fail;
890
+
891
+ for ( i = 0; i < num_substreams; ++i )
892
+ {
893
+ FT_ULong substream_size;
894
+
895
+
896
+ if ( FT_READ_ULONG( substream_size ) )
897
+ goto Fail;
898
+ if ( substream_size > info->glyf_table->TransformLength - offset )
899
+ goto Fail;
900
+
901
+ substreams[i].start = pos + offset;
902
+ substreams[i].offset = pos + offset;
903
+ substreams[i].size = substream_size;
904
+
905
+ FT_TRACE5(( " Substream %d: offset = %lu; size = %lu;\n",
906
+ i, substreams[i].offset, substreams[i].size ));
907
+ offset += substream_size;
908
+ }
909
+
910
+ if ( option_flags & HAVE_OVERLAP_SIMPLE_BITMAP )
911
+ {
912
+ /* Size of overlapBitmap = floor((numGlyphs + 7) / 8) */
913
+ overlap_bitmap_length = ( num_glyphs + 7U ) >> 3;
914
+ if ( overlap_bitmap_length > info->glyf_table->TransformLength - offset )
915
+ goto Fail;
916
+
917
+ overlap_bitmap_offset = pos + offset;
918
+
919
+ FT_TRACE5(( " Overlap bitmap: offset = %lu; size = %lu;\n",
920
+ overlap_bitmap_offset, overlap_bitmap_length ));
921
+ offset += overlap_bitmap_length;
922
+ }
923
+
924
+ if ( FT_QNEW_ARRAY( loca_values, num_glyphs + 1 ) )
925
+ goto Fail;
926
+
927
+ points_size = 0;
928
+ bbox_bitmap_offset = substreams[BBOX_STREAM].offset;
929
+
930
+ /* Size of bboxBitmap = 4 * floor((numGlyphs + 31) / 32) */
931
+ bbox_bitmap_length = ( ( num_glyphs + 31U ) >> 5 ) << 2;
932
+ /* bboxStreamSize is the combined size of bboxBitmap and bboxStream. */
933
+ substreams[BBOX_STREAM].offset += bbox_bitmap_length;
934
+
935
+ glyph_buf_size = WOFF2_DEFAULT_GLYPH_BUF;
936
+ if ( FT_QALLOC( glyph_buf, glyph_buf_size ) )
937
+ goto Fail;
938
+
939
+ if ( FT_QNEW_ARRAY( info->x_mins, num_glyphs ) )
940
+ goto Fail;
941
+
942
+ for ( i = 0; i < num_glyphs; ++i )
943
+ {
944
+ FT_ULong glyph_size = 0;
945
+ FT_UShort n_contours = 0;
946
+ FT_Bool have_bbox = FALSE;
947
+ FT_Byte bbox_bitmap;
948
+ FT_ULong bbox_offset;
949
+ FT_UShort x_min = 0;
950
+
951
+
952
+ /* Set `have_bbox'. */
953
+ bbox_offset = bbox_bitmap_offset + ( i >> 3 );
954
+ if ( FT_STREAM_SEEK( bbox_offset ) ||
955
+ FT_READ_BYTE( bbox_bitmap ) )
956
+ goto Fail;
957
+ if ( bbox_bitmap & ( 0x80 >> ( i & 7 ) ) )
958
+ have_bbox = TRUE;
959
+
960
+ /* Read value from `nContourStream'. */
961
+ if ( FT_STREAM_SEEK( substreams[N_CONTOUR_STREAM].offset ) ||
962
+ FT_READ_USHORT( n_contours ) )
963
+ goto Fail;
964
+ substreams[N_CONTOUR_STREAM].offset += 2;
965
+
966
+ if ( n_contours == 0xffff )
967
+ {
968
+ /* composite glyph */
969
+ FT_Bool have_instructions = FALSE;
970
+ FT_UShort instruction_size = 0;
971
+ FT_ULong composite_size = 0;
972
+ FT_ULong size_needed;
973
+ FT_Byte* pointer = NULL;
974
+
975
+
976
+ /* Composite glyphs must have explicit bbox. */
977
+ if ( !have_bbox )
978
+ goto Fail;
979
+
980
+ if ( compositeGlyph_size( stream,
981
+ substreams[COMPOSITE_STREAM].offset,
982
+ &composite_size,
983
+ &have_instructions) )
984
+ goto Fail;
985
+
986
+ if ( have_instructions )
987
+ {
988
+ if ( FT_STREAM_SEEK( substreams[GLYPH_STREAM].offset ) ||
989
+ READ_255USHORT( instruction_size ) )
990
+ goto Fail;
991
+ substreams[GLYPH_STREAM].offset = FT_STREAM_POS();
992
+ }
993
+
994
+ size_needed = 12 + composite_size + instruction_size;
995
+ if ( glyph_buf_size < size_needed )
996
+ {
997
+ if ( FT_QREALLOC( glyph_buf, glyph_buf_size, size_needed ) )
998
+ goto Fail;
999
+ glyph_buf_size = size_needed;
1000
+ }
1001
+
1002
+ pointer = glyph_buf + glyph_size;
1003
+ WRITE_USHORT( pointer, n_contours );
1004
+ glyph_size += 2;
1005
+
1006
+ /* Read x_min for current glyph. */
1007
+ if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) ||
1008
+ FT_READ_USHORT( x_min ) )
1009
+ goto Fail;
1010
+ /* No increment here because we read again. */
1011
+
1012
+ if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) ||
1013
+ FT_STREAM_READ( glyph_buf + glyph_size, 8 ) )
1014
+ goto Fail;
1015
+
1016
+ substreams[BBOX_STREAM].offset += 8;
1017
+ glyph_size += 8;
1018
+
1019
+ if ( FT_STREAM_SEEK( substreams[COMPOSITE_STREAM].offset ) ||
1020
+ FT_STREAM_READ( glyph_buf + glyph_size, composite_size ) )
1021
+ goto Fail;
1022
+
1023
+ substreams[COMPOSITE_STREAM].offset += composite_size;
1024
+ glyph_size += composite_size;
1025
+
1026
+ if ( have_instructions )
1027
+ {
1028
+ pointer = glyph_buf + glyph_size;
1029
+ WRITE_USHORT( pointer, instruction_size );
1030
+ glyph_size += 2;
1031
+
1032
+ if ( FT_STREAM_SEEK( substreams[INSTRUCTION_STREAM].offset ) ||
1033
+ FT_STREAM_READ( glyph_buf + glyph_size, instruction_size ) )
1034
+ goto Fail;
1035
+
1036
+ substreams[INSTRUCTION_STREAM].offset += instruction_size;
1037
+ glyph_size += instruction_size;
1038
+ }
1039
+ }
1040
+ else if ( n_contours > 0 )
1041
+ {
1042
+ /* simple glyph */
1043
+ FT_ULong total_n_points = 0;
1044
+ FT_UShort n_points_contour;
1045
+ FT_UInt j;
1046
+ FT_ULong flag_size;
1047
+ FT_ULong triplet_size;
1048
+ FT_ULong triplet_bytes_used;
1049
+ FT_Bool have_overlap = FALSE;
1050
+ FT_Byte overlap_bitmap;
1051
+ FT_ULong overlap_offset;
1052
+ FT_Byte* flags_buf = NULL;
1053
+ FT_Byte* triplet_buf = NULL;
1054
+ FT_UShort instruction_size;
1055
+ FT_ULong size_needed;
1056
+ FT_Int end_point;
1057
+ FT_UInt contour_ix;
1058
+
1059
+ FT_Byte* pointer = NULL;
1060
+
1061
+
1062
+ /* Set `have_overlap`. */
1063
+ if ( overlap_bitmap_offset )
1064
+ {
1065
+ overlap_offset = overlap_bitmap_offset + ( i >> 3 );
1066
+ if ( FT_STREAM_SEEK( overlap_offset ) ||
1067
+ FT_READ_BYTE( overlap_bitmap ) )
1068
+ goto Fail;
1069
+ if ( overlap_bitmap & ( 0x80 >> ( i & 7 ) ) )
1070
+ have_overlap = TRUE;
1071
+ }
1072
+
1073
+ if ( FT_QNEW_ARRAY( n_points_arr, n_contours ) )
1074
+ goto Fail;
1075
+
1076
+ if ( FT_STREAM_SEEK( substreams[N_POINTS_STREAM].offset ) )
1077
+ goto Fail;
1078
+
1079
+ for ( j = 0; j < n_contours; ++j )
1080
+ {
1081
+ if ( READ_255USHORT( n_points_contour ) )
1082
+ goto Fail;
1083
+ n_points_arr[j] = n_points_contour;
1084
+ /* Prevent negative/overflow. */
1085
+ if ( total_n_points + n_points_contour < total_n_points )
1086
+ goto Fail;
1087
+ total_n_points += n_points_contour;
1088
+ }
1089
+ substreams[N_POINTS_STREAM].offset = FT_STREAM_POS();
1090
+
1091
+ flag_size = total_n_points;
1092
+ if ( flag_size > substreams[FLAG_STREAM].size )
1093
+ goto Fail;
1094
+
1095
+ flags_buf = stream->base + substreams[FLAG_STREAM].offset;
1096
+ triplet_buf = stream->base + substreams[GLYPH_STREAM].offset;
1097
+
1098
+ if ( substreams[GLYPH_STREAM].size <
1099
+ ( substreams[GLYPH_STREAM].offset -
1100
+ substreams[GLYPH_STREAM].start ) )
1101
+ goto Fail;
1102
+
1103
+ triplet_size = substreams[GLYPH_STREAM].size -
1104
+ ( substreams[GLYPH_STREAM].offset -
1105
+ substreams[GLYPH_STREAM].start );
1106
+ triplet_bytes_used = 0;
1107
+
1108
+ /* Create array to store point information. */
1109
+ points_size = total_n_points;
1110
+ if ( FT_QNEW_ARRAY( points, points_size ) )
1111
+ goto Fail;
1112
+
1113
+ if ( triplet_decode( flags_buf,
1114
+ triplet_buf,
1115
+ triplet_size,
1116
+ total_n_points,
1117
+ points,
1118
+ &triplet_bytes_used ) )
1119
+ goto Fail;
1120
+
1121
+ substreams[FLAG_STREAM].offset += flag_size;
1122
+ substreams[GLYPH_STREAM].offset += triplet_bytes_used;
1123
+
1124
+ if ( FT_STREAM_SEEK( substreams[GLYPH_STREAM].offset ) ||
1125
+ READ_255USHORT( instruction_size ) )
1126
+ goto Fail;
1127
+
1128
+ substreams[GLYPH_STREAM].offset = FT_STREAM_POS();
1129
+
1130
+ if ( total_n_points >= ( 1 << 27 ) )
1131
+ goto Fail;
1132
+
1133
+ size_needed = 12 +
1134
+ ( 2 * n_contours ) +
1135
+ ( 5 * total_n_points ) +
1136
+ instruction_size;
1137
+ if ( glyph_buf_size < size_needed )
1138
+ {
1139
+ if ( FT_QREALLOC( glyph_buf, glyph_buf_size, size_needed ) )
1140
+ goto Fail;
1141
+ glyph_buf_size = size_needed;
1142
+ }
1143
+
1144
+ pointer = glyph_buf + glyph_size;
1145
+ WRITE_USHORT( pointer, n_contours );
1146
+ glyph_size += 2;
1147
+
1148
+ if ( have_bbox )
1149
+ {
1150
+ /* Read x_min for current glyph. */
1151
+ if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) ||
1152
+ FT_READ_USHORT( x_min ) )
1153
+ goto Fail;
1154
+ /* No increment here because we read again. */
1155
+
1156
+ if ( FT_STREAM_SEEK( substreams[BBOX_STREAM].offset ) ||
1157
+ FT_STREAM_READ( glyph_buf + glyph_size, 8 ) )
1158
+ goto Fail;
1159
+ substreams[BBOX_STREAM].offset += 8;
1160
+ }
1161
+ else
1162
+ compute_bbox( total_n_points, points, glyph_buf, &x_min );
1163
+
1164
+ glyph_size = CONTOUR_OFFSET_END_POINT;
1165
+
1166
+ pointer = glyph_buf + glyph_size;
1167
+ end_point = -1;
1168
+
1169
+ for ( contour_ix = 0; contour_ix < n_contours; ++contour_ix )
1170
+ {
1171
+ end_point += n_points_arr[contour_ix];
1172
+ if ( end_point >= 65536 )
1173
+ goto Fail;
1174
+
1175
+ WRITE_SHORT( pointer, end_point );
1176
+ glyph_size += 2;
1177
+ }
1178
+
1179
+ WRITE_USHORT( pointer, instruction_size );
1180
+ glyph_size += 2;
1181
+
1182
+ if ( FT_STREAM_SEEK( substreams[INSTRUCTION_STREAM].offset ) ||
1183
+ FT_STREAM_READ( glyph_buf + glyph_size, instruction_size ) )
1184
+ goto Fail;
1185
+
1186
+ substreams[INSTRUCTION_STREAM].offset += instruction_size;
1187
+ glyph_size += instruction_size;
1188
+
1189
+ if ( store_points( total_n_points,
1190
+ points,
1191
+ n_contours,
1192
+ instruction_size,
1193
+ have_overlap,
1194
+ glyph_buf,
1195
+ glyph_buf_size,
1196
+ &glyph_size ) )
1197
+ goto Fail;
1198
+
1199
+ FT_FREE( points );
1200
+ FT_FREE( n_points_arr );
1201
+ }
1202
+ else
1203
+ {
1204
+ /* Empty glyph. */
1205
+ /* Must not have a bbox. */
1206
+ if ( have_bbox )
1207
+ {
1208
+ FT_ERROR(( "Empty glyph has a bbox.\n" ));
1209
+ goto Fail;
1210
+ }
1211
+ }
1212
+
1213
+ loca_values[i] = dest_offset - glyf_start;
1214
+
1215
+ if ( WRITE_SFNT_BUF( glyph_buf, glyph_size ) )
1216
+ goto Fail;
1217
+
1218
+ if ( pad4( &sfnt, sfnt_size, &dest_offset, memory ) )
1219
+ goto Fail;
1220
+
1221
+ *glyf_checksum += compute_ULong_sum( glyph_buf, glyph_size );
1222
+
1223
+ /* Store x_mins, may be required to reconstruct `hmtx'. */
1224
+ info->x_mins[i] = (FT_Short)x_min;
1225
+ }
1226
+
1227
+ info->glyf_table->dst_length = dest_offset - info->glyf_table->dst_offset;
1228
+ info->loca_table->dst_offset = dest_offset;
1229
+
1230
+ /* `loca[n]' will be equal to the length of the `glyf' table. */
1231
+ loca_values[num_glyphs] = info->glyf_table->dst_length;
1232
+
1233
+ if ( store_loca( loca_values,
1234
+ num_glyphs + 1,
1235
+ index_format,
1236
+ loca_checksum,
1237
+ &sfnt,
1238
+ sfnt_size,
1239
+ &dest_offset,
1240
+ memory ) )
1241
+ goto Fail;
1242
+
1243
+ info->loca_table->dst_length = dest_offset - info->loca_table->dst_offset;
1244
+
1245
+ FT_TRACE4(( " loca table info:\n" ));
1246
+ FT_TRACE4(( " dst_offset = %lu\n", info->loca_table->dst_offset ));
1247
+ FT_TRACE4(( " dst_length = %lu\n", info->loca_table->dst_length ));
1248
+ FT_TRACE4(( " checksum = %09lx\n", *loca_checksum ));
1249
+
1250
+ /* Set pointer `sfnt_bytes' to its correct value. */
1251
+ *sfnt_bytes = sfnt;
1252
+ *out_offset = dest_offset;
1253
+
1254
+ FT_FREE( substreams );
1255
+ FT_FREE( loca_values );
1256
+ FT_FREE( n_points_arr );
1257
+ FT_FREE( glyph_buf );
1258
+ FT_FREE( points );
1259
+
1260
+ return error;
1261
+
1262
+ Fail:
1263
+ if ( !error )
1264
+ error = FT_THROW( Invalid_Table );
1265
+
1266
+ /* Set pointer `sfnt_bytes' to its correct value. */
1267
+ *sfnt_bytes = sfnt;
1268
+
1269
+ FT_FREE( substreams );
1270
+ FT_FREE( loca_values );
1271
+ FT_FREE( n_points_arr );
1272
+ FT_FREE( glyph_buf );
1273
+ FT_FREE( points );
1274
+
1275
+ return error;
1276
+ }
1277
+
1278
+
1279
+ /* Get `x_mins' for untransformed `glyf' table. */
1280
+ static FT_Error
1281
+ get_x_mins( FT_Stream stream,
1282
+ WOFF2_Table* tables,
1283
+ FT_UShort num_tables,
1284
+ WOFF2_Info info,
1285
+ FT_Memory memory )
1286
+ {
1287
+ FT_UShort num_glyphs;
1288
+ FT_UShort index_format;
1289
+ FT_ULong glyf_offset;
1290
+ FT_UShort glyf_offset_short;
1291
+ FT_ULong loca_offset;
1292
+ FT_Int i;
1293
+ FT_Error error = FT_Err_Ok;
1294
+ FT_ULong offset_size;
1295
+
1296
+ /* At this point of time those tables might not have been read yet. */
1297
+ const WOFF2_Table maxp_table = find_table( tables, num_tables,
1298
+ TTAG_maxp );
1299
+ const WOFF2_Table head_table = find_table( tables, num_tables,
1300
+ TTAG_head );
1301
+
1302
+
1303
+ if ( !maxp_table )
1304
+ {
1305
+ FT_ERROR(( "`maxp' table is missing.\n" ));
1306
+ return FT_THROW( Invalid_Table );
1307
+ }
1308
+
1309
+ if ( !head_table )
1310
+ {
1311
+ FT_ERROR(( "`head' table is missing.\n" ));
1312
+ return FT_THROW( Invalid_Table );
1313
+ }
1314
+
1315
+ if ( !info->loca_table )
1316
+ {
1317
+ FT_ERROR(( "`loca' table is missing.\n" ));
1318
+ return FT_THROW( Invalid_Table );
1319
+ }
1320
+
1321
+ /* Read `numGlyphs' field from `maxp' table. */
1322
+ if ( FT_STREAM_SEEK( maxp_table->src_offset ) || FT_STREAM_SKIP( 8 ) )
1323
+ return error;
1324
+
1325
+ if ( FT_READ_USHORT( num_glyphs ) )
1326
+ return error;
1327
+
1328
+ info->num_glyphs = num_glyphs;
1329
+
1330
+ /* Read `indexToLocFormat' field from `head' table. */
1331
+ if ( FT_STREAM_SEEK( head_table->src_offset ) ||
1332
+ FT_STREAM_SKIP( 50 ) )
1333
+ return error;
1334
+
1335
+ if ( FT_READ_USHORT( index_format ) )
1336
+ return error;
1337
+
1338
+ offset_size = index_format ? 4 : 2;
1339
+
1340
+ /* Create `x_mins' array. */
1341
+ if ( FT_QNEW_ARRAY( info->x_mins, num_glyphs ) )
1342
+ return error;
1343
+
1344
+ loca_offset = info->loca_table->src_offset;
1345
+
1346
+ for ( i = 0; i < num_glyphs; ++i )
1347
+ {
1348
+ if ( FT_STREAM_SEEK( loca_offset ) )
1349
+ return error;
1350
+
1351
+ loca_offset += offset_size;
1352
+
1353
+ if ( index_format )
1354
+ {
1355
+ if ( FT_READ_ULONG( glyf_offset ) )
1356
+ return error;
1357
+ }
1358
+ else
1359
+ {
1360
+ if ( FT_READ_USHORT( glyf_offset_short ) )
1361
+ return error;
1362
+
1363
+ glyf_offset = (FT_ULong)( glyf_offset_short );
1364
+ glyf_offset = glyf_offset << 1;
1365
+ }
1366
+
1367
+ glyf_offset += info->glyf_table->src_offset;
1368
+
1369
+ if ( FT_STREAM_SEEK( glyf_offset ) || FT_STREAM_SKIP( 2 ) )
1370
+ return error;
1371
+
1372
+ if ( FT_READ_SHORT( info->x_mins[i] ) )
1373
+ return error;
1374
+ }
1375
+
1376
+ return error;
1377
+ }
1378
+
1379
+
1380
+ static FT_Error
1381
+ reconstruct_hmtx( FT_Stream stream,
1382
+ FT_UShort num_glyphs,
1383
+ FT_UShort num_hmetrics,
1384
+ FT_Short* x_mins,
1385
+ FT_ULong* checksum,
1386
+ FT_Byte** sfnt_bytes,
1387
+ FT_ULong* sfnt_size,
1388
+ FT_ULong* out_offset,
1389
+ FT_Memory memory )
1390
+ {
1391
+ FT_Error error = FT_Err_Ok;
1392
+ FT_Byte* sfnt = *sfnt_bytes;
1393
+ FT_ULong dest_offset = *out_offset;
1394
+
1395
+ FT_Byte hmtx_flags;
1396
+ FT_Bool has_proportional_lsbs, has_monospace_lsbs;
1397
+ FT_ULong hmtx_table_size;
1398
+ FT_Int i;
1399
+
1400
+ FT_UShort* advance_widths = NULL;
1401
+ FT_Short* lsbs = NULL;
1402
+ FT_Byte* hmtx_table = NULL;
1403
+ FT_Byte* dst = NULL;
1404
+
1405
+
1406
+ if ( FT_READ_BYTE( hmtx_flags ) )
1407
+ goto Fail;
1408
+
1409
+ has_proportional_lsbs = ( hmtx_flags & 1 ) == 0;
1410
+ has_monospace_lsbs = ( hmtx_flags & 2 ) == 0;
1411
+
1412
+ /* Bits 2-7 are reserved and MUST be zero. */
1413
+ if ( ( hmtx_flags & 0xFC ) != 0 )
1414
+ goto Fail;
1415
+
1416
+ /* Are you REALLY transformed? */
1417
+ if ( has_proportional_lsbs && has_monospace_lsbs )
1418
+ goto Fail;
1419
+
1420
+ /* Cannot have a transformed `hmtx' without `glyf'. */
1421
+ if ( ( num_hmetrics > num_glyphs ) ||
1422
+ ( num_hmetrics < 1 ) )
1423
+ goto Fail;
1424
+
1425
+ /* Must have at least one entry. */
1426
+ if ( num_hmetrics < 1 )
1427
+ goto Fail;
1428
+
1429
+ if ( FT_QNEW_ARRAY( advance_widths, num_hmetrics ) ||
1430
+ FT_QNEW_ARRAY( lsbs, num_glyphs ) )
1431
+ goto Fail;
1432
+
1433
+ /* Read `advanceWidth' stream. Always present. */
1434
+ for ( i = 0; i < num_hmetrics; i++ )
1435
+ {
1436
+ FT_UShort advance_width;
1437
+
1438
+
1439
+ if ( FT_READ_USHORT( advance_width ) )
1440
+ goto Fail;
1441
+
1442
+ advance_widths[i] = advance_width;
1443
+ }
1444
+
1445
+ /* lsb values for proportional glyphs. */
1446
+ for ( i = 0; i < num_hmetrics; i++ )
1447
+ {
1448
+ FT_Short lsb;
1449
+
1450
+
1451
+ if ( has_proportional_lsbs )
1452
+ {
1453
+ if ( FT_READ_SHORT( lsb ) )
1454
+ goto Fail;
1455
+ }
1456
+ else
1457
+ lsb = x_mins[i];
1458
+
1459
+ lsbs[i] = lsb;
1460
+ }
1461
+
1462
+ /* lsb values for monospaced glyphs. */
1463
+ for ( i = num_hmetrics; i < num_glyphs; i++ )
1464
+ {
1465
+ FT_Short lsb;
1466
+
1467
+
1468
+ if ( has_monospace_lsbs )
1469
+ {
1470
+ if ( FT_READ_SHORT( lsb ) )
1471
+ goto Fail;
1472
+ }
1473
+ else
1474
+ lsb = x_mins[i];
1475
+
1476
+ lsbs[i] = lsb;
1477
+ }
1478
+
1479
+ /* Build the hmtx table. */
1480
+ hmtx_table_size = 2 * num_hmetrics + 2 * num_glyphs;
1481
+ if ( FT_QALLOC( hmtx_table, hmtx_table_size ) )
1482
+ goto Fail;
1483
+
1484
+ dst = hmtx_table;
1485
+ FT_TRACE6(( "hmtx values: \n" ));
1486
+ for ( i = 0; i < num_glyphs; i++ )
1487
+ {
1488
+ if ( i < num_hmetrics )
1489
+ {
1490
+ WRITE_SHORT( dst, advance_widths[i] );
1491
+ FT_TRACE6(( "%d ", advance_widths[i] ));
1492
+ }
1493
+
1494
+ WRITE_SHORT( dst, lsbs[i] );
1495
+ FT_TRACE6(( "%d ", lsbs[i] ));
1496
+ }
1497
+ FT_TRACE6(( "\n" ));
1498
+
1499
+ *checksum = compute_ULong_sum( hmtx_table, hmtx_table_size );
1500
+ /* Write `hmtx' table to sfnt buffer. */
1501
+ if ( WRITE_SFNT_BUF( hmtx_table, hmtx_table_size ) )
1502
+ goto Fail;
1503
+
1504
+ /* Set pointer `sfnt_bytes' to its correct value. */
1505
+ *sfnt_bytes = sfnt;
1506
+ *out_offset = dest_offset;
1507
+
1508
+ FT_FREE( advance_widths );
1509
+ FT_FREE( lsbs );
1510
+ FT_FREE( hmtx_table );
1511
+
1512
+ return error;
1513
+
1514
+ Fail:
1515
+ FT_FREE( advance_widths );
1516
+ FT_FREE( lsbs );
1517
+ FT_FREE( hmtx_table );
1518
+
1519
+ if ( !error )
1520
+ error = FT_THROW( Invalid_Table );
1521
+
1522
+ return error;
1523
+ }
1524
+
1525
+
1526
+ static FT_Error
1527
+ reconstruct_font( FT_Byte* transformed_buf,
1528
+ FT_ULong transformed_buf_size,
1529
+ WOFF2_Table* indices,
1530
+ WOFF2_Header woff2,
1531
+ WOFF2_Info info,
1532
+ FT_Byte** sfnt_bytes,
1533
+ FT_ULong* sfnt_size,
1534
+ FT_Memory memory )
1535
+ {
1536
+ /* Memory management of `transformed_buf' is handled by the caller. */
1537
+
1538
+ FT_Error error = FT_Err_Ok;
1539
+ FT_Stream stream = NULL;
1540
+ FT_Byte* buf_cursor = NULL;
1541
+ FT_Byte table_entry[16];
1542
+
1543
+ /* We are reallocating memory for `sfnt', so its pointer may change. */
1544
+ FT_Byte* sfnt = *sfnt_bytes;
1545
+
1546
+ FT_UShort num_tables = woff2->num_tables;
1547
+ FT_ULong dest_offset = 12 + num_tables * 16UL;
1548
+
1549
+ FT_ULong checksum = 0;
1550
+ FT_ULong loca_checksum = 0;
1551
+ FT_Int nn = 0;
1552
+ FT_UShort num_hmetrics = 0;
1553
+ FT_ULong font_checksum = info->header_checksum;
1554
+ FT_Bool is_glyf_xform = FALSE;
1555
+
1556
+ FT_ULong table_entry_offset = 12;
1557
+
1558
+
1559
+ /* A few table checks before reconstruction. */
1560
+ /* `glyf' must be present with `loca'. */
1561
+ info->glyf_table = find_table( indices, num_tables, TTAG_glyf );
1562
+ info->loca_table = find_table( indices, num_tables, TTAG_loca );
1563
+
1564
+ if ( ( info->glyf_table == NULL ) ^ ( info->loca_table == NULL ) )
1565
+ {
1566
+ FT_ERROR(( "One of `glyf'/`loca' tables missing.\n" ));
1567
+ return FT_THROW( Invalid_Table );
1568
+ }
1569
+
1570
+ /* Both `glyf' and `loca' must have same transformation. */
1571
+ if ( info->glyf_table != NULL )
1572
+ {
1573
+ if ( ( info->glyf_table->flags & WOFF2_FLAGS_TRANSFORM ) !=
1574
+ ( info->loca_table->flags & WOFF2_FLAGS_TRANSFORM ) )
1575
+ {
1576
+ FT_ERROR(( "Transformation mismatch"
1577
+ " between `glyf' and `loca' table." ));
1578
+ return FT_THROW( Invalid_Table );
1579
+ }
1580
+ }
1581
+
1582
+ /* Create a stream for the uncompressed buffer. */
1583
+ if ( FT_NEW( stream ) )
1584
+ goto Fail;
1585
+ FT_Stream_OpenMemory( stream, transformed_buf, transformed_buf_size );
1586
+
1587
+ FT_ASSERT( FT_STREAM_POS() == 0 );
1588
+
1589
+ /* Reconstruct/copy tables to output stream. */
1590
+ for ( nn = 0; nn < num_tables; nn++ )
1591
+ {
1592
+ WOFF2_TableRec table = *( indices[nn] );
1593
+
1594
+
1595
+ FT_TRACE3(( "Seeking to %ld with table size %ld.\n",
1596
+ table.src_offset, table.src_length ));
1597
+ FT_TRACE3(( "Table tag: %c%c%c%c.\n",
1598
+ (FT_Char)( table.Tag >> 24 ),
1599
+ (FT_Char)( table.Tag >> 16 ),
1600
+ (FT_Char)( table.Tag >> 8 ),
1601
+ (FT_Char)( table.Tag ) ));
1602
+
1603
+ if ( FT_STREAM_SEEK( table.src_offset ) )
1604
+ goto Fail;
1605
+
1606
+ if ( table.src_offset + table.src_length > transformed_buf_size )
1607
+ goto Fail;
1608
+
1609
+ /* Get stream size for fields of `hmtx' table. */
1610
+ if ( table.Tag == TTAG_hhea )
1611
+ {
1612
+ if ( read_num_hmetrics( stream, &num_hmetrics ) )
1613
+ goto Fail;
1614
+ }
1615
+
1616
+ info->num_hmetrics = num_hmetrics;
1617
+
1618
+ checksum = 0;
1619
+ if ( ( table.flags & WOFF2_FLAGS_TRANSFORM ) != WOFF2_FLAGS_TRANSFORM )
1620
+ {
1621
+ /* Check whether `head' is at least 12 bytes. */
1622
+ if ( table.Tag == TTAG_head )
1623
+ {
1624
+ if ( table.src_length < 12 )
1625
+ goto Fail;
1626
+
1627
+ buf_cursor = transformed_buf + table.src_offset + 8;
1628
+ /* Set checkSumAdjustment = 0 */
1629
+ WRITE_ULONG( buf_cursor, 0 );
1630
+ }
1631
+
1632
+ table.dst_offset = dest_offset;
1633
+
1634
+ checksum = compute_ULong_sum( transformed_buf + table.src_offset,
1635
+ table.src_length );
1636
+ FT_TRACE4(( "Checksum = %09lx.\n", checksum ));
1637
+
1638
+ if ( WRITE_SFNT_BUF( transformed_buf + table.src_offset,
1639
+ table.src_length ) )
1640
+ goto Fail;
1641
+ }
1642
+ else
1643
+ {
1644
+ FT_TRACE3(( "This table is transformed.\n" ));
1645
+
1646
+ if ( table.Tag == TTAG_glyf )
1647
+ {
1648
+ is_glyf_xform = TRUE;
1649
+ table.dst_offset = dest_offset;
1650
+
1651
+ if ( reconstruct_glyf( stream,
1652
+ &checksum,
1653
+ &loca_checksum,
1654
+ &sfnt,
1655
+ sfnt_size,
1656
+ &dest_offset,
1657
+ info,
1658
+ memory ) )
1659
+ goto Fail;
1660
+
1661
+ FT_TRACE4(( "Checksum = %09lx.\n", checksum ));
1662
+ }
1663
+
1664
+ else if ( table.Tag == TTAG_loca )
1665
+ checksum = loca_checksum;
1666
+
1667
+ else if ( table.Tag == TTAG_hmtx )
1668
+ {
1669
+ /* If glyf is not transformed and hmtx is, handle separately. */
1670
+ if ( !is_glyf_xform )
1671
+ {
1672
+ if ( get_x_mins( stream, indices, num_tables, info, memory ) )
1673
+ goto Fail;
1674
+ }
1675
+
1676
+ table.dst_offset = dest_offset;
1677
+
1678
+ if ( reconstruct_hmtx( stream,
1679
+ info->num_glyphs,
1680
+ info->num_hmetrics,
1681
+ info->x_mins,
1682
+ &checksum,
1683
+ &sfnt,
1684
+ sfnt_size,
1685
+ &dest_offset,
1686
+ memory ) )
1687
+ goto Fail;
1688
+ }
1689
+ else
1690
+ {
1691
+ /* Unknown transform. */
1692
+ FT_ERROR(( "Unknown table transform.\n" ));
1693
+ goto Fail;
1694
+ }
1695
+ }
1696
+
1697
+ font_checksum += checksum;
1698
+
1699
+ buf_cursor = &table_entry[0];
1700
+ WRITE_ULONG( buf_cursor, table.Tag );
1701
+ WRITE_ULONG( buf_cursor, checksum );
1702
+ WRITE_ULONG( buf_cursor, table.dst_offset );
1703
+ WRITE_ULONG( buf_cursor, table.dst_length );
1704
+
1705
+ WRITE_SFNT_BUF_AT( table_entry_offset, table_entry, 16 );
1706
+
1707
+ /* Update checksum. */
1708
+ font_checksum += compute_ULong_sum( table_entry, 16 );
1709
+
1710
+ if ( pad4( &sfnt, sfnt_size, &dest_offset, memory ) )
1711
+ goto Fail;
1712
+
1713
+ /* Sanity check. */
1714
+ if ( (FT_ULong)( table.dst_offset + table.dst_length ) > dest_offset )
1715
+ {
1716
+ FT_ERROR(( "Table was partially written.\n" ));
1717
+ goto Fail;
1718
+ }
1719
+ }
1720
+
1721
+ /* Update `head' checkSumAdjustment. */
1722
+ info->head_table = find_table( indices, num_tables, TTAG_head );
1723
+ if ( !info->head_table )
1724
+ {
1725
+ FT_ERROR(( "`head' table is missing.\n" ));
1726
+ goto Fail;
1727
+ }
1728
+
1729
+ if ( info->head_table->dst_length < 12 )
1730
+ goto Fail;
1731
+
1732
+ buf_cursor = sfnt + info->head_table->dst_offset + 8;
1733
+ font_checksum = 0xB1B0AFBA - font_checksum;
1734
+
1735
+ WRITE_ULONG( buf_cursor, font_checksum );
1736
+
1737
+ FT_TRACE2(( "Final checksum = %09lx.\n", font_checksum ));
1738
+
1739
+ woff2->actual_sfnt_size = dest_offset;
1740
+
1741
+ /* Set pointer of sfnt stream to its correct value. */
1742
+ *sfnt_bytes = sfnt;
1743
+
1744
+ FT_Stream_Close( stream );
1745
+ FT_FREE( stream );
1746
+
1747
+ return error;
1748
+
1749
+ Fail:
1750
+ if ( !error )
1751
+ error = FT_THROW( Invalid_Table );
1752
+
1753
+ /* Set pointer of sfnt stream to its correct value. */
1754
+ *sfnt_bytes = sfnt;
1755
+
1756
+ FT_Stream_Close( stream );
1757
+ FT_FREE( stream );
1758
+
1759
+ return error;
1760
+ }
1761
+
1762
+
1763
+ /* Replace `face->root.stream' with a stream containing the extracted */
1764
+ /* SFNT of a WOFF2 font. */
1765
+
1766
+ FT_LOCAL_DEF( FT_Error )
1767
+ woff2_open_font( FT_Stream stream,
1768
+ TT_Face face,
1769
+ FT_Int* face_instance_index,
1770
+ FT_Long* num_faces )
1771
+ {
1772
+ FT_Memory memory = stream->memory;
1773
+ FT_Error error = FT_Err_Ok;
1774
+ FT_Int face_index;
1775
+
1776
+ WOFF2_HeaderRec woff2;
1777
+ WOFF2_InfoRec info = { 0, 0, 0, NULL, NULL, NULL, NULL };
1778
+ WOFF2_Table tables = NULL;
1779
+ WOFF2_Table* indices = NULL;
1780
+ WOFF2_Table* temp_indices = NULL;
1781
+ WOFF2_Table last_table;
1782
+
1783
+ FT_Int nn;
1784
+ FT_ULong j;
1785
+ FT_ULong flags;
1786
+ FT_UShort xform_version;
1787
+ FT_ULong src_offset = 0;
1788
+
1789
+ FT_UInt glyf_index;
1790
+ FT_UInt loca_index;
1791
+ FT_UInt32 file_offset;
1792
+
1793
+ FT_Byte* sfnt = NULL;
1794
+ FT_Stream sfnt_stream = NULL;
1795
+ FT_ULong sfnt_size;
1796
+
1797
+ FT_Byte* uncompressed_buf = NULL;
1798
+
1799
+ static const FT_Frame_Field woff2_header_fields[] =
1800
+ {
1801
+ #undef FT_STRUCTURE
1802
+ #define FT_STRUCTURE WOFF2_HeaderRec
1803
+
1804
+ FT_FRAME_START( 48 ),
1805
+ FT_FRAME_ULONG ( signature ),
1806
+ FT_FRAME_ULONG ( flavor ),
1807
+ FT_FRAME_ULONG ( length ),
1808
+ FT_FRAME_USHORT ( num_tables ),
1809
+ FT_FRAME_SKIP_BYTES( 2 ),
1810
+ FT_FRAME_ULONG ( totalSfntSize ),
1811
+ FT_FRAME_ULONG ( totalCompressedSize ),
1812
+ FT_FRAME_SKIP_BYTES( 2 * 2 ),
1813
+ FT_FRAME_ULONG ( metaOffset ),
1814
+ FT_FRAME_ULONG ( metaLength ),
1815
+ FT_FRAME_ULONG ( metaOrigLength ),
1816
+ FT_FRAME_ULONG ( privOffset ),
1817
+ FT_FRAME_ULONG ( privLength ),
1818
+ FT_FRAME_END
1819
+ };
1820
+
1821
+
1822
+ FT_ASSERT( stream == face->root.stream );
1823
+ FT_ASSERT( FT_STREAM_POS() == 0 );
1824
+
1825
+ face_index = FT_ABS( *face_instance_index ) & 0xFFFF;
1826
+
1827
+ /* Read WOFF2 Header. */
1828
+ if ( FT_STREAM_READ_FIELDS( woff2_header_fields, &woff2 ) )
1829
+ return error;
1830
+
1831
+ FT_TRACE4(( "signature -> 0x%lX\n", woff2.signature ));
1832
+ FT_TRACE2(( "flavor -> 0x%08lx\n", woff2.flavor ));
1833
+ FT_TRACE4(( "length -> %lu\n", woff2.length ));
1834
+ FT_TRACE2(( "num_tables -> %hu\n", woff2.num_tables ));
1835
+ FT_TRACE4(( "totalSfntSize -> %lu\n", woff2.totalSfntSize ));
1836
+ FT_TRACE4(( "metaOffset -> %lu\n", woff2.metaOffset ));
1837
+ FT_TRACE4(( "metaLength -> %lu\n", woff2.metaLength ));
1838
+ FT_TRACE4(( "privOffset -> %lu\n", woff2.privOffset ));
1839
+ FT_TRACE4(( "privLength -> %lu\n", woff2.privLength ));
1840
+
1841
+ /* Make sure we don't recurse back here. */
1842
+ if ( woff2.flavor == TTAG_wOF2 )
1843
+ return FT_THROW( Invalid_Table );
1844
+
1845
+ /* Miscellaneous checks. */
1846
+ if ( woff2.length != stream->size ||
1847
+ woff2.num_tables == 0 ||
1848
+ woff2.num_tables > 0xFFFU ||
1849
+ 48 + woff2.num_tables * 20UL >= woff2.length ||
1850
+ ( woff2.metaOffset == 0 && ( woff2.metaLength != 0 ||
1851
+ woff2.metaOrigLength != 0 ) ) ||
1852
+ ( woff2.metaLength != 0 && woff2.metaOrigLength == 0 ) ||
1853
+ ( woff2.metaOffset >= woff2.length ) ||
1854
+ ( woff2.length - woff2.metaOffset < woff2.metaLength ) ||
1855
+ ( woff2.privOffset == 0 && woff2.privLength != 0 ) ||
1856
+ ( woff2.privOffset >= woff2.length ) ||
1857
+ ( woff2.length - woff2.privOffset < woff2.privLength ) )
1858
+ {
1859
+ FT_ERROR(( "woff2_open_font: invalid WOFF2 header\n" ));
1860
+ return FT_THROW( Invalid_Table );
1861
+ }
1862
+
1863
+ FT_TRACE2(( "woff2_open_font: WOFF2 Header is valid.\n" ));
1864
+
1865
+ woff2.ttc_fonts = NULL;
1866
+
1867
+ /* Read table directory. */
1868
+ if ( FT_QNEW_ARRAY( tables, woff2.num_tables ) ||
1869
+ FT_QNEW_ARRAY( indices, woff2.num_tables ) )
1870
+ goto Exit;
1871
+
1872
+ FT_TRACE2(( "\n" ));
1873
+ FT_TRACE2(( " tag flags transform origLen transformLen offset\n" ));
1874
+ FT_TRACE2(( " -----------------------------------------------------------\n" ));
1875
+ /* " XXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX" */
1876
+
1877
+ for ( nn = 0; nn < woff2.num_tables; nn++ )
1878
+ {
1879
+ WOFF2_Table table = tables + nn;
1880
+
1881
+
1882
+ if ( FT_READ_BYTE( table->FlagByte ) )
1883
+ goto Exit;
1884
+
1885
+ if ( ( table->FlagByte & 0x3f ) == 0x3f )
1886
+ {
1887
+ if ( FT_READ_ULONG( table->Tag ) )
1888
+ goto Exit;
1889
+ }
1890
+ else
1891
+ {
1892
+ table->Tag = woff2_known_tags( table->FlagByte & 0x3f );
1893
+ if ( !table->Tag )
1894
+ {
1895
+ FT_ERROR(( "woff2_open_font: Unknown table tag." ));
1896
+ error = FT_THROW( Invalid_Table );
1897
+ goto Exit;
1898
+ }
1899
+ }
1900
+
1901
+ flags = 0;
1902
+ xform_version = ( table->FlagByte >> 6 ) & 0x03;
1903
+
1904
+ /* 0 means xform for glyph/loca, non-0 for others. */
1905
+ if ( table->Tag == TTAG_glyf || table->Tag == TTAG_loca )
1906
+ {
1907
+ if ( xform_version == 0 )
1908
+ flags |= WOFF2_FLAGS_TRANSFORM;
1909
+ }
1910
+ else if ( xform_version != 0 )
1911
+ flags |= WOFF2_FLAGS_TRANSFORM;
1912
+
1913
+ flags |= xform_version;
1914
+
1915
+ if ( READ_BASE128( table->dst_length ) )
1916
+ goto Exit;
1917
+
1918
+ table->TransformLength = table->dst_length;
1919
+
1920
+ if ( ( flags & WOFF2_FLAGS_TRANSFORM ) != 0 )
1921
+ {
1922
+ if ( READ_BASE128( table->TransformLength ) )
1923
+ goto Exit;
1924
+
1925
+ if ( table->Tag == TTAG_loca && table->TransformLength )
1926
+ {
1927
+ FT_ERROR(( "woff2_open_font: Invalid loca `transformLength'.\n" ));
1928
+ error = FT_THROW( Invalid_Table );
1929
+ goto Exit;
1930
+ }
1931
+ }
1932
+
1933
+ if ( src_offset + table->TransformLength < src_offset )
1934
+ {
1935
+ FT_ERROR(( "woff2_open_font: invalid WOFF2 table directory.\n" ));
1936
+ error = FT_THROW( Invalid_Table );
1937
+ goto Exit;
1938
+ }
1939
+
1940
+ table->flags = flags;
1941
+ table->src_offset = src_offset;
1942
+ table->src_length = table->TransformLength;
1943
+ src_offset += table->TransformLength;
1944
+ table->dst_offset = 0;
1945
+
1946
+ FT_TRACE2(( " %c%c%c%c %08d %08d %08ld %08ld %08ld\n",
1947
+ (FT_Char)( table->Tag >> 24 ),
1948
+ (FT_Char)( table->Tag >> 16 ),
1949
+ (FT_Char)( table->Tag >> 8 ),
1950
+ (FT_Char)( table->Tag ),
1951
+ table->FlagByte & 0x3f,
1952
+ ( table->FlagByte >> 6 ) & 0x03,
1953
+ table->dst_length,
1954
+ table->TransformLength,
1955
+ table->src_offset ));
1956
+
1957
+ indices[nn] = table;
1958
+ }
1959
+
1960
+ /* End of last table is uncompressed size. */
1961
+ last_table = indices[woff2.num_tables - 1];
1962
+
1963
+ woff2.uncompressed_size = last_table->src_offset +
1964
+ last_table->src_length;
1965
+ if ( woff2.uncompressed_size < last_table->src_offset )
1966
+ {
1967
+ error = FT_THROW( Invalid_Table );
1968
+ goto Exit;
1969
+ }
1970
+
1971
+ FT_TRACE2(( "Table directory parsed.\n" ));
1972
+
1973
+ /* Check for and read collection directory. */
1974
+ woff2.num_fonts = 1;
1975
+ woff2.header_version = 0;
1976
+
1977
+ if ( woff2.flavor == TTAG_ttcf )
1978
+ {
1979
+ FT_TRACE2(( "Font is a TTC, reading collection directory.\n" ));
1980
+
1981
+ if ( FT_READ_ULONG( woff2.header_version ) )
1982
+ goto Exit;
1983
+
1984
+ if ( woff2.header_version != 0x00010000 &&
1985
+ woff2.header_version != 0x00020000 )
1986
+ {
1987
+ error = FT_THROW( Invalid_Table );
1988
+ goto Exit;
1989
+ }
1990
+
1991
+ if ( READ_255USHORT( woff2.num_fonts ) )
1992
+ goto Exit;
1993
+
1994
+ if ( !woff2.num_fonts )
1995
+ {
1996
+ error = FT_THROW( Invalid_Table );
1997
+ goto Exit;
1998
+ }
1999
+
2000
+ FT_TRACE4(( "Number of fonts in TTC: %d\n", woff2.num_fonts ));
2001
+
2002
+ /* pre-zero pointers within in case of failure */
2003
+ if ( FT_NEW_ARRAY( woff2.ttc_fonts, woff2.num_fonts ) )
2004
+ goto Exit;
2005
+
2006
+ for ( nn = 0; nn < woff2.num_fonts; nn++ )
2007
+ {
2008
+ WOFF2_TtcFont ttc_font = woff2.ttc_fonts + nn;
2009
+
2010
+
2011
+ if ( READ_255USHORT( ttc_font->num_tables ) )
2012
+ goto Exit;
2013
+ if ( FT_READ_ULONG( ttc_font->flavor ) )
2014
+ goto Exit;
2015
+
2016
+ if ( FT_QNEW_ARRAY( ttc_font->table_indices, ttc_font->num_tables ) )
2017
+ goto Exit;
2018
+
2019
+ FT_TRACE5(( "Number of tables in font %d: %d\n",
2020
+ nn, ttc_font->num_tables ));
2021
+
2022
+ #ifdef FT_DEBUG_LEVEL_TRACE
2023
+ if ( ttc_font->num_tables )
2024
+ FT_TRACE6(( " Indices: " ));
2025
+ #endif
2026
+
2027
+ glyf_index = 0;
2028
+ loca_index = 0;
2029
+
2030
+ for ( j = 0; j < ttc_font->num_tables; j++ )
2031
+ {
2032
+ FT_UShort table_index;
2033
+ WOFF2_Table table;
2034
+
2035
+
2036
+ if ( READ_255USHORT( table_index ) )
2037
+ goto Exit;
2038
+
2039
+ FT_TRACE6(( "%hu ", table_index ));
2040
+ if ( table_index >= woff2.num_tables )
2041
+ {
2042
+ FT_ERROR(( "woff2_open_font: invalid table index\n" ));
2043
+ error = FT_THROW( Invalid_Table );
2044
+ goto Exit;
2045
+ }
2046
+
2047
+ ttc_font->table_indices[j] = table_index;
2048
+
2049
+ table = indices[table_index];
2050
+ if ( table->Tag == TTAG_loca )
2051
+ loca_index = table_index;
2052
+ if ( table->Tag == TTAG_glyf )
2053
+ glyf_index = table_index;
2054
+ }
2055
+
2056
+ #ifdef FT_DEBUG_LEVEL_TRACE
2057
+ if ( ttc_font->num_tables )
2058
+ FT_TRACE6(( "\n" ));
2059
+ #endif
2060
+
2061
+ /* glyf and loca must be consecutive */
2062
+ if ( glyf_index > 0 || loca_index > 0 )
2063
+ {
2064
+ if ( glyf_index > loca_index ||
2065
+ loca_index - glyf_index != 1 )
2066
+ {
2067
+ error = FT_THROW( Invalid_Table );
2068
+ goto Exit;
2069
+ }
2070
+ }
2071
+ }
2072
+
2073
+ /* Collection directory reading complete. */
2074
+ FT_TRACE2(( "WOFF2 collection directory is valid.\n" ));
2075
+ }
2076
+ else
2077
+ woff2.ttc_fonts = NULL;
2078
+
2079
+ woff2.compressed_offset = FT_STREAM_POS();
2080
+ file_offset = ROUND4( woff2.compressed_offset +
2081
+ woff2.totalCompressedSize );
2082
+
2083
+ /* Some more checks before we start reading the tables. */
2084
+ if ( file_offset > woff2.length )
2085
+ {
2086
+ error = FT_THROW( Invalid_Table );
2087
+ goto Exit;
2088
+ }
2089
+
2090
+ if ( woff2.metaOffset )
2091
+ {
2092
+ if ( file_offset != woff2.metaOffset )
2093
+ {
2094
+ error = FT_THROW( Invalid_Table );
2095
+ goto Exit;
2096
+ }
2097
+ file_offset = ROUND4( woff2.metaOffset + woff2.metaLength );
2098
+ }
2099
+
2100
+ if ( woff2.privOffset )
2101
+ {
2102
+ if ( file_offset != woff2.privOffset )
2103
+ {
2104
+ error = FT_THROW( Invalid_Table );
2105
+ goto Exit;
2106
+ }
2107
+ file_offset = ROUND4( woff2.privOffset + woff2.privLength );
2108
+ }
2109
+
2110
+ if ( file_offset != ( ROUND4( woff2.length ) ) )
2111
+ {
2112
+ error = FT_THROW( Invalid_Table );
2113
+ goto Exit;
2114
+ }
2115
+
2116
+ /* Validate requested face index. */
2117
+ *num_faces = woff2.num_fonts;
2118
+ /* value -(N+1) requests information on index N */
2119
+ if ( *face_instance_index < 0 && face_index > 0 )
2120
+ face_index--;
2121
+
2122
+ if ( face_index >= woff2.num_fonts )
2123
+ {
2124
+ if ( *face_instance_index >= 0 )
2125
+ {
2126
+ error = FT_THROW( Invalid_Argument );
2127
+ goto Exit;
2128
+ }
2129
+ else
2130
+ face_index = 0;
2131
+ }
2132
+
2133
+ /* Only retain tables of the requested face in a TTC. */
2134
+ if ( woff2.header_version )
2135
+ {
2136
+ WOFF2_TtcFont ttc_font = woff2.ttc_fonts + face_index;
2137
+
2138
+
2139
+ if ( ttc_font->num_tables == 0 || ttc_font->num_tables > 0xFFFU )
2140
+ {
2141
+ FT_ERROR(( "woff2_open_font: invalid WOFF2 CollectionFontEntry\n" ));
2142
+ error = FT_THROW( Invalid_Table );
2143
+ goto Exit;
2144
+ }
2145
+
2146
+ /* Create a temporary array. */
2147
+ if ( FT_QNEW_ARRAY( temp_indices,
2148
+ ttc_font->num_tables ) )
2149
+ goto Exit;
2150
+
2151
+ FT_TRACE4(( "Storing tables for TTC face index %d.\n", face_index ));
2152
+ for ( nn = 0; nn < ttc_font->num_tables; nn++ )
2153
+ temp_indices[nn] = indices[ttc_font->table_indices[nn]];
2154
+
2155
+ /* Resize array to required size. */
2156
+ if ( FT_QRENEW_ARRAY( indices,
2157
+ woff2.num_tables,
2158
+ ttc_font->num_tables ) )
2159
+ goto Exit;
2160
+
2161
+ for ( nn = 0; nn < ttc_font->num_tables; nn++ )
2162
+ indices[nn] = temp_indices[nn];
2163
+
2164
+ FT_FREE( temp_indices );
2165
+
2166
+ /* Change header values. */
2167
+ woff2.flavor = ttc_font->flavor;
2168
+ woff2.num_tables = ttc_font->num_tables;
2169
+ }
2170
+
2171
+ /* We need to allocate this much at the minimum. */
2172
+ sfnt_size = 12 + woff2.num_tables * 16UL;
2173
+ /* This is what we normally expect. */
2174
+ /* Initially trust `totalSfntSize' and change later as required. */
2175
+ if ( woff2.totalSfntSize > sfnt_size )
2176
+ {
2177
+ /* However, adjust the value to something reasonable. */
2178
+
2179
+ /* Factor 64 is heuristic. */
2180
+ if ( ( woff2.totalSfntSize >> 6 ) > woff2.length )
2181
+ sfnt_size = woff2.length << 6;
2182
+ else
2183
+ sfnt_size = woff2.totalSfntSize;
2184
+
2185
+ if ( sfnt_size >= MAX_SFNT_SIZE )
2186
+ sfnt_size = MAX_SFNT_SIZE;
2187
+
2188
+ #ifdef FT_DEBUG_LEVEL_TRACE
2189
+ if ( sfnt_size != woff2.totalSfntSize )
2190
+ FT_TRACE4(( "adjusting estimate of uncompressed font size"
2191
+ " to %lu bytes\n",
2192
+ sfnt_size ));
2193
+ #endif
2194
+ }
2195
+
2196
+ /* Write sfnt header. */
2197
+ if ( FT_QALLOC( sfnt, sfnt_size ) ||
2198
+ FT_NEW( sfnt_stream ) )
2199
+ goto Exit;
2200
+
2201
+ {
2202
+ FT_Byte* sfnt_header = sfnt;
2203
+
2204
+ FT_Int entrySelector = FT_MSB( woff2.num_tables );
2205
+ FT_Int searchRange = ( 1 << entrySelector ) * 16;
2206
+ FT_Int rangeShift = woff2.num_tables * 16 - searchRange;
2207
+
2208
+
2209
+ WRITE_ULONG ( sfnt_header, woff2.flavor );
2210
+ WRITE_USHORT( sfnt_header, woff2.num_tables );
2211
+ WRITE_USHORT( sfnt_header, searchRange );
2212
+ WRITE_USHORT( sfnt_header, entrySelector );
2213
+ WRITE_USHORT( sfnt_header, rangeShift );
2214
+ }
2215
+
2216
+ info.header_checksum = compute_ULong_sum( sfnt, 12 );
2217
+
2218
+ /* Sort tables by tag. */
2219
+ ft_qsort( indices,
2220
+ woff2.num_tables,
2221
+ sizeof ( WOFF2_Table ),
2222
+ compare_tags );
2223
+
2224
+ /* reject fonts that have multiple tables with the same tag */
2225
+ for ( nn = 1; nn < woff2.num_tables; nn++ )
2226
+ {
2227
+ FT_Tag tag = indices[nn]->Tag;
2228
+
2229
+
2230
+ if ( tag == indices[nn - 1]->Tag )
2231
+ {
2232
+ FT_ERROR(( "woff2_open_font:"
2233
+ " multiple tables with tag `%c%c%c%c'.\n",
2234
+ (FT_Char)( tag >> 24 ),
2235
+ (FT_Char)( tag >> 16 ),
2236
+ (FT_Char)( tag >> 8 ),
2237
+ (FT_Char)( tag ) ));
2238
+ error = FT_THROW( Invalid_Table );
2239
+ goto Exit;
2240
+ }
2241
+ }
2242
+
2243
+ if ( woff2.uncompressed_size < 1 )
2244
+ {
2245
+ error = FT_THROW( Invalid_Table );
2246
+ goto Exit;
2247
+ }
2248
+
2249
+ /* We must not blindly trust `uncompressed_size` since its */
2250
+ /* value might be corrupted. If it is too large, reject the */
2251
+ /* font. In other words, we don't accept a WOFF2 font that */
2252
+ /* expands to something larger than MAX_SFNT_SIZE. If ever */
2253
+ /* necessary, this limit can be easily adjusted. */
2254
+ if ( woff2.uncompressed_size > MAX_SFNT_SIZE )
2255
+ {
2256
+ FT_ERROR(( "Uncompressed font too large.\n" ));
2257
+ error = FT_THROW( Array_Too_Large );
2258
+ goto Exit;
2259
+ }
2260
+
2261
+ /* Allocate memory for uncompressed table data. */
2262
+ if ( FT_QALLOC( uncompressed_buf, woff2.uncompressed_size ) ||
2263
+ FT_FRAME_ENTER( woff2.totalCompressedSize ) )
2264
+ goto Exit;
2265
+
2266
+ /* Uncompress the stream. */
2267
+ error = woff2_decompress( uncompressed_buf,
2268
+ woff2.uncompressed_size,
2269
+ stream->cursor,
2270
+ woff2.totalCompressedSize );
2271
+
2272
+ FT_FRAME_EXIT();
2273
+
2274
+ if ( error )
2275
+ goto Exit;
2276
+
2277
+ error = reconstruct_font( uncompressed_buf,
2278
+ woff2.uncompressed_size,
2279
+ indices,
2280
+ &woff2,
2281
+ &info,
2282
+ &sfnt,
2283
+ &sfnt_size,
2284
+ memory );
2285
+
2286
+ if ( error )
2287
+ goto Exit;
2288
+
2289
+ /* Resize `sfnt' to actual size of sfnt stream. */
2290
+ if ( woff2.actual_sfnt_size < sfnt_size )
2291
+ {
2292
+ FT_TRACE5(( "Trimming sfnt stream from %lu to %lu.\n",
2293
+ sfnt_size, woff2.actual_sfnt_size ));
2294
+ if ( FT_QREALLOC( sfnt,
2295
+ (FT_ULong)( sfnt_size ),
2296
+ (FT_ULong)( woff2.actual_sfnt_size ) ) )
2297
+ goto Exit;
2298
+ }
2299
+
2300
+ /* `reconstruct_font' has done all the work. */
2301
+ /* Swap out stream and return. */
2302
+ FT_Stream_OpenMemory( sfnt_stream, sfnt, woff2.actual_sfnt_size );
2303
+ sfnt_stream->memory = stream->memory;
2304
+ sfnt_stream->close = stream_close;
2305
+
2306
+ FT_Stream_Free(
2307
+ face->root.stream,
2308
+ ( face->root.face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 );
2309
+
2310
+ face->root.stream = sfnt_stream;
2311
+ face->root.face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM;
2312
+
2313
+ /* Set face_index to 0 or -1. */
2314
+ if ( *face_instance_index >= 0 )
2315
+ *face_instance_index = 0;
2316
+ else
2317
+ *face_instance_index = -1;
2318
+
2319
+ FT_TRACE2(( "woff2_open_font: SFNT synthesized.\n" ));
2320
+
2321
+ Exit:
2322
+ FT_FREE( tables );
2323
+ FT_FREE( indices );
2324
+ FT_FREE( uncompressed_buf );
2325
+ FT_FREE( info.x_mins );
2326
+
2327
+ if ( woff2.ttc_fonts )
2328
+ {
2329
+ WOFF2_TtcFont ttc_font = woff2.ttc_fonts;
2330
+
2331
+
2332
+ for ( nn = 0; nn < woff2.num_fonts; nn++ )
2333
+ {
2334
+ FT_FREE( ttc_font->table_indices );
2335
+ ttc_font++;
2336
+ }
2337
+
2338
+ FT_FREE( woff2.ttc_fonts );
2339
+ }
2340
+
2341
+ if ( error )
2342
+ {
2343
+ FT_FREE( sfnt );
2344
+ if ( sfnt_stream )
2345
+ {
2346
+ FT_Stream_Close( sfnt_stream );
2347
+ FT_FREE( sfnt_stream );
2348
+ }
2349
+ }
2350
+
2351
+ return error;
2352
+ }
2353
+
2354
+
2355
+ #undef READ_255USHORT
2356
+ #undef READ_BASE128
2357
+ #undef ROUND4
2358
+ #undef WRITE_USHORT
2359
+ #undef WRITE_ULONG
2360
+ #undef WRITE_SHORT
2361
+ #undef WRITE_SFNT_BUF
2362
+ #undef WRITE_SFNT_BUF_AT
2363
+
2364
+ #undef N_CONTOUR_STREAM
2365
+ #undef N_POINTS_STREAM
2366
+ #undef FLAG_STREAM
2367
+ #undef GLYPH_STREAM
2368
+ #undef COMPOSITE_STREAM
2369
+ #undef BBOX_STREAM
2370
+ #undef INSTRUCTION_STREAM
2371
+
2372
+ #else /* !FT_CONFIG_OPTION_USE_BROTLI */
2373
+
2374
+ /* ANSI C doesn't like empty source files */
2375
+ typedef int sfwoff2_dummy_;
2376
+
2377
+ #endif /* !FT_CONFIG_OPTION_USE_BROTLI */
2378
+
2379
+
2380
+ /* END */