summaryrefslogtreecommitdiffstats
path: root/src/filters
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-07-31 20:51:23 +0000
committerMarkus Engel <markus.engel@tum.de>2013-07-31 20:51:23 +0000
commitbeecbea1b415d5b9536f2309c4f30fc258e346f5 (patch)
treec7e2df507bb1f06e8bdf237f07c3fd4e5bc2fcce /src/filters
parentFixed SPObject ctor and dtor; removed singleton.h; some smaller changes. (diff)
downloadinkscape-beecbea1b415d5b9536f2309c4f30fc258e346f5.tar.gz
inkscape-beecbea1b415d5b9536f2309c4f30fc258e346f5.zip
Cleaned up a bit; fixed struct vs. class forward declarations.
(bzr r11608.1.111)
Diffstat (limited to 'src/filters')
-rw-r--r--src/filters/componenttransfer-funcnode.cpp131
-rw-r--r--src/filters/componenttransfer-funcnode.h1
-rw-r--r--src/filters/distantlight.cpp90
-rw-r--r--src/filters/distantlight.h1
-rw-r--r--src/filters/mergenode.cpp29
-rw-r--r--src/filters/mergenode.h1
-rw-r--r--src/filters/pointlight.cpp119
-rw-r--r--src/filters/pointlight.h1
-rw-r--r--src/filters/spotlight.cpp296
-rw-r--r--src/filters/spotlight.h1
10 files changed, 330 insertions, 340 deletions
diff --git a/src/filters/componenttransfer-funcnode.cpp b/src/filters/componenttransfer-funcnode.cpp
index 8b5a8a3ab..7c5191700 100644
--- a/src/filters/componenttransfer-funcnode.cpp
+++ b/src/filters/componenttransfer-funcnode.cpp
@@ -31,14 +31,9 @@
#include "macros.h"
/* FeFuncNode class */
-SPFeFuncNode::SPFeFuncNode() : SPObject() {
- this->type = Inkscape::Filters::COMPONENTTRANSFER_TYPE_IDENTITY;
- //this->tableValues = NULL;
- this->slope = 1;
- this->intercept = 0;
- this->amplitude = 1;
- this->exponent = 1;
- this->offset = 0;
+SPFeFuncNode::SPFeFuncNode()
+ : SPObject(), type(Inkscape::Filters::COMPONENTTRANSFER_TYPE_IDENTITY),
+ slope(1), intercept(0), amplitude(1), exponent(1), offset(0) {
}
SPFeFuncNode::~SPFeFuncNode() {
@@ -52,56 +47,65 @@ SPFeFuncNode::~SPFeFuncNode() {
void SPFeFuncNode::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPObject::build(document, repr);
- SPFeFuncNode* object = this;
-
//Read values of key attributes from XML nodes into object.
- object->readAttr( "type" );
- object->readAttr( "tableValues" );
- object->readAttr( "slope" );
- object->readAttr( "intercept" );
- object->readAttr( "amplitude" );
- object->readAttr( "exponent" );
- object->readAttr( "offset" );
+ this->readAttr( "type" );
+ this->readAttr( "tableValues" );
+ this->readAttr( "slope" );
+ this->readAttr( "intercept" );
+ this->readAttr( "amplitude" );
+ this->readAttr( "exponent" );
+ this->readAttr( "offset" );
//is this necessary?
- document->addResource("fefuncnode", object); //maybe feFuncR, fefuncG, feFuncB and fefuncA ?
+ document->addResource("fefuncnode", this); //maybe feFuncR, fefuncG, feFuncB and fefuncA ?
}
/**
* Drops any allocated memory.
*/
void SPFeFuncNode::release() {
- SPFeFuncNode* object = this;
- //SPFeFuncNode *fefuncnode = SP_FEFUNCNODE(object);
-
- if ( object->document ) {
+ if ( this->document ) {
// Unregister ourselves
- object->document->removeResource("fefuncnode", object);
+ this->document->removeResource("fefuncnode", this);
}
//TODO: release resources here
}
static Inkscape::Filters::FilterComponentTransferType sp_feComponenttransfer_read_type(gchar const *value){
- if (!value) return Inkscape::Filters::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED.
+ if (!value) {
+ return Inkscape::Filters::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED.
+ }
+
switch(value[0]){
case 'i':
- if (strncmp(value, "identity", 8) == 0) return Inkscape::Filters::COMPONENTTRANSFER_TYPE_IDENTITY;
+ if (strncmp(value, "identity", 8) == 0) {
+ return Inkscape::Filters::COMPONENTTRANSFER_TYPE_IDENTITY;
+ }
break;
case 't':
- if (strncmp(value, "table", 5) == 0) return Inkscape::Filters::COMPONENTTRANSFER_TYPE_TABLE;
+ if (strncmp(value, "table", 5) == 0) {
+ return Inkscape::Filters::COMPONENTTRANSFER_TYPE_TABLE;
+ }
break;
case 'd':
- if (strncmp(value, "discrete", 8) == 0) return Inkscape::Filters::COMPONENTTRANSFER_TYPE_DISCRETE;
+ if (strncmp(value, "discrete", 8) == 0) {
+ return Inkscape::Filters::COMPONENTTRANSFER_TYPE_DISCRETE;
+ }
break;
case 'l':
- if (strncmp(value, "linear", 6) == 0) return Inkscape::Filters::COMPONENTTRANSFER_TYPE_LINEAR;
+ if (strncmp(value, "linear", 6) == 0) {
+ return Inkscape::Filters::COMPONENTTRANSFER_TYPE_LINEAR;
+ }
break;
case 'g':
- if (strncmp(value, "gamma", 5) == 0) return Inkscape::Filters::COMPONENTTRANSFER_TYPE_GAMMA;
+ if (strncmp(value, "gamma", 5) == 0) {
+ return Inkscape::Filters::COMPONENTTRANSFER_TYPE_GAMMA;
+ }
break;
}
+
return Inkscape::Filters::COMPONENTTRANSFER_TYPE_ERROR; //type attribute is REQUIRED.
}
@@ -109,63 +113,65 @@ static Inkscape::Filters::FilterComponentTransferType sp_feComponenttransfer_rea
* Sets a specific value in the SPFeFuncNode.
*/
void SPFeFuncNode::set(unsigned int key, gchar const *value) {
- SPFeFuncNode* object = this;
-
- SPFeFuncNode *feFuncNode = SP_FEFUNCNODE(object);
Inkscape::Filters::FilterComponentTransferType type;
double read_num;
+
switch(key) {
case SP_ATTR_TYPE:
type = sp_feComponenttransfer_read_type(value);
- if(type != feFuncNode->type) {
- feFuncNode->type = type;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if(type != this->type) {
+ this->type = type;
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_TABLEVALUES:
if (value){
- feFuncNode->tableValues = helperfns_read_vector(value);
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ this->tableValues = helperfns_read_vector(value);
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_SLOPE:
read_num = value ? helperfns_read_number(value) : 1;
- if (read_num != feFuncNode->slope) {
- feFuncNode->slope = read_num;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (read_num != this->slope) {
+ this->slope = read_num;
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_INTERCEPT:
read_num = value ? helperfns_read_number(value) : 0;
- if (read_num != feFuncNode->intercept) {
- feFuncNode->intercept = read_num;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (read_num != this->intercept) {
+ this->intercept = read_num;
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_AMPLITUDE:
read_num = value ? helperfns_read_number(value) : 1;
- if (read_num != feFuncNode->amplitude) {
- feFuncNode->amplitude = read_num;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (read_num != this->amplitude) {
+ this->amplitude = read_num;
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_EXPONENT:
read_num = value ? helperfns_read_number(value) : 1;
- if (read_num != feFuncNode->exponent) {
- feFuncNode->exponent = read_num;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (read_num != this->exponent) {
+ this->exponent = read_num;
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_OFFSET:
read_num = value ? helperfns_read_number(value) : 0;
- if (read_num != feFuncNode->offset) {
- feFuncNode->offset = read_num;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (read_num != this->offset) {
+ this->offset = read_num;
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
default:
-// if (((SPObjectClass *) feFuncNode_parent_class)->set)
-// ((SPObjectClass *) feFuncNode_parent_class)->set(object, key, value);
SPObject::set(key, value);
break;
}
@@ -175,16 +181,11 @@ void SPFeFuncNode::set(unsigned int key, gchar const *value) {
* * Receives update notifications.
* */
void SPFeFuncNode::update(SPCtx *ctx, guint flags) {
- SPFeFuncNode* object = this;
-
- SPFeFuncNode *feFuncNode = SP_FEFUNCNODE(object);
- (void)feFuncNode;
-
if (flags & SP_OBJECT_MODIFIED_FLAG) {
/* do something to trigger redisplay, updates? */
//TODO
- //object->readAttr( "azimuth" );
- //object->readAttr( "elevation" );
+ //this->readAttr( "azimuth" );
+ //this->readAttr( "elevation" );
}
SPObject::update(ctx, flags);
@@ -194,16 +195,12 @@ void SPFeFuncNode::update(SPCtx *ctx, guint flags) {
* Writes its settings to an incoming repr object, if any.
*/
Inkscape::XML::Node* SPFeFuncNode::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeFuncNode* object = this;
- SPFeFuncNode *fefuncnode = SP_FEFUNCNODE(object);
-
if (!repr) {
- repr = object->getRepr()->duplicate(doc);
+ repr = this->getRepr()->duplicate(doc);
}
- (void)fefuncnode;
/*
-TODO: I'm not sure what to do here...
+ TODO: I'm not sure what to do here...
if (fefuncnode->azimuth_set)
sp_repr_set_css_double(repr, "azimuth", fefuncnode->azimuth);
diff --git a/src/filters/componenttransfer-funcnode.h b/src/filters/componenttransfer-funcnode.h
index deed46839..873baa196 100644
--- a/src/filters/componenttransfer-funcnode.h
+++ b/src/filters/componenttransfer-funcnode.h
@@ -54,6 +54,7 @@ public:
double exponent;
double offset;
+protected:
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
diff --git a/src/filters/distantlight.cpp b/src/filters/distantlight.cpp
index 763ddbe7a..8b6ef023b 100644
--- a/src/filters/distantlight.cpp
+++ b/src/filters/distantlight.cpp
@@ -29,11 +29,8 @@
#define SP_MACROS_SILENT
#include "macros.h"
-SPFeDistantLight::SPFeDistantLight() : SPObject() {
- this->azimuth = 0;
- this->elevation = 0;
- this->azimuth_set = FALSE;
- this->elevation_set = FALSE;
+SPFeDistantLight::SPFeDistantLight()
+ : SPObject(), azimuth(0), azimuth_set(FALSE), elevation(0), elevation_set(FALSE) {
}
SPFeDistantLight::~SPFeDistantLight() {
@@ -47,27 +44,21 @@ SPFeDistantLight::~SPFeDistantLight() {
void SPFeDistantLight::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPObject::build(document, repr);
- SPFeDistantLight* object = this;
-
//Read values of key attributes from XML nodes into object.
- object->readAttr( "azimuth" );
- object->readAttr( "elevation" );
+ this->readAttr( "azimuth" );
+ this->readAttr( "elevation" );
//is this necessary?
- document->addResource("fedistantlight", object);
+ document->addResource("fedistantlight", this);
}
/**
* Drops any allocated memory.
*/
void SPFeDistantLight::release() {
- SPFeDistantLight* object = this;
-
- //SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object);
-
- if ( object->document ) {
+ if ( this->document ) {
// Unregister ourselves
- object->document->removeResource("fedistantlight", object);
+ this->document->removeResource("fedistantlight", this);
}
//TODO: release resources here
@@ -77,44 +68,51 @@ void SPFeDistantLight::release() {
* Sets a specific value in the SPFeDistantLight.
*/
void SPFeDistantLight::set(unsigned int key, gchar const *value) {
- SPFeDistantLight* object = this;
- SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object);
gchar *end_ptr;
+
switch (key) {
case SP_ATTR_AZIMUTH:
end_ptr =NULL;
+
if (value) {
- fedistantlight->azimuth = g_ascii_strtod(value, &end_ptr);
+ this->azimuth = g_ascii_strtod(value, &end_ptr);
+
if (end_ptr) {
- fedistantlight->azimuth_set = TRUE;
+ this->azimuth_set = TRUE;
}
}
+
if (!value || !end_ptr) {
- fedistantlight->azimuth_set = FALSE;
- fedistantlight->azimuth = 0;
+ this->azimuth_set = FALSE;
+ this->azimuth = 0;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_ELEVATION:
end_ptr =NULL;
+
if (value) {
- fedistantlight->elevation = g_ascii_strtod(value, &end_ptr);
+ this->elevation = g_ascii_strtod(value, &end_ptr);
+
if (end_ptr) {
- fedistantlight->elevation_set = TRUE;
+ this->elevation_set = TRUE;
}
}
+
if (!value || !end_ptr) {
- fedistantlight->elevation_set = FALSE;
- fedistantlight->elevation = 0;
+ this->elevation_set = FALSE;
+ this->elevation = 0;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
default:
@@ -128,14 +126,10 @@ void SPFeDistantLight::set(unsigned int key, gchar const *value) {
* * Receives update notifications.
* */
void SPFeDistantLight::update(SPCtx *ctx, guint flags) {
- SPFeDistantLight* object = this;
- SPFeDistantLight *feDistantLight = SP_FEDISTANTLIGHT(object);
- (void)feDistantLight;
-
if (flags & SP_OBJECT_MODIFIED_FLAG) {
/* do something to trigger redisplay, updates? */
- object->readAttr( "azimuth" );
- object->readAttr( "elevation" );
+ this->readAttr( "azimuth" );
+ this->readAttr( "elevation" );
}
SPObject::update(ctx, flags);
@@ -145,17 +139,17 @@ void SPFeDistantLight::update(SPCtx *ctx, guint flags) {
* Writes its settings to an incoming repr object, if any.
*/
Inkscape::XML::Node* SPFeDistantLight::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeDistantLight* object = this;
- SPFeDistantLight *fedistantlight = SP_FEDISTANTLIGHT(object);
-
if (!repr) {
- repr = object->getRepr()->duplicate(doc);
+ repr = this->getRepr()->duplicate(doc);
+ }
+
+ if (this->azimuth_set) {
+ sp_repr_set_css_double(repr, "azimuth", this->azimuth);
}
- if (fedistantlight->azimuth_set)
- sp_repr_set_css_double(repr, "azimuth", fedistantlight->azimuth);
- if (fedistantlight->elevation_set)
- sp_repr_set_css_double(repr, "elevation", fedistantlight->elevation);
+ if (this->elevation_set) {
+ sp_repr_set_css_double(repr, "elevation", this->elevation);
+ }
SPObject::write(doc, repr, flags);
diff --git a/src/filters/distantlight.h b/src/filters/distantlight.h
index b808eb279..ad9c8f53c 100644
--- a/src/filters/distantlight.h
+++ b/src/filters/distantlight.h
@@ -33,6 +33,7 @@ public:
gfloat elevation;
guint elevation_set : 1;
+protected:
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
diff --git a/src/filters/mergenode.cpp b/src/filters/mergenode.cpp
index e356ac771..1b06db706 100644
--- a/src/filters/mergenode.cpp
+++ b/src/filters/mergenode.cpp
@@ -33,8 +33,8 @@ namespace {
bool mergeNodeRegistered = SPFactory::instance().registerObject("svg:feMergeNode", createMergeNode);
}
-SPFeMergeNode::SPFeMergeNode() : SPObject() {
- this->input = Inkscape::Filters::NR_FILTER_SLOT_NOT_SET;
+SPFeMergeNode::SPFeMergeNode()
+ : SPObject(), input(Inkscape::Filters::NR_FILTER_SLOT_NOT_SET) {
}
SPFeMergeNode::~SPFeMergeNode() {
@@ -46,8 +46,7 @@ SPFeMergeNode::~SPFeMergeNode() {
* sp-object-repr.cpp's repr_name_entries array.
*/
void SPFeMergeNode::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPFeMergeNode* object = this;
- object->readAttr( "in" );
+ this->readAttr( "in" );
}
/**
@@ -61,15 +60,13 @@ void SPFeMergeNode::release() {
* Sets a specific value in the SPFeMergeNode.
*/
void SPFeMergeNode::set(unsigned int key, gchar const *value) {
- SPFeMergeNode* object = this;
- SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object);
- SPFeMerge *parent = SP_FEMERGE(object->parent);
+ SPFeMerge *parent = SP_FEMERGE(this->parent);
if (key == SP_ATTR_IN) {
int input = sp_filter_primitive_read_in(parent, value);
- if (input != feMergeNode->input) {
- feMergeNode->input = input;
- object->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ if (input != this->input) {
+ this->input = input;
+ this->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
}
@@ -81,11 +78,8 @@ void SPFeMergeNode::set(unsigned int key, gchar const *value) {
* Receives update notifications.
*/
void SPFeMergeNode::update(SPCtx *ctx, guint flags) {
- SPFeMergeNode* object = this;
- //SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object);
-
if (flags & SP_OBJECT_MODIFIED_FLAG) {
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ this->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
SPObject::update(ctx, flags);
@@ -95,16 +89,13 @@ void SPFeMergeNode::update(SPCtx *ctx, guint flags) {
* Writes its settings to an incoming repr object, if any.
*/
Inkscape::XML::Node* SPFeMergeNode::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeMergeNode* object = this;
- //SPFeMergeNode *feMergeNode = SP_FEMERGENODE(object);
-
- // Inkscape-only object, not copied during an "plain SVG" dump:
+ // Inkscape-only this, not copied during an "plain SVG" dump:
if (flags & SP_OBJECT_WRITE_EXT) {
if (repr) {
// is this sane?
//repr->mergeFrom(object->getRepr(), "id");
} else {
- repr = object->getRepr()->duplicate(doc);
+ repr = this->getRepr()->duplicate(doc);
}
}
diff --git a/src/filters/mergenode.h b/src/filters/mergenode.h
index 346d8da24..9182780ca 100644
--- a/src/filters/mergenode.h
+++ b/src/filters/mergenode.h
@@ -27,6 +27,7 @@ public:
int input;
+protected:
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
diff --git a/src/filters/pointlight.cpp b/src/filters/pointlight.cpp
index ab0b1b582..1c7532b4e 100644
--- a/src/filters/pointlight.cpp
+++ b/src/filters/pointlight.cpp
@@ -39,14 +39,8 @@ namespace {
bool pointLightRegistered = SPFactory::instance().registerObject("svg:fePointLight", createPointLight);
}
-SPFePointLight::SPFePointLight() : SPObject() {
- this->x = 0;
- this->y = 0;
- this->z = 0;
-
- this->x_set = FALSE;
- this->y_set = FALSE;
- this->z_set = FALSE;
+SPFePointLight::SPFePointLight()
+ : SPObject(), x(0), x_set(FALSE), y(0), y_set(FALSE), z(0), z_set(FALSE) {
}
SPFePointLight::~SPFePointLight() {
@@ -61,27 +55,22 @@ SPFePointLight::~SPFePointLight() {
void SPFePointLight::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPObject::build(document, repr);
- SPFePointLight* object = this;
-
//Read values of key attributes from XML nodes into object.
- object->readAttr( "x" );
- object->readAttr( "y" );
- object->readAttr( "z" );
+ this->readAttr( "x" );
+ this->readAttr( "y" );
+ this->readAttr( "z" );
//is this necessary?
- document->addResource("fepointlight", object);
+ document->addResource("fepointlight", this);
}
/**
* Drops any allocated memory.
*/
void SPFePointLight::release() {
- SPFePointLight* object = this;
- //SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object);
-
- if ( object->document ) {
+ if ( this->document ) {
// Unregister ourselves
- object->document->removeResource("fepointlight", object);
+ this->document->removeResource("fepointlight", this);
}
//TODO: release resources here
@@ -91,63 +80,73 @@ void SPFePointLight::release() {
* Sets a specific value in the SPFePointLight.
*/
void SPFePointLight::set(unsigned int key, gchar const *value) {
- SPFePointLight* object = this;
-
- SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object);
gchar *end_ptr;
+
switch (key) {
case SP_ATTR_X:
end_ptr = NULL;
+
if (value) {
- fepointlight->x = g_ascii_strtod(value, &end_ptr);
+ this->x = g_ascii_strtod(value, &end_ptr);
+
if (end_ptr) {
- fepointlight->x_set = TRUE;
+ this->x_set = TRUE;
}
}
+
if (!value || !end_ptr) {
- fepointlight->x = 0;
- fepointlight->x_set = FALSE;
+ this->x = 0;
+ this->x_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_Y:
end_ptr = NULL;
+
if (value) {
- fepointlight->y = g_ascii_strtod(value, &end_ptr);
+ this->y = g_ascii_strtod(value, &end_ptr);
+
if (end_ptr) {
- fepointlight->y_set = TRUE;
+ this->y_set = TRUE;
}
}
+
if (!value || !end_ptr) {
- fepointlight->y = 0;
- fepointlight->y_set = FALSE;
+ this->y = 0;
+ this->y_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_Z:
end_ptr = NULL;
+
if (value) {
- fepointlight->z = g_ascii_strtod(value, &end_ptr);
+ this->z = g_ascii_strtod(value, &end_ptr);
+
if (end_ptr) {
- fepointlight->z_set = TRUE;
+ this->z_set = TRUE;
}
}
+
if (!value || !end_ptr) {
- fepointlight->z = 0;
- fepointlight->z_set = FALSE;
+ this->z = 0;
+ this->z_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
default:
@@ -161,16 +160,11 @@ void SPFePointLight::set(unsigned int key, gchar const *value) {
* * Receives update notifications.
* */
void SPFePointLight::update(SPCtx *ctx, guint flags) {
- SPFePointLight* object = this;
-
- SPFePointLight *fePointLight = SP_FEPOINTLIGHT(object);
- (void)fePointLight;
-
if (flags & SP_OBJECT_MODIFIED_FLAG) {
/* do something to trigger redisplay, updates? */
- object->readAttr( "x" );
- object->readAttr( "y" );
- object->readAttr( "z" );
+ this->readAttr( "x" );
+ this->readAttr( "y" );
+ this->readAttr( "z" );
}
SPObject::update(ctx, flags);
@@ -180,19 +174,16 @@ void SPFePointLight::update(SPCtx *ctx, guint flags) {
* Writes its settings to an incoming repr object, if any.
*/
Inkscape::XML::Node* SPFePointLight::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFePointLight* object = this;
- SPFePointLight *fepointlight = SP_FEPOINTLIGHT(object);
-
if (!repr) {
- repr = object->getRepr()->duplicate(doc);
+ repr = this->getRepr()->duplicate(doc);
}
- if (fepointlight->x_set)
- sp_repr_set_css_double(repr, "x", fepointlight->x);
- if (fepointlight->y_set)
- sp_repr_set_css_double(repr, "y", fepointlight->y);
- if (fepointlight->z_set)
- sp_repr_set_css_double(repr, "z", fepointlight->z);
+ if (this->x_set)
+ sp_repr_set_css_double(repr, "x", this->x);
+ if (this->y_set)
+ sp_repr_set_css_double(repr, "y", this->y);
+ if (this->z_set)
+ sp_repr_set_css_double(repr, "z", this->z);
SPObject::write(doc, repr, flags);
diff --git a/src/filters/pointlight.h b/src/filters/pointlight.h
index 96bef8945..2379167b6 100644
--- a/src/filters/pointlight.h
+++ b/src/filters/pointlight.h
@@ -35,6 +35,7 @@ public:
gfloat z;
guint z_set : 1;
+protected:
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();
diff --git a/src/filters/spotlight.cpp b/src/filters/spotlight.cpp
index 1942c7710..c0344067c 100644
--- a/src/filters/spotlight.cpp
+++ b/src/filters/spotlight.cpp
@@ -39,24 +39,12 @@ namespace {
bool spotLightRegistered = SPFactory::instance().registerObject("svg:feSpotLight", createSpotLight);
}
-SPFeSpotLight::SPFeSpotLight() : SPObject() {
- this->x = 0;
- this->y = 0;
- this->z = 0;
- this->pointsAtX = 0;
- this->pointsAtY = 0;
- this->pointsAtZ = 0;
- this->specularExponent = 1;
- this->limitingConeAngle = 90;
-
- this->x_set = FALSE;
- this->y_set = FALSE;
- this->z_set = FALSE;
- this->pointsAtX_set = FALSE;
- this->pointsAtY_set = FALSE;
- this->pointsAtZ_set = FALSE;
- this->specularExponent_set = FALSE;
- this->limitingConeAngle_set = FALSE;
+SPFeSpotLight::SPFeSpotLight()
+ : SPObject(), x(0), x_set(FALSE), y(0), y_set(FALSE), z(0), z_set(FALSE), pointsAtX(0), pointsAtX_set(FALSE),
+ pointsAtY(0), pointsAtY_set(FALSE), pointsAtZ(0), pointsAtZ_set(FALSE),
+ specularExponent(1), specularExponent_set(FALSE), limitingConeAngle(90),
+ limitingConeAngle_set(FALSE)
+{
}
SPFeSpotLight::~SPFeSpotLight() {
@@ -71,32 +59,27 @@ SPFeSpotLight::~SPFeSpotLight() {
void SPFeSpotLight::build(SPDocument *document, Inkscape::XML::Node *repr) {
SPObject::build(document, repr);
- SPFeSpotLight* object = this;
-
//Read values of key attributes from XML nodes into object.
- object->readAttr( "x" );
- object->readAttr( "y" );
- object->readAttr( "z" );
- object->readAttr( "pointsAtX" );
- object->readAttr( "pointsAtY" );
- object->readAttr( "pointsAtZ" );
- object->readAttr( "specularExponent" );
- object->readAttr( "limitingConeAngle" );
+ this->readAttr( "x" );
+ this->readAttr( "y" );
+ this->readAttr( "z" );
+ this->readAttr( "pointsAtX" );
+ this->readAttr( "pointsAtY" );
+ this->readAttr( "pointsAtZ" );
+ this->readAttr( "specularExponent" );
+ this->readAttr( "limitingConeAngle" );
//is this necessary?
- document->addResource("fespotlight", object);
+ document->addResource("fespotlight", this);
}
/**
* Drops any allocated memory.
*/
void SPFeSpotLight::release() {
- SPFeSpotLight* object = this;
- //SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object);
-
- if ( object->document ) {
+ if ( this->document ) {
// Unregister ourselves
- object->document->removeResource("fespotlight", object);
+ this->document->removeResource("fespotlight", this);
}
//TODO: release resources here
@@ -106,146 +89,183 @@ void SPFeSpotLight::release() {
* Sets a specific value in the SPFeSpotLight.
*/
void SPFeSpotLight::set(unsigned int key, gchar const *value) {
- SPFeSpotLight* object = this;
-
- SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object);
gchar *end_ptr;
switch (key) {
case SP_ATTR_X:
end_ptr = NULL;
+
if (value) {
- fespotlight->x = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->x_set = TRUE;
+ this->x = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->x_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->x = 0;
- fespotlight->x_set = FALSE;
+ this->x = 0;
+ this->x_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_Y:
end_ptr = NULL;
+
if (value) {
- fespotlight->y = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->y_set = TRUE;
+ this->y = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->y_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->y = 0;
- fespotlight->y_set = FALSE;
+ this->y = 0;
+ this->y_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_Z:
end_ptr = NULL;
+
if (value) {
- fespotlight->z = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->z_set = TRUE;
+ this->z = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->z_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->z = 0;
- fespotlight->z_set = FALSE;
+ this->z = 0;
+ this->z_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_POINTSATX:
end_ptr = NULL;
+
if (value) {
- fespotlight->pointsAtX = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->pointsAtX_set = TRUE;
+ this->pointsAtX = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->pointsAtX_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->pointsAtX = 0;
- fespotlight->pointsAtX_set = FALSE;
+ this->pointsAtX = 0;
+ this->pointsAtX_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_POINTSATY:
end_ptr = NULL;
+
if (value) {
- fespotlight->pointsAtY = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->pointsAtY_set = TRUE;
+ this->pointsAtY = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->pointsAtY_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->pointsAtY = 0;
- fespotlight->pointsAtY_set = FALSE;
+ this->pointsAtY = 0;
+ this->pointsAtY_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_POINTSATZ:
end_ptr = NULL;
+
if (value) {
- fespotlight->pointsAtZ = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->pointsAtZ_set = TRUE;
+ this->pointsAtZ = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->pointsAtZ_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->pointsAtZ = 0;
- fespotlight->pointsAtZ_set = FALSE;
+ this->pointsAtZ = 0;
+ this->pointsAtZ_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_SPECULAREXPONENT:
end_ptr = NULL;
+
if (value) {
- fespotlight->specularExponent = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->specularExponent_set = TRUE;
+ this->specularExponent = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->specularExponent_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->specularExponent = 1;
- fespotlight->specularExponent_set = FALSE;
+ this->specularExponent = 1;
+ this->specularExponent_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
case SP_ATTR_LIMITINGCONEANGLE:
end_ptr = NULL;
+
if (value) {
- fespotlight->limitingConeAngle = g_ascii_strtod(value, &end_ptr);
- if (end_ptr)
- fespotlight->limitingConeAngle_set = TRUE;
+ this->limitingConeAngle = g_ascii_strtod(value, &end_ptr);
+
+ if (end_ptr) {
+ this->limitingConeAngle_set = TRUE;
+ }
}
+
if(!value || !end_ptr) {
- fespotlight->limitingConeAngle = 90;
- fespotlight->limitingConeAngle_set = FALSE;
+ this->limitingConeAngle = 90;
+ this->limitingConeAngle_set = FALSE;
}
- if (object->parent &&
- (SP_IS_FEDIFFUSELIGHTING(object->parent) ||
- SP_IS_FESPECULARLIGHTING(object->parent))) {
- object->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+
+ if (this->parent &&
+ (SP_IS_FEDIFFUSELIGHTING(this->parent) ||
+ SP_IS_FESPECULARLIGHTING(this->parent))) {
+ this->parent->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
}
break;
default:
@@ -259,21 +279,16 @@ void SPFeSpotLight::set(unsigned int key, gchar const *value) {
* * Receives update notifications.
* */
void SPFeSpotLight::update(SPCtx *ctx, guint flags) {
- SPFeSpotLight* object = this;
-
- SPFeSpotLight *feSpotLight = SP_FESPOTLIGHT(object);
- (void)feSpotLight;
-
if (flags & SP_OBJECT_MODIFIED_FLAG) {
/* do something to trigger redisplay, updates? */
- object->readAttr( "x" );
- object->readAttr( "y" );
- object->readAttr( "z" );
- object->readAttr( "pointsAtX" );
- object->readAttr( "pointsAtY" );
- object->readAttr( "pointsAtZ" );
- object->readAttr( "specularExponent" );
- object->readAttr( "limitingConeAngle" );
+ this->readAttr( "x" );
+ this->readAttr( "y" );
+ this->readAttr( "z" );
+ this->readAttr( "pointsAtX" );
+ this->readAttr( "pointsAtY" );
+ this->readAttr( "pointsAtZ" );
+ this->readAttr( "specularExponent" );
+ this->readAttr( "limitingConeAngle" );
}
SPObject::update(ctx, flags);
@@ -283,29 +298,26 @@ void SPFeSpotLight::update(SPCtx *ctx, guint flags) {
* Writes its settings to an incoming repr object, if any.
*/
Inkscape::XML::Node* SPFeSpotLight::write(Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags) {
- SPFeSpotLight* object = this;
- SPFeSpotLight *fespotlight = SP_FESPOTLIGHT(object);
-
if (!repr) {
- repr = object->getRepr()->duplicate(doc);
+ repr = this->getRepr()->duplicate(doc);
}
- if (fespotlight->x_set)
- sp_repr_set_css_double(repr, "x", fespotlight->x);
- if (fespotlight->y_set)
- sp_repr_set_css_double(repr, "y", fespotlight->y);
- if (fespotlight->z_set)
- sp_repr_set_css_double(repr, "z", fespotlight->z);
- if (fespotlight->pointsAtX_set)
- sp_repr_set_css_double(repr, "pointsAtX", fespotlight->pointsAtX);
- if (fespotlight->pointsAtY_set)
- sp_repr_set_css_double(repr, "pointsAtY", fespotlight->pointsAtY);
- if (fespotlight->pointsAtZ_set)
- sp_repr_set_css_double(repr, "pointsAtZ", fespotlight->pointsAtZ);
- if (fespotlight->specularExponent_set)
- sp_repr_set_css_double(repr, "specularExponent", fespotlight->specularExponent);
- if (fespotlight->limitingConeAngle_set)
- sp_repr_set_css_double(repr, "limitingConeAngle", fespotlight->limitingConeAngle);
+ if (this->x_set)
+ sp_repr_set_css_double(repr, "x", this->x);
+ if (this->y_set)
+ sp_repr_set_css_double(repr, "y", this->y);
+ if (this->z_set)
+ sp_repr_set_css_double(repr, "z", this->z);
+ if (this->pointsAtX_set)
+ sp_repr_set_css_double(repr, "pointsAtX", this->pointsAtX);
+ if (this->pointsAtY_set)
+ sp_repr_set_css_double(repr, "pointsAtY", this->pointsAtY);
+ if (this->pointsAtZ_set)
+ sp_repr_set_css_double(repr, "pointsAtZ", this->pointsAtZ);
+ if (this->specularExponent_set)
+ sp_repr_set_css_double(repr, "specularExponent", this->specularExponent);
+ if (this->limitingConeAngle_set)
+ sp_repr_set_css_double(repr, "limitingConeAngle", this->limitingConeAngle);
SPObject::write(doc, repr, flags);
diff --git a/src/filters/spotlight.h b/src/filters/spotlight.h
index 9ea73a800..b273f72b7 100644
--- a/src/filters/spotlight.h
+++ b/src/filters/spotlight.h
@@ -51,6 +51,7 @@ public:
guint limitingConeAngle_set : 1;
//other fields
+protected:
virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
virtual void release();