summaryrefslogtreecommitdiffstats
path: root/src/sp-object-repr.cpp
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2013-09-19 22:33:11 +0000
committerJabiertxof <jtx@jtx.marker.es>2013-09-19 22:33:11 +0000
commit4bda89e32e33c7bdff5d3ea3c1ceee1f806de9f7 (patch)
treecaeb924426bcc861badc6fa81318b67460b26d47 /src/sp-object-repr.cpp
parentUpdate to trunk (diff)
parentupdates for cmake (diff)
downloadinkscape-4bda89e32e33c7bdff5d3ea3c1ceee1f806de9f7.tar.gz
inkscape-4bda89e32e33c7bdff5d3ea3c1ceee1f806de9f7.zip
Update to trunk
(bzr r11950.1.141)
Diffstat (limited to 'src/sp-object-repr.cpp')
-rw-r--r--src/sp-object-repr.cpp290
1 files changed, 0 insertions, 290 deletions
diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp
deleted file mode 100644
index eba38ec67..000000000
--- a/src/sp-object-repr.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Object type dictionary and build frontend
- *
- * Authors:
- * Lauris Kaplinski <lauris@kaplinski.com>
- * 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"
-
-
-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);
- 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<gchar *>(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 :