~valavanisalex/ubuntu/oneiric/inkscape/inkscape_0.48.1-2ubuntu4

« back to all changes in this revision

Viewing changes to src/sp-gaussian-blur.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook, Kees Cook, Ted Gould
  • Date: 2008-02-10 14:20:16 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20080210142016-vcnb2zqyhszu0xvb
Tags: 0.46~pre1-0ubuntu1
[ Kees Cook ]
* debian/control:
  - add libgtkspell-dev build-dep to gain GtkSpell features (LP: #183547).
  - update Standards version (no changes needed).
  - add Vcs and Homepage fields.
  - switch to new python-lxml dep.
* debian/{control,rules}: switch from dpatch to quilt for more sanity.
* debian/patches/20_fix_glib_and_gxx43_ftbfs.patch:
  - merged against upstream fixes.
  - added additional fixes for newly written code.
* debian/rules: enable parallel building.

[ Ted Gould ]
* Updating POTFILES.in to make it so things build correctly.
* debian/control:
  - add ImageMagick++ and libboost-dev to build-deps

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
 */
7
7
/*
8
8
 * Authors:
9
 
 *   hugo Rodrigues <haa.rodrigues@gmail.com>
 
9
 *   Hugo Rodrigues <haa.rodrigues@gmail.com>
 
10
 *   Niko Kiirala <niko@kiirala.com>
10
11
 *
11
 
 * Copyright (C) 2006 Hugo Rodrigues
 
12
 * Copyright (C) 2006,2007 Authors
12
13
 *
13
14
 * Released under GNU GPL, read the file 'COPYING' for more information
14
15
 */
22
23
#include "sp-gaussian-blur.h"
23
24
#include "xml/repr.h"
24
25
 
 
26
#include "display/nr-filter.h"
 
27
#include "display/nr-filter-primitive.h"
 
28
#include "display/nr-filter-gaussian.h"
 
29
#include "display/nr-filter-types.h"
 
30
 
25
31
//#define SP_MACROS_SILENT
26
32
//#include "macros.h"
27
33
 
35
41
static void sp_gaussianBlur_set(SPObject *object, unsigned int key, gchar const *value);
36
42
static void sp_gaussianBlur_update(SPObject *object, SPCtx *ctx, guint flags);
37
43
static Inkscape::XML::Node *sp_gaussianBlur_write(SPObject *object, Inkscape::XML::Node *repr, guint flags);
 
44
static void sp_gaussianBlur_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter);
38
45
 
39
46
static SPFilterPrimitiveClass *gaussianBlur_parent_class;
40
47
 
63
70
sp_gaussianBlur_class_init(SPGaussianBlurClass *klass)
64
71
{
65
72
    SPObjectClass *sp_object_class = (SPObjectClass *)klass;
 
73
    SPFilterPrimitiveClass *sp_primitive_class = (SPFilterPrimitiveClass *)klass;
66
74
 
67
75
    gaussianBlur_parent_class = (SPFilterPrimitiveClass *)g_type_class_peek_parent(klass);
68
76
 
71
79
    sp_object_class->write = sp_gaussianBlur_write;
72
80
    sp_object_class->set = sp_gaussianBlur_set;
73
81
    sp_object_class->update = sp_gaussianBlur_update;
 
82
 
 
83
    sp_primitive_class->build_renderer = sp_gaussianBlur_build_renderer;
74
84
}
75
85
 
76
86
static void
77
 
sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur)
 
87
sp_gaussianBlur_init(SPGaussianBlur */*gaussianBlur*/)
78
88
{
79
89
}
80
90
 
114
124
    SPGaussianBlur *gaussianBlur = SP_GAUSSIANBLUR(object);
115
125
 
116
126
    switch(key) {
117
 
    case SP_ATTR_STDDEVIATION:
118
 
        gaussianBlur->stdDeviation.set(value);
 
127
        case SP_ATTR_STDDEVIATION:
 
128
            gaussianBlur->stdDeviation.set(value);
 
129
            object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
119
130
            break;
120
131
        default:
121
132
            if (((SPObjectClass *) gaussianBlur_parent_class)->set)
131
142
static void
132
143
sp_gaussianBlur_update(SPObject *object, SPCtx *ctx, guint flags)
133
144
{
134
 
 
135
 
    if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG |
136
 
                 SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
137
 
 
138
 
        /* do something to trigger redisplay, updates? */
139
 
 
 
145
    if (flags & SP_OBJECT_MODIFIED_FLAG) {
 
146
        sp_object_read_attr(object, "stdDeviation");
140
147
    }
141
148
 
142
149
    if (((SPObjectClass *) gaussianBlur_parent_class)->update) {
157
164
            // is this sane?
158
165
            // repr->mergeFrom(SP_OBJECT_REPR(object), "id");
159
166
        } else {
160
 
            repr = SP_OBJECT_REPR(object)->duplicate();
 
167
            repr = SP_OBJECT_REPR(object)->duplicate(NULL); // FIXME
161
168
        }
162
169
    }
163
170
 
179
186
    blur->stdDeviation.setOptNumber(optnum);
180
187
}
181
188
 
 
189
static void sp_gaussianBlur_build_renderer(SPFilterPrimitive *primitive, NR::Filter *filter) {
 
190
    SPGaussianBlur *sp_blur = SP_GAUSSIANBLUR(primitive);
 
191
 
 
192
    int handle = filter->add_primitive(NR::NR_FILTER_GAUSSIANBLUR);
 
193
    NR::FilterPrimitive *nr_primitive = filter->get_primitive(handle);
 
194
    NR::FilterGaussian *nr_blur = dynamic_cast<NR::FilterGaussian*>(nr_primitive);
 
195
 
 
196
    sp_filter_primitive_renderer_common(primitive, nr_primitive);
 
197
 
 
198
    gfloat num = sp_blur->stdDeviation.getNumber();
 
199
    if (num >= 0.0) {
 
200
        gfloat optnum = sp_blur->stdDeviation.getOptNumber();
 
201
        if(optnum >= 0.0)
 
202
            nr_blur->set_deviation((double) num, (double) optnum);
 
203
        else
 
204
            nr_blur->set_deviation((double) num);
 
205
    }
 
206
}
182
207
 
183
208
/*
184
209
  Local Variables: