@simonklee/opentui-tex-native-source 0.2.0

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 (529) hide show
  1. package/LICENSE +674 -0
  2. package/LICENSE-PROJECT +21 -0
  3. package/README.md +7 -0
  4. package/build.zig +112 -0
  5. package/build.zig.zon +12 -0
  6. package/native/lib.zig +280 -0
  7. package/native/nanosvg.c +4 -0
  8. package/native/vendor/.bootstrap-v5 +1 -0
  9. package/native/vendor/LICENSE-NANOSVG +18 -0
  10. package/native/vendor/microtex/.clang-format +26 -0
  11. package/native/vendor/microtex/.github/workflows/ubuntu.yml +92 -0
  12. package/native/vendor/microtex/.github/workflows/windows-gdi.yml +34 -0
  13. package/native/vendor/microtex/.github/workflows/windows-qt.yml +52 -0
  14. package/native/vendor/microtex/CMakeLists.txt +110 -0
  15. package/native/vendor/microtex/LICENSE +21 -0
  16. package/native/vendor/microtex/MicroTeXInstall.cmake +42 -0
  17. package/native/vendor/microtex/README.md +600 -0
  18. package/native/vendor/microtex/build.zig +209 -0
  19. package/native/vendor/microtex/clatexmath.wrap +6 -0
  20. package/native/vendor/microtex/doc/meson.build +38 -0
  21. package/native/vendor/microtex/doc/microtex-doc.toml.in +47 -0
  22. package/native/vendor/microtex/doc/microtex.svg +39 -0
  23. package/native/vendor/microtex/doc/urlmap.js +6 -0
  24. package/native/vendor/microtex/example/gtk/CMakeLists.txt +68 -0
  25. package/native/vendor/microtex/example/gtk/gtk_main.c +170 -0
  26. package/native/vendor/microtex/example/gtk/isamples.cpp +21 -0
  27. package/native/vendor/microtex/example/gtk/isamples.h +15 -0
  28. package/native/vendor/microtex/example/gtk/meson.build +27 -0
  29. package/native/vendor/microtex/example/gtk/microtex-gtk.gresource.xml +6 -0
  30. package/native/vendor/microtex/example/gtk/microtex-gtk.ui +117 -0
  31. package/native/vendor/microtex/example/gtkmm/CMakeLists.txt +19 -0
  32. package/native/vendor/microtex/example/gtkmm/gtkmm_main.cpp +531 -0
  33. package/native/vendor/microtex/example/gtkmm/meson.build +19 -0
  34. package/native/vendor/microtex/example/memcheck/CMakeLists.txt +12 -0
  35. package/native/vendor/microtex/example/memcheck/mem_check_main.cpp +154 -0
  36. package/native/vendor/microtex/example/qt/CMakeLists.txt +37 -0
  37. package/native/vendor/microtex/example/qt/meson.build +25 -0
  38. package/native/vendor/microtex/example/qt/qt_main.cpp +70 -0
  39. package/native/vendor/microtex/example/qt/qt_mainwindow.cpp +107 -0
  40. package/native/vendor/microtex/example/qt/qt_mainwindow.h +40 -0
  41. package/native/vendor/microtex/example/qt/qt_skiatexwidget.cpp +149 -0
  42. package/native/vendor/microtex/example/qt/qt_skiatexwidget.h +48 -0
  43. package/native/vendor/microtex/example/qt/qt_tex_render.h +15 -0
  44. package/native/vendor/microtex/example/qt/qt_texqmlitem.cpp +56 -0
  45. package/native/vendor/microtex/example/qt/qt_texqmlitem.h +31 -0
  46. package/native/vendor/microtex/example/qt/qt_texwidget.cpp +62 -0
  47. package/native/vendor/microtex/example/qt/qt_texwidget.h +31 -0
  48. package/native/vendor/microtex/example/qtpng/CMakeLists.txt +11 -0
  49. package/native/vendor/microtex/example/qtpng/latex2png.cpp +115 -0
  50. package/native/vendor/microtex/example/samples/samples.cpp +52 -0
  51. package/native/vendor/microtex/example/samples/samples.h +32 -0
  52. package/native/vendor/microtex/example/win32/CMakeLists.txt +15 -0
  53. package/native/vendor/microtex/example/win32/meson.build +18 -0
  54. package/native/vendor/microtex/example/win32/win32_main.cpp +375 -0
  55. package/native/vendor/microtex/githooks/pre-commit +19 -0
  56. package/native/vendor/microtex/githooks/pre-push +103 -0
  57. package/native/vendor/microtex/lib/CMakeLists.txt +234 -0
  58. package/native/vendor/microtex/lib/atom/atom.cpp +14 -0
  59. package/native/vendor/microtex/lib/atom/atom.h +96 -0
  60. package/native/vendor/microtex/lib/atom/atom_accent.cpp +115 -0
  61. package/native/vendor/microtex/lib/atom/atom_accent.h +53 -0
  62. package/native/vendor/microtex/lib/atom/atom_basic.cpp +146 -0
  63. package/native/vendor/microtex/lib/atom/atom_basic.h +273 -0
  64. package/native/vendor/microtex/lib/atom/atom_box.cpp +41 -0
  65. package/native/vendor/microtex/lib/atom/atom_box.h +70 -0
  66. package/native/vendor/microtex/lib/atom/atom_char.cpp +99 -0
  67. package/native/vendor/microtex/lib/atom/atom_char.h +147 -0
  68. package/native/vendor/microtex/lib/atom/atom_delim.cpp +65 -0
  69. package/native/vendor/microtex/lib/atom/atom_delim.h +58 -0
  70. package/native/vendor/microtex/lib/atom/atom_fence.cpp +65 -0
  71. package/native/vendor/microtex/lib/atom/atom_fence.h +56 -0
  72. package/native/vendor/microtex/lib/atom/atom_font.cpp +20 -0
  73. package/native/vendor/microtex/lib/atom/atom_font.h +49 -0
  74. package/native/vendor/microtex/lib/atom/atom_frac.cpp +101 -0
  75. package/native/vendor/microtex/lib/atom/atom_frac.h +42 -0
  76. package/native/vendor/microtex/lib/atom/atom_matrix.cpp +756 -0
  77. package/native/vendor/microtex/lib/atom/atom_matrix.h +268 -0
  78. package/native/vendor/microtex/lib/atom/atom_misc.cpp +230 -0
  79. package/native/vendor/microtex/lib/atom/atom_misc.h +200 -0
  80. package/native/vendor/microtex/lib/atom/atom_operator.cpp +51 -0
  81. package/native/vendor/microtex/lib/atom/atom_operator.h +41 -0
  82. package/native/vendor/microtex/lib/atom/atom_root.cpp +61 -0
  83. package/native/vendor/microtex/lib/atom/atom_root.h +27 -0
  84. package/native/vendor/microtex/lib/atom/atom_row.cpp +334 -0
  85. package/native/vendor/microtex/lib/atom/atom_row.h +176 -0
  86. package/native/vendor/microtex/lib/atom/atom_scripts.cpp +182 -0
  87. package/native/vendor/microtex/lib/atom/atom_scripts.h +52 -0
  88. package/native/vendor/microtex/lib/atom/atom_sideset.cpp +92 -0
  89. package/native/vendor/microtex/lib/atom/atom_sideset.h +24 -0
  90. package/native/vendor/microtex/lib/atom/atom_space.cpp +22 -0
  91. package/native/vendor/microtex/lib/atom/atom_space.h +38 -0
  92. package/native/vendor/microtex/lib/atom/atom_stack.cpp +117 -0
  93. package/native/vendor/microtex/lib/atom/atom_stack.h +103 -0
  94. package/native/vendor/microtex/lib/atom/atom_text.cpp +17 -0
  95. package/native/vendor/microtex/lib/atom/atom_text.h +33 -0
  96. package/native/vendor/microtex/lib/atom/atom_vrow.cpp +96 -0
  97. package/native/vendor/microtex/lib/atom/atom_vrow.h +47 -0
  98. package/native/vendor/microtex/lib/atom/atom_zstack.cpp +66 -0
  99. package/native/vendor/microtex/lib/atom/atom_zstack.h +37 -0
  100. package/native/vendor/microtex/lib/atom/colors_def.cpp +157 -0
  101. package/native/vendor/microtex/lib/atom/meson.build +50 -0
  102. package/native/vendor/microtex/lib/box/box.cpp +49 -0
  103. package/native/vendor/microtex/lib/box/box.h +184 -0
  104. package/native/vendor/microtex/lib/box/box_factory.cpp +162 -0
  105. package/native/vendor/microtex/lib/box/box_factory.h +24 -0
  106. package/native/vendor/microtex/lib/box/box_group.cpp +503 -0
  107. package/native/vendor/microtex/lib/box/box_group.h +285 -0
  108. package/native/vendor/microtex/lib/box/box_single.cpp +179 -0
  109. package/native/vendor/microtex/lib/box/box_single.h +157 -0
  110. package/native/vendor/microtex/lib/box/meson.build +15 -0
  111. package/native/vendor/microtex/lib/core/debug_config.cpp +3 -0
  112. package/native/vendor/microtex/lib/core/debug_config.h +24 -0
  113. package/native/vendor/microtex/lib/core/formula.cpp +180 -0
  114. package/native/vendor/microtex/lib/core/formula.h +137 -0
  115. package/native/vendor/microtex/lib/core/formula_def.cpp +167 -0
  116. package/native/vendor/microtex/lib/core/glue.cpp +108 -0
  117. package/native/vendor/microtex/lib/core/glue.h +55 -0
  118. package/native/vendor/microtex/lib/core/localized_num.cpp +51 -0
  119. package/native/vendor/microtex/lib/core/meson.build +19 -0
  120. package/native/vendor/microtex/lib/core/parser.cpp +874 -0
  121. package/native/vendor/microtex/lib/core/parser.h +306 -0
  122. package/native/vendor/microtex/lib/core/split.cpp +185 -0
  123. package/native/vendor/microtex/lib/core/split.h +40 -0
  124. package/native/vendor/microtex/lib/env/env.cpp +141 -0
  125. package/native/vendor/microtex/lib/env/env.h +221 -0
  126. package/native/vendor/microtex/lib/env/meson.build +11 -0
  127. package/native/vendor/microtex/lib/env/units.cpp +109 -0
  128. package/native/vendor/microtex/lib/env/units.h +61 -0
  129. package/native/vendor/microtex/lib/graphic/font_style.cpp +63 -0
  130. package/native/vendor/microtex/lib/graphic/font_style.h +61 -0
  131. package/native/vendor/microtex/lib/graphic/graphic.cpp +38 -0
  132. package/native/vendor/microtex/lib/graphic/graphic.h +314 -0
  133. package/native/vendor/microtex/lib/graphic/graphic_basic.cpp +44 -0
  134. package/native/vendor/microtex/lib/graphic/graphic_basic.h +131 -0
  135. package/native/vendor/microtex/lib/graphic/meson.build +13 -0
  136. package/native/vendor/microtex/lib/macro/macro.cpp +143 -0
  137. package/native/vendor/microtex/lib/macro/macro.h +155 -0
  138. package/native/vendor/microtex/lib/macro/macro_accent.cpp +50 -0
  139. package/native/vendor/microtex/lib/macro/macro_accent.h +61 -0
  140. package/native/vendor/microtex/lib/macro/macro_boxes.h +68 -0
  141. package/native/vendor/microtex/lib/macro/macro_colors.cpp +42 -0
  142. package/native/vendor/microtex/lib/macro/macro_colors.h +42 -0
  143. package/native/vendor/microtex/lib/macro/macro_decl.h +16 -0
  144. package/native/vendor/microtex/lib/macro/macro_def.cpp +418 -0
  145. package/native/vendor/microtex/lib/macro/macro_delims.cpp +56 -0
  146. package/native/vendor/microtex/lib/macro/macro_delims.h +73 -0
  147. package/native/vendor/microtex/lib/macro/macro_env.h +212 -0
  148. package/native/vendor/microtex/lib/macro/macro_fonts.cpp +53 -0
  149. package/native/vendor/microtex/lib/macro/macro_fonts.h +78 -0
  150. package/native/vendor/microtex/lib/macro/macro_frac.cpp +138 -0
  151. package/native/vendor/microtex/lib/macro/macro_frac.h +50 -0
  152. package/native/vendor/microtex/lib/macro/macro_misc.cpp +211 -0
  153. package/native/vendor/microtex/lib/macro/macro_misc.h +217 -0
  154. package/native/vendor/microtex/lib/macro/macro_scripts.cpp +32 -0
  155. package/native/vendor/microtex/lib/macro/macro_scripts.h +17 -0
  156. package/native/vendor/microtex/lib/macro/macro_sizes.h +110 -0
  157. package/native/vendor/microtex/lib/macro/macro_space.cpp +31 -0
  158. package/native/vendor/microtex/lib/macro/macro_space.h +17 -0
  159. package/native/vendor/microtex/lib/macro/macro_styles.cpp +45 -0
  160. package/native/vendor/microtex/lib/macro/macro_styles.h +22 -0
  161. package/native/vendor/microtex/lib/macro/macro_types.h +48 -0
  162. package/native/vendor/microtex/lib/macro/meson.build +33 -0
  163. package/native/vendor/microtex/lib/meson.build +102 -0
  164. package/native/vendor/microtex/lib/microtex.cpp +208 -0
  165. package/native/vendor/microtex/lib/microtex.h +225 -0
  166. package/native/vendor/microtex/lib/microtexConfig.cmake.in +2 -0
  167. package/native/vendor/microtex/lib/microtexapi.h +22 -0
  168. package/native/vendor/microtex/lib/microtexconfig.h.in +7 -0
  169. package/native/vendor/microtex/lib/microtexexport.h +31 -0
  170. package/native/vendor/microtex/lib/otf/clm.cpp +405 -0
  171. package/native/vendor/microtex/lib/otf/clm.h +61 -0
  172. package/native/vendor/microtex/lib/otf/fontsense.cpp +191 -0
  173. package/native/vendor/microtex/lib/otf/fontsense.h +20 -0
  174. package/native/vendor/microtex/lib/otf/glyph.cpp +53 -0
  175. package/native/vendor/microtex/lib/otf/glyph.h +384 -0
  176. package/native/vendor/microtex/lib/otf/math_consts.h +154 -0
  177. package/native/vendor/microtex/lib/otf/meson.build +18 -0
  178. package/native/vendor/microtex/lib/otf/otf.cpp +84 -0
  179. package/native/vendor/microtex/lib/otf/otf.h +177 -0
  180. package/native/vendor/microtex/lib/otf/otfconfig.h +32 -0
  181. package/native/vendor/microtex/lib/otf/path.cpp +187 -0
  182. package/native/vendor/microtex/lib/otf/path.h +120 -0
  183. package/native/vendor/microtex/lib/render/builder.cpp +68 -0
  184. package/native/vendor/microtex/lib/render/builder.h +73 -0
  185. package/native/vendor/microtex/lib/render/meson.build +11 -0
  186. package/native/vendor/microtex/lib/render/render.cpp +136 -0
  187. package/native/vendor/microtex/lib/render/render.h +59 -0
  188. package/native/vendor/microtex/lib/unimath/font_meta.h +22 -0
  189. package/native/vendor/microtex/lib/unimath/font_src.cpp +21 -0
  190. package/native/vendor/microtex/lib/unimath/font_src.h +61 -0
  191. package/native/vendor/microtex/lib/unimath/math_type.cpp +318 -0
  192. package/native/vendor/microtex/lib/unimath/math_type.h +105 -0
  193. package/native/vendor/microtex/lib/unimath/meson.build +18 -0
  194. package/native/vendor/microtex/lib/unimath/uni_char.cpp +121 -0
  195. package/native/vendor/microtex/lib/unimath/uni_char.h +109 -0
  196. package/native/vendor/microtex/lib/unimath/uni_font.cpp +248 -0
  197. package/native/vendor/microtex/lib/unimath/uni_font.h +139 -0
  198. package/native/vendor/microtex/lib/unimath/uni_symbol.cpp +2929 -0
  199. package/native/vendor/microtex/lib/unimath/uni_symbol.h +31 -0
  200. package/native/vendor/microtex/lib/utils/dict_tree.h +68 -0
  201. package/native/vendor/microtex/lib/utils/exceptions.h +61 -0
  202. package/native/vendor/microtex/lib/utils/log.h +34 -0
  203. package/native/vendor/microtex/lib/utils/meson.build +18 -0
  204. package/native/vendor/microtex/lib/utils/nums.h +24 -0
  205. package/native/vendor/microtex/lib/utils/string_utils.cpp +85 -0
  206. package/native/vendor/microtex/lib/utils/string_utils.h +130 -0
  207. package/native/vendor/microtex/lib/utils/types.h +152 -0
  208. package/native/vendor/microtex/lib/utils/utf.cpp +115 -0
  209. package/native/vendor/microtex/lib/utils/utf.h +58 -0
  210. package/native/vendor/microtex/lib/utils/utils.cpp +40 -0
  211. package/native/vendor/microtex/lib/utils/utils.h +88 -0
  212. package/native/vendor/microtex/lib/wrapper/byte_seq.cpp +46 -0
  213. package/native/vendor/microtex/lib/wrapper/byte_seq.h +70 -0
  214. package/native/vendor/microtex/lib/wrapper/callback.cpp +10 -0
  215. package/native/vendor/microtex/lib/wrapper/callback.h +72 -0
  216. package/native/vendor/microtex/lib/wrapper/cwrapper.cpp +206 -0
  217. package/native/vendor/microtex/lib/wrapper/cwrapper.h +305 -0
  218. package/native/vendor/microtex/lib/wrapper/graphic_wrapper.cpp +211 -0
  219. package/native/vendor/microtex/lib/wrapper/graphic_wrapper.h +159 -0
  220. package/native/vendor/microtex/lib/wrapper/meson.build +22 -0
  221. package/native/vendor/microtex/meson.build +75 -0
  222. package/native/vendor/microtex/meson_options.txt +29 -0
  223. package/native/vendor/microtex/platform/cairo/CMakeLists.txt +36 -0
  224. package/native/vendor/microtex/platform/cairo/graphic_cairo.cpp +384 -0
  225. package/native/vendor/microtex/platform/cairo/graphic_cairo.h +119 -0
  226. package/native/vendor/microtex/platform/cairo/meson.build +47 -0
  227. package/native/vendor/microtex/platform/cairo/microtex-cairoConfig.cmake.in +11 -0
  228. package/native/vendor/microtex/platform/flutter/microtex/.metadata +10 -0
  229. package/native/vendor/microtex/platform/flutter/microtex/CHANGELOG.md +3 -0
  230. package/native/vendor/microtex/platform/flutter/microtex/LICENSE +1 -0
  231. package/native/vendor/microtex/platform/flutter/microtex/README.md +15 -0
  232. package/native/vendor/microtex/platform/flutter/microtex/analysis_options.yaml +4 -0
  233. package/native/vendor/microtex/platform/flutter/microtex/android/build.gradle +56 -0
  234. package/native/vendor/microtex/platform/flutter/microtex/android/settings.gradle +1 -0
  235. package/native/vendor/microtex/platform/flutter/microtex/android/src/main/AndroidManifest.xml +3 -0
  236. package/native/vendor/microtex/platform/flutter/microtex/android/src/main/kotlin/io/nano/microtex/microtex/MicrotexPlugin.kt +35 -0
  237. package/native/vendor/microtex/platform/flutter/microtex/example/.metadata +10 -0
  238. package/native/vendor/microtex/platform/flutter/microtex/example/README.md +16 -0
  239. package/native/vendor/microtex/platform/flutter/microtex/example/analysis_options.yaml +31 -0
  240. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/build.gradle +68 -0
  241. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/debug/AndroidManifest.xml +7 -0
  242. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/AndroidManifest.xml +34 -0
  243. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/kotlin/io/nano/microtex/microtex_example/MainActivity.kt +6 -0
  244. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/drawable/launch_background.xml +12 -0
  245. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/drawable-v21/launch_background.xml +12 -0
  246. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  247. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  248. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  249. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  250. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  251. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/values/styles.xml +18 -0
  252. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/main/res/values-night/styles.xml +18 -0
  253. package/native/vendor/microtex/platform/flutter/microtex/example/android/app/src/profile/AndroidManifest.xml +7 -0
  254. package/native/vendor/microtex/platform/flutter/microtex/example/android/build.gradle +31 -0
  255. package/native/vendor/microtex/platform/flutter/microtex/example/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  256. package/native/vendor/microtex/platform/flutter/microtex/example/android/gradle.properties +3 -0
  257. package/native/vendor/microtex/platform/flutter/microtex/example/android/settings.gradle +11 -0
  258. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Flutter/AppFrameworkInfo.plist +26 -0
  259. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Flutter/Debug.xcconfig +2 -0
  260. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Flutter/Release.xcconfig +2 -0
  261. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Podfile +41 -0
  262. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Podfile.lock +22 -0
  263. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/AppDelegate.swift +13 -0
  264. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +122 -0
  265. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png +0 -0
  266. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png +0 -0
  267. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png +0 -0
  268. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png +0 -0
  269. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png +0 -0
  270. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png +0 -0
  271. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png +0 -0
  272. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png +0 -0
  273. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png +0 -0
  274. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png +0 -0
  275. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png +0 -0
  276. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png +0 -0
  277. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png +0 -0
  278. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png +0 -0
  279. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png +0 -0
  280. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +23 -0
  281. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png +0 -0
  282. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png +0 -0
  283. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png +0 -0
  284. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +5 -0
  285. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Base.lproj/LaunchScreen.storyboard +37 -0
  286. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Base.lproj/Main.storyboard +26 -0
  287. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Info.plist +49 -0
  288. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner/Runner-Bridging-Header.h +1 -0
  289. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcodeproj/project.pbxproj +549 -0
  290. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  291. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  292. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  293. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +87 -0
  294. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcworkspace/contents.xcworkspacedata +10 -0
  295. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  296. package/native/vendor/microtex/platform/flutter/microtex/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +8 -0
  297. package/native/vendor/microtex/platform/flutter/microtex/example/lib/main.dart +23 -0
  298. package/native/vendor/microtex/platform/flutter/microtex/example/lib/screen/edit_in_one.dart +0 -0
  299. package/native/vendor/microtex/platform/flutter/microtex/example/lib/screen/edit_screen.dart +208 -0
  300. package/native/vendor/microtex/platform/flutter/microtex/example/lib/utils/convert_spans.dart +63 -0
  301. package/native/vendor/microtex/platform/flutter/microtex/example/lib/utils/string_ext.dart +10 -0
  302. package/native/vendor/microtex/platform/flutter/microtex/example/lib/widget/cmp.dart +118 -0
  303. package/native/vendor/microtex/platform/flutter/microtex/example/lib/widget/draggable.dart +75 -0
  304. package/native/vendor/microtex/platform/flutter/microtex/example/lib/widget/rich.dart +23 -0
  305. package/native/vendor/microtex/platform/flutter/microtex/example/lib/widget/split.dart +72 -0
  306. package/native/vendor/microtex/platform/flutter/microtex/example/lib/widget/tex_highlight_controller.dart +66 -0
  307. package/native/vendor/microtex/platform/flutter/microtex/example/lib/widget/tex_input_controller.dart +19 -0
  308. package/native/vendor/microtex/platform/flutter/microtex/example/linux/CMakeLists.txt +116 -0
  309. package/native/vendor/microtex/platform/flutter/microtex/example/linux/flutter/CMakeLists.txt +87 -0
  310. package/native/vendor/microtex/platform/flutter/microtex/example/linux/flutter/generated_plugin_registrant.cc +15 -0
  311. package/native/vendor/microtex/platform/flutter/microtex/example/linux/flutter/generated_plugin_registrant.h +15 -0
  312. package/native/vendor/microtex/platform/flutter/microtex/example/linux/flutter/generated_plugins.cmake +24 -0
  313. package/native/vendor/microtex/platform/flutter/microtex/example/linux/main.cc +6 -0
  314. package/native/vendor/microtex/platform/flutter/microtex/example/linux/my_application.cc +104 -0
  315. package/native/vendor/microtex/platform/flutter/microtex/example/linux/my_application.h +18 -0
  316. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Flutter/Flutter-Debug.xcconfig +2 -0
  317. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Flutter/Flutter-Release.xcconfig +2 -0
  318. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Flutter/GeneratedPluginRegistrant.swift +12 -0
  319. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Podfile +40 -0
  320. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Podfile.lock +22 -0
  321. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/AppDelegate.swift +9 -0
  322. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  323. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  324. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
  325. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
  326. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
  327. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
  328. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
  329. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
  330. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Base.lproj/MainMenu.xib +343 -0
  331. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Configs/AppInfo.xcconfig +14 -0
  332. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Configs/Debug.xcconfig +2 -0
  333. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Configs/Release.xcconfig +2 -0
  334. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Configs/Warnings.xcconfig +13 -0
  335. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/DebugProfile.entitlements +12 -0
  336. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Info.plist +32 -0
  337. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/MainFlutterWindow.swift +15 -0
  338. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner/Release.entitlements +8 -0
  339. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner.xcodeproj/project.pbxproj +633 -0
  340. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  341. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +87 -0
  342. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner.xcworkspace/contents.xcworkspacedata +10 -0
  343. package/native/vendor/microtex/platform/flutter/microtex/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  344. package/native/vendor/microtex/platform/flutter/microtex/example/pubspec.lock +191 -0
  345. package/native/vendor/microtex/platform/flutter/microtex/example/pubspec.yaml +56 -0
  346. package/native/vendor/microtex/platform/flutter/microtex/example/test/widget_test.dart +26 -0
  347. package/native/vendor/microtex/platform/flutter/microtex/example/windows/CMakeLists.txt +95 -0
  348. package/native/vendor/microtex/platform/flutter/microtex/example/windows/flutter/CMakeLists.txt +103 -0
  349. package/native/vendor/microtex/platform/flutter/microtex/example/windows/flutter/generated_plugin_registrant.cc +14 -0
  350. package/native/vendor/microtex/platform/flutter/microtex/example/windows/flutter/generated_plugin_registrant.h +15 -0
  351. package/native/vendor/microtex/platform/flutter/microtex/example/windows/flutter/generated_plugins.cmake +24 -0
  352. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/CMakeLists.txt +17 -0
  353. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/Runner.rc +121 -0
  354. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/flutter_window.cpp +61 -0
  355. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/flutter_window.h +33 -0
  356. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/main.cpp +43 -0
  357. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/resource.h +16 -0
  358. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/resources/app_icon.ico +0 -0
  359. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/runner.exe.manifest +20 -0
  360. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/utils.cpp +64 -0
  361. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/utils.h +19 -0
  362. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/win32_window.cpp +245 -0
  363. package/native/vendor/microtex/platform/flutter/microtex/example/windows/runner/win32_window.h +98 -0
  364. package/native/vendor/microtex/platform/flutter/microtex/ios/Assets/.gitkeep +0 -0
  365. package/native/vendor/microtex/platform/flutter/microtex/ios/Classes/MicrotexPlugin.h +4 -0
  366. package/native/vendor/microtex/platform/flutter/microtex/ios/Classes/MicrotexPlugin.m +19 -0
  367. package/native/vendor/microtex/platform/flutter/microtex/ios/Classes/SwiftMicrotexPlugin.swift +14 -0
  368. package/native/vendor/microtex/platform/flutter/microtex/ios/Classes/dummy.h +4 -0
  369. package/native/vendor/microtex/platform/flutter/microtex/ios/microtex.podspec +27 -0
  370. package/native/vendor/microtex/platform/flutter/microtex/lib/microtex.dart +7 -0
  371. package/native/vendor/microtex/platform/flutter/microtex/lib/src/bindings.dart +218 -0
  372. package/native/vendor/microtex/platform/flutter/microtex/lib/src/bounds.dart +10 -0
  373. package/native/vendor/microtex/platform/flutter/microtex/lib/src/context.dart +205 -0
  374. package/native/vendor/microtex/platform/flutter/microtex/lib/src/fontdesc.dart +14 -0
  375. package/native/vendor/microtex/platform/flutter/microtex/lib/src/fontmeta.dart +14 -0
  376. package/native/vendor/microtex/platform/flutter/microtex/lib/src/pathcache.dart +17 -0
  377. package/native/vendor/microtex/platform/flutter/microtex/lib/src/render.dart +291 -0
  378. package/native/vendor/microtex/platform/flutter/microtex/lib/src/texstyle.dart +11 -0
  379. package/native/vendor/microtex/platform/flutter/microtex/lib/src/textlayout.dart +93 -0
  380. package/native/vendor/microtex/platform/flutter/microtex/lib/src/widget.dart +163 -0
  381. package/native/vendor/microtex/platform/flutter/microtex/linux/CMakeLists.txt +33 -0
  382. package/native/vendor/microtex/platform/flutter/microtex/linux/include/microtex/microtex_plugin.h +26 -0
  383. package/native/vendor/microtex/platform/flutter/microtex/linux/microtex_plugin.cc +70 -0
  384. package/native/vendor/microtex/platform/flutter/microtex/macos/Classes/MicrotexPlugin.swift +20 -0
  385. package/native/vendor/microtex/platform/flutter/microtex/macos/Classes/dummy.h +4 -0
  386. package/native/vendor/microtex/platform/flutter/microtex/macos/Classes/microtex-Bridging-Header.h +1 -0
  387. package/native/vendor/microtex/platform/flutter/microtex/macos/microtex.podspec +26 -0
  388. package/native/vendor/microtex/platform/flutter/microtex/nativelib/CMakeLists.txt +44 -0
  389. package/native/vendor/microtex/platform/flutter/microtex/nativelib/builddarwin.sh +108 -0
  390. package/native/vendor/microtex/platform/flutter/microtex/pubspec.yaml +37 -0
  391. package/native/vendor/microtex/platform/flutter/microtex/test/microtex_test.dart +23 -0
  392. package/native/vendor/microtex/platform/flutter/microtex/windows/CMakeLists.txt +32 -0
  393. package/native/vendor/microtex/platform/flutter/microtex/windows/include/microtex/microtex_plugin.h +23 -0
  394. package/native/vendor/microtex/platform/flutter/microtex/windows/microtex_plugin.cpp +82 -0
  395. package/native/vendor/microtex/platform/gdi_win/CMakeLists.txt +20 -0
  396. package/native/vendor/microtex/platform/gdi_win/graphic_win32.cpp +352 -0
  397. package/native/vendor/microtex/platform/gdi_win/graphic_win32.h +137 -0
  398. package/native/vendor/microtex/platform/gdi_win/meson.build +39 -0
  399. package/native/vendor/microtex/platform/gtk/CMakeLists.txt +36 -0
  400. package/native/vendor/microtex/platform/gtk/meson.build +65 -0
  401. package/native/vendor/microtex/platform/gtk/microtex-gtkConfig.cmake.in +11 -0
  402. package/native/vendor/microtex/platform/gtk/microtexequation.cpp +708 -0
  403. package/native/vendor/microtex/platform/gtk/microtexequation.h +72 -0
  404. package/native/vendor/microtex/platform/qt/CMakeLists.txt +37 -0
  405. package/native/vendor/microtex/platform/qt/graphic_qt.cpp +355 -0
  406. package/native/vendor/microtex/platform/qt/graphic_qt.h +116 -0
  407. package/native/vendor/microtex/platform/qt/meson.build +38 -0
  408. package/native/vendor/microtex/platform/qt/microtex-qtConfig.cmake.in +7 -0
  409. package/native/vendor/microtex/platform/skia/CMakeLists.txt +46 -0
  410. package/native/vendor/microtex/platform/skia/graphic_skia.cpp +306 -0
  411. package/native/vendor/microtex/platform/skia/graphic_skia.h +125 -0
  412. package/native/vendor/microtex/platform/skia/microtex-skiaConfig.cmake.in +6 -0
  413. package/native/vendor/microtex/platform/wasm/CMakeLists.txt +38 -0
  414. package/native/vendor/microtex/platform/wasm/emscripten.cross +31 -0
  415. package/native/vendor/microtex/platform/wasm/main.cpp +15 -0
  416. package/native/vendor/microtex/platform/wasm/meson.build +8 -0
  417. package/native/vendor/microtex/platform/wasm/prebuild-example-meson.sh +21 -0
  418. package/native/vendor/microtex/platform/wasm/prebuild-example.sh +21 -0
  419. package/native/vendor/microtex/platform/wasm/prebuild-lib-meson.sh +28 -0
  420. package/native/vendor/microtex/platform/wasm/prebuild-lib.sh +31 -0
  421. package/native/vendor/microtex/platform/wasm/web/.babelrc +10 -0
  422. package/native/vendor/microtex/platform/wasm/web/example/examples.js +43 -0
  423. package/native/vendor/microtex/platform/wasm/web/example/hello.js +31 -0
  424. package/native/vendor/microtex/platform/wasm/web/example/index.html +55 -0
  425. package/native/vendor/microtex/platform/wasm/web/example/index.js +243 -0
  426. package/native/vendor/microtex/platform/wasm/web/example/styles.css +86 -0
  427. package/native/vendor/microtex/platform/wasm/web/example/utils.js +47 -0
  428. package/native/vendor/microtex/platform/wasm/web/lib/context.js +271 -0
  429. package/native/vendor/microtex/platform/wasm/web/lib/index.js +10 -0
  430. package/native/vendor/microtex/platform/wasm/web/lib/render.js +293 -0
  431. package/native/vendor/microtex/platform/wasm/web/lib/runtime.js +14 -0
  432. package/native/vendor/microtex/platform/wasm/web/lib/svg.js +237 -0
  433. package/native/vendor/microtex/platform/wasm/web/lib/textlayout.js +88 -0
  434. package/native/vendor/microtex/platform/wasm/web/package-lock.json +5931 -0
  435. package/native/vendor/microtex/platform/wasm/web/package.json +45 -0
  436. package/native/vendor/microtex/platform/wasm/web/publish-example.sh +17 -0
  437. package/native/vendor/microtex/platform/wasm/web/rollup.config.example.js +24 -0
  438. package/native/vendor/microtex/platform/wasm/web/rollup.config.lib.js +16 -0
  439. package/native/vendor/microtex/prebuilt/otf2clm.py +807 -0
  440. package/native/vendor/microtex/prebuilt/otf2clm.sh +9 -0
  441. package/native/vendor/microtex/prebuilt/preclms.sh +17 -0
  442. package/native/vendor/microtex/readme/example_bw_false.svg +680 -0
  443. package/native/vendor/microtex/readme/example_bw_true.svg +680 -0
  444. package/native/vendor/microtex/readme/example_cjk_trying.svg +54 -0
  445. package/native/vendor/microtex/readme/example_custom_symbols.svg +92 -0
  446. package/native/vendor/microtex/readme/example_debug.svg +764 -0
  447. package/native/vendor/microtex/readme/example_emoji.svg +199 -0
  448. package/native/vendor/microtex/readme/example_have_log.svg +79 -0
  449. package/native/vendor/microtex/readme/example_keep_trying.svg +101 -0
  450. package/native/vendor/microtex/readme/example_logos.svg +50 -0
  451. package/native/vendor/microtex/readme/example_ubuntu.png +0 -0
  452. package/native/vendor/microtex/readme/example_windows.png +0 -0
  453. package/native/vendor/microtex/readme/samples/sample_0.svg +665 -0
  454. package/native/vendor/microtex/readme/samples/sample_1.svg +1259 -0
  455. package/native/vendor/microtex/readme/samples/sample_10.svg +333 -0
  456. package/native/vendor/microtex/readme/samples/sample_11.svg +306 -0
  457. package/native/vendor/microtex/readme/samples/sample_2.svg +2461 -0
  458. package/native/vendor/microtex/readme/samples/sample_3.svg +2653 -0
  459. package/native/vendor/microtex/readme/samples/sample_4.svg +554 -0
  460. package/native/vendor/microtex/readme/samples/sample_5.svg +247 -0
  461. package/native/vendor/microtex/readme/samples/sample_6.svg +1082 -0
  462. package/native/vendor/microtex/readme/samples/sample_7.svg +518 -0
  463. package/native/vendor/microtex/readme/samples/sample_8.svg +529 -0
  464. package/native/vendor/microtex/readme/samples/sample_9.svg +1702 -0
  465. package/native/vendor/microtex/readme/samples.md +301 -0
  466. package/native/vendor/microtex/readme/tex_logo.svg +19 -0
  467. package/native/vendor/microtex/res/EXAMPLE.txt +25 -0
  468. package/native/vendor/microtex/res/SAMPLES.tex +946 -0
  469. package/native/vendor/microtex/res/firamath/FiraMath-Regular.clm1 +0 -0
  470. package/native/vendor/microtex/res/firamath/FiraMath-Regular.clm2 +0 -0
  471. package/native/vendor/microtex/res/firamath/FiraMath-Regular.otf +0 -0
  472. package/native/vendor/microtex/res/firamath/README.md +42 -0
  473. package/native/vendor/microtex/res/lm-math/README +92 -0
  474. package/native/vendor/microtex/res/lm-math/latinmodern-math.clm1 +0 -0
  475. package/native/vendor/microtex/res/lm-math/latinmodern-math.clm2 +0 -0
  476. package/native/vendor/microtex/res/lm-math/latinmodern-math.otf +0 -0
  477. package/native/vendor/microtex/res/tex-gyre/README-TeX-Gyre-DejaVu-Math.txt +82 -0
  478. package/native/vendor/microtex/res/tex-gyre/texgyredejavu-math.clm1 +0 -0
  479. package/native/vendor/microtex/res/tex-gyre/texgyredejavu-math.clm2 +0 -0
  480. package/native/vendor/microtex/res/tex-gyre/texgyredejavu-math.otf +0 -0
  481. package/native/vendor/microtex/res/xits/FONTLOG.txt +246 -0
  482. package/native/vendor/microtex/res/xits/OFL.txt +98 -0
  483. package/native/vendor/microtex/res/xits/README.txt +15 -0
  484. package/native/vendor/microtex/res/xits/XITS-Bold.clm1 +0 -0
  485. package/native/vendor/microtex/res/xits/XITS-Bold.clm2 +0 -0
  486. package/native/vendor/microtex/res/xits/XITS-Bold.otf +0 -0
  487. package/native/vendor/microtex/res/xits/XITS-BoldItalic.clm1 +0 -0
  488. package/native/vendor/microtex/res/xits/XITS-BoldItalic.clm2 +0 -0
  489. package/native/vendor/microtex/res/xits/XITS-BoldItalic.otf +0 -0
  490. package/native/vendor/microtex/res/xits/XITS-Italic.clm1 +0 -0
  491. package/native/vendor/microtex/res/xits/XITS-Italic.clm2 +0 -0
  492. package/native/vendor/microtex/res/xits/XITS-Italic.otf +0 -0
  493. package/native/vendor/microtex/res/xits/XITS-Regular.clm1 +0 -0
  494. package/native/vendor/microtex/res/xits/XITS-Regular.clm2 +0 -0
  495. package/native/vendor/microtex/res/xits/XITS-Regular.otf +0 -0
  496. package/native/vendor/microtex/res/xits/XITSMath-Bold.clm1 +0 -0
  497. package/native/vendor/microtex/res/xits/XITSMath-Bold.clm2 +0 -0
  498. package/native/vendor/microtex/res/xits/XITSMath-Bold.otf +0 -0
  499. package/native/vendor/microtex/res/xits/XITSMath-Regular.clm1 +0 -0
  500. package/native/vendor/microtex/res/xits/XITSMath-Regular.clm2 +0 -0
  501. package/native/vendor/microtex/res/xits/XITSMath-Regular.otf +0 -0
  502. package/native/vendor/microtex/test/clm/meson.build +10 -0
  503. package/native/vendor/microtex/test/clm/test_clm.cpp +140 -0
  504. package/native/vendor/microtex/test/env/meson.build +10 -0
  505. package/native/vendor/microtex/test/env/test_env.cpp +100 -0
  506. package/native/vendor/microtex/test/fuzzer/afl.native +20 -0
  507. package/native/vendor/microtex/test/fuzzer/fuzz.sh +135 -0
  508. package/native/vendor/microtex/test/fuzzer/fuzzer.cpp +61 -0
  509. package/native/vendor/microtex/test/fuzzer/generateSeed.java +33 -0
  510. package/native/vendor/microtex/test/fuzzer/meson.build +9 -0
  511. package/native/vendor/microtex/test/fuzzer/microtex.dict +3708 -0
  512. package/native/vendor/microtex/test/fuzzer/platform_none.cpp +100 -0
  513. package/native/vendor/microtex/test/has_filesystem.cpp +8 -0
  514. package/native/vendor/microtex/test/meson.build +6 -0
  515. package/native/vendor/nanosvg.h +3278 -0
  516. package/native/vendor/nanosvgrast.h +1472 -0
  517. package/native/vendor/zigtex/.github/assets/example.svg +27 -0
  518. package/native/vendor/zigtex/LICENSE +674 -0
  519. package/native/vendor/zigtex/README.md +52 -0
  520. package/native/vendor/zigtex/build.zig +52 -0
  521. package/native/vendor/zigtex/build.zig.zon +16 -0
  522. package/native/vendor/zigtex/fonts/latinmodern-math.clm2 +0 -0
  523. package/native/vendor/zigtex/src/main.zig +22 -0
  524. package/native/vendor/zigtex/src/root.zig +124 -0
  525. package/native/vendor/zigtex/src/svg.zig +273 -0
  526. package/native/vendor/zigtex/src/tex.zig +383 -0
  527. package/native/zigtex-0.16.patch +35 -0
  528. package/package.json +27 -0
  529. package/scripts/bootstrap-native +89 -0
@@ -0,0 +1,96 @@
1
+ #include "atom/atom_vrow.h"
2
+
3
+ #include "box/box_group.h"
4
+ #include "box/box_single.h"
5
+ #include "env/env.h"
6
+
7
+ using namespace microtex;
8
+ using namespace std;
9
+
10
+ VRowAtom::VRowAtom() {
11
+ _addInterline = false;
12
+ _valign = Alignment::center;
13
+ _halign = Alignment::none;
14
+ _raise = sptrOf<SpaceAtom>(UnitType::ex, 0.f, 0.f, 0.f);
15
+ }
16
+
17
+ VRowAtom::VRowAtom(const sptr<Atom>& base) {
18
+ _addInterline = false;
19
+ _valign = Alignment::center;
20
+ _halign = Alignment::none;
21
+ _raise = sptrOf<SpaceAtom>(UnitType::ex, 0.f, 0.f, 0.f);
22
+ if (base != nullptr) {
23
+ auto* a = dynamic_cast<VRowAtom*>(base.get());
24
+ if (a != nullptr) {
25
+ _elements.insert(_elements.end(), a->_elements.begin(), a->_elements.end());
26
+ } else {
27
+ _elements.push_back(base);
28
+ }
29
+ }
30
+ }
31
+
32
+ void VRowAtom::setRaise(UnitType unit, float r) {
33
+ _raise = sptrOf<SpaceAtom>(unit, r, 0.f, 0.f);
34
+ }
35
+
36
+ sptr<Atom> VRowAtom::popLastAtom() {
37
+ auto x = _elements.back();
38
+ _elements.pop_back();
39
+ return x;
40
+ }
41
+
42
+ void VRowAtom::prepend(const sptr<Atom>& el) {
43
+ if (el != nullptr) _elements.insert(_elements.begin(), el);
44
+ }
45
+
46
+ void VRowAtom::append(const sptr<Atom>& el) {
47
+ if (el != nullptr) _elements.push_back(el);
48
+ }
49
+
50
+ sptr<Box> VRowAtom::createBox(Env& env) {
51
+ auto vb = new VBox();
52
+ auto lineSpace = sptrOf<StrutBox>(0.f, env.lineSpace(), 0.f, 0.f);
53
+
54
+ if (_halign != Alignment::none) {
55
+ float maxWidth = F_MIN;
56
+ vector<sptr<Box>> boxes;
57
+ const size_t size = _elements.size();
58
+ // find the width of the widest box
59
+ for (auto& atom : _elements) {
60
+ auto box = atom->createBox(env);
61
+ boxes.push_back(box);
62
+ maxWidth = std::max(maxWidth, box->_width);
63
+ }
64
+ // align the boxes and add it to the vertical box
65
+ for (int i = 0; i < size; i++) {
66
+ auto box = boxes[i];
67
+ auto hb = sptrOf<HBox>(box, maxWidth, _halign);
68
+ vb->add(hb);
69
+ if (_addInterline && i < size - 1) vb->add(lineSpace);
70
+ }
71
+ } else {
72
+ // convert atoms to boxes and add to the vertical box
73
+ const size_t size = _elements.size();
74
+ for (int i = 0; i < size; i++) {
75
+ vb->add(_elements[i]->createBox(env));
76
+ if (_addInterline && i < size - 1) vb->add(lineSpace);
77
+ }
78
+ }
79
+
80
+ vb->_shift = -_raise->createBox(env)->_width;
81
+ if (_valign == Alignment::top) {
82
+ float t = vb->size() == 0 ? 0 : vb->_children.front()->_height;
83
+ vb->_height = t;
84
+ vb->_depth = vb->_depth + vb->_height - t;
85
+ } else if (_valign == Alignment::center) {
86
+ const float axis = env.axisHeight();
87
+ const float h = vb->_height + vb->_depth;
88
+ vb->_height = h / 2 + axis;
89
+ vb->_depth = h / 2 - axis;
90
+ } else {
91
+ float t = vb->size() == 0 ? 0 : vb->_children.back()->_depth;
92
+ vb->_height = vb->_depth + vb->_height - t;
93
+ vb->_depth = t;
94
+ }
95
+ return sptr<Box>(vb);
96
+ }
@@ -0,0 +1,47 @@
1
+ #ifndef MICROTEX_ATOM_VROW_H
2
+ #define MICROTEX_ATOM_VROW_H
3
+
4
+ #include "atom/atom.h"
5
+ #include "atom/atom_space.h"
6
+
7
+ namespace microtex {
8
+
9
+ /** An atom representing a vertical row of other atoms. */
10
+ class VRowAtom : public Atom {
11
+ private:
12
+ std::vector<sptr<Atom>> _elements;
13
+ sptr<SpaceAtom> _raise;
14
+ bool _addInterline;
15
+
16
+ public:
17
+ Alignment _valign = Alignment::none;
18
+ Alignment _halign = Alignment::none;
19
+
20
+ VRowAtom();
21
+
22
+ explicit VRowAtom(const sptr<Atom>& base);
23
+
24
+ inline void setAddInterline(bool addInterline) { _addInterline = addInterline; }
25
+
26
+ inline bool isAddInterline() const { return _addInterline; }
27
+
28
+ inline void setAlignTop(bool vtop) { _valign = vtop ? Alignment::top : Alignment::center; }
29
+
30
+ inline bool isAlignTop() const { return _valign == Alignment::top; }
31
+
32
+ void setRaise(UnitType unit, float r);
33
+
34
+ sptr<Atom> popLastAtom();
35
+
36
+ /** Add an atom at the front */
37
+ void prepend(const sptr<Atom>& el);
38
+
39
+ /** Add an atom at the tail */
40
+ void append(const sptr<Atom>& el);
41
+
42
+ sptr<Box> createBox(Env& env) override;
43
+ };
44
+
45
+ } // namespace microtex
46
+
47
+ #endif // MICROTEX_ATOM_VROW_H
@@ -0,0 +1,66 @@
1
+ #include "atom/atom_zstack.h"
2
+
3
+ #include "atom/atom_basic.h"
4
+ #include "box/box_group.h"
5
+ #include "box/box_single.h"
6
+ #include "env/env.h"
7
+ #include "env/units.h"
8
+
9
+ using namespace microtex;
10
+
11
+ ZStackAtom::ZStackAtom(
12
+ const ZStackArgs& hargs,
13
+ const ZStackArgs& vargs,
14
+ const sptr<Atom>& atom,
15
+ const sptr<Atom>& anchor
16
+ ) : _hargs(hargs), _vargs(vargs) {
17
+ _atom = atom == nullptr ? sptrOf<EmptyAtom>() : atom;
18
+ _anchor = anchor == nullptr ? sptrOf<EmptyAtom>() : anchor;
19
+ }
20
+
21
+ sptr<Box> ZStackAtom::createBox(Env& env) {
22
+ const auto anchor = _anchor->createBox(env);
23
+ const auto box = _atom->createBox(env);
24
+
25
+ // calculate horizontal position
26
+ auto offset = Units::fsize(_hargs.offset, env);
27
+ auto l = 0.f;
28
+ if (_hargs.align == Alignment::left) {
29
+ l = offset;
30
+ } else if (_hargs.align == Alignment::center) {
31
+ l = (anchor->_width - box->_width) / 2 + offset;
32
+ } else if (_hargs.align == Alignment::right) {
33
+ l = anchor->_width - box->_width + offset;
34
+ }
35
+
36
+ const auto hbox = sptrOf<HBox>();
37
+ if (l < 0) hbox->add(StrutBox::create(-l));
38
+ hbox->add(anchor);
39
+ const auto minWidth = hbox->_width;
40
+
41
+ // add a kern box to shift the left position to the left position of the box
42
+ // to be stacked relative to the anchor box
43
+ const auto kern = l < 0 ? -hbox->_width : l - anchor->_width;
44
+ if (kern != 0.f) hbox->add(StrutBox::create(kern));
45
+
46
+ // calculate vertical shift (default align at baseline)
47
+ auto shift = Units::fsize(_vargs.offset, env);
48
+ if (_vargs.align == Alignment::top) {
49
+ shift += box->_height - anchor->_height;
50
+ } else if (_vargs.align == Alignment::bottom) {
51
+ shift = anchor->_depth - box->_depth - shift;
52
+ } else if (_vargs.align == Alignment::center) {
53
+ auto x = anchor->_depth - box->_depth;
54
+ auto y = (anchor->vlen() - box->vlen()) / 2;
55
+ shift = x - y - shift;
56
+ }
57
+ box->_shift = shift;
58
+
59
+ hbox->add(box);
60
+
61
+ if (hbox->_width < minWidth) {
62
+ hbox->add(StrutBox::create(minWidth - hbox->_width));
63
+ }
64
+
65
+ return hbox;
66
+ }
@@ -0,0 +1,37 @@
1
+ #ifndef MICROTEX_ATOM_ZSTACK_H
2
+ #define MICROTEX_ATOM_ZSTACK_H
3
+
4
+ #include "atom/atom.h"
5
+ #include "env/units.h"
6
+ #include "utils/utils.h"
7
+
8
+ namespace microtex {
9
+
10
+ struct ZStackArgs {
11
+ Alignment align;
12
+ Dimen offset;
13
+ };
14
+
15
+ class ZStackAtom : public Atom {
16
+ private:
17
+ ZStackArgs _hargs, _vargs;
18
+ sptr<Atom> _atom, _anchor;
19
+
20
+ public:
21
+ ZStackAtom(
22
+ const ZStackArgs& hargs,
23
+ const ZStackArgs& vargs,
24
+ const sptr<Atom>& atom,
25
+ const sptr<Atom>& anchor
26
+ );
27
+
28
+ AtomType leftType() const override { return _anchor->leftType(); }
29
+
30
+ AtomType rightType() const override { return _anchor->rightType(); }
31
+
32
+ sptr<Box> createBox(Env& env) override;
33
+ };
34
+
35
+ } // namespace microtex
36
+
37
+ #endif // MICROTEX_ATOM_ZSTACK_H
@@ -0,0 +1,157 @@
1
+ #include "atom_basic.h"
2
+ #include "utils/string_utils.h"
3
+
4
+ #define c(name, c, m, y, k) \
5
+ { name, cmyk(c, m, y, k) }
6
+
7
+ using namespace std;
8
+ using namespace microtex;
9
+
10
+ map<string, microtex::color> microtex::ColorAtom::_colors{
11
+ {"black", black },
12
+ {"white", white },
13
+ {"red", red },
14
+ {"green", green },
15
+ {"blue", blue },
16
+ {"cyan", cyan },
17
+ {"magenta", magenta},
18
+ {"yellow", yellow },
19
+ c("greenyellow", 0.15f, 0.f, 0.69f, 0.f),
20
+ c("goldenrod", 0.f, 0.10f, 0.84f, 0.f),
21
+ c("dandelion", 0.f, 0.29f, 0.84f, 0.f),
22
+ c("apricot", 0.f, 0.32f, 0.52f, 0.f),
23
+ c("peach", 0.f, 0.50f, 0.70f, 0.f),
24
+ c("melon", 0.f, 0.46f, 0.50f, 0.f),
25
+ c("yelloworange", 0.f, 0.42f, 1.f, 0.f),
26
+ c("orange", 0.f, 0.61f, 0.87f, 0.f),
27
+ c("burntorange", 0.f, 0.51f, 1.f, 0.f),
28
+ c("bittersweet", 0.f, 0.75f, 1.f, 0.24f),
29
+ c("redorange", 0.f, 0.77f, 0.87f, 0.f),
30
+ c("mahogany", 0.f, 0.85f, 0.87f, 0.35f),
31
+ c("maroon", 0.f, 0.87f, 0.68f, 0.32f),
32
+ c("brickred", 0.f, 0.89f, 0.94f, 0.28f),
33
+ c("orangered", 0.f, 1.f, 0.50f, 0.f),
34
+ c("rubinered", 0.f, 1.f, 0.13f, 0.f),
35
+ c("wildstrawberry", 0.f, 0.96f, 0.39f, 0.f),
36
+ c("salmon", 0.f, 0.53f, 0.38f, 0.f),
37
+ c("carnationpink", 0.f, 0.63f, 0.f, 0.f),
38
+ c("magenta", 0.f, 1.f, 0.f, 0.f),
39
+ c("violetred", 0.f, 0.81f, 0.f, 0.f),
40
+ c("rhodamine", 0.f, 0.82f, 0.f, 0.f),
41
+ c("mulberry", 0.34f, 0.90f, 0.f, 0.02f),
42
+ c("redviolet", 0.07f, 0.90f, 0.f, 0.34f),
43
+ c("fuchsia", 0.47f, 0.91f, 0.f, 0.08f),
44
+ c("lavender", 0.f, 0.48f, 0.f, 0.f),
45
+ c("thistle", 0.12f, 0.59f, 0.f, 0.f),
46
+ c("orchid", 0.32f, 0.64f, 0.f, 0.f),
47
+ c("darkorchid", 0.40f, 0.80f, 0.20f, 0.f),
48
+ c("purple", 0.45f, 0.86f, 0.f, 0.f),
49
+ c("plum", 0.50f, 1.f, 0.f, 0.f),
50
+ c("violet", 0.79f, 0.88f, 0.f, 0.f),
51
+ c("royalpurple", 0.75f, 0.90f, 0.f, 0.f),
52
+ c("blueviolet", 0.86f, 0.91f, 0.f, 0.04f),
53
+ c("periwinkle", 0.57f, 0.55f, 0.f, 0.f),
54
+ c("cadetblue", 0.62f, 0.57f, 0.23f, 0.f),
55
+ c("cornflowerblue", 0.65f, 0.13f, 0.f, 0.f),
56
+ c("midnightblue", 0.98f, 0.13f, 0.f, 0.43f),
57
+ c("navyblue", 0.94f, 0.54f, 0.f, 0.f),
58
+ c("royalblue", 1.f, 0.50f, 0.f, 0.f),
59
+ c("cerulean", 0.94f, 0.11f, 0.f, 0.f),
60
+ c("processblue", 0.96f, 0.f, 0.f, 0.f),
61
+ c("skyblue", 0.62f, 0.f, 0.12f, 0.f),
62
+ c("turquoise", 0.85f, 0.f, 0.20f, 0.f),
63
+ c("tealblue", 0.86f, 0.f, 0.34f, 0.02f),
64
+ c("aquamarine", 0.82f, 0.f, 0.30f, 0.f),
65
+ c("bluegreen", 0.85f, 0.f, 0.33f, 0.f),
66
+ c("emerald", 1.f, 0.f, 0.50f, 0.f),
67
+ c("junglegreen", 0.99f, 0.f, 0.52f, 0.f),
68
+ c("seagreen", 0.69f, 0.f, 0.50f, 0.f),
69
+ c("forestgreen", 0.91f, 0.f, 0.88f, 0.12f),
70
+ c("pinegreen", 0.92f, 0.f, 0.59f, 0.25f),
71
+ c("limegreen", 0.50f, 0.f, 1.f, 0.f),
72
+ c("yellowgreen", 0.44f, 0.f, 0.74f, 0.f),
73
+ c("springgreen", 0.26f, 0.f, 0.76f, 0.f),
74
+ c("olivegreen", 0.64f, 0.f, 0.95f, 0.40f),
75
+ c("rawsienna", 0.f, 0.72f, 1.f, 0.45f),
76
+ c("sepia", 0.f, 0.83f, 1.f, 0.70f),
77
+ c("brown", 0.f, 0.81f, 1.f, 0.60f),
78
+ c("tan", 0.14f, 0.42f, 0.56f, 0.f),
79
+ c("gray", 0.f, 0.f, 0.f, 0.50f),
80
+ };
81
+
82
+ color ColorAtom::getColor(std::string name) {
83
+ if (name.empty()) return _default;
84
+ trim(name);
85
+
86
+ // #AARRGGBB formatted color
87
+ if (name[0] == '#') return decodeColor(name);
88
+ if (name.find(',') == string::npos) {
89
+ // find from predefined colors
90
+ auto it = _colors.find(toLower(name));
91
+ if (it != _colors.end()) return it->second;
92
+ // AARRGGBB formatted color
93
+ if (name.find('.') == string::npos) return decodeColor("#" + name);
94
+ // gray color
95
+ float x = 0.f;
96
+ valueOf(name, x);
97
+ if (x != 0.f) {
98
+ float g = min(1.f, max(x, 0.f));
99
+ return rgb(g, g, g);
100
+ }
101
+ return _default;
102
+ }
103
+
104
+ auto en = string::npos;
105
+ StrTokenizer toks(name, ";,");
106
+ int n = toks.count();
107
+ if (n == 3) {
108
+ // RGB model
109
+ string R = toks.next();
110
+ string G = toks.next();
111
+ string B = toks.next();
112
+
113
+ float r = 0.f, g = 0.f, b = 0.f;
114
+ valueOf(trim(R), r);
115
+ valueOf(trim(G), g);
116
+ valueOf(trim(B), b);
117
+
118
+ if (r == 0.f && g == 0.f && b == 0.f) return _default;
119
+
120
+ // clang-format off
121
+ if (r == (int) r && g == (int) g && b == (int) b &&
122
+ R.find('.') == en && G.find('.') == en && B.find('.') == en
123
+ ) {
124
+ // clang-format on
125
+ int ir = (int)min(255.f, max(0.f, r));
126
+ int ig = (int)min(255.f, max(0.f, g));
127
+ int ib = (int)min(255.f, max(0.f, b));
128
+ return rgb(ir, ig, ib);
129
+ }
130
+ r = min(1.f, max(0.f, r));
131
+ g = min(1.f, max(0.f, g));
132
+ b = min(1.f, max(0.f, b));
133
+ return rgb(r, g, b);
134
+ } else if (n == 4) {
135
+ // CMYK model
136
+ float c = 0.f, m = 0.f, y = 0.f, k = 0.f;
137
+ string C = toks.next();
138
+ string M = toks.next();
139
+ string Y = toks.next();
140
+ string K = toks.next();
141
+ valueOf(trim(C), c);
142
+ valueOf(trim(M), m);
143
+ valueOf(trim(Y), y);
144
+ valueOf(trim(K), k);
145
+
146
+ if (c == 0.f && m == 0.f && y == 0.f && k == 0.f) return _default;
147
+
148
+ c = min(1.f, max(0.f, c));
149
+ m = min(1.f, max(0.f, m));
150
+ y = min(1.f, max(0.f, y));
151
+ k = min(1.f, max(0.f, k));
152
+
153
+ return cmyk(c, m, y, k);
154
+ }
155
+
156
+ return _default;
157
+ }
@@ -0,0 +1,50 @@
1
+ atom_src = [
2
+ 'atom/atom.cpp',
3
+ 'atom/atom_accent.cpp',
4
+ 'atom/atom_basic.cpp',
5
+ 'atom/atom_box.cpp',
6
+ 'atom/atom_char.cpp',
7
+ 'atom/atom_delim.cpp',
8
+ 'atom/atom_fence.cpp',
9
+ 'atom/atom_font.cpp',
10
+ 'atom/atom_frac.cpp',
11
+ 'atom/atom_matrix.cpp',
12
+ 'atom/atom_misc.cpp',
13
+ 'atom/atom_operator.cpp',
14
+ 'atom/atom_root.cpp',
15
+ 'atom/atom_row.cpp',
16
+ 'atom/atom_scripts.cpp',
17
+ 'atom/atom_sideset.cpp',
18
+ 'atom/atom_space.cpp',
19
+ 'atom/atom_stack.cpp',
20
+ 'atom/atom_text.cpp',
21
+ 'atom/atom_vrow.cpp',
22
+ 'atom/atom_zstack.cpp',
23
+ 'atom/colors_def.cpp'
24
+ ]
25
+
26
+ if install_headerfiles
27
+ install_headers([
28
+ 'atom_accent.h',
29
+ 'atom_basic.h',
30
+ 'atom_box.h',
31
+ 'atom_char.h',
32
+ 'atom_delim.h',
33
+ 'atom_fence.h',
34
+ 'atom_font.h',
35
+ 'atom_frac.h',
36
+ 'atom.h',
37
+ 'atom_matrix.h',
38
+ 'atom_misc.h',
39
+ 'atom_operator.h',
40
+ 'atom_root.h',
41
+ 'atom_row.h',
42
+ 'atom_scripts.h',
43
+ 'atom_sideset.h',
44
+ 'atom_space.h',
45
+ 'atom_stack.h',
46
+ 'atom_text.h',
47
+ 'atom_vrow.h',
48
+ 'atom_zstack.h'
49
+ ], subdir: 'microtex/atom')
50
+ endif
@@ -0,0 +1,49 @@
1
+ #include "box/box.h"
2
+
3
+ #include "unimath/uni_font.h"
4
+
5
+ using namespace microtex;
6
+ using namespace std;
7
+
8
+ void Box::copyMetrics(const sptr<Box>& box) {
9
+ _width = box->_width;
10
+ _height = box->_height;
11
+ _depth = box->_depth;
12
+ _shift = box->_shift;
13
+ }
14
+
15
+ int Box::lastFontId() {
16
+ return FontContext::NO_FONT;
17
+ }
18
+
19
+ void Box::replaceFirst(const sptr<Box>& from, const sptr<Box>& to) {
20
+ // nothing to do
21
+ }
22
+
23
+ std::string Box::name() const {
24
+ return "Box";
25
+ }
26
+
27
+ std::string Box::toString() const {
28
+ return "";
29
+ }
30
+
31
+ void BoxGroup::add(const sptr<Box>& box) {
32
+ _children.push_back(box);
33
+ }
34
+
35
+ void BoxGroup::add(int pos, const sptr<Box>& box) {
36
+ _children.insert(_children.begin() + pos, box);
37
+ }
38
+
39
+ int BoxGroup::lastFontId() {
40
+ int id = FontContext::NO_FONT;
41
+ for (int i = _children.size() - 1; i >= 0 && id == FontContext::NO_FONT; i--) {
42
+ id = _children[i]->lastFontId();
43
+ }
44
+ return id;
45
+ }
46
+
47
+ int DecorBox::lastFontId() {
48
+ return _base->lastFontId();
49
+ }
@@ -0,0 +1,184 @@
1
+ #ifndef MICROTEX_BOX_H
2
+ #define MICROTEX_BOX_H
3
+
4
+ #include <string>
5
+ #include <vector>
6
+
7
+ #include "utils/types.h"
8
+
9
+ namespace microtex {
10
+
11
+ class Graphics2D;
12
+
13
+ /**
14
+ * An abstract graphical representation of a formula, that can be painted. All
15
+ * characters, font sizes, positions are fixed. Only special Glue boxes could
16
+ * possibly stretch or shrink (not supported by now). A box has 3 dimensions
17
+ * (width, height and depth), will be used for further layout calculations.
18
+ * <p>
19
+ * Subclasses must implement the abstract
20
+ * Box#draw(Graphics2D, float, float) method (that paints the box).
21
+ * <p>
22
+ * They must also implement the abstract Box#lastFontId() method (the last font
23
+ * that will be used later when this box will be painted).
24
+ */
25
+ class Box {
26
+ protected:
27
+ /** Initialize box with default options */
28
+ void init() {
29
+ _width = _height = _depth = _shift = 0;
30
+ _type = AtomType::none;
31
+ }
32
+
33
+ public:
34
+ /**
35
+ * The width of this box, i.e. the value that will be used for further
36
+ * calculations.
37
+ */
38
+ float _width = 0;
39
+
40
+ /**
41
+ * The height of this box, i.e. the value that will be used for further
42
+ * calculations.
43
+ */
44
+ float _height = 0;
45
+
46
+ /**
47
+ * The depth of this box, i.e. the value that will be used for further
48
+ * calculations.
49
+ */
50
+ float _depth = 0;
51
+
52
+ /**
53
+ * The shift amount: the meaning depends on the particular kind of box (up,
54
+ * down, left, right)
55
+ */
56
+ float _shift = 0;
57
+
58
+ /** The box type (default = none, no type) */
59
+ AtomType _type = AtomType::none;
60
+
61
+ /** Create a new box with default options */
62
+ Box() { init(); }
63
+
64
+ /** Copy the metrics from another box */
65
+ void copyMetrics(const sptr<Box>& box);
66
+
67
+ /** Transform the width of box to negative */
68
+ inline void negWidth() { _width = -_width; }
69
+
70
+ /** The length in vertical direction, basically equals to #_height + #_depth */
71
+ inline float vlen() const { return _height + _depth; }
72
+
73
+ /**
74
+ * Paints this box at the given coordinates using the given 2D graphics
75
+ * context.
76
+ *
77
+ * @param g2 the graphics (2D) context to use for painting
78
+ * @param x the x-coordinate
79
+ * @param y the y-coordinate
80
+ */
81
+ virtual void draw(Graphics2D& g2, float x, float y) = 0;
82
+
83
+ /**
84
+ * Get the id of the last font that will be used later when this box is to be
85
+ * painted.
86
+ *
87
+ * @return the id of the last font that will be used later.
88
+ */
89
+ virtual int lastFontId();
90
+
91
+ /** Get child boxes of this box. */
92
+ virtual std::vector<sptr<Box>> descendants() const { return {}; }
93
+
94
+ /** Replace child box */
95
+ virtual void replaceFirst(const sptr<Box>& from, const sptr<Box>& to);
96
+
97
+ /** Test if this box represents a space that only has metrics and has no visual effect. */
98
+ virtual bool isSpace() const { return false; }
99
+
100
+ /** Test if this box is a single box */
101
+ virtual bool isSingle() const { return true; }
102
+
103
+ /** The box name */
104
+ virtual std::string name() const;
105
+
106
+ /** String to print this box */
107
+ virtual std::string toString() const;
108
+
109
+ virtual ~Box() = default;
110
+
111
+ #ifndef boxname
112
+ #define boxname(x) \
113
+ virtual std::string name() const override { return #x; }
114
+ #endif
115
+ };
116
+
117
+ /**
118
+ * A box composed of other child boxes that can possibly be shifted (up, down,
119
+ * left of right). Child boxes can also be positioned outside their parent's box
120
+ * (defined by it's dimensions).
121
+ */
122
+ class BoxGroup : public Box {
123
+ public:
124
+ /** Children of this box */
125
+ std::vector<sptr<Box>> _children{};
126
+
127
+ /**
128
+ * Append the given box to the end of the list of the child boxes.
129
+ *
130
+ * @param box the box to be append
131
+ */
132
+ virtual void add(const sptr<Box>& box);
133
+
134
+ /**
135
+ * Inserts the given box at the given position in the list of child boxes.
136
+ *
137
+ * @param pos the position at which to insert the given box
138
+ * @param box the box to be inserted
139
+ */
140
+ virtual void add(int pos, const sptr<Box>& box);
141
+
142
+ /**
143
+ * Append the given box to the end of the list of the child boxes,
144
+ * and the given box will not participate in the metrics calculation
145
+ * of this composed box.
146
+ * <p>
147
+ * You shall not use this method to compose child boxes, it is for
148
+ * special uses (for add debug information).
149
+ *
150
+ * @param box the box to be append
151
+ */
152
+ void addOnly(const sptr<Box>& box) { _children.push_back(box); }
153
+
154
+ /** Child count of this box */
155
+ inline int size() const { return _children.size(); }
156
+
157
+ bool isSingle() const override { return false; }
158
+
159
+ std::vector<sptr<Box>> descendants() const override { return _children; }
160
+
161
+ int lastFontId() override;
162
+ };
163
+
164
+ /**
165
+ * A box contains another box that will add some decorations when to draw
166
+ * <p>
167
+ * e.g. rotation, scale and so on
168
+ */
169
+ class DecorBox : public Box {
170
+ public:
171
+ sptr<Box> _base;
172
+
173
+ explicit DecorBox(const sptr<Box>& base) : _base(base) {}
174
+
175
+ bool isSingle() const override { return false; }
176
+
177
+ int lastFontId() override;
178
+
179
+ std::vector<sptr<Box>> descendants() const override { return {_base}; }
180
+ };
181
+
182
+ } // namespace microtex
183
+
184
+ #endif // MICROTEX_BOX_H