From 3a2904d2f09f945bb7dc64e487ce48c2e79595ae Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:45:56 +0100 Subject: Added "virtual pads" to - SPAnimation - SPIAnimation - SPAnimate fixed compiler error in SPFeFuncNode. (bzr r11608.1.50) --- src/filters/componenttransfer-funcnode.cpp | 2 + src/sp-animation.cpp | 146 +++++++++++++++++++++++------ src/sp-animation.h | 60 +++++++++++- 3 files changed, 176 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/filters/componenttransfer-funcnode.cpp b/src/filters/componenttransfer-funcnode.cpp index 4299253f8..15436b452 100644 --- a/src/filters/componenttransfer-funcnode.cpp +++ b/src/filters/componenttransfer-funcnode.cpp @@ -192,6 +192,8 @@ sp_fefuncnode_init(SPFeFuncNode *fefuncnode) void CFeFuncNode::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { CObject::onBuild(document, repr); + SPFeFuncNode* object = this->spfefuncnode; + //Read values of key attributes from XML nodes into object. object->readAttr( "type" ); object->readAttr( "tableValues" ); diff --git a/src/sp-animation.cpp b/src/sp-animation.cpp index ba8fd85c5..67181bba6 100644 --- a/src/sp-animation.cpp +++ b/src/sp-animation.cpp @@ -35,7 +35,7 @@ static void log_set_attr(char const *const classname, unsigned int const key, ch static void sp_animation_class_init(SPAnimationClass *klass); static void sp_animation_init(SPAnimation *animation); -static void sp_animation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +//static void sp_animation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_animation_release(SPObject *object); static void sp_animation_set(SPObject *object, unsigned int key, gchar const *value); @@ -73,16 +73,43 @@ static void sp_animation_class_init(SPAnimationClass *klass) sp_object_class->set = sp_animation_set; } -static void sp_animation_init(SPAnimation */*animation*/) -{ +CAnimation::CAnimation(SPAnimation* animation) : CObject(animation) { + this->spanimation = animation; } +CAnimation::~CAnimation() { +} -static void sp_animation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +static void sp_animation_init(SPAnimation *animation) { + animation->canimation = new CAnimation(animation); + animation->cobject = animation->canimation; +} + + +//static void sp_animation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +//{ // if (((SPObjectClass *) animation_parent_class)->build) // ((SPObjectClass *) animation_parent_class)->build(object, document, repr); - // CPPIFY: todo +// +// object->readAttr( "xlink:href" ); +// object->readAttr( "attributeName" ); +// object->readAttr( "attributeType" ); +// object->readAttr( "begin" ); +// object->readAttr( "dur" ); +// object->readAttr( "end" ); +// object->readAttr( "min" ); +// object->readAttr( "max" ); +// object->readAttr( "restart" ); +// object->readAttr( "repeatCount" ); +// object->readAttr( "repeatDur" ); +// object->readAttr( "fill" ); +//} + +void CAnimation::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { + SPAnimation* object = this->spanimation; + + CObject::onBuild(document, repr); object->readAttr( "xlink:href" ); object->readAttr( "attributeName" ); @@ -98,26 +125,36 @@ static void sp_animation_build(SPObject *object, SPDocument *document, Inkscape: object->readAttr( "fill" ); } -static void sp_animation_release(SPObject */*object*/) +static void sp_animation_release(SPObject *object) { + ((SPAnimation*)object)->canimation->onRelease(); +} + +void CAnimation::onRelease() { } static void sp_animation_set(SPObject *object, unsigned int key, gchar const *value) { //SPAnimation *animation = SP_ANIMATION(object); +// +// log_set_attr("SPAnimation", key, value); +// +// if (((SPObjectClass *) animation_parent_class)->set) +// ((SPObjectClass *) animation_parent_class)->set(object, key, value); + ((SPAnimation*)object)->canimation->onSet(key, value); +} - log_set_attr("SPAnimation", key, value); - - if (((SPObjectClass *) animation_parent_class)->set) - ((SPObjectClass *) animation_parent_class)->set(object, key, value); +void CAnimation::onSet(unsigned int key, gchar const *value) { + CObject::onSet(key, value); } + /* Interpolated animation base class */ static void sp_ianimation_class_init(SPIAnimationClass *klass); static void sp_ianimation_init(SPIAnimation *animation); -static void sp_ianimation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +//static void sp_ianimation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_ianimation_release(SPObject *object); static void sp_ianimation_set(SPObject *object, unsigned int key, gchar const *value); @@ -155,16 +192,38 @@ static void sp_ianimation_class_init(SPIAnimationClass *klass) sp_object_class->set = sp_ianimation_set; } -static void sp_ianimation_init(SPIAnimation */*animation*/) +CIAnimation::CIAnimation(SPIAnimation* animation) : CAnimation(animation) { + this->spianimation = animation; +} + +static void sp_ianimation_init(SPIAnimation *animation) { + animation->cianimation = new CIAnimation(animation); + animation->canimation = animation->cianimation; + animation->cobject = animation->cianimation; } -static void sp_ianimation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ +//static void sp_ianimation_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +//{ // if (((SPObjectClass *) ianimation_parent_class)->build) // ((SPObjectClass *) ianimation_parent_class)->build(object, document, repr); - // CPPIFY: todo +// +// object->readAttr( "calcMode" ); +// object->readAttr( "values" ); +// object->readAttr( "keyTimes" ); +// object->readAttr( "keySplines" ); +// object->readAttr( "from" ); +// object->readAttr( "to" ); +// object->readAttr( "by" ); +// object->readAttr( "additive" ); +// object->readAttr( "accumulate" ); +//} + +void CIAnimation::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { + SPIAnimation* object = this->spianimation; + + CAnimation::onBuild(document, repr); object->readAttr( "calcMode" ); object->readAttr( "values" ); @@ -177,18 +236,28 @@ static void sp_ianimation_build(SPObject *object, SPDocument *document, Inkscape object->readAttr( "accumulate" ); } -static void sp_ianimation_release(SPObject */*object*/) +static void sp_ianimation_release(SPObject *object) { + ((SPIAnimation*)object)->cianimation->onRelease(); +} + +void CIAnimation::onRelease() { + } static void sp_ianimation_set(SPObject *object, unsigned int key, gchar const *value) { //SPIAnimation *ianimation = SP_IANIMATION(object); - log_set_attr("SPIAnimation", key, value); +// log_set_attr("SPIAnimation", key, value); +// +// if (((SPObjectClass *) ianimation_parent_class)->set) +// ((SPObjectClass *) ianimation_parent_class)->set(object, key, value); + ((SPIAnimation*)object)->cianimation->onSet(key, value); +} - if (((SPObjectClass *) ianimation_parent_class)->set) - ((SPObjectClass *) ianimation_parent_class)->set(object, key, value); +void CIAnimation::onSet(unsigned int key, gchar const *value) { + CAnimation::onSet(key, value); } /* SVG */ @@ -196,7 +265,7 @@ static void sp_ianimation_set(SPObject *object, unsigned int key, gchar const *v static void sp_animate_class_init(SPAnimateClass *klass); static void sp_animate_init(SPAnimate *animate); -static void sp_animate_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); +//static void sp_animate_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr); static void sp_animate_release(SPObject *object); static void sp_animate_set(SPObject *object, unsigned int key, gchar const *value); @@ -234,32 +303,51 @@ static void sp_animate_class_init(SPAnimateClass *klass) sp_object_class->set = sp_animate_set; } -static void sp_animate_init(SPAnimate */*animate*/) +CAnimate::CAnimate(SPAnimate* animate) : CIAnimation(animate) { + this->spanimate = animate; +} + +static void sp_animate_init(SPAnimate *animate) { + animate->canimate = new CAnimate(animate); + animate->cianimation = animate->canimate; + animate->canimation = animate->canimate; + animate->cobject = animate->canimate; } -static void sp_animate_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) -{ +//static void sp_animate_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) +//{ // if (((SPObjectClass *) animate_parent_class)->build) // ((SPObjectClass *) animate_parent_class)->build(object, document, repr); - // CPPIFY: todo +//} + +void CAnimate::onBuild(SPDocument *document, Inkscape::XML::Node *repr) { + CIAnimation::onBuild(document, repr); } -static void sp_animate_release(SPObject */*object*/) +static void sp_animate_release(SPObject *object) { + ((SPAnimate*)object)->canimate->onRelease(); +} + +void CAnimate::onRelease() { } static void sp_animate_set(SPObject *object, unsigned int key, gchar const *value) { //SPAnimate *animate = SP_ANIMATE(object); - log_set_attr("SPAnimate", key, value); - - if (((SPObjectClass *) animate_parent_class)->set) - ((SPObjectClass *) animate_parent_class)->set(object, key, value); +// log_set_attr("SPAnimate", key, value); +// +// if (((SPObjectClass *) animate_parent_class)->set) +// ((SPObjectClass *) animate_parent_class)->set(object, key, value); + ((SPAnimate*)object)->canimate->onSet(key, value); } +void CAnimate::onSet(unsigned int key, gchar const *value) { + CIAnimation::onSet(key, value); +} /* Local Variables: diff --git a/src/sp-animation.h b/src/sp-animation.h index 407419f5b..fc7315cb2 100644 --- a/src/sp-animation.h +++ b/src/sp-animation.h @@ -25,13 +25,31 @@ class SPAnimation; class SPAnimationClass; -struct SPAnimation : public SPObject { +class CAnimation; + +class SPAnimation : public SPObject { +public: + CAnimation* canimation; }; struct SPAnimationClass { SPObjectClass parent_class; }; +class CAnimation : public CObject { +public: + CAnimation(SPAnimation* animation); + virtual ~CAnimation(); + + virtual void onBuild(SPDocument* doc, Inkscape::XML::Node* repr); + virtual void onRelease(); + + virtual void onSet(unsigned int key, const gchar* value); + +private: + SPAnimation* spanimation; +}; + GType sp_animation_get_type (void); /* Interpolated animation base class */ @@ -43,13 +61,31 @@ GType sp_animation_get_type (void); class SPIAnimation; class SPIAnimationClass; -struct SPIAnimation : public SPAnimation { +class CIAnimation; + +class SPIAnimation : public SPAnimation { +public: + CIAnimation* cianimation; }; struct SPIAnimationClass { SPAnimationClass parent_class; }; +class CIAnimation : public CAnimation { +public: + CIAnimation(SPIAnimation* animation); + virtual ~CIAnimation(); + + virtual void onBuild(SPDocument* doc, Inkscape::XML::Node* repr); + virtual void onRelease(); + + virtual void onSet(unsigned int key, const gchar* value); + +private: + SPIAnimation* spianimation; +}; + GType sp_ianimation_get_type (void); /* SVG */ @@ -61,13 +97,31 @@ GType sp_ianimation_get_type (void); class SPAnimate; class SPAnimateClass; -struct SPAnimate : public SPIAnimation { +class CAnimate; + +class SPAnimate : public SPIAnimation { +public: + CAnimate* canimate; }; struct SPAnimateClass { SPIAnimationClass parent_class; }; +class CAnimate : public CIAnimation { +public: + CAnimate(SPAnimate* animate); + virtual ~CAnimate(); + + virtual void onBuild(SPDocument* doc, Inkscape::XML::Node* repr); + virtual void onRelease(); + + virtual void onSet(unsigned int key, const gchar* value); + +private: + SPAnimate* spanimate; +}; + GType sp_animate_get_type (void); -- cgit v1.2.3