diff options
| author | Felipe Corr??a da Silva Sanches <juca@members.fsf.org> | 2007-08-14 04:39:37 +0000 |
|---|---|---|
| committer | jucablues <jucablues@users.sourceforge.net> | 2007-08-14 04:39:37 +0000 |
| commit | 53e2573939d10365f9839ec4256f1faa8019a249 (patch) | |
| tree | 111b2a9c7a27818720f32453499d55372475b15c /src/sp-feimage.cpp | |
| parent | typo (diff) | |
| download | inkscape-53e2573939d10365f9839ec4256f1faa8019a249.tar.gz inkscape-53e2573939d10365f9839ec4256f1faa8019a249.zip | |
* incomplete feImage implementation.
* contains a hardcoded href parameter. TODO: fix it.
* added a getter method to access arenaitem from FilterSlot.
(bzr r3461)
Diffstat (limited to 'src/sp-feimage.cpp')
| -rw-r--r-- | src/sp-feimage.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/sp-feimage.cpp b/src/sp-feimage.cpp index 810e4b5d7..4288faa10 100644 --- a/src/sp-feimage.cpp +++ b/src/sp-feimage.cpp @@ -102,6 +102,10 @@ sp_feImage_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *re since 'in' and 'xlink:href' are common filter attributes. --Juca */ + sp_object_read_attr(object, "x"); + sp_object_read_attr(object, "y"); + sp_object_read_attr(object, "width"); + sp_object_read_attr(object, "height"); } @@ -124,9 +128,25 @@ sp_feImage_set(SPObject *object, unsigned int key, gchar const *value) { SPFeImage *feImage = SP_FEIMAGE(object); (void)feImage; - + switch(key) { /*DEAL WITH SETTING ATTRIBUTES HERE*/ + case SP_ATTR_X: + feImage->x.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_Y: + feImage->y.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_WIDTH: + feImage->width.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + case SP_ATTR_HEIGHT: + feImage->height.readOrUnset(value); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; default: if (((SPObjectClass *) feImage_parent_class)->set) ((SPObjectClass *) feImage_parent_class)->set(object, key, value); @@ -141,11 +161,11 @@ sp_feImage_set(SPObject *object, unsigned int key, gchar const *value) static void sp_feImage_update(SPObject *object, SPCtx *ctx, guint flags) { + if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { /* do something to trigger redisplay, updates? */ - } if (((SPObjectClass *) feImage_parent_class)->update) { @@ -181,14 +201,14 @@ static void sp_feImage_build_renderer(SPFilterPrimitive *primitive, NR::Filter * g_assert(filter != NULL); SPFeImage *sp_image = SP_FEIMAGE(primitive); - + int primitive_n = filter->add_primitive(NR::NR_FILTER_IMAGE); NR::FilterPrimitive *nr_primitive = filter->get_primitive(primitive_n); NR::FilterImage *nr_image = dynamic_cast<NR::FilterImage*>(nr_primitive); g_assert(nr_image != NULL); sp_filter_primitive_renderer_common(primitive, nr_primitive); - + nr_image->set_region(sp_image->x, sp_image->y, sp_image->width, sp_image->height); } /* |
