mathematical 0.0.2 → 0.0.3

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 (263) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +52 -10
  3. data/Rakefile +42 -3
  4. data/lib/mathematical.rb +5 -4
  5. data/lib/mathematical/mathematical.bundle +0 -0
  6. data/lib/mathematical/render.rb +6 -5
  7. data/lib/mathematical/version.rb +1 -1
  8. data/mathematical.gemspec +5 -5
  9. metadata +14 -296
  10. data/.gitignore +0 -24
  11. data/.gitmodules +0 -0
  12. data/Gemfile +0 -4
  13. data/ext/mathematical/README.itex2MML.md +0 -11
  14. data/ext/mathematical/README.lasem.md +0 -11
  15. data/ext/mathematical/extconf.rb +0 -51
  16. data/ext/mathematical/itex2MML.h +0 -63
  17. data/ext/mathematical/lasemrender.c +0 -257
  18. data/ext/mathematical/lex.yy.c +0 -6548
  19. data/ext/mathematical/lsm.c +0 -30
  20. data/ext/mathematical/lsm.h +0 -36
  21. data/ext/mathematical/lsmattributes.c +0 -279
  22. data/ext/mathematical/lsmattributes.h +0 -75
  23. data/ext/mathematical/lsmcairo.c +0 -598
  24. data/ext/mathematical/lsmcairo.h +0 -51
  25. data/ext/mathematical/lsmdebug.c +0 -179
  26. data/ext/mathematical/lsmdebug.h +0 -76
  27. data/ext/mathematical/lsmdom.h +0 -43
  28. data/ext/mathematical/lsmdomcharacterdata.c +0 -114
  29. data/ext/mathematical/lsmdomcharacterdata.h +0 -59
  30. data/ext/mathematical/lsmdomdocument.c +0 -292
  31. data/ext/mathematical/lsmdomdocument.h +0 -82
  32. data/ext/mathematical/lsmdomdocumentfragment.c +0 -81
  33. data/ext/mathematical/lsmdomdocumentfragment.h +0 -55
  34. data/ext/mathematical/lsmdomelement.c +0 -148
  35. data/ext/mathematical/lsmdomelement.h +0 -62
  36. data/ext/mathematical/lsmdomentities.c +0 -2155
  37. data/ext/mathematical/lsmdomentities.h +0 -35
  38. data/ext/mathematical/lsmdomenumtypes.c +0 -99
  39. data/ext/mathematical/lsmdomenumtypes.c.template +0 -39
  40. data/ext/mathematical/lsmdomenumtypes.h +0 -26
  41. data/ext/mathematical/lsmdomenumtypes.h.template +0 -26
  42. data/ext/mathematical/lsmdomimplementation.c +0 -82
  43. data/ext/mathematical/lsmdomimplementation.h +0 -41
  44. data/ext/mathematical/lsmdomnamednodemap.c +0 -118
  45. data/ext/mathematical/lsmdomnamednodemap.h +0 -64
  46. data/ext/mathematical/lsmdomnode.c +0 -725
  47. data/ext/mathematical/lsmdomnode.h +0 -120
  48. data/ext/mathematical/lsmdomnodelist.c +0 -70
  49. data/ext/mathematical/lsmdomnodelist.h +0 -58
  50. data/ext/mathematical/lsmdomparser.c +0 -461
  51. data/ext/mathematical/lsmdomparser.h +0 -54
  52. data/ext/mathematical/lsmdomtext.c +0 -82
  53. data/ext/mathematical/lsmdomtext.h +0 -55
  54. data/ext/mathematical/lsmdomtypes.h +0 -44
  55. data/ext/mathematical/lsmdomview.c +0 -422
  56. data/ext/mathematical/lsmdomview.h +0 -94
  57. data/ext/mathematical/lsmmathml.h +0 -66
  58. data/ext/mathematical/lsmmathmlactionelement.c +0 -93
  59. data/ext/mathematical/lsmmathmlactionelement.h +0 -57
  60. data/ext/mathematical/lsmmathmlaligngroupelement.c +0 -102
  61. data/ext/mathematical/lsmmathmlaligngroupelement.h +0 -56
  62. data/ext/mathematical/lsmmathmlalignmarkelement.c +0 -102
  63. data/ext/mathematical/lsmmathmlalignmarkelement.h +0 -56
  64. data/ext/mathematical/lsmmathmlattributes.c +0 -197
  65. data/ext/mathematical/lsmmathmlattributes.h +0 -126
  66. data/ext/mathematical/lsmmathmldocument.c +0 -306
  67. data/ext/mathematical/lsmmathmldocument.h +0 -61
  68. data/ext/mathematical/lsmmathmlelement.c +0 -491
  69. data/ext/mathematical/lsmmathmlelement.h +0 -107
  70. data/ext/mathematical/lsmmathmlenums.c +0 -429
  71. data/ext/mathematical/lsmmathmlenums.h +0 -182
  72. data/ext/mathematical/lsmmathmlenumtypes.c +0 -666
  73. data/ext/mathematical/lsmmathmlenumtypes.c.template +0 -39
  74. data/ext/mathematical/lsmmathmlenumtypes.h +0 -90
  75. data/ext/mathematical/lsmmathmlenumtypes.h.template +0 -26
  76. data/ext/mathematical/lsmmathmlerrorelement.c +0 -58
  77. data/ext/mathematical/lsmmathmlerrorelement.h +0 -56
  78. data/ext/mathematical/lsmmathmlfencedelement.c +0 -178
  79. data/ext/mathematical/lsmmathmlfencedelement.h +0 -65
  80. data/ext/mathematical/lsmmathmlfractionelement.c +0 -253
  81. data/ext/mathematical/lsmmathmlfractionelement.h +0 -62
  82. data/ext/mathematical/lsmmathmlglyphtableams.c +0 -597
  83. data/ext/mathematical/lsmmathmlglyphtableams.h +0 -45
  84. data/ext/mathematical/lsmmathmlitexelement.c +0 -187
  85. data/ext/mathematical/lsmmathmlitexelement.h +0 -60
  86. data/ext/mathematical/lsmmathmllayoututils.c +0 -191
  87. data/ext/mathematical/lsmmathmllayoututils.h +0 -58
  88. data/ext/mathematical/lsmmathmlmathelement.c +0 -204
  89. data/ext/mathematical/lsmmathmlmathelement.h +0 -81
  90. data/ext/mathematical/lsmmathmloperatordictionary.c +0 -3332
  91. data/ext/mathematical/lsmmathmloperatordictionary.h +0 -54
  92. data/ext/mathematical/lsmmathmloperatorelement.c +0 -307
  93. data/ext/mathematical/lsmmathmloperatorelement.h +0 -73
  94. data/ext/mathematical/lsmmathmlpaddedelement.c +0 -58
  95. data/ext/mathematical/lsmmathmlpaddedelement.h +0 -56
  96. data/ext/mathematical/lsmmathmlphantomelement.c +0 -71
  97. data/ext/mathematical/lsmmathmlphantomelement.h +0 -56
  98. data/ext/mathematical/lsmmathmlpresentationcontainer.c +0 -43
  99. data/ext/mathematical/lsmmathmlpresentationcontainer.h +0 -54
  100. data/ext/mathematical/lsmmathmlpresentationtoken.c +0 -303
  101. data/ext/mathematical/lsmmathmlpresentationtoken.h +0 -83
  102. data/ext/mathematical/lsmmathmlradicalelement.c +0 -266
  103. data/ext/mathematical/lsmmathmlradicalelement.h +0 -71
  104. data/ext/mathematical/lsmmathmlrowelement.c +0 -58
  105. data/ext/mathematical/lsmmathmlrowelement.h +0 -56
  106. data/ext/mathematical/lsmmathmlscriptelement.c +0 -282
  107. data/ext/mathematical/lsmmathmlscriptelement.h +0 -78
  108. data/ext/mathematical/lsmmathmlsemanticselement.c +0 -82
  109. data/ext/mathematical/lsmmathmlsemanticselement.h +0 -56
  110. data/ext/mathematical/lsmmathmlspaceelement.c +0 -142
  111. data/ext/mathematical/lsmmathmlspaceelement.h +0 -60
  112. data/ext/mathematical/lsmmathmlstringelement.c +0 -123
  113. data/ext/mathematical/lsmmathmlstringelement.h +0 -58
  114. data/ext/mathematical/lsmmathmlstyle.c +0 -130
  115. data/ext/mathematical/lsmmathmlstyle.h +0 -81
  116. data/ext/mathematical/lsmmathmlstyleelement.c +0 -307
  117. data/ext/mathematical/lsmmathmlstyleelement.h +0 -87
  118. data/ext/mathematical/lsmmathmltablecellelement.c +0 -122
  119. data/ext/mathematical/lsmmathmltablecellelement.h +0 -62
  120. data/ext/mathematical/lsmmathmltableelement.c +0 -545
  121. data/ext/mathematical/lsmmathmltableelement.h +0 -78
  122. data/ext/mathematical/lsmmathmltablerowelement.c +0 -120
  123. data/ext/mathematical/lsmmathmltablerowelement.h +0 -64
  124. data/ext/mathematical/lsmmathmltraits.c +0 -819
  125. data/ext/mathematical/lsmmathmltraits.h +0 -119
  126. data/ext/mathematical/lsmmathmltypes.h +0 -66
  127. data/ext/mathematical/lsmmathmlunderoverelement.c +0 -485
  128. data/ext/mathematical/lsmmathmlunderoverelement.h +0 -82
  129. data/ext/mathematical/lsmmathmlutils.c +0 -170
  130. data/ext/mathematical/lsmmathmlutils.h +0 -50
  131. data/ext/mathematical/lsmmathmlview.c +0 -1048
  132. data/ext/mathematical/lsmmathmlview.h +0 -164
  133. data/ext/mathematical/lsmproperties.c +0 -418
  134. data/ext/mathematical/lsmproperties.h +0 -85
  135. data/ext/mathematical/lsmstr.c +0 -231
  136. data/ext/mathematical/lsmstr.h +0 -114
  137. data/ext/mathematical/lsmsvg.h +0 -67
  138. data/ext/mathematical/lsmsvgaelement.c +0 -73
  139. data/ext/mathematical/lsmsvgaelement.h +0 -55
  140. data/ext/mathematical/lsmsvgattributes.h +0 -113
  141. data/ext/mathematical/lsmsvgcircleelement.c +0 -153
  142. data/ext/mathematical/lsmsvgcircleelement.h +0 -59
  143. data/ext/mathematical/lsmsvgclippathelement.c +0 -134
  144. data/ext/mathematical/lsmsvgclippathelement.h +0 -59
  145. data/ext/mathematical/lsmsvgcolors.c +0 -212
  146. data/ext/mathematical/lsmsvgcolors.h +0 -39
  147. data/ext/mathematical/lsmsvgdefselement.c +0 -74
  148. data/ext/mathematical/lsmsvgdefselement.h +0 -55
  149. data/ext/mathematical/lsmsvgdocument.c +0 -230
  150. data/ext/mathematical/lsmsvgdocument.h +0 -58
  151. data/ext/mathematical/lsmsvgelement.c +0 -367
  152. data/ext/mathematical/lsmsvgelement.h +0 -81
  153. data/ext/mathematical/lsmsvgellipseelement.c +0 -158
  154. data/ext/mathematical/lsmsvgellipseelement.h +0 -60
  155. data/ext/mathematical/lsmsvgenums.c +0 -544
  156. data/ext/mathematical/lsmsvgenums.h +0 -357
  157. data/ext/mathematical/lsmsvgenumtypes.c +0 -1083
  158. data/ext/mathematical/lsmsvgenumtypes.c.template +0 -39
  159. data/ext/mathematical/lsmsvgenumtypes.h +0 -111
  160. data/ext/mathematical/lsmsvgenumtypes.h.template +0 -26
  161. data/ext/mathematical/lsmsvgfilterblend.c +0 -105
  162. data/ext/mathematical/lsmsvgfilterblend.h +0 -58
  163. data/ext/mathematical/lsmsvgfiltercomposite.c +0 -109
  164. data/ext/mathematical/lsmsvgfiltercomposite.h +0 -58
  165. data/ext/mathematical/lsmsvgfilterelement.c +0 -266
  166. data/ext/mathematical/lsmsvgfilterelement.h +0 -66
  167. data/ext/mathematical/lsmsvgfilterflood.c +0 -86
  168. data/ext/mathematical/lsmsvgfilterflood.h +0 -55
  169. data/ext/mathematical/lsmsvgfiltergaussianblur.c +0 -114
  170. data/ext/mathematical/lsmsvgfiltergaussianblur.h +0 -57
  171. data/ext/mathematical/lsmsvgfiltermerge.c +0 -98
  172. data/ext/mathematical/lsmsvgfiltermerge.h +0 -55
  173. data/ext/mathematical/lsmsvgfiltermergenode.c +0 -87
  174. data/ext/mathematical/lsmsvgfiltermergenode.h +0 -57
  175. data/ext/mathematical/lsmsvgfilteroffset.c +0 -112
  176. data/ext/mathematical/lsmsvgfilteroffset.h +0 -58
  177. data/ext/mathematical/lsmsvgfilterprimitive.c +0 -168
  178. data/ext/mathematical/lsmsvgfilterprimitive.h +0 -66
  179. data/ext/mathematical/lsmsvgfilterspecularlighting.c +0 -127
  180. data/ext/mathematical/lsmsvgfilterspecularlighting.h +0 -60
  181. data/ext/mathematical/lsmsvgfiltersurface.c +0 -455
  182. data/ext/mathematical/lsmsvgfiltersurface.h +0 -66
  183. data/ext/mathematical/lsmsvgfiltertile.c +0 -102
  184. data/ext/mathematical/lsmsvgfiltertile.h +0 -57
  185. data/ext/mathematical/lsmsvggelement.c +0 -73
  186. data/ext/mathematical/lsmsvggelement.h +0 -55
  187. data/ext/mathematical/lsmsvggradientelement.c +0 -151
  188. data/ext/mathematical/lsmsvggradientelement.h +0 -68
  189. data/ext/mathematical/lsmsvgimageelement.c +0 -261
  190. data/ext/mathematical/lsmsvgimageelement.h +0 -67
  191. data/ext/mathematical/lsmsvglength.c +0 -93
  192. data/ext/mathematical/lsmsvglength.h +0 -59
  193. data/ext/mathematical/lsmsvglineargradientelement.c +0 -271
  194. data/ext/mathematical/lsmsvglineargradientelement.h +0 -60
  195. data/ext/mathematical/lsmsvglineelement.c +0 -153
  196. data/ext/mathematical/lsmsvglineelement.h +0 -60
  197. data/ext/mathematical/lsmsvgmarkerelement.c +0 -266
  198. data/ext/mathematical/lsmsvgmarkerelement.h +0 -74
  199. data/ext/mathematical/lsmsvgmaskelement.c +0 -232
  200. data/ext/mathematical/lsmsvgmaskelement.h +0 -64
  201. data/ext/mathematical/lsmsvgmatrix.c +0 -205
  202. data/ext/mathematical/lsmsvgmatrix.h +0 -59
  203. data/ext/mathematical/lsmsvgpathelement.c +0 -115
  204. data/ext/mathematical/lsmsvgpathelement.h +0 -59
  205. data/ext/mathematical/lsmsvgpatternelement.c +0 -398
  206. data/ext/mathematical/lsmsvgpatternelement.h +0 -69
  207. data/ext/mathematical/lsmsvgpolygonelement.c +0 -106
  208. data/ext/mathematical/lsmsvgpolygonelement.h +0 -57
  209. data/ext/mathematical/lsmsvgpolylineelement.c +0 -106
  210. data/ext/mathematical/lsmsvgpolylineelement.h +0 -57
  211. data/ext/mathematical/lsmsvgradialgradientelement.c +0 -323
  212. data/ext/mathematical/lsmsvgradialgradientelement.h +0 -61
  213. data/ext/mathematical/lsmsvgrectelement.c +0 -184
  214. data/ext/mathematical/lsmsvgrectelement.h +0 -62
  215. data/ext/mathematical/lsmsvgstopelement.c +0 -106
  216. data/ext/mathematical/lsmsvgstopelement.h +0 -57
  217. data/ext/mathematical/lsmsvgstyle.c +0 -558
  218. data/ext/mathematical/lsmsvgstyle.h +0 -217
  219. data/ext/mathematical/lsmsvgsvgelement.c +0 -260
  220. data/ext/mathematical/lsmsvgsvgelement.h +0 -71
  221. data/ext/mathematical/lsmsvgswitchelement.c +0 -103
  222. data/ext/mathematical/lsmsvgswitchelement.h +0 -55
  223. data/ext/mathematical/lsmsvgsymbolelement.c +0 -74
  224. data/ext/mathematical/lsmsvgsymbolelement.h +0 -55
  225. data/ext/mathematical/lsmsvgtextelement.c +0 -170
  226. data/ext/mathematical/lsmsvgtextelement.h +0 -58
  227. data/ext/mathematical/lsmsvgtraits.c +0 -1158
  228. data/ext/mathematical/lsmsvgtraits.h +0 -103
  229. data/ext/mathematical/lsmsvgtransformable.c +0 -106
  230. data/ext/mathematical/lsmsvgtransformable.h +0 -54
  231. data/ext/mathematical/lsmsvgtspanelement.c +0 -143
  232. data/ext/mathematical/lsmsvgtspanelement.h +0 -58
  233. data/ext/mathematical/lsmsvgtypes.h +0 -77
  234. data/ext/mathematical/lsmsvguseelement.c +0 -237
  235. data/ext/mathematical/lsmsvguseelement.h +0 -69
  236. data/ext/mathematical/lsmsvgview.c +0 -2400
  237. data/ext/mathematical/lsmsvgview.h +0 -168
  238. data/ext/mathematical/lsmtraits.c +0 -119
  239. data/ext/mathematical/lsmtraits.h +0 -49
  240. data/ext/mathematical/lsmtypes.h +0 -36
  241. data/ext/mathematical/lsmutils.c +0 -54
  242. data/ext/mathematical/lsmutils.h +0 -56
  243. data/ext/mathematical/mathematical.c +0 -122
  244. data/ext/mathematical/y.tab.c +0 -6179
  245. data/ext/mathematical/y.tab.h +0 -389
  246. data/script/bench +0 -21
  247. data/script/bootstrap +0 -9
  248. data/script/single_test +0 -7
  249. data/test/mathematical/basic_test.rb +0 -38
  250. data/test/mathematical/fixtures/after/brackets_display.html +0 -1
  251. data/test/mathematical/fixtures/after/dollar_sign_inline.html +0 -1
  252. data/test/mathematical/fixtures/after/equation_display.html +0 -1
  253. data/test/mathematical/fixtures/after/multiple_dollar_inline.html +0 -1
  254. data/test/mathematical/fixtures/after/parens_inline.html +0 -1
  255. data/test/mathematical/fixtures/before/brackets_display.text +0 -1
  256. data/test/mathematical/fixtures/before/dollar_sign_inline.text +0 -1
  257. data/test/mathematical/fixtures/before/equation_display.text +0 -1
  258. data/test/mathematical/fixtures/before/multiple_dollar_inline.text +0 -1
  259. data/test/mathematical/fixtures/before/parens_inline.text +0 -1
  260. data/test/mathematical/fixtures/performance/big_file.text +0 -1767
  261. data/test/mathematical/fixtures_test.rb +0 -31
  262. data/test/mathematical/performance_test.rb +0 -13
  263. data/test/test_helper.rb +0 -4
@@ -1,119 +0,0 @@
1
- /* Lasem
2
- *
3
- * Copyright © 2009 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #ifndef LSM_MATHML_TRAITS_H
25
- #define LSM_MATHML_TRAITS_H
26
-
27
- #include <lsmmathmlenums.h>
28
- #include <lsmtraits.h>
29
-
30
- G_BEGIN_DECLS
31
-
32
- #define LSM_MATHML_SPACE_EM_VERY_VERY_THIN 0.055556
33
- #define LSM_MATHML_SPACE_EM_VERY_THIN 0.111111
34
- #define LSM_MATHML_SPACE_EM_THIN 0.166667
35
- #define LSM_MATHML_SPACE_EM_MEDIUM 0.222222
36
- #define LSM_MATHML_SPACE_EM_THICK 0.277778
37
- #define LSM_MATHML_SPACE_EM_VERY_THICK 0.333333
38
- #define LSM_MATHML_SPACE_EM_VERY_VERY_THICK 0.388889
39
-
40
- #define LSM_TYPE_MATHML_COLOR (lsm_mathml_color_get_type())
41
-
42
- typedef struct {
43
- double red;
44
- double green;
45
- double blue;
46
- double alpha;
47
- } LsmMathmlColor;
48
-
49
- GType lsm_mathml_color_get_type (void);
50
-
51
- #define LSM_TYPE_MATHML_LENGTH (lsm_mathml_length_get_type())
52
-
53
- typedef struct {
54
- double value;
55
- LsmMathmlUnit unit;
56
- } LsmMathmlLength;
57
-
58
- GType lsm_mathml_length_get_type (void);
59
- double lsm_mathml_length_normalize (const LsmMathmlLength *length,
60
- double base,
61
- double font_size);
62
-
63
- typedef struct {
64
- LsmMathmlScriptLevelSign sign;
65
- int level;
66
- } LsmMathmlScriptLevel;
67
-
68
- typedef struct {
69
- unsigned int n_values;
70
- int *values;
71
- } LsmMathmlEnumList;
72
-
73
- #define LSM_TYPE_MATHML_SPACE (lsm_mathml_space_get_type())
74
-
75
- typedef struct {
76
- LsmMathmlSpaceName name;
77
- LsmMathmlLength length;
78
- } LsmMathmlSpace;
79
-
80
- GType lsm_mathml_space_get_type (void);
81
-
82
- typedef struct {
83
- unsigned int n_spaces;
84
- LsmMathmlSpace *spaces;
85
- } LsmMathmlSpaceList;
86
-
87
- void lsm_mathml_enum_list_init (LsmMathmlEnumList *enum_list, const LsmMathmlEnumList *enum_list_default);
88
- void lsm_mathml_space_list_init (LsmMathmlSpaceList *space_list, const LsmMathmlSpaceList *space_list_default);
89
-
90
- extern const LsmTraitClass lsm_mathml_boolean_trait_class;
91
-
92
- extern const LsmTraitClass lsm_mathml_unsigned_trait_class;
93
-
94
- extern const LsmTraitClass lsm_mathml_display_trait_class;
95
- extern const LsmTraitClass lsm_mathml_mode_trait_class;
96
- extern const LsmTraitClass lsm_mathml_line_trait_class;
97
- extern const LsmTraitClass lsm_mathml_font_style_trait_class;
98
- extern const LsmTraitClass lsm_mathml_font_weight_trait_class;
99
- extern const LsmTraitClass lsm_mathml_variant_trait_class;
100
- extern const LsmTraitClass lsm_mathml_form_trait_class;
101
-
102
- extern const LsmTraitClass lsm_mathml_row_align_list_trait_class;
103
- extern const LsmTraitClass lsm_mathml_column_align_list_trait_class;
104
- extern const LsmTraitClass lsm_mathml_line_list_trait_class;
105
-
106
- extern const LsmTraitClass lsm_mathml_script_level_trait_class;
107
-
108
- extern const LsmTraitClass lsm_mathml_double_trait_class;
109
- extern const LsmTraitClass lsm_mathml_string_trait_class;
110
- extern const LsmTraitClass lsm_mathml_length_trait_class;
111
-
112
- extern const LsmTraitClass lsm_mathml_space_trait_class;
113
- extern const LsmTraitClass lsm_mathml_space_list_trait_class;
114
-
115
- extern const LsmTraitClass lsm_mathml_color_trait_class;
116
-
117
- G_END_DECLS
118
-
119
- #endif
@@ -1,66 +0,0 @@
1
- /* Lasem - SVG and Mathml library
2
- *
3
- * Copyright © 2007-2008 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #ifndef LSM_MATHML_TYPES_H
25
- #define LSM_MATHML_TYPES_H
26
-
27
- #include <lsmmathmlenums.h>
28
-
29
- G_BEGIN_DECLS
30
-
31
- typedef struct _LsmMathmlDocument LsmMathmlDocument;
32
- typedef struct _LsmMathmlElement LsmMathmlElement;
33
- typedef struct _LsmMathmlSemanticsElement LsmMathmlSemanticsElement;
34
- typedef struct _LsmMathmlPhantomElement LsmMathmlPhantomElement;
35
- typedef struct _LsmMathmlTableElement LsmMathmlTableElement;
36
- typedef struct _LsmMathmlTableRowElement LsmMathmlTableRowElement;
37
- typedef struct _LsmMathmlTableCellElement LsmMathmlTableCellElement;
38
- typedef struct _LsmMathmlSpaceElement LsmMathmlSpaceElement;
39
- typedef struct _LsmMathmlFractionElement LsmMathmlFractionElement;
40
- typedef struct _LsmMathmlUnderOverElement LsmMathmlUnderOverElement;
41
- typedef struct _LsmMathmlMathElement LsmMathmlMathElement;
42
- typedef struct _LsmMathmlRadicalElement LsmMathmlRadicalElement;
43
- typedef struct _LsmMathmlScriptElement LsmMathmlScriptElement;
44
- typedef struct _LsmMathmlPresentationToken LsmMathmlPresentationToken;
45
- typedef struct _LsmMathmlNumberElement LsmMathmlNumberElement;
46
- typedef struct _LsmMathmlOperatorElement LsmMathmlOperatorElement;
47
- typedef struct _LsmMathmlStringElement LsmMathmlStringElement;
48
- typedef struct _LsmMathmlPresentationContainer LsmMathmlPresentationContainer;
49
- typedef struct _LsmMathmlStyleElement LsmMathmlStyleElement;
50
- typedef struct _LsmMathmlRowElement LsmMathmlRowElement;
51
- typedef struct _LsmMathmlFencedElement LsmMathmlFencedElement;
52
- typedef struct _LsmMathmlPaddedElement LsmMathmlPaddedElement;
53
- typedef struct _LsmMathmlErrorElement LsmMathmlErrorElement;
54
- typedef struct _LsmMathmlActionElement LsmMathmlActionElement;
55
- typedef struct _LsmMathmlAlignMarkElement LsmMathmlAlignMarkElement;
56
- typedef struct _LsmMathmlAlignGroupElement LsmMathmlAlignGroupElement;
57
-
58
- typedef struct _LsmMathmlItexElement LsmMathmlItexElement;
59
-
60
- typedef struct _LsmMathmlView LsmMathmlView;
61
-
62
- typedef struct _LsmMathmlStyle LsmMathmlStyle;
63
-
64
- G_END_DECLS
65
-
66
- #endif
@@ -1,485 +0,0 @@
1
- /* Lasem
2
- *
3
- * Copyright © 2007-2008 Emmanuel Pacaud
4
- *
5
- * This library is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU Lesser General Public
7
- * License as published by the Free Software Foundation; either
8
- * version 2 of the License, or (at your option) any later version.
9
- *
10
- * This library is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * Lesser General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU Lesser General
16
- * Public License along with this library; if not, write to the
17
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
18
- * Boston, MA 02111-1307, USA.
19
- *
20
- * Author:
21
- * Emmanuel Pacaud <emmanuel@gnome.org>
22
- */
23
-
24
- #include <lsmdebug.h>
25
- #include <lsmmathmlunderoverelement.h>
26
- #include <lsmmathmloperatorelement.h>
27
- #include <lsmmathmllayoututils.h>
28
- #include <lsmmathmlview.h>
29
-
30
- static GObjectClass *parent_class;
31
-
32
- /* GdomNode implementation */
33
-
34
- static const char *
35
- lsm_mathml_under_over_get_node_name (LsmDomNode *node)
36
- {
37
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (node);
38
-
39
- switch (under_over->type) {
40
- case LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_UNDER:
41
- return "munder";
42
- case LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_OVER:
43
- return "mover";
44
- case LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_UNDER_OVER:
45
- default:
46
- return "munderover";
47
- }
48
- }
49
-
50
- static gboolean
51
- lsm_mathml_under_over_element_can_append_child (LsmDomNode *self, LsmDomNode *child)
52
- {
53
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (self);
54
-
55
- if (!LSM_IS_MATHML_ELEMENT (child))
56
- return FALSE;
57
-
58
- if (self->first_child == NULL ||
59
- self->first_child->next_sibling == NULL)
60
- return TRUE;
61
-
62
- if (under_over->type != LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_UNDER_OVER)
63
- return FALSE;
64
-
65
- return (self->first_child->next_sibling->next_sibling == NULL);
66
- }
67
-
68
- static void
69
- lsm_mathml_under_over_element_update_child_pointers (LsmMathmlUnderOverElement *self)
70
- {
71
- LsmDomNode *node;
72
-
73
- node = LSM_DOM_NODE (self)->first_child;
74
- if (node == NULL) {
75
- self->base = NULL;
76
- self->underscript = NULL;
77
- self->overscript = NULL;
78
- return;
79
- } else
80
- self->base = LSM_MATHML_ELEMENT (node);
81
-
82
- node = node->next_sibling;
83
- if (node != NULL)
84
- switch (self->type) {
85
- case LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_OVER:
86
- self->underscript = NULL;
87
- self->overscript = LSM_MATHML_ELEMENT (node);
88
- break;
89
- case LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_UNDER:
90
- self->underscript = LSM_MATHML_ELEMENT (node);
91
- self->overscript = NULL;
92
- break;
93
- default:
94
- self->underscript = LSM_MATHML_ELEMENT (node);
95
- node = node->next_sibling;
96
- if (node != NULL)
97
- self->overscript = LSM_MATHML_ELEMENT (node);
98
- }
99
- else {
100
- self->underscript = NULL;
101
- self->overscript = NULL;
102
- }
103
- }
104
-
105
- static void
106
- lsm_mathml_under_over_element_post_new_child (LsmDomNode *self, LsmDomNode *child)
107
- {
108
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (self);
109
-
110
- lsm_mathml_under_over_element_update_child_pointers (under_over);
111
- }
112
-
113
- /* LsmMathmlElement implementation */
114
-
115
- static void
116
- lsm_mathml_under_over_element_update (LsmMathmlElement *self, LsmMathmlStyle *style)
117
- {
118
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (self);
119
-
120
- under_over->display = style->display;
121
-
122
- }
123
-
124
- static gboolean
125
- lsm_mathml_under_over_element_update_children (LsmMathmlElement *self, LsmMathmlStyle *style)
126
- {
127
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (self);
128
- LsmMathmlStyle *overscript_style;
129
- gboolean accent = FALSE;
130
- gboolean accent_under = FALSE;
131
- gboolean movable_limits = FALSE;
132
- double accent_v_space;
133
- double v_space;
134
- gboolean need_measure = FALSE;
135
-
136
- accent_v_space = self->style.math_size * LSM_MATHML_SPACE_EM_THIN;
137
- v_space = under_over->display == LSM_MATHML_DISPLAY_INLINE ?
138
- self->style.math_size * LSM_MATHML_SPACE_EM_VERY_VERY_THIN :
139
- self->style.math_size * LSM_MATHML_SPACE_EM_MEDIUM;
140
-
141
- if (under_over->base != NULL)
142
- if (lsm_mathml_element_update (LSM_MATHML_ELEMENT (under_over->base), style))
143
- need_measure = TRUE;
144
-
145
- style->display = LSM_MATHML_DISPLAY_INLINE;
146
-
147
- overscript_style = lsm_mathml_style_duplicate (style);
148
-
149
- if (under_over->underscript != NULL) {
150
- const LsmMathmlOperatorElement *operator;
151
-
152
- operator = lsm_mathml_element_get_embellished_core (under_over->underscript);
153
- if (operator != NULL) {
154
- accent_under = operator->accent.value;
155
- lsm_debug_update ("[UnderOver::update] Underscript is%s an accent (%s)",
156
- accent_under ? "" : " not",
157
- lsm_dom_node_get_node_name (LSM_DOM_NODE (operator)));
158
- }
159
-
160
- accent_under = lsm_mathml_boolean_attribute_inherit (&under_over->accent_under, accent_under);
161
-
162
- if (!under_over->accent_under.value)
163
- lsm_mathml_style_change_script_level (style, +1);
164
-
165
- if (lsm_mathml_element_update (LSM_MATHML_ELEMENT (under_over->underscript), style))
166
- need_measure = TRUE;
167
- }
168
-
169
- if (under_over->overscript != NULL) {
170
- const LsmMathmlOperatorElement *operator;
171
-
172
- operator = lsm_mathml_element_get_embellished_core (under_over->overscript);
173
- if (operator != NULL) {
174
- accent = operator->accent.value;
175
- lsm_debug_update ("[UnderOver::update] Overscript is%s an accent (%s)",
176
- accent ? "" : " not",
177
- lsm_dom_node_get_node_name (LSM_DOM_NODE (operator)));
178
- }
179
-
180
- accent = lsm_mathml_boolean_attribute_inherit (&under_over->accent, accent);
181
-
182
- if (!under_over->accent.value)
183
- lsm_mathml_style_change_script_level (overscript_style, +1);
184
-
185
- if (lsm_mathml_element_update (LSM_MATHML_ELEMENT (under_over->overscript), overscript_style))
186
- need_measure = TRUE;
187
- }
188
-
189
- lsm_mathml_style_free (overscript_style);
190
-
191
- if (under_over->base != NULL) {
192
- const LsmMathmlOperatorElement *operator;
193
-
194
- operator = lsm_mathml_element_get_embellished_core (under_over->base);
195
- if (operator != NULL) {
196
- movable_limits = operator->movable_limits.value;
197
- lsm_debug_update ("[UnderOver::update] movable_limits found");
198
- }
199
- }
200
-
201
- under_over->under_space = accent_under ? accent_v_space : v_space;
202
- under_over->over_space = accent ? accent_v_space : v_space;
203
-
204
- under_over->as_script = under_over->display == LSM_MATHML_DISPLAY_INLINE && movable_limits;
205
-
206
- lsm_debug_update ("[UnderOver::update] space under = %g, over = %g",
207
- under_over->under_space, under_over->over_space);
208
-
209
- return need_measure;
210
- }
211
-
212
- static const LsmMathmlBbox *
213
- lsm_mathml_under_over_element_measure (LsmMathmlElement *self, LsmMathmlView *view, const LsmMathmlBbox *stretch_bbox)
214
- {
215
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (self);
216
- const LsmMathmlOperatorElement *operator;
217
- LsmDomNode *node;
218
- const LsmMathmlBbox *child_bbox;
219
- LsmMathmlBbox regular_stretch_bbox;
220
- LsmMathmlBbox operator_stretch_bbox;
221
- LsmMathmlBbox script_bbox;
222
- double length;
223
- gboolean stretchy_found = FALSE;
224
- gboolean all_stretchy = TRUE;
225
- unsigned int index;
226
-
227
- if (under_over->as_script) {
228
- lsm_mathml_measure_sub_sup (self, view,
229
- under_over->base,
230
- under_over->underscript,
231
- under_over->overscript,
232
- 0.0, 0.0,
233
- LSM_MATHML_DISPLAY_INLINE,
234
- stretch_bbox, &self->bbox,
235
- &under_over->underscript_offset,
236
- &under_over->overscript_offset);
237
-
238
- return &self->bbox;
239
- }
240
-
241
- self->bbox = lsm_mathml_bbox_null;
242
-
243
- if (under_over->base == NULL)
244
- return &self->bbox;
245
-
246
- regular_stretch_bbox = lsm_mathml_bbox_null;
247
- operator_stretch_bbox = lsm_mathml_bbox_null;
248
-
249
- lsm_debug_measure ("[UnderOver::measure] Begin");
250
-
251
- index = 0;
252
- for (node = LSM_DOM_NODE (self)->first_child; node != NULL; node = node->next_sibling) {
253
- if (LSM_IS_MATHML_ELEMENT (node)) {
254
- operator = lsm_mathml_element_get_embellished_core (LSM_MATHML_ELEMENT (node));
255
- if (operator != NULL && operator->stretchy.value) {
256
- stretchy_found = TRUE;
257
-
258
- if (node == LSM_DOM_NODE (under_over->base))
259
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view,
260
- stretch_bbox);
261
- else
262
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view,
263
- &lsm_mathml_bbox_null);
264
- lsm_mathml_bbox_stretch_horizontally (&operator_stretch_bbox, child_bbox);
265
- } else {
266
- all_stretchy = FALSE;
267
-
268
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view,
269
- &lsm_mathml_bbox_null);
270
- lsm_mathml_bbox_stretch_horizontally (&regular_stretch_bbox, child_bbox);
271
- }
272
- }
273
-
274
- index++;
275
- }
276
-
277
- if (stretchy_found) {
278
- if (all_stretchy) {
279
- lsm_debug_measure ("[UnderOver::measure] All stretchy");
280
- regular_stretch_bbox = operator_stretch_bbox;
281
- }
282
-
283
- lsm_debug_measure ("[UnderOver::measure] Stretchy found (width = %g, height = %g, depth = %g)",
284
- regular_stretch_bbox.width,
285
- regular_stretch_bbox.height,
286
- regular_stretch_bbox.depth);
287
-
288
- for (node = LSM_DOM_NODE (self)->first_child; node != NULL; node = node->next_sibling) {
289
- if (LSM_IS_MATHML_ELEMENT (node)) {
290
- operator = lsm_mathml_element_get_embellished_core (LSM_MATHML_ELEMENT (node));
291
- if (operator != NULL && operator->stretchy.value) {
292
- if (node == LSM_DOM_NODE (under_over->base)) {
293
- LsmMathmlBbox base_stretch_bbox;
294
-
295
- base_stretch_bbox = regular_stretch_bbox;
296
- lsm_mathml_bbox_stretch (&base_stretch_bbox, stretch_bbox);
297
-
298
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view,
299
- &base_stretch_bbox);
300
- } else
301
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view,
302
- &regular_stretch_bbox);
303
- }
304
- }
305
- }
306
- }
307
-
308
- self->bbox = *lsm_mathml_element_get_bbox (under_over->base);
309
-
310
- if (under_over->overscript != NULL) {
311
- script_bbox = *lsm_mathml_element_get_bbox (under_over->overscript);
312
- lsm_mathml_view_get_font_metrics (view, &under_over->overscript->style, NULL, &length);
313
-
314
- if (under_over->display == LSM_MATHML_DISPLAY_INLINE)
315
- length *= 0.5;
316
-
317
- if (script_bbox.depth < length && !under_over->accent.value)
318
- under_over->overscript_offset = length - script_bbox.depth;
319
- else
320
- under_over->overscript_offset = 0.0;
321
-
322
- script_bbox.depth += under_over->over_space;
323
- lsm_mathml_bbox_add_over (&self->bbox, &script_bbox);
324
-
325
- self->bbox.height += under_over->overscript_offset;
326
- }
327
-
328
- if (under_over->underscript != NULL) {
329
- script_bbox = *lsm_mathml_element_get_bbox (under_over->underscript);
330
- lsm_mathml_view_get_font_metrics (view, &under_over->underscript->style, &length, NULL);
331
-
332
- if (script_bbox.height < length && !under_over->accent_under.value)
333
- under_over->underscript_offset = length - script_bbox.height;
334
- else
335
- under_over->underscript_offset = 0.0;
336
-
337
- script_bbox.height += under_over->under_space;
338
- lsm_mathml_bbox_add_under (&self->bbox, &script_bbox);
339
-
340
- self->bbox.depth += under_over->underscript_offset;
341
- }
342
-
343
- lsm_debug_measure ("[UnderOver::measure] End");
344
-
345
- return &self->bbox;
346
- }
347
-
348
- static void
349
- lsm_mathml_under_over_element_layout (LsmMathmlElement *self, LsmMathmlView *view,
350
- double x, double y, const LsmMathmlBbox *bbox)
351
- {
352
- LsmMathmlUnderOverElement *under_over = LSM_MATHML_UNDER_OVER_ELEMENT (self);
353
- const LsmMathmlBbox *child_bbox;
354
-
355
- if (under_over->as_script) {
356
- lsm_mathml_layout_sub_sup (self, view,
357
- x, y,
358
- under_over->base,
359
- under_over->underscript,
360
- under_over->overscript,
361
- under_over->underscript_offset,
362
- under_over->overscript_offset);
363
-
364
- return;
365
- }
366
-
367
- if (under_over->base == NULL)
368
- return;
369
-
370
- child_bbox = lsm_mathml_element_get_bbox (under_over->base);
371
- lsm_mathml_element_layout (under_over->base, view, x + (bbox->width - child_bbox->width) * 0.5, y,
372
- child_bbox);
373
-
374
- if (under_over->underscript) {
375
- child_bbox = lsm_mathml_element_get_bbox (under_over->underscript);
376
- lsm_mathml_element_layout (under_over->underscript, view,
377
- x + (bbox->width - child_bbox->width) * 0.5,
378
- y + self->bbox.depth - child_bbox->depth,
379
- child_bbox);
380
- }
381
- if (under_over->overscript) {
382
- child_bbox = lsm_mathml_element_get_bbox (under_over->overscript);
383
- lsm_mathml_element_layout (under_over->overscript, view,
384
- x + (bbox->width - child_bbox->width) * 0.5,
385
- y - self->bbox.height + child_bbox->height,
386
- child_bbox);
387
- }
388
- }
389
-
390
- static LsmMathmlOperatorElement *
391
- lsm_mathml_under_over_element_get_embellished_core (const LsmMathmlElement *self)
392
- {
393
- if (LSM_DOM_NODE (self)->first_child != NULL)
394
- return lsm_mathml_element_get_embellished_core (LSM_MATHML_ELEMENT (LSM_DOM_NODE (self)->first_child));
395
-
396
- return NULL;
397
- }
398
-
399
- /* LsmMathmlUnderOverElement implementation */
400
-
401
- LsmDomNode *
402
- lsm_mathml_under_element_new (void)
403
- {
404
- LsmDomNode *node;
405
-
406
- node = g_object_new (LSM_TYPE_MATHML_UNDER_OVER_ELEMENT, NULL);
407
- g_return_val_if_fail (node != NULL, NULL);
408
-
409
- LSM_MATHML_UNDER_OVER_ELEMENT (node)->type = LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_UNDER;
410
-
411
- return node;
412
- }
413
-
414
- LsmDomNode *
415
- lsm_mathml_over_element_new (void)
416
- {
417
- LsmDomNode *node;
418
-
419
- node = g_object_new (LSM_TYPE_MATHML_UNDER_OVER_ELEMENT, NULL);
420
- g_return_val_if_fail (node != NULL, NULL);
421
-
422
- LSM_MATHML_UNDER_OVER_ELEMENT (node)->type = LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_OVER;
423
-
424
- return node;
425
- }
426
-
427
- LsmDomNode *
428
- lsm_mathml_under_over_element_new (void)
429
- {
430
- LsmDomNode *node;
431
-
432
- node = g_object_new (LSM_TYPE_MATHML_UNDER_OVER_ELEMENT, NULL);
433
- g_return_val_if_fail (node != NULL, NULL);
434
-
435
- LSM_MATHML_UNDER_OVER_ELEMENT (node)->type = LSM_MATHML_UNDER_OVER_ELEMENT_TYPE_UNDER_OVER;
436
-
437
- return node;
438
- }
439
-
440
- static void
441
- lsm_mathml_under_over_element_init (LsmMathmlUnderOverElement *self)
442
- {
443
- }
444
-
445
- /* LsmMathmlUnderOverElement class */
446
-
447
- static const LsmAttributeInfos _attribute_infos[] = {
448
- {
449
- .name = "accent",
450
- .attribute_offset = offsetof (LsmMathmlUnderOverElement, accent),
451
- .trait_class = &lsm_mathml_boolean_trait_class
452
- },
453
- {
454
- .name = "accentunder",
455
- .attribute_offset = offsetof (LsmMathmlUnderOverElement, accent_under),
456
- .trait_class = &lsm_mathml_boolean_trait_class,
457
- }
458
- };
459
-
460
- static void
461
- lsm_mathml_under_over_element_class_init (LsmMathmlUnderOverElementClass *under_over_class)
462
- {
463
- LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (under_over_class);
464
- LsmMathmlElementClass *m_element_class = LSM_MATHML_ELEMENT_CLASS (under_over_class);
465
-
466
- parent_class = g_type_class_peek_parent (under_over_class);
467
-
468
- d_node_class->get_node_name = lsm_mathml_under_over_get_node_name;
469
- d_node_class->can_append_child = lsm_mathml_under_over_element_can_append_child;
470
- d_node_class->post_new_child = lsm_mathml_under_over_element_post_new_child;
471
-
472
- m_element_class->update = lsm_mathml_under_over_element_update;
473
- m_element_class->update_children = lsm_mathml_under_over_element_update_children;
474
- m_element_class->measure = lsm_mathml_under_over_element_measure;
475
- m_element_class->layout = lsm_mathml_under_over_element_layout;
476
- m_element_class->get_embellished_core = lsm_mathml_under_over_element_get_embellished_core;
477
- m_element_class->is_inferred_row = NULL;
478
- m_element_class->attribute_manager = lsm_attribute_manager_duplicate (m_element_class->attribute_manager);
479
-
480
- lsm_attribute_manager_add_attributes (m_element_class->attribute_manager,
481
- G_N_ELEMENTS (_attribute_infos),
482
- _attribute_infos);
483
- }
484
-
485
- G_DEFINE_TYPE (LsmMathmlUnderOverElement, lsm_mathml_under_over_element, LSM_TYPE_MATHML_ELEMENT)