mathematical 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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,65 +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
- #ifndef LSM_MATHML_FENCED_ELEMENT_H
25
- #define LSM_MATHML_FENCED_ELEMENT_H
26
-
27
- #include <lsmmathmltypes.h>
28
- #include <lsmmathmlpresentationcontainer.h>
29
-
30
- G_BEGIN_DECLS
31
-
32
- #define LSM_TYPE_MATHML_FENCED_ELEMENT (lsm_mathml_fenced_element_get_type ())
33
- #define LSM_MATHML_FENCED_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_MATHML_FENCED_ELEMENT, LsmMathmlFencedElement))
34
- #define LSM_MATHML_FENCED_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_MATHML_FENCED_ELEMENT, LsmMathmlFencedElementClass))
35
- #define LSM_IS_MATHML_FENCED_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_MATHML_FENCED_ELEMENT))
36
- #define LSM_IS_MATHML_FENCED_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_MATHML_FENCED_ELEMENT))
37
- #define LSM_MATHML_FENCED_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_MATHML_FENCED_ELEMENT, LsmMathmlFencedElementClass))
38
-
39
- typedef struct _LsmMathmlFencedElementClass LsmMathmlFencedElementClass;
40
-
41
- struct _LsmMathmlFencedElement {
42
- LsmMathmlPresentationContainer presentation_container;
43
-
44
- LsmMathmlStringAttribute open;
45
- LsmMathmlStringAttribute close;
46
- LsmMathmlStringAttribute separators;
47
-
48
- /* View properties */
49
-
50
- LsmMathmlBbox open_bbox;
51
- LsmMathmlBbox close_bbox;
52
- };
53
-
54
- struct _LsmMathmlFencedElementClass {
55
- LsmMathmlPresentationContainerClass parent_class;
56
- };
57
-
58
- GType lsm_mathml_fenced_element_get_type (void);
59
-
60
- LsmDomNode *lsm_mathml_fenced_element_new (void);
61
-
62
- G_END_DECLS
63
-
64
- #endif
65
-
@@ -1,253 +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 <lsmmathmlfractionelement.h>
25
- #include <lsmmathmlview.h>
26
-
27
- static GObjectClass *parent_class;
28
-
29
- /* LsmDomNode implementation */
30
-
31
- static const char *
32
- lsm_mathml_fraction_element_get_node_name (LsmDomNode *node)
33
- {
34
- return "mfrac";
35
- }
36
-
37
- static gboolean
38
- lsm_mathml_fraction_element_can_append_child (LsmDomNode *self, LsmDomNode *child)
39
- {
40
- return (LSM_IS_MATHML_ELEMENT (child) &&
41
- (self->first_child == NULL ||
42
- self->first_child->next_sibling == NULL));
43
- }
44
-
45
- /* LsmMathmlElement implementation */
46
-
47
- static void
48
- lsm_mathml_fraction_element_update (LsmMathmlElement *self, LsmMathmlStyle *style)
49
- {
50
- LsmMathmlFractionElement *fraction = LSM_MATHML_FRACTION_ELEMENT (self);
51
- LsmMathmlLength length;
52
-
53
- length.unit = LSM_MATHML_UNIT_PT;
54
-
55
- length.value = style->line_thickness;
56
- style->line_thickness = lsm_mathml_length_attribute_normalize (&fraction->line_thickness,
57
- style->line_thickness,
58
- &length, style);
59
-
60
- fraction->display = style->display;
61
- }
62
-
63
- static gboolean
64
- lsm_mathml_fraction_element_update_children (LsmMathmlElement *self, LsmMathmlStyle *style)
65
- {
66
- if (style->display == LSM_MATHML_DISPLAY_INLINE)
67
- lsm_mathml_style_change_script_level (style, +1);
68
- else
69
- style->display = LSM_MATHML_DISPLAY_INLINE;
70
-
71
- return LSM_MATHML_ELEMENT_CLASS (parent_class)->update_children (self, style);
72
- }
73
-
74
- static const LsmMathmlBbox *
75
- lsm_mathml_fraction_element_measure (LsmMathmlElement *self, LsmMathmlView *view, const LsmMathmlBbox *bbox)
76
- {
77
- LsmMathmlFractionElement *fraction = LSM_MATHML_FRACTION_ELEMENT (self);
78
- LsmDomNode *node;
79
- const LsmMathmlBbox *child_bbox;
80
- double h_space;
81
- double v_space;
82
- double length, dividend_offset, divisor_offset;
83
-
84
- fraction->axis_offset = lsm_mathml_view_measure_axis_offset (view, self->style.math_size);
85
-
86
- if (fraction->display == LSM_MATHML_DISPLAY_INLINE)
87
- v_space = self->style.math_size * LSM_MATHML_SPACE_EM_VERY_THIN;
88
- else
89
- v_space = self->style.math_size * LSM_MATHML_SPACE_EM_MEDIUM;
90
- h_space = self->style.math_size * LSM_MATHML_SPACE_EM_VERY_THIN;
91
-
92
- self->bbox.is_defined = TRUE;
93
- self->bbox.depth = - (fraction->axis_offset - v_space - 0.5 * fraction->line_thickness.value);
94
-
95
- self->bbox.width = 0.0;
96
- self->bbox.height = fraction->axis_offset + v_space + 0.5 * fraction->line_thickness.value;
97
-
98
- node = LSM_DOM_NODE (self)->first_child;
99
-
100
- if (node == NULL)
101
- return &self->bbox;
102
-
103
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view, NULL);
104
- lsm_mathml_view_get_font_metrics (view, &LSM_MATHML_ELEMENT (node)->style, NULL, &length);
105
-
106
- if (fraction->display == LSM_MATHML_DISPLAY_INLINE)
107
- length *= 0.5;
108
-
109
- if (child_bbox->depth < length)
110
- dividend_offset = length - child_bbox->depth;
111
- else
112
- dividend_offset = 0.0;
113
-
114
- lsm_mathml_bbox_add_over (&self->bbox, child_bbox);
115
-
116
- node = node->next_sibling;
117
-
118
- if (node == NULL)
119
- return &self->bbox;
120
-
121
- child_bbox = lsm_mathml_element_measure (LSM_MATHML_ELEMENT (node), view, NULL);
122
- lsm_mathml_view_get_font_metrics (view, &LSM_MATHML_ELEMENT (node)->style, &length, NULL);
123
- if (child_bbox->height < length)
124
- divisor_offset = length - child_bbox->height;
125
- else
126
- divisor_offset = 0.0;
127
-
128
- lsm_mathml_bbox_add_under (&self->bbox, child_bbox);
129
-
130
- self->bbox.height += dividend_offset;
131
- self->bbox.depth += divisor_offset;
132
- self->bbox.width += 2.0 * h_space;
133
-
134
- return &self->bbox;
135
- }
136
-
137
- static void
138
- lsm_mathml_fraction_element_layout (LsmMathmlElement *self, LsmMathmlView *view,
139
- double x, double y, const LsmMathmlBbox *bbox)
140
- {
141
- LsmDomNode *node;
142
- const LsmMathmlBbox *child_bbox;
143
-
144
- node = LSM_DOM_NODE (self)->first_child;
145
-
146
- if (node != NULL) {
147
- child_bbox = lsm_mathml_element_get_bbox (LSM_MATHML_ELEMENT (node));
148
- lsm_mathml_element_layout (LSM_MATHML_ELEMENT (node), view,
149
- x + (bbox->width - child_bbox->width) / 2.0,
150
- y - self->bbox.height + child_bbox->height,
151
- child_bbox);
152
-
153
- node = node->next_sibling;
154
- if (node != NULL) {
155
- child_bbox = lsm_mathml_element_get_bbox (LSM_MATHML_ELEMENT (node));
156
- lsm_mathml_element_layout (LSM_MATHML_ELEMENT (node), view,
157
- x + (bbox->width - child_bbox->width) / 2.0,
158
- y + self->bbox.depth - child_bbox->depth,
159
- child_bbox);
160
- }
161
- }
162
- }
163
-
164
- static void
165
- lsm_mathml_fraction_element_render (LsmMathmlElement *self, LsmMathmlView *view)
166
- {
167
- LsmMathmlFractionElement *fraction = LSM_MATHML_FRACTION_ELEMENT (self);
168
- double h_space;
169
-
170
- h_space = self->style.math_size * LSM_MATHML_SPACE_EM_VERY_THIN;
171
-
172
- lsm_mathml_view_show_fraction_line (view, &self->style,
173
- self->x + h_space,
174
- self->y - fraction->axis_offset,
175
- self->bbox.width - 2.0 * h_space,
176
- fraction->line_thickness.value);
177
-
178
- LSM_MATHML_ELEMENT_CLASS (parent_class)->render (self, view);
179
- }
180
-
181
- static LsmMathmlOperatorElement *
182
- lsm_mathml_fraction_element_get_embellished_core (const LsmMathmlElement *self)
183
- {
184
- if (LSM_DOM_NODE (self)->first_child != NULL)
185
- return lsm_mathml_element_get_embellished_core (LSM_MATHML_ELEMENT (LSM_DOM_NODE (self)->first_child));
186
-
187
- return NULL;
188
- }
189
-
190
- /* LsmMathmlFraction implementation */
191
-
192
- static const gboolean bevelled_default = FALSE;
193
-
194
- LsmDomNode *
195
- lsm_mathml_fraction_element_new (void)
196
- {
197
- return g_object_new (LSM_TYPE_MATHML_FRACTION_ELEMENT, NULL);
198
- }
199
-
200
- static const LsmMathmlLength length_default = {1.0, LSM_MATHML_UNIT_NONE};
201
-
202
- static void
203
- lsm_mathml_fraction_element_init (LsmMathmlFractionElement *self)
204
- {
205
- self->axis_offset = 0.0;
206
-
207
- self->bevelled.value = bevelled_default;
208
- self->line_thickness.length = length_default;
209
- }
210
-
211
- /* LsmMathmlFractionElement class */
212
-
213
- static const LsmAttributeInfos _attribute_infos[] = {
214
- {
215
- .name = "bevelled",
216
- .attribute_offset = offsetof (LsmMathmlFractionElement, bevelled),
217
- .trait_class = &lsm_mathml_boolean_trait_class,
218
- .trait_default = &bevelled_default
219
- },
220
- {
221
- .name = "linethickness",
222
- .attribute_offset = offsetof (LsmMathmlFractionElement, line_thickness),
223
- .trait_class = &lsm_mathml_length_trait_class,
224
- .trait_default = &length_default
225
- },
226
- };
227
-
228
- static void
229
- lsm_mathml_fraction_element_class_init (LsmMathmlFractionElementClass *fraction_class)
230
- {
231
- LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (fraction_class);
232
- LsmMathmlElementClass *m_element_class = LSM_MATHML_ELEMENT_CLASS (fraction_class);
233
-
234
- parent_class = g_type_class_peek_parent (fraction_class);
235
-
236
- d_node_class->get_node_name = lsm_mathml_fraction_element_get_node_name;
237
- d_node_class->can_append_child = lsm_mathml_fraction_element_can_append_child;
238
-
239
- m_element_class->update = lsm_mathml_fraction_element_update;
240
- m_element_class->update_children = lsm_mathml_fraction_element_update_children;
241
- m_element_class->measure = lsm_mathml_fraction_element_measure;
242
- m_element_class->layout = lsm_mathml_fraction_element_layout;
243
- m_element_class->render = lsm_mathml_fraction_element_render;
244
- m_element_class->get_embellished_core = lsm_mathml_fraction_element_get_embellished_core;
245
- m_element_class->is_inferred_row = NULL;
246
- m_element_class->attribute_manager = lsm_attribute_manager_duplicate (m_element_class->attribute_manager);
247
-
248
- lsm_attribute_manager_add_attributes (m_element_class->attribute_manager,
249
- G_N_ELEMENTS (_attribute_infos),
250
- _attribute_infos);
251
- }
252
-
253
- G_DEFINE_TYPE (LsmMathmlFractionElement, lsm_mathml_fraction_element, LSM_TYPE_MATHML_ELEMENT)
@@ -1,62 +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
- #ifndef LSM_MATHML_FRACTION_ELEMENT_H
25
- #define LSM_MATHML_FRACTION_ELEMENT_H
26
-
27
- #include <lsmmathmltypes.h>
28
- #include <lsmmathmlpresentationcontainer.h>
29
-
30
- G_BEGIN_DECLS
31
-
32
- #define LSM_TYPE_MATHML_FRACTION_ELEMENT (lsm_mathml_fraction_element_get_type ())
33
- #define LSM_MATHML_FRACTION_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_MATHML_FRACTION_ELEMENT, LsmMathmlFractionElement))
34
- #define LSM_MATHML_FRACTION_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_MATHML_FRACTION_ELEMENT, LsmMathmlFractionElementClass))
35
- #define LSM_IS_MATHML_FRACTION_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_MATHML_FRACTION_ELEMENT))
36
- #define LSM_IS_MATHML_FRACTION_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_MATHML_FRACTION_ELEMENT))
37
- #define LSM_MATHML_FRACTION_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_MATHML_FRACTION_ELEMENT, LsmMathmlFractionElementClass))
38
-
39
- typedef struct _LsmMathmlFractionElementClass LsmMathmlFractionElementClass;
40
-
41
- struct _LsmMathmlFractionElement {
42
- LsmMathmlElement presentation_container;
43
-
44
- LsmMathmlLengthAttribute line_thickness;
45
- LsmMathmlBooleanAttribute bevelled;
46
-
47
- LsmMathmlDisplay display;
48
- double axis_offset;
49
- };
50
-
51
- struct _LsmMathmlFractionElementClass {
52
- LsmMathmlElementClass parent_class;
53
- };
54
-
55
- GType lsm_mathml_fraction_element_get_type (void);
56
-
57
- LsmDomNode *lsm_mathml_fraction_element_new (void);
58
-
59
- G_END_DECLS
60
-
61
- #endif
62
-
@@ -1,597 +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 <lsmmathmlglyphtableams.h>
26
- #include <string.h>
27
- #include <math.h>
28
-
29
- const LsmMathmlOperatorGlyph AMS_table[] = {
30
- {
31
- LSM_MATHML_RADICAL_UTF8, /* radical */
32
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
33
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED,
34
- {LSM_MATHML_FONT_CMEX10, "t"},
35
- {LSM_MATHML_FONT_ERROR, ""},
36
- {LSM_MATHML_FONT_CMEX10, "v"},
37
- {LSM_MATHML_FONT_CMEX10, "u"},
38
- 4,
39
- {
40
- {LSM_MATHML_FONT_CMEX10, "p"},
41
- {LSM_MATHML_FONT_CMEX10, "q"},
42
- {LSM_MATHML_FONT_CMEX10, "r"},
43
- {LSM_MATHML_FONT_CMEX10, "s"}
44
- }
45
- },
46
- {
47
- "(",
48
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
49
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
50
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
51
- {LSM_MATHML_FONT_CMEX10, "0"},
52
- {LSM_MATHML_FONT_ERROR, ""},
53
- {LSM_MATHML_FONT_CMEX10, "@"},
54
- {LSM_MATHML_FONT_CMEX10, "B"},
55
- 5,
56
- {
57
- {LSM_MATHML_FONT_CMR10, "("},
58
- {LSM_MATHML_FONT_CMEX10, "\xc2\xa1"},
59
- {LSM_MATHML_FONT_CMEX10, "\xc2\xb3"},
60
- {LSM_MATHML_FONT_CMEX10, "\xc2\xb5"},
61
- {LSM_MATHML_FONT_CMEX10, "\xc3\x83"}
62
- }
63
- },
64
- {
65
- ")",
66
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
67
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
68
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
69
- {LSM_MATHML_FONT_CMEX10, "1"},
70
- {LSM_MATHML_FONT_ERROR, ""},
71
- {LSM_MATHML_FONT_CMEX10, "A"},
72
- {LSM_MATHML_FONT_CMEX10, "C"},
73
- 5,
74
- {
75
- {LSM_MATHML_FONT_CMR10, ")"},
76
- {LSM_MATHML_FONT_CMEX10, "\xc2\xa2"},
77
- {LSM_MATHML_FONT_CMEX10, "\xc2\xb4"},
78
- {LSM_MATHML_FONT_CMEX10, "\xc2\xb6"},
79
- {LSM_MATHML_FONT_CMEX10, "!"}
80
- }
81
- },
82
- {
83
- "{",
84
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
85
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
86
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
87
- {LSM_MATHML_FONT_CMEX10, "8"},
88
- {LSM_MATHML_FONT_CMEX10, "<"},
89
- {LSM_MATHML_FONT_CMEX10, ":"},
90
- {LSM_MATHML_FONT_CMEX10, ">"},
91
- 5,
92
- {
93
- {LSM_MATHML_FONT_CMSY10, "f"},
94
- {LSM_MATHML_FONT_CMEX10, "\xc2\xa9"},
95
- {LSM_MATHML_FONT_CMEX10, "n"},
96
- {LSM_MATHML_FONT_CMEX10, "\xc2\xbd"},
97
- {LSM_MATHML_FONT_CMEX10, "("}
98
- }
99
- },
100
- {
101
- "}",
102
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
103
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
104
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
105
- {LSM_MATHML_FONT_CMEX10, "9"},
106
- {LSM_MATHML_FONT_CMEX10, "="},
107
- {LSM_MATHML_FONT_CMEX10, ";"},
108
- {LSM_MATHML_FONT_CMEX10, ">"},
109
- 5,
110
- {
111
- {LSM_MATHML_FONT_CMSY10, "g"},
112
- {LSM_MATHML_FONT_CMEX10, "\xc2\xaa"},
113
- {LSM_MATHML_FONT_CMEX10, "o"},
114
- {LSM_MATHML_FONT_CMEX10, "\xc2\xbe"},
115
- {LSM_MATHML_FONT_CMEX10, ")"}
116
- }
117
- },
118
- {
119
- "[",
120
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
121
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
122
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
123
- {LSM_MATHML_FONT_CMEX10, "2"},
124
- {LSM_MATHML_FONT_ERROR, ""},
125
- {LSM_MATHML_FONT_CMEX10, "4"},
126
- {LSM_MATHML_FONT_CMEX10, "6"},
127
- 3,
128
- {
129
- {LSM_MATHML_FONT_CMR10, "["},
130
- {LSM_MATHML_FONT_CMEX10, "\xc2\xa3"},
131
- {LSM_MATHML_FONT_CMEX10, "h"},
132
- {LSM_MATHML_FONT_ERROR, ""},
133
- {LSM_MATHML_FONT_ERROR, ""}
134
- }
135
- },
136
- {
137
- "]",
138
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
139
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
140
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
141
- {LSM_MATHML_FONT_CMEX10, "3"},
142
- {LSM_MATHML_FONT_ERROR, ""},
143
- {LSM_MATHML_FONT_CMEX10, "5"},
144
- {LSM_MATHML_FONT_CMEX10, "7"},
145
- 3,
146
- {
147
- {LSM_MATHML_FONT_CMR10, "]"},
148
- {LSM_MATHML_FONT_CMEX10, "\xc2\xa4"},
149
- {LSM_MATHML_FONT_CMEX10, "i"},
150
- {LSM_MATHML_FONT_ERROR, ""},
151
- {LSM_MATHML_FONT_ERROR, ""}
152
- }
153
- },
154
- {
155
- "\xe2\x8c\xa9", /* 〈 */
156
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
157
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
158
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
159
- {LSM_MATHML_FONT_ERROR, ""},
160
- {LSM_MATHML_FONT_ERROR, ""},
161
- {LSM_MATHML_FONT_ERROR, ""},
162
- {LSM_MATHML_FONT_ERROR, ""},
163
- 3,
164
- {
165
- {LSM_MATHML_FONT_CMEX10, "D"},
166
- {LSM_MATHML_FONT_CMEX10, "\xc2\xbf"},
167
- {LSM_MATHML_FONT_CMEX10, "*"},
168
- {LSM_MATHML_FONT_ERROR, ""},
169
- {LSM_MATHML_FONT_ERROR, ""}
170
- }
171
- },
172
- {
173
- "\xe2\x8c\xaa", /* 〉 */
174
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
175
- LSM_MATHML_GLYPH_FLAG_TYPE_SIZED |
176
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS,
177
- {LSM_MATHML_FONT_ERROR, ""},
178
- {LSM_MATHML_FONT_ERROR, ""},
179
- {LSM_MATHML_FONT_ERROR, ""},
180
- {LSM_MATHML_FONT_ERROR, ""},
181
- 3,
182
- {
183
- {LSM_MATHML_FONT_CMEX10, "E"},
184
- {LSM_MATHML_FONT_CMEX10, "\xc3\x80"},
185
- {LSM_MATHML_FONT_CMEX10, "+"},
186
- {LSM_MATHML_FONT_ERROR, ""},
187
- {LSM_MATHML_FONT_ERROR, ""}
188
- }
189
- },
190
- {
191
- "\xe2\x88\x91" /* ∑ */,
192
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
193
- {LSM_MATHML_FONT_ERROR, ""},
194
- {LSM_MATHML_FONT_ERROR, ""},
195
- {LSM_MATHML_FONT_ERROR, ""},
196
- {LSM_MATHML_FONT_ERROR, ""},
197
- 2,
198
- {
199
- {LSM_MATHML_FONT_CMEX10, "P"},
200
- {LSM_MATHML_FONT_CMEX10, "X"}
201
- }
202
- },
203
- {
204
- "\xe2\x88\x8f" /* ∏ */,
205
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
206
- {LSM_MATHML_FONT_ERROR, ""},
207
- {LSM_MATHML_FONT_ERROR, ""},
208
- {LSM_MATHML_FONT_ERROR, ""},
209
- {LSM_MATHML_FONT_ERROR, ""},
210
- 2,
211
- {
212
- {LSM_MATHML_FONT_CMEX10, "Q"},
213
- {LSM_MATHML_FONT_CMEX10, "Y"}
214
- }
215
- },
216
- {
217
- "\xe2\x88\x90" /* ∐ */,
218
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
219
- {LSM_MATHML_FONT_ERROR, ""},
220
- {LSM_MATHML_FONT_ERROR, ""},
221
- {LSM_MATHML_FONT_ERROR, ""},
222
- {LSM_MATHML_FONT_ERROR, ""},
223
- 2,
224
- {
225
- {LSM_MATHML_FONT_CMEX10, "`"},
226
- {LSM_MATHML_FONT_CMEX10, "a"}
227
- }
228
- },
229
- {
230
- "\xe2\x8b\x81" /* ∨ - bigvee */,
231
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
232
- {LSM_MATHML_FONT_ERROR, ""},
233
- {LSM_MATHML_FONT_ERROR, ""},
234
- {LSM_MATHML_FONT_ERROR, ""},
235
- {LSM_MATHML_FONT_ERROR, ""},
236
- 2,
237
- {
238
- {LSM_MATHML_FONT_CMSY10, "_"},
239
- {LSM_MATHML_FONT_CMEX10, "W"}
240
- }
241
- },
242
- {
243
- "\xe2\x8b\x80" /* ∧ - bigwedge */,
244
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
245
- {LSM_MATHML_FONT_ERROR, ""},
246
- {LSM_MATHML_FONT_ERROR, ""},
247
- {LSM_MATHML_FONT_ERROR, ""},
248
- {LSM_MATHML_FONT_ERROR, ""},
249
- 2,
250
- {
251
- {LSM_MATHML_FONT_CMSY10, "^"},
252
- {LSM_MATHML_FONT_CMEX10, "V"}
253
- }
254
- },
255
- {
256
- "\xe2\x88\xa8" /* ∨ */,
257
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
258
- {LSM_MATHML_FONT_ERROR, ""},
259
- {LSM_MATHML_FONT_ERROR, ""},
260
- {LSM_MATHML_FONT_ERROR, ""},
261
- {LSM_MATHML_FONT_ERROR, ""},
262
- 2,
263
- {
264
- {LSM_MATHML_FONT_CMSY10, "_"},
265
- {LSM_MATHML_FONT_CMEX10, "W"}
266
- }
267
- },
268
- {
269
- "\xe2\x88\xa7" /* ∧ */,
270
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
271
- {LSM_MATHML_FONT_ERROR, ""},
272
- {LSM_MATHML_FONT_ERROR, ""},
273
- {LSM_MATHML_FONT_ERROR, ""},
274
- {LSM_MATHML_FONT_ERROR, ""},
275
- 2,
276
- {
277
- {LSM_MATHML_FONT_CMSY10, "^"},
278
- {LSM_MATHML_FONT_CMEX10, "V"}
279
- }
280
- },
281
- {
282
- "\xe2\x88\xa9" /* ⋂ - cap*/,
283
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
284
- {LSM_MATHML_FONT_ERROR, ""},
285
- {LSM_MATHML_FONT_ERROR, ""},
286
- {LSM_MATHML_FONT_ERROR, ""},
287
- {LSM_MATHML_FONT_ERROR, ""},
288
- 2,
289
- {
290
- {LSM_MATHML_FONT_CMSY10, "\\"},
291
- {LSM_MATHML_FONT_CMEX10, "\\"}
292
- }
293
- },
294
- {
295
- "\xe2\x88\xaa" /* ⋃ - cup */,
296
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
297
- {LSM_MATHML_FONT_ERROR, ""},
298
- {LSM_MATHML_FONT_ERROR, ""},
299
- {LSM_MATHML_FONT_ERROR, ""},
300
- {LSM_MATHML_FONT_ERROR, ""},
301
- 2,
302
- {
303
- {LSM_MATHML_FONT_CMSY10, "["},
304
- {LSM_MATHML_FONT_CMEX10, "["}
305
- }
306
- },
307
- {
308
- "\xe2\x8b\x82" /* ⋂ - bigcap */,
309
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
310
- {LSM_MATHML_FONT_ERROR, ""},
311
- {LSM_MATHML_FONT_ERROR, ""},
312
- {LSM_MATHML_FONT_ERROR, ""},
313
- {LSM_MATHML_FONT_ERROR, ""},
314
- 2,
315
- {
316
- {LSM_MATHML_FONT_CMSY10, "\\"},
317
- {LSM_MATHML_FONT_CMEX10, "\\"}
318
- }
319
- },
320
- {
321
- "\xe2\x8b\x83" /* ⋃ - bigcup */,
322
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION,
323
- {LSM_MATHML_FONT_ERROR, ""},
324
- {LSM_MATHML_FONT_ERROR, ""},
325
- {LSM_MATHML_FONT_ERROR, ""},
326
- {LSM_MATHML_FONT_ERROR, ""},
327
- 2,
328
- {
329
- {LSM_MATHML_FONT_CMSY10, "["},
330
- {LSM_MATHML_FONT_CMEX10, "["}
331
- }
332
- },
333
- {
334
- "\xe2\x88\xab" /* ∫ */,
335
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION |
336
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL |
337
- LSM_MATHML_GLYPH_FLAG_INTEGRAL_SLANT,
338
- {LSM_MATHML_FONT_ERROR, ""},
339
- {LSM_MATHML_FONT_ERROR, ""},
340
- {LSM_MATHML_FONT_ERROR, ""},
341
- {LSM_MATHML_FONT_ERROR, ""},
342
- 2,
343
- {
344
- {LSM_MATHML_FONT_CMEX10, "R"},
345
- {LSM_MATHML_FONT_CMEX10, "Z"}
346
- }
347
- },
348
- {
349
- "\xe2\x88\xac" /* ∬ */,
350
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION |
351
- LSM_MATHML_GLYPH_FLAG_INTEGRAL_SLANT,
352
- {LSM_MATHML_FONT_ERROR, ""},
353
- {LSM_MATHML_FONT_ERROR, ""},
354
- {LSM_MATHML_FONT_ERROR, ""},
355
- {LSM_MATHML_FONT_ERROR, ""},
356
- 2,
357
- {
358
- {LSM_MATHML_FONT_CMEX10, "RR"},
359
- {LSM_MATHML_FONT_CMEX10, "ZZ"}
360
- }
361
- },
362
- {
363
- "\xe2\x88\xad" /* ∭ */,
364
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION |
365
- LSM_MATHML_GLYPH_FLAG_INTEGRAL_SLANT,
366
- {LSM_MATHML_FONT_ERROR, ""},
367
- {LSM_MATHML_FONT_ERROR, ""},
368
- {LSM_MATHML_FONT_ERROR, ""},
369
- {LSM_MATHML_FONT_ERROR, ""},
370
- 2,
371
- {
372
- {LSM_MATHML_FONT_CMEX10, "RRR"},
373
- {LSM_MATHML_FONT_CMEX10, "ZZZ"}
374
- }
375
- },
376
- {
377
- "\xe2\x88\xae" /* ∮ */,
378
- LSM_MATHML_GLYPH_FLAG_ALIGN_AXIS | LSM_MATHML_GLYPH_FLAG_HAS_LARGE_VERSION |
379
- LSM_MATHML_GLYPH_FLAG_INTEGRAL_SLANT,
380
- {LSM_MATHML_FONT_ERROR, ""},
381
- {LSM_MATHML_FONT_ERROR, ""},
382
- {LSM_MATHML_FONT_ERROR, ""},
383
- {LSM_MATHML_FONT_ERROR, ""},
384
- 2,
385
- {
386
- {LSM_MATHML_FONT_CMEX10, "H"},
387
- {LSM_MATHML_FONT_CMEX10, "I"}
388
- }
389
- },
390
- {
391
- "\xe2\x85\x86" /* d */,
392
- 0,
393
- {LSM_MATHML_FONT_ERROR, ""},
394
- {LSM_MATHML_FONT_ERROR, ""},
395
- {LSM_MATHML_FONT_ERROR, ""},
396
- {LSM_MATHML_FONT_ERROR, ""},
397
- 1,
398
- {
399
- {LSM_MATHML_FONT_CMMI10, "d"}
400
- }
401
- },
402
- {
403
- "\xe2\x85\x88" /* i */,
404
- 0,
405
- {LSM_MATHML_FONT_ERROR, ""},
406
- {LSM_MATHML_FONT_ERROR, ""},
407
- {LSM_MATHML_FONT_ERROR, ""},
408
- {LSM_MATHML_FONT_ERROR, ""},
409
- 1,
410
- {
411
- {LSM_MATHML_FONT_CMMI10, "i"}
412
- }
413
- },
414
- {
415
- "\xf0\x9d\x95\x9b" /* j */,
416
- 0,
417
- {LSM_MATHML_FONT_ERROR, ""},
418
- {LSM_MATHML_FONT_ERROR, ""},
419
- {LSM_MATHML_FONT_ERROR, ""},
420
- {LSM_MATHML_FONT_ERROR, ""},
421
- 1,
422
- {
423
- {LSM_MATHML_FONT_CMMI10, "j"}
424
- }
425
- },
426
- {
427
- "\xcc\xb2" /* _ */,
428
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
429
- {LSM_MATHML_FONT_ERROR, ""},
430
- {LSM_MATHML_FONT_ERROR, ""},
431
- {LSM_MATHML_FONT_ERROR, ""},
432
- {LSM_MATHML_FONT_ERROR, ""},
433
- 1,
434
- {
435
- {LSM_MATHML_FONT_DEFAULT, "\xcc\xb2"}
436
- }
437
- },
438
- {
439
- "\xc2\xaf" /* hor */,
440
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
441
- {LSM_MATHML_FONT_ERROR, ""},
442
- {LSM_MATHML_FONT_ERROR, ""},
443
- {LSM_MATHML_FONT_ERROR, ""},
444
- {LSM_MATHML_FONT_ERROR, ""},
445
- 1,
446
- {
447
- {LSM_MATHML_FONT_DEFAULT, "\xc2\xaf"}
448
- }
449
- },
450
- {
451
- "\xef\xb8\xb8" /* ︸ */,
452
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
453
- {LSM_MATHML_FONT_ERROR, ""},
454
- {LSM_MATHML_FONT_ERROR, ""},
455
- {LSM_MATHML_FONT_ERROR, ""},
456
- {LSM_MATHML_FONT_ERROR, ""},
457
- 1,
458
- {
459
- {LSM_MATHML_FONT_DEFAULT, "\xef\xb8\xb8"}
460
- }
461
- },
462
- {
463
- "\xef\xb8\xb7" /* ︷ */,
464
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
465
- {LSM_MATHML_FONT_ERROR, ""},
466
- {LSM_MATHML_FONT_ERROR, ""},
467
- {LSM_MATHML_FONT_ERROR, ""},
468
- {LSM_MATHML_FONT_ERROR, ""},
469
- 1,
470
- {
471
- {LSM_MATHML_FONT_DEFAULT, "\xef\xb8\xb7"}
472
- }
473
- },
474
- {
475
- "\xcd\x9c" /* ˜ */,
476
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
477
- {LSM_MATHML_FONT_ERROR, ""},
478
- {LSM_MATHML_FONT_ERROR, ""},
479
- {LSM_MATHML_FONT_ERROR, ""},
480
- {LSM_MATHML_FONT_ERROR, ""},
481
- 3,
482
- {
483
- {LSM_MATHML_FONT_CMEX10, "e"},
484
- {LSM_MATHML_FONT_CMEX10, "f"},
485
- {LSM_MATHML_FONT_CMEX10, "g"}
486
- }
487
- },
488
- {
489
- "\xe2\x86\x92", /* → */
490
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
491
- {LSM_MATHML_FONT_ERROR, ""},
492
- {LSM_MATHML_FONT_ERROR, ""},
493
- {LSM_MATHML_FONT_ERROR, ""},
494
- {LSM_MATHML_FONT_ERROR, ""},
495
- 1,
496
- {
497
- {LSM_MATHML_FONT_DEFAULT, "\xe2\x86\x92"}
498
- }
499
- },
500
- {
501
- "\xe2\x86\x90", /* ← */
502
- LSM_MATHML_GLYPH_FLAG_STRETCH_HORIZONTAL,
503
- {LSM_MATHML_FONT_ERROR, ""},
504
- {LSM_MATHML_FONT_ERROR, ""},
505
- {LSM_MATHML_FONT_ERROR, ""},
506
- {LSM_MATHML_FONT_ERROR, ""},
507
- 1,
508
- {
509
- {LSM_MATHML_FONT_DEFAULT, "\xe2\x86\x90"}
510
- }
511
- },
512
- {
513
- "\xe2\x86\x91", /* ↑ */
514
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL,
515
- {LSM_MATHML_FONT_ERROR, ""},
516
- {LSM_MATHML_FONT_ERROR, ""},
517
- {LSM_MATHML_FONT_ERROR, ""},
518
- {LSM_MATHML_FONT_ERROR, ""},
519
- 1,
520
- {
521
- {LSM_MATHML_FONT_DEFAULT, "\xe2\x86\x91"}
522
- }
523
- },
524
- {
525
- "\xe2\x86\x93", /* ↓ */
526
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL,
527
- {LSM_MATHML_FONT_ERROR, ""},
528
- {LSM_MATHML_FONT_ERROR, ""},
529
- {LSM_MATHML_FONT_ERROR, ""},
530
- {LSM_MATHML_FONT_ERROR, ""},
531
- 1,
532
- {
533
- {LSM_MATHML_FONT_DEFAULT, "\xe2\x86\x93"}
534
- }
535
- },
536
- {
537
- "-",
538
- 0,
539
- {LSM_MATHML_FONT_ERROR, ""},
540
- {LSM_MATHML_FONT_ERROR, ""},
541
- {LSM_MATHML_FONT_ERROR, ""},
542
- {LSM_MATHML_FONT_ERROR, ""},
543
- 1,
544
- {
545
- {LSM_MATHML_FONT_DEFAULT, "\xe2\x88\x92"}
546
- }
547
- },
548
- {
549
- "|",
550
- LSM_MATHML_GLYPH_FLAG_STRETCH_VERTICAL,
551
- {LSM_MATHML_FONT_ERROR, ""},
552
- {LSM_MATHML_FONT_ERROR, ""},
553
- {LSM_MATHML_FONT_ERROR, ""},
554
- {LSM_MATHML_FONT_ERROR, ""},
555
- 1,
556
- {
557
- {LSM_MATHML_FONT_DEFAULT, "|"}
558
- }
559
- }
560
- };
561
-
562
- static GHashTable *
563
- _get_glyph_table (void)
564
- {
565
- static GHashTable *glyph_table = NULL;
566
- unsigned int i;
567
-
568
- if (glyph_table != NULL)
569
- return glyph_table;
570
-
571
- glyph_table = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL);
572
-
573
- for (i = 0; i < G_N_ELEMENTS (AMS_table); i++)
574
- g_hash_table_insert (glyph_table, (void *) AMS_table[i].utf8, (void *) &AMS_table[i]);
575
-
576
- return glyph_table;
577
- }
578
-
579
- const LsmMathmlOperatorGlyph *
580
- lsm_mathml_glyph_table_find_operator_glyph (const char *text)
581
- {
582
- return g_hash_table_lookup (_get_glyph_table (), text);
583
- }
584
-
585
- double
586
- lsm_mathml_glyph_table_get_operator_slant (const char *text)
587
- {
588
- const LsmMathmlOperatorGlyph *glyph;
589
-
590
- glyph = g_hash_table_lookup (_get_glyph_table (), text);
591
-
592
- if (glyph != NULL)
593
- if (glyph->flags & LSM_MATHML_GLYPH_FLAG_INTEGRAL_SLANT)
594
- return -12.0 / 180.0 * M_PI;
595
-
596
- return 0.0;
597
- }