a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#ifndef __SP_TAG_USE_H__
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#define __SP_TAG_USE_H__
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White/*
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White * SVG <inkscape:tagref> implementation
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White *
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White * Authors:
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White * Theodore Janeczko
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White *
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White * Copyright (C) Theodore Janeczko 2012 <flutterguy317@gmail.com>
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White *
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White * Released under GNU GPL, read the file 'COPYING' for more information
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White */
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
0ed512dfeb94b481858723f9ba692fd4682f9012Liam P. White#include <glib.h>
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#include <stddef.h>
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#include <sigc++/sigc++.h>
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#include "svg/svg-length.h"
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#include "sp-object.h"
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#define SP_TAG_USE(obj) (dynamic_cast<SPTagUse*> (obj))
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#define SP_IS_TAG_USE(obj) (dynamic_cast<SPTagUse*> (obj) != NULL)
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. Whiteclass SPTagUse;
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. Whiteclass SPTagUseReference;
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. Whiteclass SPTagUse : public SPObject {
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. Whitepublic:
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White // item built from the original's repr (the visible clone)
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White // relative to the SPUse itself, it is treated as a child, similar to a grouped item relative to its group
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White SPObject *child;
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White gchar *href;
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. Whitepublic:
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White SPTagUse();
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual ~SPTagUse();
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual void build(SPDocument *doc, Inkscape::XML::Node *repr);
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual void set(unsigned key, gchar const *value);
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags);
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual void release();
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual void href_changed(SPObject* old_ref, SPObject* ref);
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White //virtual SPItem* unlink();
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual SPItem* get_original();
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White virtual SPItem* root();
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White // the reference to the original object
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White SPTagUseReference *ref;
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White sigc::connection _changed_connection;
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White};
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White
a73b1f7fc9a9ba7e0d68f33292a885da6c2981d0Liam P. White#endif