lpeobject.cpp revision f4dbc5a10ebf95900d1ef56d74aad0474e159370
/*
* Copyright (C) Johan Engelen 2007-2008 <j.b.c.engelen@utwente.nl>
* Abhishek Sharma
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#include "live_effects/lpeobject.h"
#include "live_effects/effect.h"
#include "xml/node-event-vector.h"
#include "sp-object.h"
#include "attributes.h"
#include "document.h"
#include "document-private.h"
//#define LIVEPATHEFFECT_VERBOSE
static void livepatheffect_on_repr_attr_changed (Inkscape::XML::Node * repr, const gchar *key, const gchar *oldval, const gchar *newval, bool is_interactive, void * data);
static SPObjectClass *livepatheffect_parent_class;
/**
* Registers the LivePathEffect class with Gdk and returns its type number.
*/
{
static GType livepatheffect_type = 0;
if (!livepatheffect_type) {
sizeof (LivePathEffectObjectClass),
sizeof (LivePathEffectObject),
16,
NULL,
};
livepatheffect_type = g_type_register_static (SP_TYPE_OBJECT, "LivePathEffectObject", &livepatheffect_info, (GTypeFlags)0);
}
return livepatheffect_type;
}
NULL, /* child_added */
NULL, /* child_removed */
NULL, /* content_changed */
NULL /* order_changed */
};
/**
* Callback to initialize livepatheffect vtable.
*/
void
{
//sp_object_class->build = livepatheffect_build;
}
this->livepatheffectobject = lpeo;
}
}
/**
* Callback to initialize livepatheffect object.
*/
void
{
#ifdef LIVEPATHEFFECT_VERBOSE
g_message("Init livepatheffectobject");
#endif
lpeobj->effecttype_set = false;
}
/**
* Virtual build: set livepatheffect attributes from its associated XML node.
*/
void
LivePathEffectObject::livepatheffect_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr)
{
#ifdef LIVEPATHEFFECT_VERBOSE
g_message("Build livepatheffect");
#endif
// g_assert(object != NULL);
// g_assert(SP_IS_OBJECT(object));
//
//// if (((SPObjectClass *) livepatheffect_parent_class)->build)
//// (* ((SPObjectClass *) livepatheffect_parent_class)->build)(object, document, repr);
//
// object->readAttr( "effect" );
//
// if (repr) {
// repr->addListener (&livepatheffect_repr_events, object);
// }
//
// /* Register ourselves, is this necessary? */
//// document->addResource("path-effect", object);
}
if (repr) {
}
/* Register ourselves, is this necessary? */
// document->addResource("path-effect", object);
}
/**
* Virtual release of livepatheffect members before destruction.
*/
void
{
#ifdef LIVEPATHEFFECT_VERBOSE
g_print("Releasing livepatheffect");
#endif
// LivePathEffectObject *lpeobj = LIVEPATHEFFECT(object);
//
// object->getRepr()->removeListenerByData(object);
//
//
///*
// if (object->document) {
// // Unregister ourselves
// sp_document_removeResource(object->document, "livepatheffect", object);
// }
//
// if (gradient->ref) {
// gradient->modified_connection.disconnect();
// gradient->ref->detach();
// delete gradient->ref;
// gradient->ref = NULL;
// }
//
// gradient->modified_connection.~connection();
//
//*/
//
// if (lpeobj->lpe) {
// delete lpeobj->lpe;
// lpeobj->lpe = NULL;
// }
// lpeobj->effecttype = Inkscape::LivePathEffect::INVALID_LPE;
//
// if (((SPObjectClass *) livepatheffect_parent_class)->release)
// ((SPObjectClass *) livepatheffect_parent_class)->release(object);
}
void CLivePathEffectObject::onRelease() {
/*
if (object->document) {
// Unregister ourselves
sp_document_removeResource(object->document, "livepatheffect", object);
}
if (gradient->ref) {
gradient->modified_connection.disconnect();
gradient->ref->detach();
delete gradient->ref;
gradient->ref = NULL;
}
gradient->modified_connection.~connection();
*/
}
// if (((SPObjectClass *) livepatheffect_parent_class)->release)
// ((SPObjectClass *) livepatheffect_parent_class)->release(object);
}
/**
* Virtual set: set attribute to value.
*/
void
{
// LivePathEffectObject *lpeobj = LIVEPATHEFFECT(object);
//#ifdef LIVEPATHEFFECT_VERBOSE
// g_print("Set livepatheffect");
//#endif
// switch (key) {
// case SP_PROP_PATH_EFFECT:
// if (lpeobj->lpe) {
// delete lpeobj->lpe;
// lpeobj->lpe = NULL;
// }
//
// if ( value && Inkscape::LivePathEffect::LPETypeConverter.is_valid_key(value) ) {
// lpeobj->effecttype = Inkscape::LivePathEffect::LPETypeConverter.get_id_from_key(value);
// lpeobj->lpe = Inkscape::LivePathEffect::Effect::New(lpeobj->effecttype, lpeobj);
// lpeobj->effecttype_set = true;
// } else {
// lpeobj->effecttype = Inkscape::LivePathEffect::INVALID_LPE;
// lpeobj->effecttype_set = false;
// }
// object->requestModified(SP_OBJECT_MODIFIED_FLAG);
// break;
// }
//
// if (((SPObjectClass *) livepatheffect_parent_class)->set) {
// ((SPObjectClass *) livepatheffect_parent_class)->set(object, key, value);
// }
}
#ifdef LIVEPATHEFFECT_VERBOSE
g_print("Set livepatheffect");
#endif
switch (key) {
case SP_PROP_PATH_EFFECT:
}
lpeobj->effecttype_set = true;
} else {
lpeobj->effecttype_set = false;
}
break;
}
// if (((SPObjectClass *) livepatheffect_parent_class)->set) {
// ((SPObjectClass *) livepatheffect_parent_class)->set(object, key, value);
// }
}
/**
* Virtual write: write object attributes to repr.
*/
LivePathEffectObject::livepatheffect_write(SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
{
#ifdef LIVEPATHEFFECT_VERBOSE
g_print("Write livepatheffect");
#endif
// LivePathEffectObject *lpeobj = LIVEPATHEFFECT(object);
//
// if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
// repr = xml_doc->createElement("inkscape:path-effect");
// }
//
// if ((flags & SP_OBJECT_WRITE_ALL) || lpeobj->lpe) {
// repr->setAttribute("effect", Inkscape::LivePathEffect::LPETypeConverter.get_key(lpeobj->effecttype).c_str());
//
// lpeobj->lpe->writeParamsToSVG();
// }
//
// if (((SPObjectClass *) livepatheffect_parent_class)->write)
// (* ((SPObjectClass *) livepatheffect_parent_class)->write)(object, xml_doc, repr, flags);
//
// return repr;
}
Inkscape::XML::Node* CLivePathEffectObject::onWrite(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
}
repr->setAttribute("effect", Inkscape::LivePathEffect::LPETypeConverter.get_key(lpeobj->effecttype).c_str());
}
// if (((SPObjectClass *) livepatheffect_parent_class)->write)
// (* ((SPObjectClass *) livepatheffect_parent_class)->write)(object, xml_doc, repr, flags);
return repr;
}
static void
const gchar */*oldval*/,
bool /*is_interactive*/,
void * data )
{
#ifdef LIVEPATHEFFECT_VERBOSE
g_print("livepatheffect_on_repr_attr_changed");
#endif
if (!data)
return;
return;
}
/**
* If this has other users, create a new private duplicate and return it
* returns 'this' when no forking was necessary (and therefore no duplicate was made)
* Check out sp_lpe_item_fork_path_effects_if_necessary !
*/
LivePathEffectObject *LivePathEffectObject::fork_private_if_necessary(unsigned int nr_of_allowed_users)
{
if (hrefcount > nr_of_allowed_users) {
return lpeobj_new;
}
return this;
}
/*
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 :