diff options
| author | Andrius Ramanauskas <knutux@gmail.com> | 2006-04-20 16:06:59 +0000 |
|---|---|---|
| committer | knutux <knutux@users.sourceforge.net> | 2006-04-20 16:06:59 +0000 |
| commit | 59f47a0c4156ad31d8c685ccac2c02ac83c658c6 (patch) | |
| tree | ca2bc01c578b9b70fe4bd9e9c2a40c648f81f971 /src/sp-switch.h | |
| parent | disabling rendering optimization for dashed strokes (until optimization is tw... (diff) | |
| download | inkscape-59f47a0c4156ad31d8c685ccac2c02ac83c658c6.tar.gz inkscape-59f47a0c4156ad31d8c685ccac2c02ac83c658c6.zip | |
SVG 1.1 Conditional Processing Module rendering support (<switch> element, requiredReatures/requiredExtensions/systemLanguage attributes).
Two more W3C SVG Test Suite testes pass after this change.
(bzr r556)
Diffstat (limited to 'src/sp-switch.h')
| -rw-r--r-- | src/sp-switch.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/sp-switch.h b/src/sp-switch.h new file mode 100644 index 000000000..84fc35298 --- /dev/null +++ b/src/sp-switch.h @@ -0,0 +1,61 @@ +#ifndef __SP_SWITCH_H__ +#define __SP_SWITCH_H__ + +/* + * SVG <switch> implementation + * + * Authors: + * Andrius R. <knutux@gmail.com> + * + * Copyright (C) 2006 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "sp-item-group.h" + +#define SP_TYPE_SWITCH (CSwitch::getType()) +#define SP_SWITCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_SWITCH, SPSwitch)) +#define SP_SWITCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_SWITCH, SPSwitchClass)) +#define SP_IS_SWITCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_SWITCH)) +#define SP_IS_SWITCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_SWITCH)) + +/* + * Virtual methods of SPSwitch + */ +class CSwitch : public CGroup { +public: + CSwitch(SPGroup *group); + virtual ~CSwitch(); + + friend class SPSwitch; + + static GType getType(); + + virtual void onChildAdded(Inkscape::XML::Node *child); + virtual void onChildRemoved(Inkscape::XML::Node *child); + virtual void onOrderChanged(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref); + virtual gchar *getDescription(); + +protected: + virtual GSList *_childList(bool add_ref, Action action); + virtual void _showChildren (NRArena *arena, NRArenaItem *ai, unsigned int key, unsigned int flags); + + SPObject *_evaluateFirst(); + void _reevaluate(bool add_to_arena = false); + static void _releaseItem(SPObject *obj, CSwitch *selection); + void _releaseLastItem(SPObject *obj); + +private: + SPObject *_cached_item; + gulong _release_handler_id; +}; + +struct SPSwitch : public SPGroup { + void resetChildEvaluated() { ((CSwitch *)group)->_reevaluate(); } +}; + +struct SPSwitchClass : public SPGroupClass { +}; + +#endif |
