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.
- checksums.yaml +4 -4
- data/ext/mathematical/extconf.rb +14 -0
- data/ext/mathematical/itex2MML.h +63 -0
- data/ext/mathematical/lasemrender.c +257 -0
- data/ext/mathematical/lex.yy.c +6548 -0
- data/ext/mathematical/lsm.c +31 -0
- data/ext/mathematical/lsm.h +39 -0
- data/ext/mathematical/lsmattributes.c +279 -0
- data/ext/mathematical/lsmattributes.h +75 -0
- data/ext/mathematical/lsmcairo.c +598 -0
- data/ext/mathematical/lsmcairo.h +51 -0
- data/ext/mathematical/lsmdebug.c +183 -0
- data/ext/mathematical/lsmdebug.h +73 -0
- data/ext/mathematical/lsmdom.h +43 -0
- data/ext/mathematical/lsmdomcharacterdata.c +114 -0
- data/ext/mathematical/lsmdomcharacterdata.h +59 -0
- data/ext/mathematical/lsmdomdocument.c +255 -0
- data/ext/mathematical/lsmdomdocument.h +75 -0
- data/ext/mathematical/lsmdomdocumentfragment.c +81 -0
- data/ext/mathematical/lsmdomdocumentfragment.h +55 -0
- data/ext/mathematical/lsmdomelement.c +148 -0
- data/ext/mathematical/lsmdomelement.h +62 -0
- data/ext/mathematical/lsmdomentities.c +2166 -0
- data/ext/mathematical/lsmdomentities.h +35 -0
- data/ext/mathematical/lsmdomenumtypes.c +99 -0
- data/ext/mathematical/lsmdomenumtypes.h +26 -0
- data/ext/mathematical/lsmdomimplementation.c +82 -0
- data/ext/mathematical/lsmdomimplementation.h +41 -0
- data/ext/mathematical/lsmdomnamednodemap.c +118 -0
- data/ext/mathematical/lsmdomnamednodemap.h +64 -0
- data/ext/mathematical/lsmdomnode.c +737 -0
- data/ext/mathematical/lsmdomnode.h +122 -0
- data/ext/mathematical/lsmdomnodelist.c +70 -0
- data/ext/mathematical/lsmdomnodelist.h +58 -0
- data/ext/mathematical/lsmdomparser.c +461 -0
- data/ext/mathematical/lsmdomparser.h +54 -0
- data/ext/mathematical/lsmdomtext.c +82 -0
- data/ext/mathematical/lsmdomtext.h +55 -0
- data/ext/mathematical/lsmdomtypes.h +44 -0
- data/ext/mathematical/lsmdomview.c +422 -0
- data/ext/mathematical/lsmdomview.h +94 -0
- data/ext/mathematical/lsmitex.c +76 -0
- data/ext/mathematical/lsmitex.h +36 -0
- data/ext/mathematical/lsmmathml.h +66 -0
- data/ext/mathematical/lsmmathmlactionelement.c +93 -0
- data/ext/mathematical/lsmmathmlactionelement.h +57 -0
- data/ext/mathematical/lsmmathmlaligngroupelement.c +102 -0
- data/ext/mathematical/lsmmathmlaligngroupelement.h +56 -0
- data/ext/mathematical/lsmmathmlalignmarkelement.c +102 -0
- data/ext/mathematical/lsmmathmlalignmarkelement.h +56 -0
- data/ext/mathematical/lsmmathmlattributes.c +197 -0
- data/ext/mathematical/lsmmathmlattributes.h +126 -0
- data/ext/mathematical/lsmmathmldocument.c +304 -0
- data/ext/mathematical/lsmmathmldocument.h +61 -0
- data/ext/mathematical/lsmmathmlelement.c +491 -0
- data/ext/mathematical/lsmmathmlelement.h +107 -0
- data/ext/mathematical/lsmmathmlenums.c +429 -0
- data/ext/mathematical/lsmmathmlenums.h +182 -0
- data/ext/mathematical/lsmmathmlenumtypes.c +666 -0
- data/ext/mathematical/lsmmathmlenumtypes.h +90 -0
- data/ext/mathematical/lsmmathmlerrorelement.c +58 -0
- data/ext/mathematical/lsmmathmlerrorelement.h +56 -0
- data/ext/mathematical/lsmmathmlfencedelement.c +178 -0
- data/ext/mathematical/lsmmathmlfencedelement.h +65 -0
- data/ext/mathematical/lsmmathmlfractionelement.c +253 -0
- data/ext/mathematical/lsmmathmlfractionelement.h +62 -0
- data/ext/mathematical/lsmmathmlglyphtableams.c +597 -0
- data/ext/mathematical/lsmmathmlglyphtableams.h +45 -0
- data/ext/mathematical/lsmmathmlitexelement.c +187 -0
- data/ext/mathematical/lsmmathmlitexelement.h +60 -0
- data/ext/mathematical/lsmmathmllayoututils.c +191 -0
- data/ext/mathematical/lsmmathmllayoututils.h +58 -0
- data/ext/mathematical/lsmmathmlmathelement.c +204 -0
- data/ext/mathematical/lsmmathmlmathelement.h +81 -0
- data/ext/mathematical/lsmmathmloperatordictionary.c +3332 -0
- data/ext/mathematical/lsmmathmloperatordictionary.h +54 -0
- data/ext/mathematical/lsmmathmloperatorelement.c +307 -0
- data/ext/mathematical/lsmmathmloperatorelement.h +73 -0
- data/ext/mathematical/lsmmathmlpaddedelement.c +58 -0
- data/ext/mathematical/lsmmathmlpaddedelement.h +56 -0
- data/ext/mathematical/lsmmathmlphantomelement.c +71 -0
- data/ext/mathematical/lsmmathmlphantomelement.h +56 -0
- data/ext/mathematical/lsmmathmlpresentationcontainer.c +43 -0
- data/ext/mathematical/lsmmathmlpresentationcontainer.h +54 -0
- data/ext/mathematical/lsmmathmlpresentationtoken.c +303 -0
- data/ext/mathematical/lsmmathmlpresentationtoken.h +83 -0
- data/ext/mathematical/lsmmathmlradicalelement.c +266 -0
- data/ext/mathematical/lsmmathmlradicalelement.h +71 -0
- data/ext/mathematical/lsmmathmlrowelement.c +58 -0
- data/ext/mathematical/lsmmathmlrowelement.h +56 -0
- data/ext/mathematical/lsmmathmlscriptelement.c +282 -0
- data/ext/mathematical/lsmmathmlscriptelement.h +78 -0
- data/ext/mathematical/lsmmathmlsemanticselement.c +84 -0
- data/ext/mathematical/lsmmathmlsemanticselement.h +56 -0
- data/ext/mathematical/lsmmathmlspaceelement.c +142 -0
- data/ext/mathematical/lsmmathmlspaceelement.h +60 -0
- data/ext/mathematical/lsmmathmlstringelement.c +123 -0
- data/ext/mathematical/lsmmathmlstringelement.h +58 -0
- data/ext/mathematical/lsmmathmlstyle.c +130 -0
- data/ext/mathematical/lsmmathmlstyle.h +81 -0
- data/ext/mathematical/lsmmathmlstyleelement.c +307 -0
- data/ext/mathematical/lsmmathmlstyleelement.h +87 -0
- data/ext/mathematical/lsmmathmltablecellelement.c +122 -0
- data/ext/mathematical/lsmmathmltablecellelement.h +62 -0
- data/ext/mathematical/lsmmathmltableelement.c +545 -0
- data/ext/mathematical/lsmmathmltableelement.h +78 -0
- data/ext/mathematical/lsmmathmltablerowelement.c +120 -0
- data/ext/mathematical/lsmmathmltablerowelement.h +64 -0
- data/ext/mathematical/lsmmathmltraits.c +819 -0
- data/ext/mathematical/lsmmathmltraits.h +119 -0
- data/ext/mathematical/lsmmathmltypes.h +66 -0
- data/ext/mathematical/lsmmathmlunderoverelement.c +485 -0
- data/ext/mathematical/lsmmathmlunderoverelement.h +82 -0
- data/ext/mathematical/lsmmathmlutils.c +170 -0
- data/ext/mathematical/lsmmathmlutils.h +50 -0
- data/ext/mathematical/lsmmathmlview.c +1048 -0
- data/ext/mathematical/lsmmathmlview.h +164 -0
- data/ext/mathematical/lsmproperties.c +418 -0
- data/ext/mathematical/lsmproperties.h +85 -0
- data/ext/mathematical/lsmstr.c +231 -0
- data/ext/mathematical/lsmstr.h +114 -0
- data/ext/mathematical/lsmsvg.h +67 -0
- data/ext/mathematical/lsmsvgaelement.c +73 -0
- data/ext/mathematical/lsmsvgaelement.h +55 -0
- data/ext/mathematical/lsmsvgattributes.h +118 -0
- data/ext/mathematical/lsmsvgcircleelement.c +153 -0
- data/ext/mathematical/lsmsvgcircleelement.h +59 -0
- data/ext/mathematical/lsmsvgclippathelement.c +134 -0
- data/ext/mathematical/lsmsvgclippathelement.h +59 -0
- data/ext/mathematical/lsmsvgcolors.c +212 -0
- data/ext/mathematical/lsmsvgcolors.h +39 -0
- data/ext/mathematical/lsmsvgdefselement.c +74 -0
- data/ext/mathematical/lsmsvgdefselement.h +55 -0
- data/ext/mathematical/lsmsvgdocument.c +288 -0
- data/ext/mathematical/lsmsvgdocument.h +64 -0
- data/ext/mathematical/lsmsvgelement.c +373 -0
- data/ext/mathematical/lsmsvgelement.h +81 -0
- data/ext/mathematical/lsmsvgellipseelement.c +158 -0
- data/ext/mathematical/lsmsvgellipseelement.h +60 -0
- data/ext/mathematical/lsmsvgenums.c +544 -0
- data/ext/mathematical/lsmsvgenums.h +357 -0
- data/ext/mathematical/lsmsvgenumtypes.c +1083 -0
- data/ext/mathematical/lsmsvgenumtypes.h +111 -0
- data/ext/mathematical/lsmsvgfilterblend.c +105 -0
- data/ext/mathematical/lsmsvgfilterblend.h +58 -0
- data/ext/mathematical/lsmsvgfiltercomposite.c +109 -0
- data/ext/mathematical/lsmsvgfiltercomposite.h +58 -0
- data/ext/mathematical/lsmsvgfilterelement.c +266 -0
- data/ext/mathematical/lsmsvgfilterelement.h +66 -0
- data/ext/mathematical/lsmsvgfilterflood.c +86 -0
- data/ext/mathematical/lsmsvgfilterflood.h +55 -0
- data/ext/mathematical/lsmsvgfiltergaussianblur.c +114 -0
- data/ext/mathematical/lsmsvgfiltergaussianblur.h +57 -0
- data/ext/mathematical/lsmsvgfiltermerge.c +98 -0
- data/ext/mathematical/lsmsvgfiltermerge.h +55 -0
- data/ext/mathematical/lsmsvgfiltermergenode.c +87 -0
- data/ext/mathematical/lsmsvgfiltermergenode.h +57 -0
- data/ext/mathematical/lsmsvgfilteroffset.c +112 -0
- data/ext/mathematical/lsmsvgfilteroffset.h +58 -0
- data/ext/mathematical/lsmsvgfilterprimitive.c +168 -0
- data/ext/mathematical/lsmsvgfilterprimitive.h +66 -0
- data/ext/mathematical/lsmsvgfilterspecularlighting.c +127 -0
- data/ext/mathematical/lsmsvgfilterspecularlighting.h +60 -0
- data/ext/mathematical/lsmsvgfiltersurface.c +455 -0
- data/ext/mathematical/lsmsvgfiltersurface.h +66 -0
- data/ext/mathematical/lsmsvgfiltertile.c +102 -0
- data/ext/mathematical/lsmsvgfiltertile.h +57 -0
- data/ext/mathematical/lsmsvggelement.c +73 -0
- data/ext/mathematical/lsmsvggelement.h +55 -0
- data/ext/mathematical/lsmsvggradientelement.c +151 -0
- data/ext/mathematical/lsmsvggradientelement.h +68 -0
- data/ext/mathematical/lsmsvgimageelement.c +261 -0
- data/ext/mathematical/lsmsvgimageelement.h +67 -0
- data/ext/mathematical/lsmsvglength.c +152 -0
- data/ext/mathematical/lsmsvglength.h +65 -0
- data/ext/mathematical/lsmsvglineargradientelement.c +271 -0
- data/ext/mathematical/lsmsvglineargradientelement.h +60 -0
- data/ext/mathematical/lsmsvglineelement.c +153 -0
- data/ext/mathematical/lsmsvglineelement.h +60 -0
- data/ext/mathematical/lsmsvgmarkerelement.c +266 -0
- data/ext/mathematical/lsmsvgmarkerelement.h +74 -0
- data/ext/mathematical/lsmsvgmaskelement.c +232 -0
- data/ext/mathematical/lsmsvgmaskelement.h +64 -0
- data/ext/mathematical/lsmsvgmatrix.c +205 -0
- data/ext/mathematical/lsmsvgmatrix.h +59 -0
- data/ext/mathematical/lsmsvgpathelement.c +115 -0
- data/ext/mathematical/lsmsvgpathelement.h +59 -0
- data/ext/mathematical/lsmsvgpatternelement.c +398 -0
- data/ext/mathematical/lsmsvgpatternelement.h +69 -0
- data/ext/mathematical/lsmsvgpolygonelement.c +106 -0
- data/ext/mathematical/lsmsvgpolygonelement.h +57 -0
- data/ext/mathematical/lsmsvgpolylineelement.c +106 -0
- data/ext/mathematical/lsmsvgpolylineelement.h +57 -0
- data/ext/mathematical/lsmsvgradialgradientelement.c +323 -0
- data/ext/mathematical/lsmsvgradialgradientelement.h +61 -0
- data/ext/mathematical/lsmsvgrectelement.c +184 -0
- data/ext/mathematical/lsmsvgrectelement.h +62 -0
- data/ext/mathematical/lsmsvgstopelement.c +106 -0
- data/ext/mathematical/lsmsvgstopelement.h +57 -0
- data/ext/mathematical/lsmsvgstyle.c +560 -0
- data/ext/mathematical/lsmsvgstyle.h +217 -0
- data/ext/mathematical/lsmsvgsvgelement.c +260 -0
- data/ext/mathematical/lsmsvgsvgelement.h +71 -0
- data/ext/mathematical/lsmsvgswitchelement.c +103 -0
- data/ext/mathematical/lsmsvgswitchelement.h +55 -0
- data/ext/mathematical/lsmsvgsymbolelement.c +74 -0
- data/ext/mathematical/lsmsvgsymbolelement.h +55 -0
- data/ext/mathematical/lsmsvgtextelement.c +203 -0
- data/ext/mathematical/lsmsvgtextelement.h +60 -0
- data/ext/mathematical/lsmsvgtraits.c +1232 -0
- data/ext/mathematical/lsmsvgtraits.h +104 -0
- data/ext/mathematical/lsmsvgtransformable.c +106 -0
- data/ext/mathematical/lsmsvgtransformable.h +54 -0
- data/ext/mathematical/lsmsvgtspanelement.c +174 -0
- data/ext/mathematical/lsmsvgtspanelement.h +60 -0
- data/ext/mathematical/lsmsvgtypes.h +77 -0
- data/ext/mathematical/lsmsvguseelement.c +237 -0
- data/ext/mathematical/lsmsvguseelement.h +69 -0
- data/ext/mathematical/lsmsvgview.c +2583 -0
- data/ext/mathematical/lsmsvgview.h +179 -0
- data/ext/mathematical/lsmtraits.c +119 -0
- data/ext/mathematical/lsmtraits.h +49 -0
- data/ext/mathematical/lsmtypes.h +36 -0
- data/ext/mathematical/lsmutils.c +54 -0
- data/ext/mathematical/lsmutils.h +56 -0
- data/ext/mathematical/mathematical.c +145 -0
- data/ext/mathematical/y.tab.c +6179 -0
- data/ext/mathematical/y.tab.h +389 -0
- data/lib/mathematical/version.rb +1 -1
- data/mathematical.gemspec +8 -6
- data/test/mathematical/basic_test.rb +9 -0
- data/test/mathematical/fixtures/after/brackets_display.html +1 -0
- data/test/mathematical/fixtures/after/compliance_accents.html +17 -0
- data/test/mathematical/fixtures/after/compliance_arrows.html +71 -0
- data/test/mathematical/fixtures/after/compliance_colors.html +4 -0
- data/test/mathematical/fixtures/after/compliance_greek_letters.html +42 -0
- data/test/mathematical/fixtures/after/compliance_large_math.html +19 -0
- data/test/mathematical/fixtures/after/compliance_log_symbols.html +34 -0
- data/test/mathematical/fixtures/after/compliance_operators.html +262 -0
- data/test/mathematical/fixtures/after/dollar_sign_inline.html +1 -0
- data/test/mathematical/fixtures/after/equation_display.html +1 -0
- data/test/mathematical/fixtures/after/multiple_dollar_inline.html +1 -0
- data/test/mathematical/fixtures/after/parens_inline.html +1 -0
- data/test/mathematical/fixtures/before/brackets_display.text +1 -0
- data/test/mathematical/fixtures/before/compliance_accents.text +17 -0
- data/test/mathematical/fixtures/before/compliance_arrows.text +71 -0
- data/test/mathematical/fixtures/before/compliance_colors.text +4 -0
- data/test/mathematical/fixtures/before/compliance_greek_letters.text +42 -0
- data/test/mathematical/fixtures/before/compliance_large_math.text +19 -0
- data/test/mathematical/fixtures/before/compliance_log_symbols.text +34 -0
- data/test/mathematical/fixtures/before/compliance_operators.text +262 -0
- data/test/mathematical/fixtures/before/dollar_sign_inline.text +1 -0
- data/test/mathematical/fixtures/before/equation_display.text +1 -0
- data/test/mathematical/fixtures/before/multiple_dollar_inline.text +1 -0
- data/test/mathematical/fixtures/before/parens_inline.text +1 -0
- data/test/mathematical/fixtures/performance/big_file.text +1767 -0
- data/test/mathematical/fixtures_test.rb +45 -0
- data/test/mathematical/maliciousness_test.rb +45 -0
- data/test/mathematical/performance_test.rb +15 -0
- data/test/test_helper.rb +5 -0
- metadata +301 -14
- data/lib/mathematical.bundle +0 -0
- 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)
|