From d1af3566872dfff2aeec84859c87f1f8d13f79df Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 19:14:36 +0200 Subject: Registered classes with new factory. Hkern, Vkern and FeFuncX have to be rewritten, as they aren't real classes. (bzr r11608.1.69) --- src/sp-object-repr.cpp | 152 ++++++++++++++++++++++++------------------------- 1 file changed, 76 insertions(+), 76 deletions(-) (limited to 'src/sp-object-repr.cpp') diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp index eba38ec67..02114aabc 100644 --- a/src/sp-object-repr.cpp +++ b/src/sp-object-repr.cpp @@ -130,93 +130,93 @@ populate_dtables() { struct NameTypeEntry { char const *const name; GType const type_id; }; NameTypeEntry const repr_name_entries[] = { - { "svg:a", SP_TYPE_ANCHOR }, + //{ "svg:a", SP_TYPE_ANCHOR }, //{ "svg:animate", SP_TYPE_ANIMATE }, - { "svg:circle", SP_TYPE_CIRCLE }, - { "svg:color-profile", COLORPROFILE_TYPE }, - { "svg:clipPath", SP_TYPE_CLIPPATH }, - { "svg:defs", SP_TYPE_DEFS }, - { "svg:desc", SP_TYPE_DESC }, - { "svg:ellipse", SP_TYPE_ELLIPSE }, - { "svg:filter", SP_TYPE_FILTER }, + //{ "svg:circle", SP_TYPE_CIRCLE }, + //{ "svg:color-profile", COLORPROFILE_TYPE }, + //{ "svg:clipPath", SP_TYPE_CLIPPATH }, + //{ "svg:defs", SP_TYPE_DEFS }, + //{ "svg:desc", SP_TYPE_DESC }, + //{ "svg:ellipse", SP_TYPE_ELLIPSE }, + //{ "svg:filter", SP_TYPE_FILTER }, /* Note: flow* elements are proposed additions for SVG 1.2, they aren't in SVG 1.1. */ - { "svg:flowDiv", SP_TYPE_FLOWDIV }, - { "svg:flowLine", SP_TYPE_FLOWLINE }, - { "svg:flowPara", SP_TYPE_FLOWPARA }, - { "svg:flowRegion", SP_TYPE_FLOWREGION }, - { "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, - { "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, - { "svg:flowRoot", SP_TYPE_FLOWTEXT }, - { "svg:flowSpan", SP_TYPE_FLOWTSPAN }, - { "svg:font", SP_TYPE_FONT }, - { "svg:font-face", SP_TYPE_FONTFACE }, - { "svg:glyph", SP_TYPE_GLYPH }, - { "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, + //{ "svg:flowDiv", SP_TYPE_FLOWDIV }, + //{ "svg:flowLine", SP_TYPE_FLOWLINE }, + //{ "svg:flowPara", SP_TYPE_FLOWPARA }, + //{ "svg:flowRegion", SP_TYPE_FLOWREGION }, + //{ "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, + //{ "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, + //{ "svg:flowRoot", SP_TYPE_FLOWTEXT }, + //{ "svg:flowSpan", SP_TYPE_FLOWTSPAN }, + //{ "svg:font", SP_TYPE_FONT }, + //{ "svg:font-face", SP_TYPE_FONTFACE }, + //{ "svg:glyph", SP_TYPE_GLYPH }, + //{ "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, { "svg:hkern", SP_TYPE_HKERN }, { "svg:vkern", SP_TYPE_VKERN }, - { "svg:g", SP_TYPE_GROUP }, - { "svg:feBlend", SP_TYPE_FEBLEND }, - { "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, - { "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, - { "svg:feComposite", SP_TYPE_FECOMPOSITE }, - { "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, - { "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, - { "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, - { "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, - { "svg:feFlood", SP_TYPE_FEFLOOD }, + //{ "svg:g", SP_TYPE_GROUP }, + //{ "svg:feBlend", SP_TYPE_FEBLEND }, + //{ "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, + //{ "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, + //{ "svg:feComposite", SP_TYPE_FECOMPOSITE }, + //{ "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, + //{ "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, + //{ "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, + //{ "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, + //{ "svg:feFlood", SP_TYPE_FEFLOOD }, { "svg:feFuncR", SP_TYPE_FEFUNCR }, { "svg:feFuncG", SP_TYPE_FEFUNCG }, { "svg:feFuncB", SP_TYPE_FEFUNCB }, { "svg:feFuncA", SP_TYPE_FEFUNCA }, - { "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, - { "svg:feImage", SP_TYPE_FEIMAGE }, - { "svg:feMerge", SP_TYPE_FEMERGE }, - { "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, - { "svg:feOffset", SP_TYPE_FEOFFSET }, - { "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, - { "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, - { "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, - { "svg:feTile", SP_TYPE_FETILE }, - { "svg:feTurbulence", SP_TYPE_FETURBULENCE }, - { "svg:feMergeNode", SP_TYPE_FEMERGENODE }, - { "svg:image", SP_TYPE_IMAGE }, - { "svg:line", SP_TYPE_LINE }, - { "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, - { "svg:marker", SP_TYPE_MARKER }, - { "svg:mask", SP_TYPE_MASK }, - { "svg:meshGradient", SP_TYPE_MESHGRADIENT }, - { "svg:meshRow", SP_TYPE_MESHROW }, - { "svg:meshPatch", SP_TYPE_MESHPATCH }, - { "svg:metadata", SP_TYPE_METADATA }, - { "svg:path", SP_TYPE_PATH }, - { "svg:pattern", SP_TYPE_PATTERN }, - { "svg:polygon", SP_TYPE_POLYGON }, - { "svg:polyline", SP_TYPE_POLYLINE }, - { "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, - { "svg:rect", SP_TYPE_RECT }, - { "svg:stop", SP_TYPE_STOP }, - { "svg:script", SP_TYPE_SCRIPT }, - { "svg:svg", SP_TYPE_ROOT }, - { "svg:style", SP_TYPE_STYLE_ELEM }, - { "svg:switch", SP_TYPE_SWITCH }, - { "svg:symbol", SP_TYPE_SYMBOL }, - { "svg:text", SP_TYPE_TEXT }, - { "svg:textPath", SP_TYPE_TEXTPATH }, - { "svg:title", SP_TYPE_TITLE }, - { "svg:tref", SP_TYPE_TREF }, - { "svg:tspan", SP_TYPE_TSPAN }, - { "svg:use", SP_TYPE_USE }, - { "inkscape:path-effect", TYPE_LIVEPATHEFFECT } + //{ "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, + //{ "svg:feImage", SP_TYPE_FEIMAGE }, + //{ "svg:feMerge", SP_TYPE_FEMERGE }, + //{ "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, + //{ "svg:feOffset", SP_TYPE_FEOFFSET }, + //{ "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, + //{ "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, + //{ "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, + //{ "svg:feTile", SP_TYPE_FETILE }, + //{ "svg:feTurbulence", SP_TYPE_FETURBULENCE }, + //{ "svg:feMergeNode", SP_TYPE_FEMERGENODE }, + //{ "svg:image", SP_TYPE_IMAGE }, + //{ "svg:line", SP_TYPE_LINE }, + //{ "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, + //{ "svg:marker", SP_TYPE_MARKER }, + //{ "svg:mask", SP_TYPE_MASK }, + //{ "svg:meshGradient", SP_TYPE_MESHGRADIENT }, + //{ "svg:meshRow", SP_TYPE_MESHROW }, + //{ "svg:meshPatch", SP_TYPE_MESHPATCH }, + //{ "svg:metadata", SP_TYPE_METADATA }, + //{ "svg:path", SP_TYPE_PATH }, + //{ "svg:pattern", SP_TYPE_PATTERN }, + //{ "svg:polygon", SP_TYPE_POLYGON }, + //{ "svg:polyline", SP_TYPE_POLYLINE }, + //{ "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, + //{ "svg:rect", SP_TYPE_RECT }, + //{ "svg:stop", SP_TYPE_STOP }, + //{ "svg:script", SP_TYPE_SCRIPT }, + //{ "svg:svg", SP_TYPE_ROOT }, + //{ "svg:style", SP_TYPE_STYLE_ELEM }, + //{ "svg:switch", SP_TYPE_SWITCH }, + //{ "svg:symbol", SP_TYPE_SYMBOL }, + //{ "svg:text", SP_TYPE_TEXT }, + //{ "svg:textPath", SP_TYPE_TEXTPATH }, + //{ "svg:title", SP_TYPE_TITLE }, + //{ "svg:tref", SP_TYPE_TREF }, + //{ "svg:tspan", SP_TYPE_TSPAN }, + //{ "svg:use", SP_TYPE_USE }, + //{ "inkscape:path-effect", TYPE_LIVEPATHEFFECT } }; NameTypeEntry const sodipodi_name_entries[] = { - { "arc", SP_TYPE_ARC }, - { "inkscape:offset", SP_TYPE_OFFSET }, - { "spiral", SP_TYPE_SPIRAL }, - { "star", SP_TYPE_STAR }, - { "inkscape:box3d", SP_TYPE_BOX3D }, - { "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, - { "inkscape:persp3d", SP_TYPE_PERSP3D } + //{ "arc", SP_TYPE_ARC }, + //{ "inkscape:offset", SP_TYPE_OFFSET }, + //{ "spiral", SP_TYPE_SPIRAL }, + //{ "star", SP_TYPE_STAR }, + //{ "inkscape:box3d", SP_TYPE_BOX3D }, + //{ "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, + //{ "inkscape:persp3d", SP_TYPE_PERSP3D } }; NameTypeEntry const *const t2entries[] = { -- cgit v1.2.3 From 0a7e23844c3a43203de3f5207aecb278e84ee739 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 20:45:20 +0200 Subject: Added virtual destructor to SPObject. Switched to new factory. Replaced some casts. Inkscape seems stable, car.svgz renders correctly to png. (bzr r11608.1.70) --- src/sp-object-repr.cpp | 169 +++++++++++++++++++++++++------------------------ 1 file changed, 87 insertions(+), 82 deletions(-) (limited to 'src/sp-object-repr.cpp') diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp index 02114aabc..c3d60c5e8 100644 --- a/src/sp-object-repr.cpp +++ b/src/sp-object-repr.cpp @@ -84,6 +84,7 @@ #include "sp-title.h" #include "sp-desc.h" +#include "sp-factory.h" enum NameType { REPR_NAME, SODIPODI_TYPE }; static unsigned const N_NAME_TYPES = SODIPODI_TYPE + 1; @@ -97,12 +98,16 @@ SPRoot *sp_object_repr_build_tree(SPDocument *document, Inkscape::XML::Node *rep gchar const * const name = repr->name(); g_assert(name != NULL); - GType const type = name_to_gtype(REPR_NAME, name); - g_assert(g_type_is_a(type, SP_TYPE_ROOT)); - gpointer newobj = g_object_new(type, 0); - g_assert(newobj != NULL); - SPObject *const object = SP_OBJECT(newobj); - g_assert(object != NULL); + +// GType const type = name_to_gtype(REPR_NAME, name); +// g_assert(g_type_is_a(type, SP_TYPE_ROOT)); +// gpointer newobj = g_object_new(type, 0); +// g_assert(newobj != NULL); +// SPObject *const object = SP_OBJECT(newobj); +// g_assert(object != NULL); + + SPObject* object = SPFactory::instance().createObject(*repr); + object->invoke_build(document, repr, FALSE); return SP_ROOT(object); @@ -130,93 +135,93 @@ populate_dtables() { struct NameTypeEntry { char const *const name; GType const type_id; }; NameTypeEntry const repr_name_entries[] = { - //{ "svg:a", SP_TYPE_ANCHOR }, + { "svg:a", SP_TYPE_ANCHOR }, //{ "svg:animate", SP_TYPE_ANIMATE }, - //{ "svg:circle", SP_TYPE_CIRCLE }, - //{ "svg:color-profile", COLORPROFILE_TYPE }, - //{ "svg:clipPath", SP_TYPE_CLIPPATH }, - //{ "svg:defs", SP_TYPE_DEFS }, - //{ "svg:desc", SP_TYPE_DESC }, - //{ "svg:ellipse", SP_TYPE_ELLIPSE }, - //{ "svg:filter", SP_TYPE_FILTER }, + { "svg:circle", SP_TYPE_CIRCLE }, + { "svg:color-profile", COLORPROFILE_TYPE }, + { "svg:clipPath", SP_TYPE_CLIPPATH }, + { "svg:defs", SP_TYPE_DEFS }, + { "svg:desc", SP_TYPE_DESC }, + { "svg:ellipse", SP_TYPE_ELLIPSE }, + { "svg:filter", SP_TYPE_FILTER }, /* Note: flow* elements are proposed additions for SVG 1.2, they aren't in SVG 1.1. */ - //{ "svg:flowDiv", SP_TYPE_FLOWDIV }, - //{ "svg:flowLine", SP_TYPE_FLOWLINE }, - //{ "svg:flowPara", SP_TYPE_FLOWPARA }, - //{ "svg:flowRegion", SP_TYPE_FLOWREGION }, - //{ "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, - //{ "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, - //{ "svg:flowRoot", SP_TYPE_FLOWTEXT }, - //{ "svg:flowSpan", SP_TYPE_FLOWTSPAN }, - //{ "svg:font", SP_TYPE_FONT }, - //{ "svg:font-face", SP_TYPE_FONTFACE }, - //{ "svg:glyph", SP_TYPE_GLYPH }, - //{ "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, + { "svg:flowDiv", SP_TYPE_FLOWDIV }, + { "svg:flowLine", SP_TYPE_FLOWLINE }, + { "svg:flowPara", SP_TYPE_FLOWPARA }, + { "svg:flowRegion", SP_TYPE_FLOWREGION }, + { "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, + { "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, + { "svg:flowRoot", SP_TYPE_FLOWTEXT }, + { "svg:flowSpan", SP_TYPE_FLOWTSPAN }, + { "svg:font", SP_TYPE_FONT }, + { "svg:font-face", SP_TYPE_FONTFACE }, + { "svg:glyph", SP_TYPE_GLYPH }, + { "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, { "svg:hkern", SP_TYPE_HKERN }, { "svg:vkern", SP_TYPE_VKERN }, - //{ "svg:g", SP_TYPE_GROUP }, - //{ "svg:feBlend", SP_TYPE_FEBLEND }, - //{ "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, - //{ "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, - //{ "svg:feComposite", SP_TYPE_FECOMPOSITE }, - //{ "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, - //{ "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, - //{ "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, - //{ "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, - //{ "svg:feFlood", SP_TYPE_FEFLOOD }, + { "svg:g", SP_TYPE_GROUP }, + { "svg:feBlend", SP_TYPE_FEBLEND }, + { "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, + { "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, + { "svg:feComposite", SP_TYPE_FECOMPOSITE }, + { "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, + { "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, + { "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, + { "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, + { "svg:feFlood", SP_TYPE_FEFLOOD }, { "svg:feFuncR", SP_TYPE_FEFUNCR }, { "svg:feFuncG", SP_TYPE_FEFUNCG }, { "svg:feFuncB", SP_TYPE_FEFUNCB }, { "svg:feFuncA", SP_TYPE_FEFUNCA }, - //{ "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, - //{ "svg:feImage", SP_TYPE_FEIMAGE }, - //{ "svg:feMerge", SP_TYPE_FEMERGE }, - //{ "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, - //{ "svg:feOffset", SP_TYPE_FEOFFSET }, - //{ "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, - //{ "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, - //{ "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, - //{ "svg:feTile", SP_TYPE_FETILE }, - //{ "svg:feTurbulence", SP_TYPE_FETURBULENCE }, - //{ "svg:feMergeNode", SP_TYPE_FEMERGENODE }, - //{ "svg:image", SP_TYPE_IMAGE }, - //{ "svg:line", SP_TYPE_LINE }, - //{ "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, - //{ "svg:marker", SP_TYPE_MARKER }, - //{ "svg:mask", SP_TYPE_MASK }, - //{ "svg:meshGradient", SP_TYPE_MESHGRADIENT }, - //{ "svg:meshRow", SP_TYPE_MESHROW }, - //{ "svg:meshPatch", SP_TYPE_MESHPATCH }, - //{ "svg:metadata", SP_TYPE_METADATA }, - //{ "svg:path", SP_TYPE_PATH }, - //{ "svg:pattern", SP_TYPE_PATTERN }, - //{ "svg:polygon", SP_TYPE_POLYGON }, - //{ "svg:polyline", SP_TYPE_POLYLINE }, - //{ "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, - //{ "svg:rect", SP_TYPE_RECT }, - //{ "svg:stop", SP_TYPE_STOP }, - //{ "svg:script", SP_TYPE_SCRIPT }, - //{ "svg:svg", SP_TYPE_ROOT }, - //{ "svg:style", SP_TYPE_STYLE_ELEM }, - //{ "svg:switch", SP_TYPE_SWITCH }, - //{ "svg:symbol", SP_TYPE_SYMBOL }, - //{ "svg:text", SP_TYPE_TEXT }, - //{ "svg:textPath", SP_TYPE_TEXTPATH }, - //{ "svg:title", SP_TYPE_TITLE }, - //{ "svg:tref", SP_TYPE_TREF }, - //{ "svg:tspan", SP_TYPE_TSPAN }, - //{ "svg:use", SP_TYPE_USE }, - //{ "inkscape:path-effect", TYPE_LIVEPATHEFFECT } + { "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, + { "svg:feImage", SP_TYPE_FEIMAGE }, + { "svg:feMerge", SP_TYPE_FEMERGE }, + { "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, + { "svg:feOffset", SP_TYPE_FEOFFSET }, + { "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, + { "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, + { "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, + { "svg:feTile", SP_TYPE_FETILE }, + { "svg:feTurbulence", SP_TYPE_FETURBULENCE }, + { "svg:feMergeNode", SP_TYPE_FEMERGENODE }, + { "svg:image", SP_TYPE_IMAGE }, + { "svg:line", SP_TYPE_LINE }, + { "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, + { "svg:marker", SP_TYPE_MARKER }, + { "svg:mask", SP_TYPE_MASK }, + { "svg:meshGradient", SP_TYPE_MESHGRADIENT }, + { "svg:meshRow", SP_TYPE_MESHROW }, + { "svg:meshPatch", SP_TYPE_MESHPATCH }, + { "svg:metadata", SP_TYPE_METADATA }, + { "svg:path", SP_TYPE_PATH }, + { "svg:pattern", SP_TYPE_PATTERN }, + { "svg:polygon", SP_TYPE_POLYGON }, + { "svg:polyline", SP_TYPE_POLYLINE }, + { "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, + { "svg:rect", SP_TYPE_RECT }, + { "svg:stop", SP_TYPE_STOP }, + { "svg:script", SP_TYPE_SCRIPT }, + { "svg:svg", SP_TYPE_ROOT }, + { "svg:style", SP_TYPE_STYLE_ELEM }, + { "svg:switch", SP_TYPE_SWITCH }, + { "svg:symbol", SP_TYPE_SYMBOL }, + { "svg:text", SP_TYPE_TEXT }, + { "svg:textPath", SP_TYPE_TEXTPATH }, + { "svg:title", SP_TYPE_TITLE }, + { "svg:tref", SP_TYPE_TREF }, + { "svg:tspan", SP_TYPE_TSPAN }, + { "svg:use", SP_TYPE_USE }, + { "inkscape:path-effect", TYPE_LIVEPATHEFFECT } }; NameTypeEntry const sodipodi_name_entries[] = { - //{ "arc", SP_TYPE_ARC }, - //{ "inkscape:offset", SP_TYPE_OFFSET }, - //{ "spiral", SP_TYPE_SPIRAL }, - //{ "star", SP_TYPE_STAR }, - //{ "inkscape:box3d", SP_TYPE_BOX3D }, - //{ "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, - //{ "inkscape:persp3d", SP_TYPE_PERSP3D } + { "arc", SP_TYPE_ARC }, + { "inkscape:offset", SP_TYPE_OFFSET }, + { "spiral", SP_TYPE_SPIRAL }, + { "star", SP_TYPE_STAR }, + { "inkscape:box3d", SP_TYPE_BOX3D }, + { "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, + { "inkscape:persp3d", SP_TYPE_PERSP3D } }; NameTypeEntry const *const t2entries[] = { -- cgit v1.2.3 From be6575c39673b06bd51215e47fea86de5f1ee746 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 21:29:05 +0200 Subject: Replaced some forgotten old casting macros. All object files are first compiled into a static library and then Inkscape and Inkview are linked against this library. Thus the linker omits some global function calls that are necessary for class registration. This intermediate step was removed so that both executables are directly linked against all object files. (bzr r11608.1.71) --- src/sp-object-repr.cpp | 156 ++++++++++++++++++++++++------------------------- 1 file changed, 78 insertions(+), 78 deletions(-) (limited to 'src/sp-object-repr.cpp') diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp index c3d60c5e8..1b6eb87a6 100644 --- a/src/sp-object-repr.cpp +++ b/src/sp-object-repr.cpp @@ -135,84 +135,84 @@ populate_dtables() { struct NameTypeEntry { char const *const name; GType const type_id; }; NameTypeEntry const repr_name_entries[] = { - { "svg:a", SP_TYPE_ANCHOR }, - //{ "svg:animate", SP_TYPE_ANIMATE }, - { "svg:circle", SP_TYPE_CIRCLE }, - { "svg:color-profile", COLORPROFILE_TYPE }, - { "svg:clipPath", SP_TYPE_CLIPPATH }, - { "svg:defs", SP_TYPE_DEFS }, - { "svg:desc", SP_TYPE_DESC }, - { "svg:ellipse", SP_TYPE_ELLIPSE }, - { "svg:filter", SP_TYPE_FILTER }, - /* Note: flow* elements are proposed additions for SVG 1.2, they aren't in - SVG 1.1. */ - { "svg:flowDiv", SP_TYPE_FLOWDIV }, - { "svg:flowLine", SP_TYPE_FLOWLINE }, - { "svg:flowPara", SP_TYPE_FLOWPARA }, - { "svg:flowRegion", SP_TYPE_FLOWREGION }, - { "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, - { "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, - { "svg:flowRoot", SP_TYPE_FLOWTEXT }, - { "svg:flowSpan", SP_TYPE_FLOWTSPAN }, - { "svg:font", SP_TYPE_FONT }, - { "svg:font-face", SP_TYPE_FONTFACE }, - { "svg:glyph", SP_TYPE_GLYPH }, - { "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, - { "svg:hkern", SP_TYPE_HKERN }, - { "svg:vkern", SP_TYPE_VKERN }, - { "svg:g", SP_TYPE_GROUP }, - { "svg:feBlend", SP_TYPE_FEBLEND }, - { "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, - { "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, - { "svg:feComposite", SP_TYPE_FECOMPOSITE }, - { "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, - { "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, - { "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, - { "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, - { "svg:feFlood", SP_TYPE_FEFLOOD }, - { "svg:feFuncR", SP_TYPE_FEFUNCR }, - { "svg:feFuncG", SP_TYPE_FEFUNCG }, - { "svg:feFuncB", SP_TYPE_FEFUNCB }, - { "svg:feFuncA", SP_TYPE_FEFUNCA }, - { "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, - { "svg:feImage", SP_TYPE_FEIMAGE }, - { "svg:feMerge", SP_TYPE_FEMERGE }, - { "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, - { "svg:feOffset", SP_TYPE_FEOFFSET }, - { "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, - { "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, - { "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, - { "svg:feTile", SP_TYPE_FETILE }, - { "svg:feTurbulence", SP_TYPE_FETURBULENCE }, - { "svg:feMergeNode", SP_TYPE_FEMERGENODE }, - { "svg:image", SP_TYPE_IMAGE }, - { "svg:line", SP_TYPE_LINE }, - { "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, - { "svg:marker", SP_TYPE_MARKER }, - { "svg:mask", SP_TYPE_MASK }, - { "svg:meshGradient", SP_TYPE_MESHGRADIENT }, - { "svg:meshRow", SP_TYPE_MESHROW }, - { "svg:meshPatch", SP_TYPE_MESHPATCH }, - { "svg:metadata", SP_TYPE_METADATA }, - { "svg:path", SP_TYPE_PATH }, - { "svg:pattern", SP_TYPE_PATTERN }, - { "svg:polygon", SP_TYPE_POLYGON }, - { "svg:polyline", SP_TYPE_POLYLINE }, - { "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, - { "svg:rect", SP_TYPE_RECT }, - { "svg:stop", SP_TYPE_STOP }, - { "svg:script", SP_TYPE_SCRIPT }, - { "svg:svg", SP_TYPE_ROOT }, - { "svg:style", SP_TYPE_STYLE_ELEM }, - { "svg:switch", SP_TYPE_SWITCH }, - { "svg:symbol", SP_TYPE_SYMBOL }, - { "svg:text", SP_TYPE_TEXT }, - { "svg:textPath", SP_TYPE_TEXTPATH }, - { "svg:title", SP_TYPE_TITLE }, - { "svg:tref", SP_TYPE_TREF }, - { "svg:tspan", SP_TYPE_TSPAN }, - { "svg:use", SP_TYPE_USE }, - { "inkscape:path-effect", TYPE_LIVEPATHEFFECT } +// { "svg:a", SP_TYPE_ANCHOR }, +// //{ "svg:animate", SP_TYPE_ANIMATE }, +// { "svg:circle", SP_TYPE_CIRCLE }, +// { "svg:color-profile", COLORPROFILE_TYPE }, +// { "svg:clipPath", SP_TYPE_CLIPPATH }, +// { "svg:defs", SP_TYPE_DEFS }, +// { "svg:desc", SP_TYPE_DESC }, +// { "svg:ellipse", SP_TYPE_ELLIPSE }, +// { "svg:filter", SP_TYPE_FILTER }, +// /* Note: flow* elements are proposed additions for SVG 1.2, they aren't in +// SVG 1.1. */ +// { "svg:flowDiv", SP_TYPE_FLOWDIV }, +// { "svg:flowLine", SP_TYPE_FLOWLINE }, +// { "svg:flowPara", SP_TYPE_FLOWPARA }, +// { "svg:flowRegion", SP_TYPE_FLOWREGION }, +// { "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, +// { "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, +// { "svg:flowRoot", SP_TYPE_FLOWTEXT }, +// { "svg:flowSpan", SP_TYPE_FLOWTSPAN }, +// { "svg:font", SP_TYPE_FONT }, +// { "svg:font-face", SP_TYPE_FONTFACE }, +// { "svg:glyph", SP_TYPE_GLYPH }, +// { "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, +// { "svg:hkern", SP_TYPE_HKERN }, +// { "svg:vkern", SP_TYPE_VKERN }, +// { "svg:g", SP_TYPE_GROUP }, +// { "svg:feBlend", SP_TYPE_FEBLEND }, +// { "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, +// { "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, +// { "svg:feComposite", SP_TYPE_FECOMPOSITE }, +// { "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, +// { "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, +// { "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, +// { "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, +// { "svg:feFlood", SP_TYPE_FEFLOOD }, +// { "svg:feFuncR", SP_TYPE_FEFUNCR }, +// { "svg:feFuncG", SP_TYPE_FEFUNCG }, +// { "svg:feFuncB", SP_TYPE_FEFUNCB }, +// { "svg:feFuncA", SP_TYPE_FEFUNCA }, +// { "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, +// { "svg:feImage", SP_TYPE_FEIMAGE }, +// { "svg:feMerge", SP_TYPE_FEMERGE }, +// { "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, +// { "svg:feOffset", SP_TYPE_FEOFFSET }, +// { "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, +// { "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, +// { "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, +// { "svg:feTile", SP_TYPE_FETILE }, +// { "svg:feTurbulence", SP_TYPE_FETURBULENCE }, +// { "svg:feMergeNode", SP_TYPE_FEMERGENODE }, +// { "svg:image", SP_TYPE_IMAGE }, +// { "svg:line", SP_TYPE_LINE }, +// { "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, +// { "svg:marker", SP_TYPE_MARKER }, +// { "svg:mask", SP_TYPE_MASK }, +// { "svg:meshGradient", SP_TYPE_MESHGRADIENT }, +// { "svg:meshRow", SP_TYPE_MESHROW }, +// { "svg:meshPatch", SP_TYPE_MESHPATCH }, +// { "svg:metadata", SP_TYPE_METADATA }, +// { "svg:path", SP_TYPE_PATH }, +// { "svg:pattern", SP_TYPE_PATTERN }, +// { "svg:polygon", SP_TYPE_POLYGON }, +// { "svg:polyline", SP_TYPE_POLYLINE }, +// { "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, +// { "svg:rect", SP_TYPE_RECT }, +// { "svg:stop", SP_TYPE_STOP }, +// { "svg:script", SP_TYPE_SCRIPT }, +// { "svg:svg", SP_TYPE_ROOT }, +// { "svg:style", SP_TYPE_STYLE_ELEM }, +// { "svg:switch", SP_TYPE_SWITCH }, +// { "svg:symbol", SP_TYPE_SYMBOL }, +// { "svg:text", SP_TYPE_TEXT }, +// { "svg:textPath", SP_TYPE_TEXTPATH }, +// { "svg:title", SP_TYPE_TITLE }, +// { "svg:tref", SP_TYPE_TREF }, +// { "svg:tspan", SP_TYPE_TSPAN }, +// { "svg:use", SP_TYPE_USE }, +// { "inkscape:path-effect", TYPE_LIVEPATHEFFECT } }; NameTypeEntry const sodipodi_name_entries[] = { { "arc", SP_TYPE_ARC }, -- cgit v1.2.3 From 8443720ce6429b9beec839e60b8a808595f4ba72 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 23:01:45 +0200 Subject: Cleaned up a bit. Uses some C++11 features. (bzr r11608.1.72) --- src/sp-object-repr.cpp | 324 ++++++++++++++++++++++++------------------------- 1 file changed, 162 insertions(+), 162 deletions(-) (limited to 'src/sp-object-repr.cpp') diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp index 1b6eb87a6..1d85903c5 100644 --- a/src/sp-object-repr.cpp +++ b/src/sp-object-repr.cpp @@ -10,86 +10,86 @@ * Released under GNU GPL, read the file 'COPYING' for more information */ -#include "sp-defs.h" -#include "sp-symbol.h" -#include "marker.h" -#include "sp-use.h" +//#include "sp-defs.h" +//#include "sp-symbol.h" +//#include "marker.h" +//#include "sp-use.h" #include "sp-root.h" -#include "sp-image.h" -#include "sp-linear-gradient-fns.h" -#include "sp-mesh-gradient-fns.h" -#include "sp-mesh-row-fns.h" -#include "sp-mesh-patch-fns.h" -#include "sp-object-repr.h" -#include "sp-path.h" -#include "sp-radial-gradient-fns.h" -#include "sp-rect.h" -#include "box3d.h" -#include "box3d-side.h" -#include "persp3d.h" -#include "sp-ellipse.h" -#include "sp-star.h" -#include "sp-stop.h" -#include "sp-spiral.h" -#include "sp-offset.h" -#include "sp-line.h" -#include "sp-metadata.h" -#include "sp-polyline.h" -#include "sp-textpath.h" -#include "sp-tref.h" -#include "sp-tspan.h" -#include "sp-pattern.h" -#include "sp-clippath.h" -#include "sp-mask.h" -#include "sp-anchor.h" -#include "sp-flowdiv.h" -#include "sp-flowregion.h" -#include "sp-flowtext.h" -#include "sp-script.h" +//#include "sp-image.h" +//#include "sp-linear-gradient-fns.h" +//#include "sp-mesh-gradient-fns.h" +//#include "sp-mesh-row-fns.h" +//#include "sp-mesh-patch-fns.h" +//#include "sp-object-repr.h" +//#include "sp-path.h" +//#include "sp-radial-gradient-fns.h" +//#include "sp-rect.h" +//#include "box3d.h" +//#include "box3d-side.h" +//#include "persp3d.h" +//#include "sp-ellipse.h" +//#include "sp-star.h" +//#include "sp-stop.h" +//#include "sp-spiral.h" +//#include "sp-offset.h" +//#include "sp-line.h" +//#include "sp-metadata.h" +//#include "sp-polyline.h" +//#include "sp-textpath.h" +//#include "sp-tref.h" +//#include "sp-tspan.h" +//#include "sp-pattern.h" +//#include "sp-clippath.h" +//#include "sp-mask.h" +//#include "sp-anchor.h" +//#include "sp-flowdiv.h" +//#include "sp-flowregion.h" +//#include "sp-flowtext.h" +//#include "sp-script.h" #include "config.h" -#include "sp-font.h" -#include "sp-font-face.h" -#include "sp-glyph.h" -#include "sp-missing-glyph.h" -#include "sp-glyph-kerning.h" - -#include "sp-style-elem.h" -#include "sp-switch.h" -#include "color-profile.h" +//#include "sp-font.h" +//#include "sp-font-face.h" +//#include "sp-glyph.h" +//#include "sp-missing-glyph.h" +//#include "sp-glyph-kerning.h" +// +//#include "sp-style-elem.h" +//#include "sp-switch.h" +//#include "color-profile.h" #include "xml/repr.h" -#include "sp-filter.h" -#include "filters/blend.h" -#include "filters/colormatrix.h" -#include "filters/componenttransfer.h" -#include "filters/componenttransfer-funcnode.h" -#include "filters/composite.h" -#include "filters/convolvematrix.h" -#include "filters/diffuselighting.h" -#include "filters/distantlight.h" -#include "filters/displacementmap.h" -#include "filters/flood.h" -#include "filters/gaussian-blur.h" -#include "filters/image.h" -#include "filters/merge.h" -#include "filters/morphology.h" -#include "filters/offset.h" -#include "filters/pointlight.h" -#include "filters/specularlighting.h" -#include "filters/spotlight.h" -#include "filters/tile.h" -#include "filters/turbulence.h" -#include "filters/mergenode.h" -#include "live_effects/lpeobject.h" -#include "sp-title.h" -#include "sp-desc.h" +//#include "sp-filter.h" +//#include "filters/blend.h" +//#include "filters/colormatrix.h" +//#include "filters/componenttransfer.h" +//#include "filters/componenttransfer-funcnode.h" +//#include "filters/composite.h" +//#include "filters/convolvematrix.h" +//#include "filters/diffuselighting.h" +//#include "filters/distantlight.h" +//#include "filters/displacementmap.h" +//#include "filters/flood.h" +//#include "filters/gaussian-blur.h" +//#include "filters/image.h" +//#include "filters/merge.h" +//#include "filters/morphology.h" +//#include "filters/offset.h" +//#include "filters/pointlight.h" +//#include "filters/specularlighting.h" +//#include "filters/spotlight.h" +//#include "filters/tile.h" +//#include "filters/turbulence.h" +//#include "filters/mergenode.h" +//#include "live_effects/lpeobject.h" +//#include "sp-title.h" +//#include "sp-desc.h" #include "sp-factory.h" -enum NameType { REPR_NAME, SODIPODI_TYPE }; -static unsigned const N_NAME_TYPES = SODIPODI_TYPE + 1; - -static GType name_to_gtype(NameType name_type, gchar const *name); +//enum NameType { REPR_NAME, SODIPODI_TYPE }; +//static unsigned const N_NAME_TYPES = SODIPODI_TYPE + 1; +// +//static GType name_to_gtype(NameType name_type, gchar const *name); SPRoot *sp_object_repr_build_tree(SPDocument *document, Inkscape::XML::Node *repr) { @@ -113,28 +113,28 @@ SPRoot *sp_object_repr_build_tree(SPDocument *document, Inkscape::XML::Node *rep return SP_ROOT(object); } -GType -sp_repr_type_lookup(Inkscape::XML::Node *repr) -{ - if ( repr->type() == Inkscape::XML::TEXT_NODE ) { - return SP_TYPE_STRING; - } else if ( repr->type() == Inkscape::XML::ELEMENT_NODE ) { - gchar const * const type_name = repr->attribute("sodipodi:type"); - return ( type_name - ? name_to_gtype(SODIPODI_TYPE, type_name) - : name_to_gtype(REPR_NAME, repr->name()) ); - } else { - return 0; - } -} - -static GHashTable *t2dtable[N_NAME_TYPES] = {NULL}; - -static void -populate_dtables() -{ - struct NameTypeEntry { char const *const name; GType const type_id; }; - NameTypeEntry const repr_name_entries[] = { +//GType +//sp_repr_type_lookup(Inkscape::XML::Node *repr) +//{ +// if ( repr->type() == Inkscape::XML::TEXT_NODE ) { +// return SP_TYPE_STRING; +// } else if ( repr->type() == Inkscape::XML::ELEMENT_NODE ) { +// gchar const * const type_name = repr->attribute("sodipodi:type"); +// return ( type_name +// ? name_to_gtype(SODIPODI_TYPE, type_name) +// : name_to_gtype(REPR_NAME, repr->name()) ); +// } else { +// return 0; +// } +//} +// +//static GHashTable *t2dtable[N_NAME_TYPES] = {NULL}; +// +//static void +//populate_dtables() +//{ +// struct NameTypeEntry { char const *const name; GType const type_id; }; +// NameTypeEntry const repr_name_entries[] = { // { "svg:a", SP_TYPE_ANCHOR }, // //{ "svg:animate", SP_TYPE_ANIMATE }, // { "svg:circle", SP_TYPE_CIRCLE }, @@ -213,75 +213,75 @@ populate_dtables() // { "svg:tspan", SP_TYPE_TSPAN }, // { "svg:use", SP_TYPE_USE }, // { "inkscape:path-effect", TYPE_LIVEPATHEFFECT } - }; - NameTypeEntry const sodipodi_name_entries[] = { - { "arc", SP_TYPE_ARC }, - { "inkscape:offset", SP_TYPE_OFFSET }, - { "spiral", SP_TYPE_SPIRAL }, - { "star", SP_TYPE_STAR }, - { "inkscape:box3d", SP_TYPE_BOX3D }, - { "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, - { "inkscape:persp3d", SP_TYPE_PERSP3D } - }; - - NameTypeEntry const *const t2entries[] = { - repr_name_entries, - sodipodi_name_entries - }; - unsigned const t2n_entries[] = { - G_N_ELEMENTS(repr_name_entries), - G_N_ELEMENTS(sodipodi_name_entries) - }; +// }; +// NameTypeEntry const sodipodi_name_entries[] = { +// { "arc", SP_TYPE_ARC }, +// { "inkscape:offset", SP_TYPE_OFFSET }, +// { "spiral", SP_TYPE_SPIRAL }, +// { "star", SP_TYPE_STAR }, +// { "inkscape:box3d", SP_TYPE_BOX3D }, +// { "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, +// { "inkscape:persp3d", SP_TYPE_PERSP3D } +// }; +// +// NameTypeEntry const *const t2entries[] = { +// repr_name_entries, +// sodipodi_name_entries +// }; +// unsigned const t2n_entries[] = { +// G_N_ELEMENTS(repr_name_entries), +// G_N_ELEMENTS(sodipodi_name_entries) +// }; +// +// for (unsigned nt = 0; nt < N_NAME_TYPES; ++nt) { +// NameTypeEntry const *const entries = t2entries[nt]; +// unsigned const n_entries = t2n_entries[nt]; +// GHashTable *&dtable = t2dtable[nt]; +// +// dtable = g_hash_table_new(g_str_hash, g_str_equal); +// for (unsigned i = 0; i < n_entries; ++i) { +// g_hash_table_insert(dtable, +// (void *)entries[i].name, +// (gpointer) entries[i].type_id); +// } +// } +//} - for (unsigned nt = 0; nt < N_NAME_TYPES; ++nt) { - NameTypeEntry const *const entries = t2entries[nt]; - unsigned const n_entries = t2n_entries[nt]; - GHashTable *&dtable = t2dtable[nt]; - - dtable = g_hash_table_new(g_str_hash, g_str_equal); - for (unsigned i = 0; i < n_entries; ++i) { - g_hash_table_insert(dtable, - (void *)entries[i].name, - (gpointer) entries[i].type_id); - } - } -} +//static inline void +//ensure_dtables_populated() +//{ +// if (!*t2dtable) { +// populate_dtables(); +// } +//} -static inline void -ensure_dtables_populated() -{ - if (!*t2dtable) { - populate_dtables(); - } -} - -static GType -name_to_gtype(NameType const name_type, gchar const *name) -{ - ensure_dtables_populated(); - - gpointer const data = g_hash_table_lookup(t2dtable[name_type], name); - return ( ( data == NULL ) - ? SP_TYPE_OBJECT - : (GType) data ); -} - -void -sp_object_type_register(gchar const *name, GType const gtype) -{ - GType const current = name_to_gtype(REPR_NAME, name); - if (current == SP_TYPE_OBJECT) { - g_hash_table_insert(t2dtable[REPR_NAME], - const_cast(name), - (gpointer) gtype); - } else { - /* Already registered. */ - if (current != gtype) { - g_warning("repr type `%s' already registered as type #%lu, ignoring attempt to re-register as #%lu.", - name, current, gtype); - } - } -} +//static GType +//name_to_gtype(NameType const name_type, gchar const *name) +//{ +// ensure_dtables_populated(); +// +// gpointer const data = g_hash_table_lookup(t2dtable[name_type], name); +// return ( ( data == NULL ) +// ? SP_TYPE_OBJECT +// : (GType) data ); +//} +// +//void +//sp_object_type_register(gchar const *name, GType const gtype) +//{ +// GType const current = name_to_gtype(REPR_NAME, name); +// if (current == SP_TYPE_OBJECT) { +// g_hash_table_insert(t2dtable[REPR_NAME], +// const_cast(name), +// (gpointer) gtype); +// } else { +// /* Already registered. */ +// if (current != gtype) { +// g_warning("repr type `%s' already registered as type #%lu, ignoring attempt to re-register as #%lu.", +// name, current, gtype); +// } +// } +//} /* Local Variables: -- cgit v1.2.3 From 8de8047c5e30af8598646d7a66c62dbf290f7c51 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Wed, 10 Apr 2013 16:10:04 +0200 Subject: Removed old SPObject factory. (bzr r11608.1.91) --- src/sp-object-repr.cpp | 295 ------------------------------------------------- 1 file changed, 295 deletions(-) delete mode 100644 src/sp-object-repr.cpp (limited to 'src/sp-object-repr.cpp') diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp deleted file mode 100644 index 1d85903c5..000000000 --- a/src/sp-object-repr.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Object type dictionary and build frontend - * - * Authors: - * Lauris Kaplinski - * Abhishek Sharma - * - * Copyright (C) 1999-2003 Lauris Kaplinski - * - * Released under GNU GPL, read the file 'COPYING' for more information - */ - -//#include "sp-defs.h" -//#include "sp-symbol.h" -//#include "marker.h" -//#include "sp-use.h" -#include "sp-root.h" -//#include "sp-image.h" -//#include "sp-linear-gradient-fns.h" -//#include "sp-mesh-gradient-fns.h" -//#include "sp-mesh-row-fns.h" -//#include "sp-mesh-patch-fns.h" -//#include "sp-object-repr.h" -//#include "sp-path.h" -//#include "sp-radial-gradient-fns.h" -//#include "sp-rect.h" -//#include "box3d.h" -//#include "box3d-side.h" -//#include "persp3d.h" -//#include "sp-ellipse.h" -//#include "sp-star.h" -//#include "sp-stop.h" -//#include "sp-spiral.h" -//#include "sp-offset.h" -//#include "sp-line.h" -//#include "sp-metadata.h" -//#include "sp-polyline.h" -//#include "sp-textpath.h" -//#include "sp-tref.h" -//#include "sp-tspan.h" -//#include "sp-pattern.h" -//#include "sp-clippath.h" -//#include "sp-mask.h" -//#include "sp-anchor.h" -//#include "sp-flowdiv.h" -//#include "sp-flowregion.h" -//#include "sp-flowtext.h" -//#include "sp-script.h" -#include "config.h" - -//#include "sp-font.h" -//#include "sp-font-face.h" -//#include "sp-glyph.h" -//#include "sp-missing-glyph.h" -//#include "sp-glyph-kerning.h" -// -//#include "sp-style-elem.h" -//#include "sp-switch.h" -//#include "color-profile.h" -#include "xml/repr.h" -//#include "sp-filter.h" -//#include "filters/blend.h" -//#include "filters/colormatrix.h" -//#include "filters/componenttransfer.h" -//#include "filters/componenttransfer-funcnode.h" -//#include "filters/composite.h" -//#include "filters/convolvematrix.h" -//#include "filters/diffuselighting.h" -//#include "filters/distantlight.h" -//#include "filters/displacementmap.h" -//#include "filters/flood.h" -//#include "filters/gaussian-blur.h" -//#include "filters/image.h" -//#include "filters/merge.h" -//#include "filters/morphology.h" -//#include "filters/offset.h" -//#include "filters/pointlight.h" -//#include "filters/specularlighting.h" -//#include "filters/spotlight.h" -//#include "filters/tile.h" -//#include "filters/turbulence.h" -//#include "filters/mergenode.h" -//#include "live_effects/lpeobject.h" -//#include "sp-title.h" -//#include "sp-desc.h" - -#include "sp-factory.h" - -//enum NameType { REPR_NAME, SODIPODI_TYPE }; -//static unsigned const N_NAME_TYPES = SODIPODI_TYPE + 1; -// -//static GType name_to_gtype(NameType name_type, gchar const *name); - -SPRoot *sp_object_repr_build_tree(SPDocument *document, Inkscape::XML::Node *repr) -{ - g_assert(document != NULL); - g_assert(repr != NULL); - - gchar const * const name = repr->name(); - g_assert(name != NULL); - -// GType const type = name_to_gtype(REPR_NAME, name); -// g_assert(g_type_is_a(type, SP_TYPE_ROOT)); -// gpointer newobj = g_object_new(type, 0); -// g_assert(newobj != NULL); -// SPObject *const object = SP_OBJECT(newobj); -// g_assert(object != NULL); - - SPObject* object = SPFactory::instance().createObject(*repr); - - object->invoke_build(document, repr, FALSE); - - return SP_ROOT(object); -} - -//GType -//sp_repr_type_lookup(Inkscape::XML::Node *repr) -//{ -// if ( repr->type() == Inkscape::XML::TEXT_NODE ) { -// return SP_TYPE_STRING; -// } else if ( repr->type() == Inkscape::XML::ELEMENT_NODE ) { -// gchar const * const type_name = repr->attribute("sodipodi:type"); -// return ( type_name -// ? name_to_gtype(SODIPODI_TYPE, type_name) -// : name_to_gtype(REPR_NAME, repr->name()) ); -// } else { -// return 0; -// } -//} -// -//static GHashTable *t2dtable[N_NAME_TYPES] = {NULL}; -// -//static void -//populate_dtables() -//{ -// struct NameTypeEntry { char const *const name; GType const type_id; }; -// NameTypeEntry const repr_name_entries[] = { -// { "svg:a", SP_TYPE_ANCHOR }, -// //{ "svg:animate", SP_TYPE_ANIMATE }, -// { "svg:circle", SP_TYPE_CIRCLE }, -// { "svg:color-profile", COLORPROFILE_TYPE }, -// { "svg:clipPath", SP_TYPE_CLIPPATH }, -// { "svg:defs", SP_TYPE_DEFS }, -// { "svg:desc", SP_TYPE_DESC }, -// { "svg:ellipse", SP_TYPE_ELLIPSE }, -// { "svg:filter", SP_TYPE_FILTER }, -// /* Note: flow* elements are proposed additions for SVG 1.2, they aren't in -// SVG 1.1. */ -// { "svg:flowDiv", SP_TYPE_FLOWDIV }, -// { "svg:flowLine", SP_TYPE_FLOWLINE }, -// { "svg:flowPara", SP_TYPE_FLOWPARA }, -// { "svg:flowRegion", SP_TYPE_FLOWREGION }, -// { "svg:flowRegionBreak", SP_TYPE_FLOWREGIONBREAK }, -// { "svg:flowRegionExclude", SP_TYPE_FLOWREGIONEXCLUDE }, -// { "svg:flowRoot", SP_TYPE_FLOWTEXT }, -// { "svg:flowSpan", SP_TYPE_FLOWTSPAN }, -// { "svg:font", SP_TYPE_FONT }, -// { "svg:font-face", SP_TYPE_FONTFACE }, -// { "svg:glyph", SP_TYPE_GLYPH }, -// { "svg:missing-glyph", SP_TYPE_MISSING_GLYPH }, -// { "svg:hkern", SP_TYPE_HKERN }, -// { "svg:vkern", SP_TYPE_VKERN }, -// { "svg:g", SP_TYPE_GROUP }, -// { "svg:feBlend", SP_TYPE_FEBLEND }, -// { "svg:feColorMatrix", SP_TYPE_FECOLORMATRIX }, -// { "svg:feComponentTransfer", SP_TYPE_FECOMPONENTTRANSFER }, -// { "svg:feComposite", SP_TYPE_FECOMPOSITE }, -// { "svg:feConvolveMatrix", SP_TYPE_FECONVOLVEMATRIX }, -// { "svg:feDiffuseLighting", SP_TYPE_FEDIFFUSELIGHTING }, -// { "svg:feDistantLight", SP_TYPE_FEDISTANTLIGHT }, -// { "svg:feDisplacementMap", SP_TYPE_FEDISPLACEMENTMAP }, -// { "svg:feFlood", SP_TYPE_FEFLOOD }, -// { "svg:feFuncR", SP_TYPE_FEFUNCR }, -// { "svg:feFuncG", SP_TYPE_FEFUNCG }, -// { "svg:feFuncB", SP_TYPE_FEFUNCB }, -// { "svg:feFuncA", SP_TYPE_FEFUNCA }, -// { "svg:feGaussianBlur", SP_TYPE_GAUSSIANBLUR }, -// { "svg:feImage", SP_TYPE_FEIMAGE }, -// { "svg:feMerge", SP_TYPE_FEMERGE }, -// { "svg:feMorphology", SP_TYPE_FEMORPHOLOGY }, -// { "svg:feOffset", SP_TYPE_FEOFFSET }, -// { "svg:fePointLight", SP_TYPE_FEPOINTLIGHT }, -// { "svg:feSpecularLighting", SP_TYPE_FESPECULARLIGHTING }, -// { "svg:feSpotLight", SP_TYPE_FESPOTLIGHT }, -// { "svg:feTile", SP_TYPE_FETILE }, -// { "svg:feTurbulence", SP_TYPE_FETURBULENCE }, -// { "svg:feMergeNode", SP_TYPE_FEMERGENODE }, -// { "svg:image", SP_TYPE_IMAGE }, -// { "svg:line", SP_TYPE_LINE }, -// { "svg:linearGradient", SP_TYPE_LINEARGRADIENT }, -// { "svg:marker", SP_TYPE_MARKER }, -// { "svg:mask", SP_TYPE_MASK }, -// { "svg:meshGradient", SP_TYPE_MESHGRADIENT }, -// { "svg:meshRow", SP_TYPE_MESHROW }, -// { "svg:meshPatch", SP_TYPE_MESHPATCH }, -// { "svg:metadata", SP_TYPE_METADATA }, -// { "svg:path", SP_TYPE_PATH }, -// { "svg:pattern", SP_TYPE_PATTERN }, -// { "svg:polygon", SP_TYPE_POLYGON }, -// { "svg:polyline", SP_TYPE_POLYLINE }, -// { "svg:radialGradient", SP_TYPE_RADIALGRADIENT }, -// { "svg:rect", SP_TYPE_RECT }, -// { "svg:stop", SP_TYPE_STOP }, -// { "svg:script", SP_TYPE_SCRIPT }, -// { "svg:svg", SP_TYPE_ROOT }, -// { "svg:style", SP_TYPE_STYLE_ELEM }, -// { "svg:switch", SP_TYPE_SWITCH }, -// { "svg:symbol", SP_TYPE_SYMBOL }, -// { "svg:text", SP_TYPE_TEXT }, -// { "svg:textPath", SP_TYPE_TEXTPATH }, -// { "svg:title", SP_TYPE_TITLE }, -// { "svg:tref", SP_TYPE_TREF }, -// { "svg:tspan", SP_TYPE_TSPAN }, -// { "svg:use", SP_TYPE_USE }, -// { "inkscape:path-effect", TYPE_LIVEPATHEFFECT } -// }; -// NameTypeEntry const sodipodi_name_entries[] = { -// { "arc", SP_TYPE_ARC }, -// { "inkscape:offset", SP_TYPE_OFFSET }, -// { "spiral", SP_TYPE_SPIRAL }, -// { "star", SP_TYPE_STAR }, -// { "inkscape:box3d", SP_TYPE_BOX3D }, -// { "inkscape:box3dside", SP_TYPE_BOX3D_SIDE }, -// { "inkscape:persp3d", SP_TYPE_PERSP3D } -// }; -// -// NameTypeEntry const *const t2entries[] = { -// repr_name_entries, -// sodipodi_name_entries -// }; -// unsigned const t2n_entries[] = { -// G_N_ELEMENTS(repr_name_entries), -// G_N_ELEMENTS(sodipodi_name_entries) -// }; -// -// for (unsigned nt = 0; nt < N_NAME_TYPES; ++nt) { -// NameTypeEntry const *const entries = t2entries[nt]; -// unsigned const n_entries = t2n_entries[nt]; -// GHashTable *&dtable = t2dtable[nt]; -// -// dtable = g_hash_table_new(g_str_hash, g_str_equal); -// for (unsigned i = 0; i < n_entries; ++i) { -// g_hash_table_insert(dtable, -// (void *)entries[i].name, -// (gpointer) entries[i].type_id); -// } -// } -//} - -//static inline void -//ensure_dtables_populated() -//{ -// if (!*t2dtable) { -// populate_dtables(); -// } -//} - -//static GType -//name_to_gtype(NameType const name_type, gchar const *name) -//{ -// ensure_dtables_populated(); -// -// gpointer const data = g_hash_table_lookup(t2dtable[name_type], name); -// return ( ( data == NULL ) -// ? SP_TYPE_OBJECT -// : (GType) data ); -//} -// -//void -//sp_object_type_register(gchar const *name, GType const gtype) -//{ -// GType const current = name_to_gtype(REPR_NAME, name); -// if (current == SP_TYPE_OBJECT) { -// g_hash_table_insert(t2dtable[REPR_NAME], -// const_cast(name), -// (gpointer) gtype); -// } else { -// /* Already registered. */ -// if (current != gtype) { -// g_warning("repr type `%s' already registered as type #%lu, ignoring attempt to re-register as #%lu.", -// name, current, gtype); -// } -// } -//} - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : -- cgit v1.2.3