mathematical 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. checksums.yaml +4 -4
  2. data/ext/mathematical/extconf.rb +14 -0
  3. data/ext/mathematical/itex2MML.h +63 -0
  4. data/ext/mathematical/lasemrender.c +257 -0
  5. data/ext/mathematical/lex.yy.c +6548 -0
  6. data/ext/mathematical/lsm.c +31 -0
  7. data/ext/mathematical/lsm.h +39 -0
  8. data/ext/mathematical/lsmattributes.c +279 -0
  9. data/ext/mathematical/lsmattributes.h +75 -0
  10. data/ext/mathematical/lsmcairo.c +598 -0
  11. data/ext/mathematical/lsmcairo.h +51 -0
  12. data/ext/mathematical/lsmdebug.c +183 -0
  13. data/ext/mathematical/lsmdebug.h +73 -0
  14. data/ext/mathematical/lsmdom.h +43 -0
  15. data/ext/mathematical/lsmdomcharacterdata.c +114 -0
  16. data/ext/mathematical/lsmdomcharacterdata.h +59 -0
  17. data/ext/mathematical/lsmdomdocument.c +255 -0
  18. data/ext/mathematical/lsmdomdocument.h +75 -0
  19. data/ext/mathematical/lsmdomdocumentfragment.c +81 -0
  20. data/ext/mathematical/lsmdomdocumentfragment.h +55 -0
  21. data/ext/mathematical/lsmdomelement.c +148 -0
  22. data/ext/mathematical/lsmdomelement.h +62 -0
  23. data/ext/mathematical/lsmdomentities.c +2166 -0
  24. data/ext/mathematical/lsmdomentities.h +35 -0
  25. data/ext/mathematical/lsmdomenumtypes.c +99 -0
  26. data/ext/mathematical/lsmdomenumtypes.h +26 -0
  27. data/ext/mathematical/lsmdomimplementation.c +82 -0
  28. data/ext/mathematical/lsmdomimplementation.h +41 -0
  29. data/ext/mathematical/lsmdomnamednodemap.c +118 -0
  30. data/ext/mathematical/lsmdomnamednodemap.h +64 -0
  31. data/ext/mathematical/lsmdomnode.c +737 -0
  32. data/ext/mathematical/lsmdomnode.h +122 -0
  33. data/ext/mathematical/lsmdomnodelist.c +70 -0
  34. data/ext/mathematical/lsmdomnodelist.h +58 -0
  35. data/ext/mathematical/lsmdomparser.c +461 -0
  36. data/ext/mathematical/lsmdomparser.h +54 -0
  37. data/ext/mathematical/lsmdomtext.c +82 -0
  38. data/ext/mathematical/lsmdomtext.h +55 -0
  39. data/ext/mathematical/lsmdomtypes.h +44 -0
  40. data/ext/mathematical/lsmdomview.c +422 -0
  41. data/ext/mathematical/lsmdomview.h +94 -0
  42. data/ext/mathematical/lsmitex.c +76 -0
  43. data/ext/mathematical/lsmitex.h +36 -0
  44. data/ext/mathematical/lsmmathml.h +66 -0
  45. data/ext/mathematical/lsmmathmlactionelement.c +93 -0
  46. data/ext/mathematical/lsmmathmlactionelement.h +57 -0
  47. data/ext/mathematical/lsmmathmlaligngroupelement.c +102 -0
  48. data/ext/mathematical/lsmmathmlaligngroupelement.h +56 -0
  49. data/ext/mathematical/lsmmathmlalignmarkelement.c +102 -0
  50. data/ext/mathematical/lsmmathmlalignmarkelement.h +56 -0
  51. data/ext/mathematical/lsmmathmlattributes.c +197 -0
  52. data/ext/mathematical/lsmmathmlattributes.h +126 -0
  53. data/ext/mathematical/lsmmathmldocument.c +304 -0
  54. data/ext/mathematical/lsmmathmldocument.h +61 -0
  55. data/ext/mathematical/lsmmathmlelement.c +491 -0
  56. data/ext/mathematical/lsmmathmlelement.h +107 -0
  57. data/ext/mathematical/lsmmathmlenums.c +429 -0
  58. data/ext/mathematical/lsmmathmlenums.h +182 -0
  59. data/ext/mathematical/lsmmathmlenumtypes.c +666 -0
  60. data/ext/mathematical/lsmmathmlenumtypes.h +90 -0
  61. data/ext/mathematical/lsmmathmlerrorelement.c +58 -0
  62. data/ext/mathematical/lsmmathmlerrorelement.h +56 -0
  63. data/ext/mathematical/lsmmathmlfencedelement.c +178 -0
  64. data/ext/mathematical/lsmmathmlfencedelement.h +65 -0
  65. data/ext/mathematical/lsmmathmlfractionelement.c +253 -0
  66. data/ext/mathematical/lsmmathmlfractionelement.h +62 -0
  67. data/ext/mathematical/lsmmathmlglyphtableams.c +597 -0
  68. data/ext/mathematical/lsmmathmlglyphtableams.h +45 -0
  69. data/ext/mathematical/lsmmathmlitexelement.c +187 -0
  70. data/ext/mathematical/lsmmathmlitexelement.h +60 -0
  71. data/ext/mathematical/lsmmathmllayoututils.c +191 -0
  72. data/ext/mathematical/lsmmathmllayoututils.h +58 -0
  73. data/ext/mathematical/lsmmathmlmathelement.c +204 -0
  74. data/ext/mathematical/lsmmathmlmathelement.h +81 -0
  75. data/ext/mathematical/lsmmathmloperatordictionary.c +3332 -0
  76. data/ext/mathematical/lsmmathmloperatordictionary.h +54 -0
  77. data/ext/mathematical/lsmmathmloperatorelement.c +307 -0
  78. data/ext/mathematical/lsmmathmloperatorelement.h +73 -0
  79. data/ext/mathematical/lsmmathmlpaddedelement.c +58 -0
  80. data/ext/mathematical/lsmmathmlpaddedelement.h +56 -0
  81. data/ext/mathematical/lsmmathmlphantomelement.c +71 -0
  82. data/ext/mathematical/lsmmathmlphantomelement.h +56 -0
  83. data/ext/mathematical/lsmmathmlpresentationcontainer.c +43 -0
  84. data/ext/mathematical/lsmmathmlpresentationcontainer.h +54 -0
  85. data/ext/mathematical/lsmmathmlpresentationtoken.c +303 -0
  86. data/ext/mathematical/lsmmathmlpresentationtoken.h +83 -0
  87. data/ext/mathematical/lsmmathmlradicalelement.c +266 -0
  88. data/ext/mathematical/lsmmathmlradicalelement.h +71 -0
  89. data/ext/mathematical/lsmmathmlrowelement.c +58 -0
  90. data/ext/mathematical/lsmmathmlrowelement.h +56 -0
  91. data/ext/mathematical/lsmmathmlscriptelement.c +282 -0
  92. data/ext/mathematical/lsmmathmlscriptelement.h +78 -0
  93. data/ext/mathematical/lsmmathmlsemanticselement.c +84 -0
  94. data/ext/mathematical/lsmmathmlsemanticselement.h +56 -0
  95. data/ext/mathematical/lsmmathmlspaceelement.c +142 -0
  96. data/ext/mathematical/lsmmathmlspaceelement.h +60 -0
  97. data/ext/mathematical/lsmmathmlstringelement.c +123 -0
  98. data/ext/mathematical/lsmmathmlstringelement.h +58 -0
  99. data/ext/mathematical/lsmmathmlstyle.c +130 -0
  100. data/ext/mathematical/lsmmathmlstyle.h +81 -0
  101. data/ext/mathematical/lsmmathmlstyleelement.c +307 -0
  102. data/ext/mathematical/lsmmathmlstyleelement.h +87 -0
  103. data/ext/mathematical/lsmmathmltablecellelement.c +122 -0
  104. data/ext/mathematical/lsmmathmltablecellelement.h +62 -0
  105. data/ext/mathematical/lsmmathmltableelement.c +545 -0
  106. data/ext/mathematical/lsmmathmltableelement.h +78 -0
  107. data/ext/mathematical/lsmmathmltablerowelement.c +120 -0
  108. data/ext/mathematical/lsmmathmltablerowelement.h +64 -0
  109. data/ext/mathematical/lsmmathmltraits.c +819 -0
  110. data/ext/mathematical/lsmmathmltraits.h +119 -0
  111. data/ext/mathematical/lsmmathmltypes.h +66 -0
  112. data/ext/mathematical/lsmmathmlunderoverelement.c +485 -0
  113. data/ext/mathematical/lsmmathmlunderoverelement.h +82 -0
  114. data/ext/mathematical/lsmmathmlutils.c +170 -0
  115. data/ext/mathematical/lsmmathmlutils.h +50 -0
  116. data/ext/mathematical/lsmmathmlview.c +1048 -0
  117. data/ext/mathematical/lsmmathmlview.h +164 -0
  118. data/ext/mathematical/lsmproperties.c +418 -0
  119. data/ext/mathematical/lsmproperties.h +85 -0
  120. data/ext/mathematical/lsmstr.c +231 -0
  121. data/ext/mathematical/lsmstr.h +114 -0
  122. data/ext/mathematical/lsmsvg.h +67 -0
  123. data/ext/mathematical/lsmsvgaelement.c +73 -0
  124. data/ext/mathematical/lsmsvgaelement.h +55 -0
  125. data/ext/mathematical/lsmsvgattributes.h +118 -0
  126. data/ext/mathematical/lsmsvgcircleelement.c +153 -0
  127. data/ext/mathematical/lsmsvgcircleelement.h +59 -0
  128. data/ext/mathematical/lsmsvgclippathelement.c +134 -0
  129. data/ext/mathematical/lsmsvgclippathelement.h +59 -0
  130. data/ext/mathematical/lsmsvgcolors.c +212 -0
  131. data/ext/mathematical/lsmsvgcolors.h +39 -0
  132. data/ext/mathematical/lsmsvgdefselement.c +74 -0
  133. data/ext/mathematical/lsmsvgdefselement.h +55 -0
  134. data/ext/mathematical/lsmsvgdocument.c +288 -0
  135. data/ext/mathematical/lsmsvgdocument.h +64 -0
  136. data/ext/mathematical/lsmsvgelement.c +373 -0
  137. data/ext/mathematical/lsmsvgelement.h +81 -0
  138. data/ext/mathematical/lsmsvgellipseelement.c +158 -0
  139. data/ext/mathematical/lsmsvgellipseelement.h +60 -0
  140. data/ext/mathematical/lsmsvgenums.c +544 -0
  141. data/ext/mathematical/lsmsvgenums.h +357 -0
  142. data/ext/mathematical/lsmsvgenumtypes.c +1083 -0
  143. data/ext/mathematical/lsmsvgenumtypes.h +111 -0
  144. data/ext/mathematical/lsmsvgfilterblend.c +105 -0
  145. data/ext/mathematical/lsmsvgfilterblend.h +58 -0
  146. data/ext/mathematical/lsmsvgfiltercomposite.c +109 -0
  147. data/ext/mathematical/lsmsvgfiltercomposite.h +58 -0
  148. data/ext/mathematical/lsmsvgfilterelement.c +266 -0
  149. data/ext/mathematical/lsmsvgfilterelement.h +66 -0
  150. data/ext/mathematical/lsmsvgfilterflood.c +86 -0
  151. data/ext/mathematical/lsmsvgfilterflood.h +55 -0
  152. data/ext/mathematical/lsmsvgfiltergaussianblur.c +114 -0
  153. data/ext/mathematical/lsmsvgfiltergaussianblur.h +57 -0
  154. data/ext/mathematical/lsmsvgfiltermerge.c +98 -0
  155. data/ext/mathematical/lsmsvgfiltermerge.h +55 -0
  156. data/ext/mathematical/lsmsvgfiltermergenode.c +87 -0
  157. data/ext/mathematical/lsmsvgfiltermergenode.h +57 -0
  158. data/ext/mathematical/lsmsvgfilteroffset.c +112 -0
  159. data/ext/mathematical/lsmsvgfilteroffset.h +58 -0
  160. data/ext/mathematical/lsmsvgfilterprimitive.c +168 -0
  161. data/ext/mathematical/lsmsvgfilterprimitive.h +66 -0
  162. data/ext/mathematical/lsmsvgfilterspecularlighting.c +127 -0
  163. data/ext/mathematical/lsmsvgfilterspecularlighting.h +60 -0
  164. data/ext/mathematical/lsmsvgfiltersurface.c +455 -0
  165. data/ext/mathematical/lsmsvgfiltersurface.h +66 -0
  166. data/ext/mathematical/lsmsvgfiltertile.c +102 -0
  167. data/ext/mathematical/lsmsvgfiltertile.h +57 -0
  168. data/ext/mathematical/lsmsvggelement.c +73 -0
  169. data/ext/mathematical/lsmsvggelement.h +55 -0
  170. data/ext/mathematical/lsmsvggradientelement.c +151 -0
  171. data/ext/mathematical/lsmsvggradientelement.h +68 -0
  172. data/ext/mathematical/lsmsvgimageelement.c +261 -0
  173. data/ext/mathematical/lsmsvgimageelement.h +67 -0
  174. data/ext/mathematical/lsmsvglength.c +152 -0
  175. data/ext/mathematical/lsmsvglength.h +65 -0
  176. data/ext/mathematical/lsmsvglineargradientelement.c +271 -0
  177. data/ext/mathematical/lsmsvglineargradientelement.h +60 -0
  178. data/ext/mathematical/lsmsvglineelement.c +153 -0
  179. data/ext/mathematical/lsmsvglineelement.h +60 -0
  180. data/ext/mathematical/lsmsvgmarkerelement.c +266 -0
  181. data/ext/mathematical/lsmsvgmarkerelement.h +74 -0
  182. data/ext/mathematical/lsmsvgmaskelement.c +232 -0
  183. data/ext/mathematical/lsmsvgmaskelement.h +64 -0
  184. data/ext/mathematical/lsmsvgmatrix.c +205 -0
  185. data/ext/mathematical/lsmsvgmatrix.h +59 -0
  186. data/ext/mathematical/lsmsvgpathelement.c +115 -0
  187. data/ext/mathematical/lsmsvgpathelement.h +59 -0
  188. data/ext/mathematical/lsmsvgpatternelement.c +398 -0
  189. data/ext/mathematical/lsmsvgpatternelement.h +69 -0
  190. data/ext/mathematical/lsmsvgpolygonelement.c +106 -0
  191. data/ext/mathematical/lsmsvgpolygonelement.h +57 -0
  192. data/ext/mathematical/lsmsvgpolylineelement.c +106 -0
  193. data/ext/mathematical/lsmsvgpolylineelement.h +57 -0
  194. data/ext/mathematical/lsmsvgradialgradientelement.c +323 -0
  195. data/ext/mathematical/lsmsvgradialgradientelement.h +61 -0
  196. data/ext/mathematical/lsmsvgrectelement.c +184 -0
  197. data/ext/mathematical/lsmsvgrectelement.h +62 -0
  198. data/ext/mathematical/lsmsvgstopelement.c +106 -0
  199. data/ext/mathematical/lsmsvgstopelement.h +57 -0
  200. data/ext/mathematical/lsmsvgstyle.c +560 -0
  201. data/ext/mathematical/lsmsvgstyle.h +217 -0
  202. data/ext/mathematical/lsmsvgsvgelement.c +260 -0
  203. data/ext/mathematical/lsmsvgsvgelement.h +71 -0
  204. data/ext/mathematical/lsmsvgswitchelement.c +103 -0
  205. data/ext/mathematical/lsmsvgswitchelement.h +55 -0
  206. data/ext/mathematical/lsmsvgsymbolelement.c +74 -0
  207. data/ext/mathematical/lsmsvgsymbolelement.h +55 -0
  208. data/ext/mathematical/lsmsvgtextelement.c +203 -0
  209. data/ext/mathematical/lsmsvgtextelement.h +60 -0
  210. data/ext/mathematical/lsmsvgtraits.c +1232 -0
  211. data/ext/mathematical/lsmsvgtraits.h +104 -0
  212. data/ext/mathematical/lsmsvgtransformable.c +106 -0
  213. data/ext/mathematical/lsmsvgtransformable.h +54 -0
  214. data/ext/mathematical/lsmsvgtspanelement.c +174 -0
  215. data/ext/mathematical/lsmsvgtspanelement.h +60 -0
  216. data/ext/mathematical/lsmsvgtypes.h +77 -0
  217. data/ext/mathematical/lsmsvguseelement.c +237 -0
  218. data/ext/mathematical/lsmsvguseelement.h +69 -0
  219. data/ext/mathematical/lsmsvgview.c +2583 -0
  220. data/ext/mathematical/lsmsvgview.h +179 -0
  221. data/ext/mathematical/lsmtraits.c +119 -0
  222. data/ext/mathematical/lsmtraits.h +49 -0
  223. data/ext/mathematical/lsmtypes.h +36 -0
  224. data/ext/mathematical/lsmutils.c +54 -0
  225. data/ext/mathematical/lsmutils.h +56 -0
  226. data/ext/mathematical/mathematical.c +145 -0
  227. data/ext/mathematical/y.tab.c +6179 -0
  228. data/ext/mathematical/y.tab.h +389 -0
  229. data/lib/mathematical/version.rb +1 -1
  230. data/mathematical.gemspec +8 -6
  231. data/test/mathematical/basic_test.rb +9 -0
  232. data/test/mathematical/fixtures/after/brackets_display.html +1 -0
  233. data/test/mathematical/fixtures/after/compliance_accents.html +17 -0
  234. data/test/mathematical/fixtures/after/compliance_arrows.html +71 -0
  235. data/test/mathematical/fixtures/after/compliance_colors.html +4 -0
  236. data/test/mathematical/fixtures/after/compliance_greek_letters.html +42 -0
  237. data/test/mathematical/fixtures/after/compliance_large_math.html +19 -0
  238. data/test/mathematical/fixtures/after/compliance_log_symbols.html +34 -0
  239. data/test/mathematical/fixtures/after/compliance_operators.html +262 -0
  240. data/test/mathematical/fixtures/after/dollar_sign_inline.html +1 -0
  241. data/test/mathematical/fixtures/after/equation_display.html +1 -0
  242. data/test/mathematical/fixtures/after/multiple_dollar_inline.html +1 -0
  243. data/test/mathematical/fixtures/after/parens_inline.html +1 -0
  244. data/test/mathematical/fixtures/before/brackets_display.text +1 -0
  245. data/test/mathematical/fixtures/before/compliance_accents.text +17 -0
  246. data/test/mathematical/fixtures/before/compliance_arrows.text +71 -0
  247. data/test/mathematical/fixtures/before/compliance_colors.text +4 -0
  248. data/test/mathematical/fixtures/before/compliance_greek_letters.text +42 -0
  249. data/test/mathematical/fixtures/before/compliance_large_math.text +19 -0
  250. data/test/mathematical/fixtures/before/compliance_log_symbols.text +34 -0
  251. data/test/mathematical/fixtures/before/compliance_operators.text +262 -0
  252. data/test/mathematical/fixtures/before/dollar_sign_inline.text +1 -0
  253. data/test/mathematical/fixtures/before/equation_display.text +1 -0
  254. data/test/mathematical/fixtures/before/multiple_dollar_inline.text +1 -0
  255. data/test/mathematical/fixtures/before/parens_inline.text +1 -0
  256. data/test/mathematical/fixtures/performance/big_file.text +1767 -0
  257. data/test/mathematical/fixtures_test.rb +45 -0
  258. data/test/mathematical/maliciousness_test.rb +45 -0
  259. data/test/mathematical/performance_test.rb +15 -0
  260. data/test/test_helper.rb +5 -0
  261. metadata +301 -14
  262. data/lib/mathematical.bundle +0 -0
  263. data/lib/mathematical/mathematical.bundle +0 -0
@@ -0,0 +1,94 @@
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_DOM_VIEW_H
25
+ #define LSM_DOM_VIEW_H
26
+
27
+ #include <lsmdomtypes.h>
28
+ #include <lsmutils.h>
29
+ #include <cairo.h>
30
+ #include <pango/pangocairo.h>
31
+
32
+ G_BEGIN_DECLS
33
+
34
+ #define LSM_DOM_VIEW_DEFAULT_RESOLUTION 72.0
35
+ #define LSM_DOM_VIEW_DEFAULT_VIEWBOX_WIDTH 320.0
36
+ #define LSM_DOM_VIEW_DEFAULT_VIEWBOX_HEIGHT 200.0
37
+
38
+ #define LSM_TYPE_DOM_VIEW (lsm_dom_view_get_type ())
39
+ #define LSM_DOM_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_DOM_VIEW, LsmDomView))
40
+ #define LSM_DOM_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_DOM_VIEW, LsmDomViewClass))
41
+ #define LSM_IS_DOM_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_DOM_VIEW))
42
+ #define LSM_IS_DOM_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_DOM_VIEW))
43
+ #define LSM_DOM_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_DOM_VIEW, LsmDomViewClass))
44
+
45
+ typedef struct _LsmDomViewClass LsmDomViewClass;
46
+
47
+ struct _LsmDomView {
48
+ GObject object;
49
+
50
+ LsmDomDocument * document;
51
+
52
+ PangoFontDescription * font_description;
53
+ PangoLayout * pango_layout;
54
+ PangoLayout * measure_pango_layout;
55
+ cairo_t * cairo;
56
+ gboolean is_vector;
57
+
58
+ double resolution_ppi;
59
+ LsmBox viewport_pt;
60
+ };
61
+
62
+ struct _LsmDomViewClass {
63
+ GObjectClass parent_class;
64
+
65
+ GType document_type;
66
+
67
+ void (*measure) (LsmDomView *view, double *width, double *height, double *baseline);
68
+ void (*render) (LsmDomView *view);
69
+ void (*set_debug) (LsmDomView *view, const char *feature, gboolean enable);
70
+ };
71
+
72
+ GType lsm_dom_view_get_type (void);
73
+
74
+ double lsm_dom_view_get_resolution (LsmDomView *self);
75
+ void lsm_dom_view_set_resolution (LsmDomView *self, double ppi);
76
+
77
+ void lsm_dom_view_set_viewport (LsmDomView *self, const LsmBox *viewport_pt);
78
+ void lsm_dom_view_set_viewport_pixels(LsmDomView *self, const LsmBox *viewport);
79
+ LsmBox lsm_dom_view_get_viewport (LsmDomView *self);
80
+ LsmBox lsm_dom_view_get_viewport_pixels(LsmDomView *self);
81
+
82
+ void lsm_dom_view_render (LsmDomView *view, cairo_t *cairo, double x, double y);
83
+
84
+ void lsm_dom_view_get_size (LsmDomView *view, double *width, double *height, double *baseline);
85
+ void lsm_dom_view_get_size_pixels (LsmDomView *view, unsigned int *width, unsigned int *height,
86
+ unsigned int *baseline);
87
+
88
+ void lsm_dom_view_set_debug (LsmDomView *view, const char *feature, gboolean enable);
89
+
90
+ void lsm_dom_view_set_document (LsmDomView *view, LsmDomDocument *document);
91
+
92
+ G_END_DECLS
93
+
94
+ #endif
@@ -0,0 +1,76 @@
1
+ /* Lasem - SVG and Mathml library
2
+ *
3
+ * Copyright © 2013 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 <lsmitex.h>
25
+ #include <string.h>
26
+ #include "itex2MML.h"
27
+
28
+ /**
29
+ * lsm_itex_to_mathml:
30
+ * @itex: (allow-none): an itex string
31
+ * @size: itex string length, -1 if unknown
32
+ *
33
+ * Converts an itex string to a Mathml representation.
34
+ *
35
+ * Return value: a newly allocated string, NULL on parse error. The returned data must be freed using @lsm_itex_free_mathml_buffer.
36
+ */
37
+
38
+ char *
39
+ lsm_itex_to_mathml (const char *itex, int size)
40
+ {
41
+ char *mathml;
42
+
43
+ if (itex == NULL)
44
+ return NULL;
45
+
46
+ if (size < 0)
47
+ size = strlen (itex);
48
+
49
+ mathml = itex2MML_parse (itex, size);
50
+ if (mathml == NULL)
51
+ return NULL;
52
+
53
+ if (mathml[0] == '\0') {
54
+ itex2MML_free_string (mathml);
55
+ return NULL;
56
+ }
57
+
58
+ return mathml;
59
+ }
60
+
61
+ /**
62
+ * lsm_itex_free_mathml_buffer:
63
+ * @mathml: (allow-none): a mathml buffer
64
+ *
65
+ * Free the buffer returned by @lsm_itex_to_mathml.
66
+ */
67
+
68
+ void
69
+ lsm_itex_free_mathml_buffer (char *mathml)
70
+ {
71
+ if (mathml == NULL)
72
+ return;
73
+
74
+ itex2MML_free_string (mathml);
75
+ }
76
+
@@ -0,0 +1,36 @@
1
+ /* Lasem - SVG and Mathml library
2
+ *
3
+ * Copyright © 2013 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_ITEX_H
25
+ #define LSM_ITEX_H
26
+
27
+ #include <lsmtypes.h>
28
+
29
+ G_BEGIN_DECLS
30
+
31
+ char * lsm_itex_to_mathml (const char *itex, int size);
32
+ void lsm_itex_free_mathml_buffer (char *mathml);
33
+
34
+ G_END_DECLS
35
+
36
+ #endif
@@ -0,0 +1,66 @@
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_H
25
+ #define LSM_MATHML_H
26
+
27
+ #include <lsmdom.h>
28
+
29
+ #include <lsmmathmltypes.h>
30
+
31
+ #include <lsmmathmlenums.h>
32
+ #include <lsmmathmltraits.h>
33
+ #include <lsmmathmlattributes.h>
34
+ #include <lsmmathmloperatordictionary.h>
35
+ #include <lsmmathmldocument.h>
36
+ #include <lsmmathmlelement.h>
37
+ #include <lsmmathmlphantomelement.h>
38
+ #include <lsmmathmlmathelement.h>
39
+ #include <lsmmathmltableelement.h>
40
+ #include <lsmmathmltablerowelement.h>
41
+ #include <lsmmathmltablecellelement.h>
42
+ #include <lsmmathmlspaceelement.h>
43
+ #include <lsmmathmlradicalelement.h>
44
+ #include <lsmmathmlscriptelement.h>
45
+ #include <lsmmathmlfractionelement.h>
46
+ #include <lsmmathmlunderoverelement.h>
47
+ #include <lsmmathmlpresentationtoken.h>
48
+ #include <lsmmathmloperatorelement.h>
49
+ #include <lsmmathmlstringelement.h>
50
+ #include <lsmmathmlpresentationcontainer.h>
51
+ #include <lsmmathmlstyleelement.h>
52
+ #include <lsmmathmlrowelement.h>
53
+ #include <lsmmathmlfencedelement.h>
54
+ #include <lsmmathmlpaddedelement.h>
55
+ #include <lsmmathmlerrorelement.h>
56
+ #include <lsmmathmlactionelement.h>
57
+ #include <lsmmathmlstyle.h>
58
+ #include <lsmmathmlview.h>
59
+ #include <lsmmathmlglyphtableams.h>
60
+ #include <lsmmathmlalignmarkelement.h>
61
+ #include <lsmmathmlaligngroupelement.h>
62
+ #include <lsmmathmlitexelement.h>
63
+ #include <lsmmathmlutils.h>
64
+ #include <lsmmathmllayoututils.h>
65
+
66
+ #endif
@@ -0,0 +1,93 @@
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 <lsmmathmlactionelement.h>
25
+
26
+ /* LsmDomNode implementation */
27
+
28
+ static const char *
29
+ lsm_mathml_action_element_get_node_name (LsmDomNode *node)
30
+ {
31
+ return "maction";
32
+ }
33
+
34
+ /* LsmMathmlElement implementation */
35
+
36
+ static const LsmMathmlBbox *
37
+ lsm_mathml_action_element_measure (LsmMathmlElement *self, LsmMathmlView *view, const LsmMathmlBbox *bbox)
38
+ {
39
+ if (LSM_DOM_NODE (self)->first_child != NULL)
40
+ self->bbox = *lsm_mathml_element_measure (LSM_MATHML_ELEMENT (LSM_DOM_NODE (self)->first_child),
41
+ view, bbox);
42
+ else
43
+ self->bbox = lsm_mathml_bbox_null;
44
+
45
+ return &self->bbox;
46
+ }
47
+
48
+ static void
49
+ lsm_mathml_action_element_layout (LsmMathmlElement *self, LsmMathmlView *view,
50
+ double x, double y, const LsmMathmlBbox *bbox)
51
+ {
52
+ if (LSM_DOM_NODE (self)->first_child != NULL)
53
+ lsm_mathml_element_layout (LSM_MATHML_ELEMENT (LSM_DOM_NODE (self)->first_child),
54
+ view, x, y, bbox);
55
+ }
56
+
57
+ static void
58
+ lsm_mathml_action_element_render (LsmMathmlElement *self, LsmMathmlView *view)
59
+ {
60
+ if (LSM_DOM_NODE (self)->first_child != NULL)
61
+ lsm_mathml_element_render (LSM_MATHML_ELEMENT (LSM_DOM_NODE (self)->first_child), view);
62
+ }
63
+
64
+ /* LsmMathmlActionElement implementation */
65
+
66
+ LsmDomNode *
67
+ lsm_mathml_action_element_new (void)
68
+ {
69
+ return g_object_new (LSM_TYPE_MATHML_ACTION_ELEMENT, NULL);
70
+ }
71
+
72
+ static void
73
+ lsm_mathml_action_element_init (LsmMathmlActionElement *element)
74
+ {
75
+ }
76
+
77
+ /* LsmMathmlActionElement class */
78
+
79
+ static void
80
+ lsm_mathml_action_element_class_init (LsmMathmlActionElementClass *m_action_class)
81
+ {
82
+ LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (m_action_class);
83
+ LsmMathmlElementClass *m_element_class = LSM_MATHML_ELEMENT_CLASS (m_action_class);
84
+
85
+ d_node_class->get_node_name = lsm_mathml_action_element_get_node_name;
86
+
87
+ m_element_class->measure = lsm_mathml_action_element_measure;
88
+ m_element_class->layout = lsm_mathml_action_element_layout;
89
+ m_element_class->render = lsm_mathml_action_element_render;
90
+ }
91
+
92
+ G_DEFINE_TYPE (LsmMathmlActionElement, lsm_mathml_action_element, LSM_TYPE_MATHML_PRESENTATION_CONTAINER)
93
+
@@ -0,0 +1,57 @@
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_ACTION_ELEMENT_H
25
+ #define LSM_MATHML_ACTION_ELEMENT_H
26
+
27
+ #include <lsmmathmltypes.h>
28
+ #include <lsmmathmlpresentationcontainer.h>
29
+
30
+ G_BEGIN_DECLS
31
+
32
+ #define LSM_TYPE_MATHML_ACTION_ELEMENT (lsm_mathml_action_element_get_type ())
33
+ #define LSM_MATHML_ACTION_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_MATHML_ACTION_ELEMENT, LsmMathmlActionElement))
34
+ #define LSM_MATHML_ACTION_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_MATHML_ACTION_ELEMENT, LsmMathmlActionElementClass))
35
+ #define LSM_IS_MATHML_ACTION_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_MATHML_ACTION_ELEMENT))
36
+ #define LSM_IS_MATHML_ACTION_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_MATHML_ACTION_ELEMENT))
37
+ #define LSM_MATHML_ACTION_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_MATHML_ACTION_ELEMENT, LsmMathmlActionElementClass))
38
+
39
+ typedef struct _LsmMathmlActionElementClass LsmMathmlActionElementClass;
40
+
41
+ struct _LsmMathmlActionElement {
42
+ LsmMathmlPresentationContainer presentation_container;
43
+ };
44
+
45
+ struct _LsmMathmlActionElementClass {
46
+ LsmMathmlPresentationContainerClass parent_class;
47
+ };
48
+
49
+ GType lsm_mathml_action_element_get_type (void);
50
+
51
+ LsmDomNode *lsm_mathml_action_element_new (void);
52
+
53
+ G_END_DECLS
54
+
55
+ #endif
56
+
57
+
@@ -0,0 +1,102 @@
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 <lsmmathmlaligngroupelement.h>
25
+ #include <lsmmathmlview.h>
26
+
27
+ static GObjectClass *parent_class;
28
+
29
+ /* GdomNode implementation */
30
+
31
+ static const char *
32
+ lsm_mathml_align_group_get_node_name (LsmDomNode *node)
33
+ {
34
+ return "maligngroup";
35
+ }
36
+
37
+ static gboolean
38
+ lsm_mathml_align_group_element_can_append_child (LsmDomNode *self, LsmDomNode *child)
39
+ {
40
+ return FALSE;
41
+ }
42
+
43
+ /* LsmMathmlElement implementation */
44
+
45
+ static void
46
+ lsm_mathml_align_group_element_update (LsmMathmlElement *self, LsmMathmlStyle *style)
47
+ {
48
+ }
49
+
50
+ static const LsmMathmlBbox *
51
+ lsm_mathml_align_group_element_measure (LsmMathmlElement *self, LsmMathmlView *view, const LsmMathmlBbox *bbox)
52
+ {
53
+ self->bbox = lsm_mathml_bbox_null;
54
+
55
+ return &self->bbox;
56
+ }
57
+
58
+ static void
59
+ lsm_mathml_align_group_element_layout (LsmMathmlElement *self, LsmMathmlView *view,
60
+ double x, double y, const LsmMathmlBbox *bbox)
61
+ {
62
+ }
63
+
64
+ static void
65
+ lsm_mathml_align_group_element_render (LsmMathmlElement *element, LsmMathmlView *view)
66
+ {
67
+ }
68
+
69
+ /* LsmMathmlAlignGroupElement implementation */
70
+
71
+ LsmDomNode *
72
+ lsm_mathml_align_group_element_new (void)
73
+ {
74
+ return g_object_new (LSM_TYPE_MATHML_ALIGN_GROUP_ELEMENT, NULL);
75
+ }
76
+
77
+ static void
78
+ lsm_mathml_align_group_element_init (LsmMathmlAlignGroupElement *self)
79
+ {
80
+ }
81
+
82
+ /* LsmMathmlAlignGroupElement class */
83
+
84
+ static void
85
+ lsm_mathml_align_group_element_class_init (LsmMathmlAlignGroupElementClass *align_group_class)
86
+ {
87
+ LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (align_group_class);
88
+ LsmMathmlElementClass *m_element_class = LSM_MATHML_ELEMENT_CLASS (align_group_class);
89
+
90
+ parent_class = g_type_class_peek_parent (align_group_class);
91
+
92
+ d_node_class->get_node_name = lsm_mathml_align_group_get_node_name;
93
+ d_node_class->can_append_child = lsm_mathml_align_group_element_can_append_child;
94
+
95
+ m_element_class->update = lsm_mathml_align_group_element_update;
96
+ m_element_class->measure = lsm_mathml_align_group_element_measure;
97
+ m_element_class->layout = lsm_mathml_align_group_element_layout;
98
+ m_element_class->render = lsm_mathml_align_group_element_render;
99
+ m_element_class->is_inferred_row = NULL;
100
+ }
101
+
102
+ G_DEFINE_TYPE (LsmMathmlAlignGroupElement, lsm_mathml_align_group_element, LSM_TYPE_MATHML_ELEMENT)