mathematical 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +52 -10
- data/Rakefile +42 -3
- data/lib/mathematical.rb +5 -4
- data/lib/mathematical/mathematical.bundle +0 -0
- data/lib/mathematical/render.rb +6 -5
- data/lib/mathematical/version.rb +1 -1
- data/mathematical.gemspec +5 -5
- metadata +14 -296
- data/.gitignore +0 -24
- data/.gitmodules +0 -0
- data/Gemfile +0 -4
- data/ext/mathematical/README.itex2MML.md +0 -11
- data/ext/mathematical/README.lasem.md +0 -11
- data/ext/mathematical/extconf.rb +0 -51
- data/ext/mathematical/itex2MML.h +0 -63
- data/ext/mathematical/lasemrender.c +0 -257
- data/ext/mathematical/lex.yy.c +0 -6548
- data/ext/mathematical/lsm.c +0 -30
- data/ext/mathematical/lsm.h +0 -36
- data/ext/mathematical/lsmattributes.c +0 -279
- data/ext/mathematical/lsmattributes.h +0 -75
- data/ext/mathematical/lsmcairo.c +0 -598
- data/ext/mathematical/lsmcairo.h +0 -51
- data/ext/mathematical/lsmdebug.c +0 -179
- data/ext/mathematical/lsmdebug.h +0 -76
- data/ext/mathematical/lsmdom.h +0 -43
- data/ext/mathematical/lsmdomcharacterdata.c +0 -114
- data/ext/mathematical/lsmdomcharacterdata.h +0 -59
- data/ext/mathematical/lsmdomdocument.c +0 -292
- data/ext/mathematical/lsmdomdocument.h +0 -82
- data/ext/mathematical/lsmdomdocumentfragment.c +0 -81
- data/ext/mathematical/lsmdomdocumentfragment.h +0 -55
- data/ext/mathematical/lsmdomelement.c +0 -148
- data/ext/mathematical/lsmdomelement.h +0 -62
- data/ext/mathematical/lsmdomentities.c +0 -2155
- data/ext/mathematical/lsmdomentities.h +0 -35
- data/ext/mathematical/lsmdomenumtypes.c +0 -99
- data/ext/mathematical/lsmdomenumtypes.c.template +0 -39
- data/ext/mathematical/lsmdomenumtypes.h +0 -26
- data/ext/mathematical/lsmdomenumtypes.h.template +0 -26
- data/ext/mathematical/lsmdomimplementation.c +0 -82
- data/ext/mathematical/lsmdomimplementation.h +0 -41
- data/ext/mathematical/lsmdomnamednodemap.c +0 -118
- data/ext/mathematical/lsmdomnamednodemap.h +0 -64
- data/ext/mathematical/lsmdomnode.c +0 -725
- data/ext/mathematical/lsmdomnode.h +0 -120
- data/ext/mathematical/lsmdomnodelist.c +0 -70
- data/ext/mathematical/lsmdomnodelist.h +0 -58
- data/ext/mathematical/lsmdomparser.c +0 -461
- data/ext/mathematical/lsmdomparser.h +0 -54
- data/ext/mathematical/lsmdomtext.c +0 -82
- data/ext/mathematical/lsmdomtext.h +0 -55
- data/ext/mathematical/lsmdomtypes.h +0 -44
- data/ext/mathematical/lsmdomview.c +0 -422
- data/ext/mathematical/lsmdomview.h +0 -94
- data/ext/mathematical/lsmmathml.h +0 -66
- data/ext/mathematical/lsmmathmlactionelement.c +0 -93
- data/ext/mathematical/lsmmathmlactionelement.h +0 -57
- data/ext/mathematical/lsmmathmlaligngroupelement.c +0 -102
- data/ext/mathematical/lsmmathmlaligngroupelement.h +0 -56
- data/ext/mathematical/lsmmathmlalignmarkelement.c +0 -102
- data/ext/mathematical/lsmmathmlalignmarkelement.h +0 -56
- data/ext/mathematical/lsmmathmlattributes.c +0 -197
- data/ext/mathematical/lsmmathmlattributes.h +0 -126
- data/ext/mathematical/lsmmathmldocument.c +0 -306
- data/ext/mathematical/lsmmathmldocument.h +0 -61
- data/ext/mathematical/lsmmathmlelement.c +0 -491
- data/ext/mathematical/lsmmathmlelement.h +0 -107
- data/ext/mathematical/lsmmathmlenums.c +0 -429
- data/ext/mathematical/lsmmathmlenums.h +0 -182
- data/ext/mathematical/lsmmathmlenumtypes.c +0 -666
- data/ext/mathematical/lsmmathmlenumtypes.c.template +0 -39
- data/ext/mathematical/lsmmathmlenumtypes.h +0 -90
- data/ext/mathematical/lsmmathmlenumtypes.h.template +0 -26
- data/ext/mathematical/lsmmathmlerrorelement.c +0 -58
- data/ext/mathematical/lsmmathmlerrorelement.h +0 -56
- data/ext/mathematical/lsmmathmlfencedelement.c +0 -178
- data/ext/mathematical/lsmmathmlfencedelement.h +0 -65
- data/ext/mathematical/lsmmathmlfractionelement.c +0 -253
- data/ext/mathematical/lsmmathmlfractionelement.h +0 -62
- data/ext/mathematical/lsmmathmlglyphtableams.c +0 -597
- data/ext/mathematical/lsmmathmlglyphtableams.h +0 -45
- data/ext/mathematical/lsmmathmlitexelement.c +0 -187
- data/ext/mathematical/lsmmathmlitexelement.h +0 -60
- data/ext/mathematical/lsmmathmllayoututils.c +0 -191
- data/ext/mathematical/lsmmathmllayoututils.h +0 -58
- data/ext/mathematical/lsmmathmlmathelement.c +0 -204
- data/ext/mathematical/lsmmathmlmathelement.h +0 -81
- data/ext/mathematical/lsmmathmloperatordictionary.c +0 -3332
- data/ext/mathematical/lsmmathmloperatordictionary.h +0 -54
- data/ext/mathematical/lsmmathmloperatorelement.c +0 -307
- data/ext/mathematical/lsmmathmloperatorelement.h +0 -73
- data/ext/mathematical/lsmmathmlpaddedelement.c +0 -58
- data/ext/mathematical/lsmmathmlpaddedelement.h +0 -56
- data/ext/mathematical/lsmmathmlphantomelement.c +0 -71
- data/ext/mathematical/lsmmathmlphantomelement.h +0 -56
- data/ext/mathematical/lsmmathmlpresentationcontainer.c +0 -43
- data/ext/mathematical/lsmmathmlpresentationcontainer.h +0 -54
- data/ext/mathematical/lsmmathmlpresentationtoken.c +0 -303
- data/ext/mathematical/lsmmathmlpresentationtoken.h +0 -83
- data/ext/mathematical/lsmmathmlradicalelement.c +0 -266
- data/ext/mathematical/lsmmathmlradicalelement.h +0 -71
- data/ext/mathematical/lsmmathmlrowelement.c +0 -58
- data/ext/mathematical/lsmmathmlrowelement.h +0 -56
- data/ext/mathematical/lsmmathmlscriptelement.c +0 -282
- data/ext/mathematical/lsmmathmlscriptelement.h +0 -78
- data/ext/mathematical/lsmmathmlsemanticselement.c +0 -82
- data/ext/mathematical/lsmmathmlsemanticselement.h +0 -56
- data/ext/mathematical/lsmmathmlspaceelement.c +0 -142
- data/ext/mathematical/lsmmathmlspaceelement.h +0 -60
- data/ext/mathematical/lsmmathmlstringelement.c +0 -123
- data/ext/mathematical/lsmmathmlstringelement.h +0 -58
- data/ext/mathematical/lsmmathmlstyle.c +0 -130
- data/ext/mathematical/lsmmathmlstyle.h +0 -81
- data/ext/mathematical/lsmmathmlstyleelement.c +0 -307
- data/ext/mathematical/lsmmathmlstyleelement.h +0 -87
- data/ext/mathematical/lsmmathmltablecellelement.c +0 -122
- data/ext/mathematical/lsmmathmltablecellelement.h +0 -62
- data/ext/mathematical/lsmmathmltableelement.c +0 -545
- data/ext/mathematical/lsmmathmltableelement.h +0 -78
- data/ext/mathematical/lsmmathmltablerowelement.c +0 -120
- data/ext/mathematical/lsmmathmltablerowelement.h +0 -64
- data/ext/mathematical/lsmmathmltraits.c +0 -819
- data/ext/mathematical/lsmmathmltraits.h +0 -119
- data/ext/mathematical/lsmmathmltypes.h +0 -66
- data/ext/mathematical/lsmmathmlunderoverelement.c +0 -485
- data/ext/mathematical/lsmmathmlunderoverelement.h +0 -82
- data/ext/mathematical/lsmmathmlutils.c +0 -170
- data/ext/mathematical/lsmmathmlutils.h +0 -50
- data/ext/mathematical/lsmmathmlview.c +0 -1048
- data/ext/mathematical/lsmmathmlview.h +0 -164
- data/ext/mathematical/lsmproperties.c +0 -418
- data/ext/mathematical/lsmproperties.h +0 -85
- data/ext/mathematical/lsmstr.c +0 -231
- data/ext/mathematical/lsmstr.h +0 -114
- data/ext/mathematical/lsmsvg.h +0 -67
- data/ext/mathematical/lsmsvgaelement.c +0 -73
- data/ext/mathematical/lsmsvgaelement.h +0 -55
- data/ext/mathematical/lsmsvgattributes.h +0 -113
- data/ext/mathematical/lsmsvgcircleelement.c +0 -153
- data/ext/mathematical/lsmsvgcircleelement.h +0 -59
- data/ext/mathematical/lsmsvgclippathelement.c +0 -134
- data/ext/mathematical/lsmsvgclippathelement.h +0 -59
- data/ext/mathematical/lsmsvgcolors.c +0 -212
- data/ext/mathematical/lsmsvgcolors.h +0 -39
- data/ext/mathematical/lsmsvgdefselement.c +0 -74
- data/ext/mathematical/lsmsvgdefselement.h +0 -55
- data/ext/mathematical/lsmsvgdocument.c +0 -230
- data/ext/mathematical/lsmsvgdocument.h +0 -58
- data/ext/mathematical/lsmsvgelement.c +0 -367
- data/ext/mathematical/lsmsvgelement.h +0 -81
- data/ext/mathematical/lsmsvgellipseelement.c +0 -158
- data/ext/mathematical/lsmsvgellipseelement.h +0 -60
- data/ext/mathematical/lsmsvgenums.c +0 -544
- data/ext/mathematical/lsmsvgenums.h +0 -357
- data/ext/mathematical/lsmsvgenumtypes.c +0 -1083
- data/ext/mathematical/lsmsvgenumtypes.c.template +0 -39
- data/ext/mathematical/lsmsvgenumtypes.h +0 -111
- data/ext/mathematical/lsmsvgenumtypes.h.template +0 -26
- data/ext/mathematical/lsmsvgfilterblend.c +0 -105
- data/ext/mathematical/lsmsvgfilterblend.h +0 -58
- data/ext/mathematical/lsmsvgfiltercomposite.c +0 -109
- data/ext/mathematical/lsmsvgfiltercomposite.h +0 -58
- data/ext/mathematical/lsmsvgfilterelement.c +0 -266
- data/ext/mathematical/lsmsvgfilterelement.h +0 -66
- data/ext/mathematical/lsmsvgfilterflood.c +0 -86
- data/ext/mathematical/lsmsvgfilterflood.h +0 -55
- data/ext/mathematical/lsmsvgfiltergaussianblur.c +0 -114
- data/ext/mathematical/lsmsvgfiltergaussianblur.h +0 -57
- data/ext/mathematical/lsmsvgfiltermerge.c +0 -98
- data/ext/mathematical/lsmsvgfiltermerge.h +0 -55
- data/ext/mathematical/lsmsvgfiltermergenode.c +0 -87
- data/ext/mathematical/lsmsvgfiltermergenode.h +0 -57
- data/ext/mathematical/lsmsvgfilteroffset.c +0 -112
- data/ext/mathematical/lsmsvgfilteroffset.h +0 -58
- data/ext/mathematical/lsmsvgfilterprimitive.c +0 -168
- data/ext/mathematical/lsmsvgfilterprimitive.h +0 -66
- data/ext/mathematical/lsmsvgfilterspecularlighting.c +0 -127
- data/ext/mathematical/lsmsvgfilterspecularlighting.h +0 -60
- data/ext/mathematical/lsmsvgfiltersurface.c +0 -455
- data/ext/mathematical/lsmsvgfiltersurface.h +0 -66
- data/ext/mathematical/lsmsvgfiltertile.c +0 -102
- data/ext/mathematical/lsmsvgfiltertile.h +0 -57
- data/ext/mathematical/lsmsvggelement.c +0 -73
- data/ext/mathematical/lsmsvggelement.h +0 -55
- data/ext/mathematical/lsmsvggradientelement.c +0 -151
- data/ext/mathematical/lsmsvggradientelement.h +0 -68
- data/ext/mathematical/lsmsvgimageelement.c +0 -261
- data/ext/mathematical/lsmsvgimageelement.h +0 -67
- data/ext/mathematical/lsmsvglength.c +0 -93
- data/ext/mathematical/lsmsvglength.h +0 -59
- data/ext/mathematical/lsmsvglineargradientelement.c +0 -271
- data/ext/mathematical/lsmsvglineargradientelement.h +0 -60
- data/ext/mathematical/lsmsvglineelement.c +0 -153
- data/ext/mathematical/lsmsvglineelement.h +0 -60
- data/ext/mathematical/lsmsvgmarkerelement.c +0 -266
- data/ext/mathematical/lsmsvgmarkerelement.h +0 -74
- data/ext/mathematical/lsmsvgmaskelement.c +0 -232
- data/ext/mathematical/lsmsvgmaskelement.h +0 -64
- data/ext/mathematical/lsmsvgmatrix.c +0 -205
- data/ext/mathematical/lsmsvgmatrix.h +0 -59
- data/ext/mathematical/lsmsvgpathelement.c +0 -115
- data/ext/mathematical/lsmsvgpathelement.h +0 -59
- data/ext/mathematical/lsmsvgpatternelement.c +0 -398
- data/ext/mathematical/lsmsvgpatternelement.h +0 -69
- data/ext/mathematical/lsmsvgpolygonelement.c +0 -106
- data/ext/mathematical/lsmsvgpolygonelement.h +0 -57
- data/ext/mathematical/lsmsvgpolylineelement.c +0 -106
- data/ext/mathematical/lsmsvgpolylineelement.h +0 -57
- data/ext/mathematical/lsmsvgradialgradientelement.c +0 -323
- data/ext/mathematical/lsmsvgradialgradientelement.h +0 -61
- data/ext/mathematical/lsmsvgrectelement.c +0 -184
- data/ext/mathematical/lsmsvgrectelement.h +0 -62
- data/ext/mathematical/lsmsvgstopelement.c +0 -106
- data/ext/mathematical/lsmsvgstopelement.h +0 -57
- data/ext/mathematical/lsmsvgstyle.c +0 -558
- data/ext/mathematical/lsmsvgstyle.h +0 -217
- data/ext/mathematical/lsmsvgsvgelement.c +0 -260
- data/ext/mathematical/lsmsvgsvgelement.h +0 -71
- data/ext/mathematical/lsmsvgswitchelement.c +0 -103
- data/ext/mathematical/lsmsvgswitchelement.h +0 -55
- data/ext/mathematical/lsmsvgsymbolelement.c +0 -74
- data/ext/mathematical/lsmsvgsymbolelement.h +0 -55
- data/ext/mathematical/lsmsvgtextelement.c +0 -170
- data/ext/mathematical/lsmsvgtextelement.h +0 -58
- data/ext/mathematical/lsmsvgtraits.c +0 -1158
- data/ext/mathematical/lsmsvgtraits.h +0 -103
- data/ext/mathematical/lsmsvgtransformable.c +0 -106
- data/ext/mathematical/lsmsvgtransformable.h +0 -54
- data/ext/mathematical/lsmsvgtspanelement.c +0 -143
- data/ext/mathematical/lsmsvgtspanelement.h +0 -58
- data/ext/mathematical/lsmsvgtypes.h +0 -77
- data/ext/mathematical/lsmsvguseelement.c +0 -237
- data/ext/mathematical/lsmsvguseelement.h +0 -69
- data/ext/mathematical/lsmsvgview.c +0 -2400
- data/ext/mathematical/lsmsvgview.h +0 -168
- data/ext/mathematical/lsmtraits.c +0 -119
- data/ext/mathematical/lsmtraits.h +0 -49
- data/ext/mathematical/lsmtypes.h +0 -36
- data/ext/mathematical/lsmutils.c +0 -54
- data/ext/mathematical/lsmutils.h +0 -56
- data/ext/mathematical/mathematical.c +0 -122
- data/ext/mathematical/y.tab.c +0 -6179
- data/ext/mathematical/y.tab.h +0 -389
- data/script/bench +0 -21
- data/script/bootstrap +0 -9
- data/script/single_test +0 -7
- data/test/mathematical/basic_test.rb +0 -38
- data/test/mathematical/fixtures/after/brackets_display.html +0 -1
- data/test/mathematical/fixtures/after/dollar_sign_inline.html +0 -1
- data/test/mathematical/fixtures/after/equation_display.html +0 -1
- data/test/mathematical/fixtures/after/multiple_dollar_inline.html +0 -1
- data/test/mathematical/fixtures/after/parens_inline.html +0 -1
- data/test/mathematical/fixtures/before/brackets_display.text +0 -1
- data/test/mathematical/fixtures/before/dollar_sign_inline.text +0 -1
- data/test/mathematical/fixtures/before/equation_display.text +0 -1
- data/test/mathematical/fixtures/before/multiple_dollar_inline.text +0 -1
- data/test/mathematical/fixtures/before/parens_inline.text +0 -1
- data/test/mathematical/fixtures/performance/big_file.text +0 -1767
- data/test/mathematical/fixtures_test.rb +0 -31
- data/test/mathematical/performance_test.rb +0 -13
- data/test/test_helper.rb +0 -4
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/* Lasem
|
|
2
|
-
*
|
|
3
|
-
* Copyright © 2012 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_SVG_FILTER_COMPOSITE_H
|
|
25
|
-
#define LSM_SVG_FILTER_COMPOSITE_H
|
|
26
|
-
|
|
27
|
-
#include <lsmsvgtypes.h>
|
|
28
|
-
#include <lsmsvgfilterprimitive.h>
|
|
29
|
-
|
|
30
|
-
G_BEGIN_DECLS
|
|
31
|
-
|
|
32
|
-
#define LSM_TYPE_SVG_FILTER_COMPOSITE (lsm_svg_filter_composite_get_type ())
|
|
33
|
-
#define LSM_SVG_FILTER_COMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_SVG_FILTER_COMPOSITE, LsmSvgFilterComposite))
|
|
34
|
-
#define LSM_SVG_FILTER_COMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_SVG_FILTER_COMPOSITE, LsmSvgFilterCompositeClass))
|
|
35
|
-
#define LSM_IS_SVG_FILTER_COMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_SVG_FILTER_COMPOSITE))
|
|
36
|
-
#define LSM_IS_SVG_FILTER_COMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_SVG_FILTER_COMPOSITE))
|
|
37
|
-
#define LSM_SVG_FILTER_COMPOSITE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_SVG_FILTER_COMPOSITE, LsmSvgFilterCompositeClass))
|
|
38
|
-
|
|
39
|
-
typedef struct _LsmSvgFilterCompositeClass LsmSvgFilterCompositeClass;
|
|
40
|
-
|
|
41
|
-
struct _LsmSvgFilterComposite {
|
|
42
|
-
LsmSvgFilterPrimitive base;
|
|
43
|
-
|
|
44
|
-
LsmAttribute in2;
|
|
45
|
-
LsmSvgBlendingModeAttribute op;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
struct _LsmSvgFilterCompositeClass {
|
|
49
|
-
LsmSvgFilterPrimitiveClass element_class;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
GType lsm_svg_filter_composite_get_type (void);
|
|
53
|
-
|
|
54
|
-
LsmDomNode * lsm_svg_filter_composite_new (void);
|
|
55
|
-
|
|
56
|
-
G_END_DECLS
|
|
57
|
-
|
|
58
|
-
#endif
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
/* Lasem
|
|
2
|
-
*
|
|
3
|
-
* Copyright © 2010 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 <lsmsvgfilterelement.h>
|
|
25
|
-
#include <lsmsvgfilterprimitive.h>
|
|
26
|
-
#include <lsmsvgview.h>
|
|
27
|
-
#include <lsmdebug.h>
|
|
28
|
-
|
|
29
|
-
static GObjectClass *parent_class;
|
|
30
|
-
|
|
31
|
-
/* GdomNode implementation */
|
|
32
|
-
|
|
33
|
-
static const char *
|
|
34
|
-
lsm_svg_filter_element_get_node_name (LsmDomNode *node)
|
|
35
|
-
{
|
|
36
|
-
return "filter";
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static gboolean
|
|
40
|
-
lsm_svg_filter_element_can_append_child (LsmDomNode *self, LsmDomNode *child)
|
|
41
|
-
{
|
|
42
|
-
return (LSM_IS_SVG_ELEMENT (child) &&
|
|
43
|
-
lsm_svg_element_get_category (LSM_SVG_ELEMENT (child)) == LSM_SVG_ELEMENT_CATEGORY_FILTER_PRIMITIVE);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/* LsmSvgElement implementation */
|
|
47
|
-
|
|
48
|
-
LsmBox
|
|
49
|
-
lsm_svg_filter_element_get_effect_viewport (LsmSvgFilterElement *filter, const LsmBox *source_extents, LsmSvgView *view)
|
|
50
|
-
{
|
|
51
|
-
static LsmBox null_extents = {.x = 0.0, .y = 0.0, .width = 0.0, .height = 0.0};
|
|
52
|
-
gboolean is_object_bounding_box;
|
|
53
|
-
LsmBox viewport;
|
|
54
|
-
|
|
55
|
-
g_return_val_if_fail (LSM_IS_SVG_FILTER_ELEMENT (filter), null_extents);
|
|
56
|
-
g_return_val_if_fail (source_extents != NULL, null_extents);
|
|
57
|
-
g_return_val_if_fail (LSM_IS_SVG_VIEW (view), null_extents);
|
|
58
|
-
|
|
59
|
-
is_object_bounding_box = (filter->units.value == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX);
|
|
60
|
-
|
|
61
|
-
if (is_object_bounding_box) {
|
|
62
|
-
LsmBox viewbox = {.x = 0.0, .y = .0, .width = 1.0, .height = 1.0};
|
|
63
|
-
|
|
64
|
-
lsm_svg_view_push_viewbox (view, &viewbox);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
viewport.x = lsm_svg_view_normalize_length (view, &filter->x.length,
|
|
68
|
-
LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
|
|
69
|
-
viewport.y = lsm_svg_view_normalize_length (view, &filter->y.length,
|
|
70
|
-
LSM_SVG_LENGTH_DIRECTION_VERTICAL);
|
|
71
|
-
viewport.width = lsm_svg_view_normalize_length (view, &filter->width.length,
|
|
72
|
-
LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
|
|
73
|
-
viewport.height = lsm_svg_view_normalize_length (view, &filter->height.length,
|
|
74
|
-
LSM_SVG_LENGTH_DIRECTION_VERTICAL);
|
|
75
|
-
|
|
76
|
-
if (is_object_bounding_box) {
|
|
77
|
-
lsm_svg_view_pop_viewbox (view);
|
|
78
|
-
|
|
79
|
-
viewport.x = viewport.x * source_extents->width + source_extents->x;
|
|
80
|
-
viewport.y = viewport.y * source_extents->height + source_extents->y;
|
|
81
|
-
viewport.width *= source_extents->width;
|
|
82
|
-
viewport.height *= source_extents->height;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return viewport;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
static void
|
|
89
|
-
lsm_svg_filter_element_render (LsmSvgElement *self, LsmSvgView *view)
|
|
90
|
-
{
|
|
91
|
-
LsmSvgFilterElement *filter = LSM_SVG_FILTER_ELEMENT (self);
|
|
92
|
-
LsmDomNode *node;
|
|
93
|
-
LsmBox viewbox = {.x = 0.0, .y = .0, .width = 1.0, .height = 1.0};
|
|
94
|
-
const LsmBox *object_extents;
|
|
95
|
-
gboolean is_object_bounding_box;
|
|
96
|
-
|
|
97
|
-
if (!filter->enable_rendering) {
|
|
98
|
-
lsm_debug_render ("[LsmSvgFilterElement::render] Direct rendering not allowed");
|
|
99
|
-
return;
|
|
100
|
-
} else {
|
|
101
|
-
filter->enable_rendering = FALSE;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
object_extents = lsm_svg_view_get_object_extents (view);
|
|
105
|
-
|
|
106
|
-
is_object_bounding_box = (filter->primitive_units.value == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX);
|
|
107
|
-
|
|
108
|
-
if (is_object_bounding_box) {
|
|
109
|
-
lsm_svg_view_push_viewport (view, object_extents,
|
|
110
|
-
is_object_bounding_box ? &viewbox : NULL, NULL, LSM_SVG_OVERFLOW_VISIBLE);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
for (node = LSM_DOM_NODE (filter)->first_child; node != NULL; node = node->next_sibling)
|
|
114
|
-
if (LSM_IS_SVG_FILTER_PRIMITIVE (node))
|
|
115
|
-
lsm_svg_filter_primitive_apply (LSM_SVG_FILTER_PRIMITIVE (node), view);
|
|
116
|
-
|
|
117
|
-
if (is_object_bounding_box) {
|
|
118
|
-
lsm_svg_view_pop_viewport (view);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
static void
|
|
123
|
-
lsm_svg_filter_element_enable_rendering (LsmSvgElement *element)
|
|
124
|
-
{
|
|
125
|
-
LSM_SVG_FILTER_ELEMENT (element)->enable_rendering = TRUE;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
static void
|
|
129
|
-
lsm_svg_filter_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
|
|
130
|
-
{
|
|
131
|
-
LsmSvgFilterElement *filter = LSM_SVG_FILTER_ELEMENT (self);
|
|
132
|
-
const LsmBox *source_extents;
|
|
133
|
-
double x, y;
|
|
134
|
-
double w, h;
|
|
135
|
-
gboolean is_object_bounding_box;
|
|
136
|
-
|
|
137
|
-
source_extents = lsm_svg_view_get_pattern_extents (view);
|
|
138
|
-
|
|
139
|
-
is_object_bounding_box = (filter->units.value == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX);
|
|
140
|
-
|
|
141
|
-
if (is_object_bounding_box) {
|
|
142
|
-
LsmBox viewbox = {.x = 0.0, .y = .0, .width = 1.0, .height = 1.0};
|
|
143
|
-
|
|
144
|
-
lsm_svg_view_push_viewbox (view, &viewbox);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
x = lsm_svg_view_normalize_length (view, &filter->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
|
|
148
|
-
y = lsm_svg_view_normalize_length (view, &filter->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
|
|
149
|
-
w = lsm_svg_view_normalize_length (view, &filter->width.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
|
|
150
|
-
h = lsm_svg_view_normalize_length (view, &filter->height.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
|
|
151
|
-
|
|
152
|
-
if (is_object_bounding_box) {
|
|
153
|
-
lsm_svg_view_pop_viewbox (view);
|
|
154
|
-
|
|
155
|
-
x = x * source_extents->width + source_extents->x;
|
|
156
|
-
y = y * source_extents->height + source_extents->y;
|
|
157
|
-
w *= source_extents->width;
|
|
158
|
-
h *= source_extents->height;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
extents->x1 = x;
|
|
162
|
-
extents->y1 = y;
|
|
163
|
-
extents->x2 = x + w;
|
|
164
|
-
extents->y2 = y + h;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/* LsmSvgGraphic implementation */
|
|
168
|
-
|
|
169
|
-
/* LsmSvgFilterElement implementation */
|
|
170
|
-
|
|
171
|
-
LsmDomNode *
|
|
172
|
-
lsm_svg_filter_element_new (void)
|
|
173
|
-
{
|
|
174
|
-
return g_object_new (LSM_TYPE_SVG_FILTER_ELEMENT, NULL);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
static const LsmSvgLength x_y_default = { .value_unit = -10.0, .type = LSM_SVG_LENGTH_TYPE_PERCENTAGE};
|
|
178
|
-
static const LsmSvgLength width_height_default = { .value_unit = 120.0, .type = LSM_SVG_LENGTH_TYPE_PERCENTAGE};
|
|
179
|
-
static const LsmSvgPatternUnits units_default = LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX;
|
|
180
|
-
static const LsmSvgPatternUnits primitive_units_default = LSM_SVG_PATTERN_UNITS_USER_SPACE_ON_USE;
|
|
181
|
-
|
|
182
|
-
static void
|
|
183
|
-
lsm_svg_filter_element_init (LsmSvgFilterElement *self)
|
|
184
|
-
{
|
|
185
|
-
self->x.length = x_y_default;
|
|
186
|
-
self->y.length = x_y_default;
|
|
187
|
-
self->width.length = width_height_default;
|
|
188
|
-
self->height.length = width_height_default;
|
|
189
|
-
self->units.value = units_default;
|
|
190
|
-
self->primitive_units.value = primitive_units_default;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
static void
|
|
194
|
-
lsm_svg_filter_element_finalize (GObject *object)
|
|
195
|
-
{
|
|
196
|
-
parent_class->finalize (object);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/* LsmSvgFilterElement class */
|
|
200
|
-
|
|
201
|
-
static const LsmAttributeInfos lsm_svg_filter_element_attribute_infos[] = {
|
|
202
|
-
{
|
|
203
|
-
.name = "x",
|
|
204
|
-
.attribute_offset = offsetof (LsmSvgFilterElement, x),
|
|
205
|
-
.trait_class = &lsm_svg_length_trait_class,
|
|
206
|
-
.trait_default = &x_y_default
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
.name = "y",
|
|
210
|
-
.attribute_offset = offsetof (LsmSvgFilterElement, y),
|
|
211
|
-
.trait_class = &lsm_svg_length_trait_class,
|
|
212
|
-
.trait_default = &x_y_default
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
.name = "width",
|
|
216
|
-
.attribute_offset = offsetof (LsmSvgFilterElement, width),
|
|
217
|
-
.trait_class = &lsm_svg_length_trait_class,
|
|
218
|
-
.trait_default = &width_height_default
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
.name = "height",
|
|
222
|
-
.attribute_offset = offsetof (LsmSvgFilterElement, height),
|
|
223
|
-
.trait_class = &lsm_svg_length_trait_class,
|
|
224
|
-
.trait_default = &width_height_default
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
.name = "filterUnits",
|
|
228
|
-
.attribute_offset = offsetof (LsmSvgFilterElement, units),
|
|
229
|
-
.trait_class = &lsm_svg_pattern_units_trait_class,
|
|
230
|
-
.trait_default = &units_default
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
.name = "primitiveUnits",
|
|
234
|
-
.attribute_offset = offsetof (LsmSvgFilterElement, primitive_units),
|
|
235
|
-
.trait_class = &lsm_svg_pattern_units_trait_class,
|
|
236
|
-
.trait_default = &primitive_units_default
|
|
237
|
-
}
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
static void
|
|
241
|
-
lsm_svg_filter_element_class_init (LsmSvgFilterElementClass *s_rect_class)
|
|
242
|
-
{
|
|
243
|
-
GObjectClass *object_class = G_OBJECT_CLASS (s_rect_class);
|
|
244
|
-
LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (s_rect_class);
|
|
245
|
-
LsmSvgElementClass *s_element_class = LSM_SVG_ELEMENT_CLASS (s_rect_class);
|
|
246
|
-
|
|
247
|
-
parent_class = g_type_class_peek_parent (s_rect_class);
|
|
248
|
-
|
|
249
|
-
object_class->finalize = lsm_svg_filter_element_finalize;
|
|
250
|
-
|
|
251
|
-
d_node_class->get_node_name = lsm_svg_filter_element_get_node_name;
|
|
252
|
-
d_node_class->can_append_child = lsm_svg_filter_element_can_append_child;
|
|
253
|
-
|
|
254
|
-
s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_NONE;
|
|
255
|
-
|
|
256
|
-
s_element_class->render = lsm_svg_filter_element_render;
|
|
257
|
-
s_element_class->get_extents = lsm_svg_filter_element_get_extents;
|
|
258
|
-
s_element_class->enable_rendering = lsm_svg_filter_element_enable_rendering;
|
|
259
|
-
s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
|
|
260
|
-
|
|
261
|
-
lsm_attribute_manager_add_attributes (s_element_class->attribute_manager,
|
|
262
|
-
G_N_ELEMENTS (lsm_svg_filter_element_attribute_infos),
|
|
263
|
-
lsm_svg_filter_element_attribute_infos);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
G_DEFINE_TYPE (LsmSvgFilterElement, lsm_svg_filter_element, LSM_TYPE_SVG_ELEMENT)
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/* Lasem
|
|
2
|
-
*
|
|
3
|
-
* Copyright © 2010 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_SVG_FILTER_ELEMENT_H
|
|
25
|
-
#define LSM_SVG_FILTER_ELEMENT_H
|
|
26
|
-
|
|
27
|
-
#include <lsmsvgtypes.h>
|
|
28
|
-
#include <lsmsvgelement.h>
|
|
29
|
-
|
|
30
|
-
G_BEGIN_DECLS
|
|
31
|
-
|
|
32
|
-
#define LSM_TYPE_SVG_FILTER_ELEMENT (lsm_svg_filter_element_get_type ())
|
|
33
|
-
#define LSM_SVG_FILTER_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LSM_TYPE_SVG_FILTER_ELEMENT, LsmSvgFilterElement))
|
|
34
|
-
#define LSM_SVG_FILTER_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), LSM_TYPE_SVG_FILTER_ELEMENT, LsmSvgFilterElementClass))
|
|
35
|
-
#define LSM_IS_SVG_FILTER_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LSM_TYPE_SVG_FILTER_ELEMENT))
|
|
36
|
-
#define LSM_IS_SVG_FILTER_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LSM_TYPE_SVG_FILTER_ELEMENT))
|
|
37
|
-
#define LSM_SVG_FILTER_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LSM_TYPE_SVG_FILTER_ELEMENT, LsmSvgFilterElementClass))
|
|
38
|
-
|
|
39
|
-
typedef struct _LsmSvgFilterElementClass LsmSvgFilterElementClass;
|
|
40
|
-
|
|
41
|
-
struct _LsmSvgFilterElement {
|
|
42
|
-
LsmSvgElement element;
|
|
43
|
-
|
|
44
|
-
LsmSvgLengthAttribute x;
|
|
45
|
-
LsmSvgLengthAttribute y;
|
|
46
|
-
LsmSvgLengthAttribute width;
|
|
47
|
-
LsmSvgLengthAttribute height;
|
|
48
|
-
LsmSvgPatternUnitsAttribute units;
|
|
49
|
-
LsmSvgPatternUnitsAttribute primitive_units;
|
|
50
|
-
|
|
51
|
-
gboolean enable_rendering;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
struct _LsmSvgFilterElementClass {
|
|
55
|
-
LsmSvgElementClass element_class;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
GType lsm_svg_filter_element_get_type (void);
|
|
59
|
-
|
|
60
|
-
LsmDomNode * lsm_svg_filter_element_new (void);
|
|
61
|
-
LsmBox lsm_svg_filter_element_get_effect_viewport (LsmSvgFilterElement *filter,
|
|
62
|
-
const LsmBox *source_extents, LsmSvgView *view);
|
|
63
|
-
|
|
64
|
-
G_END_DECLS
|
|
65
|
-
|
|
66
|
-
#endif
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/* Lasem
|
|
2
|
-
*
|
|
3
|
-
* Copyright © 2012 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 <lsmsvgfilterflood.h>
|
|
25
|
-
#include <lsmsvgview.h>
|
|
26
|
-
|
|
27
|
-
static GObjectClass *parent_class;
|
|
28
|
-
|
|
29
|
-
/* GdomNode implementation */
|
|
30
|
-
|
|
31
|
-
static const char *
|
|
32
|
-
lsm_svg_filter_flood_get_node_name (LsmDomNode *node)
|
|
33
|
-
{
|
|
34
|
-
return "feFlood";
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/* LsmSvgElement implementation */
|
|
38
|
-
|
|
39
|
-
static void
|
|
40
|
-
lsm_svg_filter_flood_apply (LsmSvgFilterPrimitive *self, LsmSvgView *view,
|
|
41
|
-
const char *input, const char *output, const LsmBox *subregion)
|
|
42
|
-
{
|
|
43
|
-
lsm_svg_view_apply_flood (view, output, subregion);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/* LsmSvgFilterFlood implementation */
|
|
47
|
-
|
|
48
|
-
LsmDomNode *
|
|
49
|
-
lsm_svg_filter_flood_new (void)
|
|
50
|
-
{
|
|
51
|
-
return g_object_new (LSM_TYPE_SVG_FILTER_FLOOD, NULL);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
static void
|
|
55
|
-
lsm_svg_filter_flood_init (LsmSvgFilterFlood *self)
|
|
56
|
-
{
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
static void
|
|
60
|
-
lsm_svg_filter_flood_finalize (GObject *object)
|
|
61
|
-
{
|
|
62
|
-
parent_class->finalize (object);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/* LsmSvgFilterFlood class */
|
|
66
|
-
|
|
67
|
-
static void
|
|
68
|
-
lsm_svg_filter_flood_class_init (LsmSvgFilterFloodClass *klass)
|
|
69
|
-
{
|
|
70
|
-
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
71
|
-
LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (klass);
|
|
72
|
-
LsmSvgElementClass *s_element_class = LSM_SVG_ELEMENT_CLASS (klass);
|
|
73
|
-
LsmSvgFilterPrimitiveClass *f_primitive_class = LSM_SVG_FILTER_PRIMITIVE_CLASS (klass);
|
|
74
|
-
|
|
75
|
-
parent_class = g_type_class_peek_parent (klass);
|
|
76
|
-
|
|
77
|
-
object_class->finalize = lsm_svg_filter_flood_finalize;
|
|
78
|
-
|
|
79
|
-
d_node_class->get_node_name = lsm_svg_filter_flood_get_node_name;
|
|
80
|
-
|
|
81
|
-
s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
|
|
82
|
-
|
|
83
|
-
f_primitive_class->apply = lsm_svg_filter_flood_apply;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
G_DEFINE_TYPE (LsmSvgFilterFlood, lsm_svg_filter_flood, LSM_TYPE_SVG_FILTER_PRIMITIVE)
|