diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2011-04-07 23:42:04 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2011-04-07 23:42:04 +0000 |
| commit | 945ce419c806c73d70203dec33ececafbe108a92 (patch) | |
| tree | cfcdb59bf47e9db7f9e01f7eebb59924bdeaea94 /src/gradient-chemistry.cpp | |
| parent | Merge from trunk (again) (diff) | |
| parent | Extensions. SVG+media fix (see Bug #400356). (diff) | |
| download | inkscape-945ce419c806c73d70203dec33ececafbe108a92.tar.gz inkscape-945ce419c806c73d70203dec33ececafbe108a92.zip | |
Merge from trunk
(bzr r9508.1.73)
Diffstat (limited to 'src/gradient-chemistry.cpp')
| -rw-r--r-- | src/gradient-chemistry.cpp | 183 |
1 files changed, 92 insertions, 91 deletions
diff --git a/src/gradient-chemistry.cpp b/src/gradient-chemistry.cpp index 03c10768d..8cbd88eb6 100644 --- a/src/gradient-chemistry.cpp +++ b/src/gradient-chemistry.cpp @@ -78,9 +78,9 @@ SPGradient *sp_gradient_ensure_vector_normalized(SPGradient *gr) /* If gr hrefs some other gradient, remove the href */ if (gr->ref->getObject()) { - /* We are hrefing someone, so require flattening */ - SP_OBJECT(gr)->updateRepr(SP_OBJECT_WRITE_EXT | SP_OBJECT_WRITE_ALL); - sp_gradient_repr_set_link(SP_OBJECT_REPR(gr), NULL); + // We are hrefing someone, so require flattening + gr->updateRepr(SP_OBJECT_WRITE_EXT | SP_OBJECT_WRITE_ALL); + sp_gradient_repr_set_link(gr->getRepr(), NULL); } /* Everything is OK, set state flag */ @@ -121,7 +121,7 @@ static SPGradient *sp_gradient_get_private_normalized(SPDocument *document, SPGr sp_gradient_repr_set_link(repr, vector); /* Append the new private gradient to defs */ - SP_OBJECT_REPR(defs)->appendChild(repr); + defs->getRepr()->appendChild(repr); Inkscape::GC::release(repr); // get corresponding object @@ -142,7 +142,7 @@ guint count_gradient_hrefs(SPObject *o, SPGradient *gr) guint i = 0; - SPStyle *style = SP_OBJECT_STYLE(o); + SPStyle *style = o->style; if (style && style->fill.isPaintserver() && SP_IS_GRADIENT(SP_STYLE_FILL_SERVER(style)) @@ -190,7 +190,7 @@ SPGradient *sp_gradient_fork_private_if_necessary(SPGradient *gr, SPGradient *ve // texts. SPObject *user = o; while (SP_IS_TSPAN(user)) { - user = SP_OBJECT_PARENT(user); + user = user->parent; } // Check the number of uses of the gradient within this object; @@ -199,17 +199,17 @@ SPGradient *sp_gradient_fork_private_if_necessary(SPGradient *gr, SPGradient *ve // check vector if ( gr != vector && gr->ref->getObject() != vector ) { /* our href is not the vector, and vector is different from gr; relink */ - sp_gradient_repr_set_link(SP_OBJECT_REPR(gr), vector); + sp_gradient_repr_set_link(gr->getRepr(), vector); } return gr; } - SPDocument *doc = SP_OBJECT_DOCUMENT(gr); + SPDocument *doc = gr->document; SPObject *defs = SP_DOCUMENT_DEFS(doc); if ((gr->hasStops()) || (gr->state != SP_GRADIENT_STATE_UNKNOWN) || - (SP_OBJECT_PARENT(gr) != SP_OBJECT(defs)) || + (gr->parent != SP_OBJECT(defs)) || (gr->hrefcount > 1)) { // we have to clone a fresh new private gradient for the given vector @@ -217,8 +217,8 @@ SPGradient *sp_gradient_fork_private_if_necessary(SPGradient *gr, SPGradient *ve SPGradient *gr_new = sp_gradient_get_private_normalized(doc, vector, type); // copy all the attributes to it - Inkscape::XML::Node *repr_new = SP_OBJECT_REPR(gr_new); - Inkscape::XML::Node *repr = SP_OBJECT_REPR(gr); + Inkscape::XML::Node *repr_new = gr_new->getRepr(); + Inkscape::XML::Node *repr = gr->getRepr(); repr_new->setAttribute("gradientUnits", repr->attribute("gradientUnits")); repr_new->setAttribute("gradientTransform", repr->attribute("gradientTransform")); repr_new->setAttribute("spreadMethod", repr->attribute("spreadMethod")); @@ -252,11 +252,11 @@ SPGradient *sp_gradient_fork_vector_if_necessary(SPGradient *gr) return gr; if (gr->hrefcount > 1) { - SPDocument *doc = SP_OBJECT_DOCUMENT(gr); + SPDocument *doc = gr->document; Inkscape::XML::Document *xml_doc = doc->getReprDoc(); - Inkscape::XML::Node *repr = SP_OBJECT_REPR (gr)->duplicate(xml_doc); - SP_OBJECT_REPR (SP_DOCUMENT_DEFS (doc))->addChild(repr, NULL); + Inkscape::XML::Node *repr = gr->getRepr()->duplicate(xml_doc); + SP_DOCUMENT_DEFS(doc)->getRepr()->addChild(repr, NULL); SPGradient *gr_new = (SPGradient *) doc->getObjectByRepr(repr); gr_new = sp_gradient_ensure_vector_normalized (gr_new); Inkscape::GC::release(repr); @@ -276,7 +276,7 @@ SPGradient *sp_gradient_get_forked_vector_if_necessary(SPGradient *gradient, boo SPGradient *vector = gradient->getVector(force_vector); vector = sp_gradient_fork_vector_if_necessary (vector); if ( gradient != vector && gradient->ref->getObject() != vector ) { - sp_gradient_repr_set_link(SP_OBJECT_REPR(gradient), vector); + sp_gradient_repr_set_link(gradient->getRepr(), vector); } return vector; } @@ -292,10 +292,10 @@ SPGradient *sp_gradient_reset_to_userspace(SPGradient *gr, SPItem *item) #ifdef SP_GR_VERBOSE g_message("sp_gradient_reset_to_userspace(%p, %p)", gr, item); #endif - Inkscape::XML::Node *repr = SP_OBJECT_REPR(gr); + Inkscape::XML::Node *repr = gr->getRepr(); // calculate the bbox of the item - SP_OBJECT_DOCUMENT(item)->ensureUpToDate(); + item->document->ensureUpToDate(); Geom::OptRect bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine if (!bbox) @@ -314,14 +314,14 @@ SPGradient *sp_gradient_reset_to_userspace(SPGradient *gr, SPItem *item) sp_repr_set_svg_double(repr, "r", width/2); // we want it to be elliptic, not circular - Geom::Matrix squeeze = Geom::Translate (-center) * + Geom::Affine squeeze = Geom::Translate (-center) * Geom::Scale(1, height/width) * Geom::Translate (center); gr->gradientTransform = squeeze; { gchar *c=sp_svg_transform_write(gr->gradientTransform); - SP_OBJECT_REPR(gr)->setAttribute("gradientTransform", c); + gr->getRepr()->setAttribute("gradientTransform", c); g_free(c); } } else { @@ -354,18 +354,18 @@ SPGradient *sp_gradient_convert_to_userspace(SPGradient *gr, SPItem *item, gchar // First, fork it if it is shared gr = sp_gradient_fork_private_if_necessary(gr, gr->getVector(), - SP_IS_RADIALGRADIENT(gr) ? SP_GRADIENT_TYPE_RADIAL : SP_GRADIENT_TYPE_LINEAR, SP_OBJECT(item)); + SP_IS_RADIALGRADIENT(gr) ? SP_GRADIENT_TYPE_RADIAL : SP_GRADIENT_TYPE_LINEAR, item); if (gr->getUnits() == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { - Inkscape::XML::Node *repr = SP_OBJECT_REPR(gr); + Inkscape::XML::Node *repr = gr->getRepr(); // calculate the bbox of the item - SP_OBJECT_DOCUMENT(item)->ensureUpToDate(); - Geom::Matrix bbox2user; + item->document->ensureUpToDate(); + Geom::Affine bbox2user; Geom::OptRect bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine if ( bbox ) { - bbox2user = Geom::Matrix(bbox->dimensions()[Geom::X], 0, + bbox2user = Geom::Affine(bbox->dimensions()[Geom::X], 0, 0, bbox->dimensions()[Geom::Y], bbox->min()[Geom::X], bbox->min()[Geom::Y]); } else { @@ -387,7 +387,7 @@ SPGradient *sp_gradient_convert_to_userspace(SPGradient *gr, SPItem *item, gchar * gradient vector in user space due to application of the non-uniform scaling * transformation from bounding box space to user space. */ - Geom::Matrix skew = bbox2user; + Geom::Affine skew = bbox2user; double exp = skew.descrim(); skew[0] /= exp; skew[1] /= exp; @@ -400,13 +400,13 @@ SPGradient *sp_gradient_convert_to_userspace(SPGradient *gr, SPItem *item, gchar gr->gradientTransform = skew; { gchar *c=sp_svg_transform_write(gr->gradientTransform); - SP_OBJECT_REPR(gr)->setAttribute("gradientTransform", c); + gr->getRepr()->setAttribute("gradientTransform", c); g_free(c); } // Matrix to convert points to userspace coords; postmultiply by inverse of skew so // as to cancel it out when it's applied to the gradient during rendering - Geom::Matrix point_convert = bbox2user * skew.inverse(); + Geom::Affine point_convert = bbox2user * skew.inverse(); if (SP_IS_RADIALGRADIENT(gr)) { SPRadialGradient *rg = SP_RADIALGRADIENT(gr); @@ -451,15 +451,16 @@ SPGradient *sp_gradient_convert_to_userspace(SPGradient *gr, SPItem *item, gchar // from sp_item_adjust_paint_recursive); however text and all its children should all // refer to one gradient, hence the recursive call for text (because we can't/don't // want to access tspans and set gradients on them separately) - if (SP_IS_TEXT(item)) - sp_style_set_property_url(SP_OBJECT(item), property, SP_OBJECT(gr), true); - else - sp_style_set_property_url(SP_OBJECT(item), property, SP_OBJECT(gr), false); + if (SP_IS_TEXT(item)) { + sp_style_set_property_url(item, property, gr, true); + } else { + sp_style_set_property_url(item, property, gr, false); + } return gr; } -void sp_gradient_transform_multiply(SPGradient *gradient, Geom::Matrix postmul, bool set) +void sp_gradient_transform_multiply(SPGradient *gradient, Geom::Affine postmul, bool set) { #ifdef SP_GR_VERBOSE g_message("sp_gradient_transform_multiply(%p, , %d)", gradient, set); @@ -472,7 +473,7 @@ void sp_gradient_transform_multiply(SPGradient *gradient, Geom::Matrix postmul, gradient->gradientTransform_set = TRUE; gchar *c=sp_svg_transform_write(gradient->gradientTransform); - SP_OBJECT_REPR(gradient)->setAttribute("gradientTransform", c); + gradient->getRepr()->setAttribute("gradientTransform", c); g_free(c); } @@ -546,12 +547,12 @@ SPStop *sp_vector_add_stop(SPGradient *vector, SPStop* prev_stop, SPStop* next_s #endif Inkscape::XML::Node *new_stop_repr = NULL; - new_stop_repr = SP_OBJECT_REPR(prev_stop)->duplicate(SP_OBJECT_REPR(vector)->document()); - SP_OBJECT_REPR(vector)->addChild(new_stop_repr, SP_OBJECT_REPR(prev_stop)); + new_stop_repr = prev_stop->getRepr()->duplicate(vector->getRepr()->document()); + vector->getRepr()->addChild(new_stop_repr, prev_stop->getRepr()); - SPStop *newstop = (SPStop *) SP_OBJECT_DOCUMENT(vector)->getObjectByRepr(new_stop_repr); + SPStop *newstop = reinterpret_cast<SPStop *>(vector->document->getObjectByRepr(new_stop_repr)); newstop->offset = offset; - sp_repr_set_css_double( SP_OBJECT_REPR(newstop), "offset", (double)offset); + sp_repr_set_css_double( newstop->getRepr(), "offset", (double)offset); guint32 const c1 = sp_stop_get_rgba32(prev_stop); guint32 const c2 = sp_stop_get_rgba32(next_stop); guint32 cnew = average_color (c1, c2, (offset - prev_stop->offset) / (next_stop->offset - prev_stop->offset)); @@ -560,7 +561,7 @@ SPStop *sp_vector_add_stop(SPGradient *vector, SPStop* prev_stop, SPStop* next_s sp_svg_write_color (c, sizeof(c), cnew); gdouble opacity = (gdouble) SP_RGBA32_A_F (cnew); os << "stop-color:" << c << ";stop-opacity:" << opacity <<";"; - SP_OBJECT_REPR (newstop)->setAttribute("style", os.str().c_str()); + newstop->getRepr()->setAttribute("style", os.str().c_str()); Inkscape::GC::release(new_stop_repr); return newstop; @@ -675,7 +676,7 @@ void sp_item_gradient_stop_set_style(SPItem *item, guint point_type, guint point vector = sp_gradient_fork_vector_if_necessary (vector); if ( gradient != vector && gradient->ref->getObject() != vector ) { - sp_gradient_repr_set_link(SP_OBJECT_REPR(gradient), vector); + sp_gradient_repr_set_link(gradient->getRepr(), vector); } switch (point_type) { @@ -685,7 +686,7 @@ void sp_item_gradient_stop_set_style(SPItem *item, guint point_type, guint point { SPStop *first = vector->getFirstStop(); if (first) { - sp_repr_css_change (SP_OBJECT_REPR (first), stop, "style"); + sp_repr_css_change(first->getRepr(), stop, "style"); } } break; @@ -696,7 +697,7 @@ void sp_item_gradient_stop_set_style(SPItem *item, guint point_type, guint point { SPStop *last = sp_last_stop (vector); if (last) { - sp_repr_css_change (SP_OBJECT_REPR (last), stop, "style"); + sp_repr_css_change(last->getRepr(), stop, "style"); } } break; @@ -707,7 +708,7 @@ void sp_item_gradient_stop_set_style(SPItem *item, guint point_type, guint point { SPStop *stopi = sp_get_stop_i (vector, point_i); if (stopi) { - sp_repr_css_change (SP_OBJECT_REPR (stopi), stop, "style"); + sp_repr_css_change(stopi->getRepr(), stop, "style"); } } break; @@ -732,22 +733,22 @@ void sp_item_gradient_reverse_vector(SPItem *item, bool fill_or_stroke) vector = sp_gradient_fork_vector_if_necessary (vector); if ( gradient != vector && gradient->ref->getObject() != vector ) { - sp_gradient_repr_set_link(SP_OBJECT_REPR(gradient), vector); + sp_gradient_repr_set_link(gradient->getRepr(), vector); } GSList *child_reprs = NULL; GSList *child_objects = NULL; std::vector<double> offsets; for ( SPObject *child = vector->firstChild(); child; child = child->getNext()) { - child_reprs = g_slist_prepend (child_reprs, SP_OBJECT_REPR(child)); + child_reprs = g_slist_prepend (child_reprs, child->getRepr()); child_objects = g_slist_prepend (child_objects, child); - offsets.push_back(sp_repr_get_double_attribute(SP_OBJECT_REPR(child), "offset", 0)); + offsets.push_back(sp_repr_get_double_attribute(child->getRepr(), "offset", 0)); } GSList *child_copies = NULL; for (GSList *i = child_reprs; i != NULL; i = i->next) { Inkscape::XML::Node *repr = (Inkscape::XML::Node *) i->data; - Inkscape::XML::Document *xml_doc = SP_OBJECT_REPR(vector)->document(); + Inkscape::XML::Document *xml_doc = vector->getRepr()->document(); child_copies = g_slist_append (child_copies, repr->duplicate(xml_doc)); } @@ -788,12 +789,12 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, gradient = sp_gradient_convert_to_userspace (gradient, item, fill_or_stroke? "fill" : "stroke"); - Geom::Matrix i2d (item->i2d_affine ()); + Geom::Affine i2d (item->i2d_affine ()); Geom::Point p = p_w * i2d.inverse(); p *= (gradient->gradientTransform).inverse(); // now p is in gradient's original coordinates - Inkscape::XML::Node *repr = SP_OBJECT_REPR(gradient); + Inkscape::XML::Node *repr = gradient->getRepr(); if (SP_IS_LINEARGRADIENT(gradient)) { SPLinearGradient *lg = SP_LINEARGRADIENT(gradient); @@ -813,7 +814,7 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, sp_repr_set_svg_double(repr, "x1", lg->x1.computed); sp_repr_set_svg_double(repr, "y1", lg->y1.computed); } else { - SP_OBJECT (gradient)->requestModified(SP_OBJECT_MODIFIED_FLAG); + gradient->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; case POINT_LG_END: @@ -831,7 +832,7 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, sp_repr_set_svg_double(repr, "x2", lg->x2.computed); sp_repr_set_svg_double(repr, "y2", lg->y2.computed); } else { - SP_OBJECT (gradient)->requestModified(SP_OBJECT_MODIFIED_FLAG); + gradient->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; case POINT_LG_MID: @@ -844,9 +845,9 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, SPStop* stopi = sp_get_stop_i(vector, point_i); stopi->offset = offset; if (write_repr) { - sp_repr_set_css_double(SP_OBJECT_REPR(stopi), "offset", stopi->offset); + sp_repr_set_css_double(stopi->getRepr(), "offset", stopi->offset); } else { - SP_OBJECT (stopi)->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + stopi->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); } } break; @@ -861,7 +862,7 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, // prevent setting a radius too close to the center return; } - Geom::Matrix new_transform; + Geom::Affine new_transform; bool transform_set = false; switch (point_type) { @@ -876,7 +877,7 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, sp_repr_set_svg_double(repr, "cx", rg->cx.computed); sp_repr_set_svg_double(repr, "cy", rg->cy.computed); } else { - SP_OBJECT (gradient)->requestModified(SP_OBJECT_MODIFIED_FLAG); + gradient->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; case POINT_RG_FOCUS: @@ -886,7 +887,7 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, sp_repr_set_svg_double(repr, "fx", rg->fx.computed); sp_repr_set_svg_double(repr, "fy", rg->fy.computed); } else { - SP_OBJECT (gradient)->requestModified(SP_OBJECT_MODIFIED_FLAG); + gradient->requestModified(SP_OBJECT_MODIFIED_FLAG); } break; case POINT_RG_R1: @@ -896,12 +897,12 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, double move_angle = Geom::atan2(p_w - c_w) - r1_angle; double move_stretch = Geom::L2(p_w - c_w) / Geom::L2(r1_w - c_w); - Geom::Matrix move = Geom::Matrix (Geom::Translate (-c_w)) * - Geom::Matrix (Geom::Rotate(-r1_angle)) * - Geom::Matrix (Geom::Scale(move_stretch, scale? move_stretch : 1)) * - Geom::Matrix (Geom::Rotate(r1_angle)) * - Geom::Matrix (Geom::Rotate(move_angle)) * - Geom::Matrix (Geom::Translate (c_w)); + Geom::Affine move = Geom::Affine (Geom::Translate (-c_w)) * + Geom::Affine (Geom::Rotate(-r1_angle)) * + Geom::Affine (Geom::Scale(move_stretch, scale? move_stretch : 1)) * + Geom::Affine (Geom::Rotate(r1_angle)) * + Geom::Affine (Geom::Rotate(move_angle)) * + Geom::Affine (Geom::Translate (c_w)); new_transform = gradient->gradientTransform * i2d * move * i2d.inverse(); transform_set = true; @@ -915,12 +916,12 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, double move_angle = Geom::atan2(p_w - c_w) - r2_angle; double move_stretch = Geom::L2(p_w - c_w) / Geom::L2(r2_w - c_w); - Geom::Matrix move = Geom::Matrix (Geom::Translate (-c_w)) * - Geom::Matrix (Geom::Rotate(-r2_angle)) * - Geom::Matrix (Geom::Scale(move_stretch, scale? move_stretch : 1)) * - Geom::Matrix (Geom::Rotate(r2_angle)) * - Geom::Matrix (Geom::Rotate(move_angle)) * - Geom::Matrix (Geom::Translate (c_w)); + Geom::Affine move = Geom::Affine (Geom::Translate (-c_w)) * + Geom::Affine (Geom::Rotate(-r2_angle)) * + Geom::Affine (Geom::Scale(move_stretch, scale? move_stretch : 1)) * + Geom::Affine (Geom::Rotate(r2_angle)) * + Geom::Affine (Geom::Rotate(move_angle)) * + Geom::Affine (Geom::Translate (c_w)); new_transform = gradient->gradientTransform * i2d * move * i2d.inverse(); transform_set = true; @@ -938,9 +939,9 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, SPStop* stopi = sp_get_stop_i(vector, point_i); stopi->offset = offset; if (write_repr) { - sp_repr_set_css_double(SP_OBJECT_REPR(stopi), "offset", stopi->offset); + sp_repr_set_css_double(stopi->getRepr(), "offset", stopi->offset); } else { - SP_OBJECT (stopi)->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + stopi->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); } break; } @@ -954,9 +955,9 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, SPStop* stopi = sp_get_stop_i(vector, point_i); stopi->offset = offset; if (write_repr) { - sp_repr_set_css_double(SP_OBJECT_REPR(stopi), "offset", stopi->offset); + sp_repr_set_css_double(stopi->getRepr(), "offset", stopi->offset); } else { - SP_OBJECT (stopi)->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + stopi->requestModified(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); } break; } @@ -966,10 +967,10 @@ void sp_item_gradient_set_coords(SPItem *item, guint point_type, guint point_i, gradient->gradientTransform_set = TRUE; if (write_repr) { gchar *s=sp_svg_transform_write(gradient->gradientTransform); - SP_OBJECT_REPR(gradient)->setAttribute("gradientTransform", s); + gradient->getRepr()->setAttribute("gradientTransform", s); g_free(s); } else { - SP_OBJECT (gradient)->requestModified(SP_OBJECT_MODIFIED_FLAG); + gradient->requestModified(SP_OBJECT_MODIFIED_FLAG); } } } @@ -1061,15 +1062,15 @@ Geom::Point sp_item_gradient_get_coords(SPItem *item, guint point_type, guint po } if (SP_GRADIENT(gradient)->getUnits() == SP_GRADIENT_UNITS_OBJECTBOUNDINGBOX) { - SP_OBJECT_DOCUMENT(item)->ensureUpToDate(); + item->document->ensureUpToDate(); Geom::OptRect bbox = item->getBounds(Geom::identity()); // we need "true" bbox without item_i2d_affine if (bbox) { - p *= Geom::Matrix(bbox->dimensions()[Geom::X], 0, + p *= Geom::Affine(bbox->dimensions()[Geom::X], 0, 0, bbox->dimensions()[Geom::Y], bbox->min()[Geom::X], bbox->min()[Geom::Y]); } } - p *= Geom::Matrix(gradient->gradientTransform) * (Geom::Matrix)item->i2d_affine(); + p *= Geom::Affine(gradient->gradientTransform) * (Geom::Affine)item->i2d_affine(); return from_2geom(p); } @@ -1091,7 +1092,7 @@ SPGradient *sp_item_set_gradient(SPItem *item, SPGradient *gr, SPGradientType ty g_return_val_if_fail(SP_IS_GRADIENT(gr), NULL); g_return_val_if_fail(gr->state == SP_GRADIENT_STATE_VECTOR, NULL); - SPStyle *style = SP_OBJECT_STYLE(item); + SPStyle *style = item->style; g_assert(style != NULL); SPPaintServer *ps = NULL; @@ -1106,20 +1107,20 @@ SPGradient *sp_item_set_gradient(SPItem *item, SPGradient *gr, SPGradientType ty /* Current fill style is the gradient of the required type */ SPGradient *current = SP_GRADIENT(ps); - //g_message("hrefcount %d count %d\n", current->hrefcount, count_gradient_hrefs(SP_OBJECT(item), current)); + //g_message("hrefcount %d count %d\n", current->hrefcount, count_gradient_hrefs(item, current)); if (!current->isSwatch() && (current->hrefcount == 1 || - current->hrefcount == count_gradient_hrefs(SP_OBJECT(item), current))) { + current->hrefcount == count_gradient_hrefs(item, current))) { // current is private and it's either used once, or all its uses are by children of item; // so just change its href to vector if ( current != gr && current->getVector() != gr ) { - /* href is not the vector */ - sp_gradient_repr_set_link(SP_OBJECT_REPR(current), gr); + // href is not the vector + sp_gradient_repr_set_link(current->getRepr(), gr); } - SP_OBJECT(item)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return current; } else { @@ -1134,19 +1135,19 @@ SPGradient *sp_item_set_gradient(SPItem *item, SPGradient *gr, SPGradientType ty /* We have to change object style here; recursive because this is used from * fill&stroke and must work for groups etc. */ - sp_style_set_property_url(SP_OBJECT(item), is_fill? "fill" : "stroke", SP_OBJECT(normalized), true); + sp_style_set_property_url(item, is_fill? "fill" : "stroke", normalized, true); } - SP_OBJECT(item)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); + item->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return normalized; } } else { /* Current fill style is not a gradient or wrong type, so construct everything */ - SPGradient *constructed = sp_gradient_get_private_normalized(SP_OBJECT_DOCUMENT(item), gr, type); + SPGradient *constructed = sp_gradient_get_private_normalized(item->document, gr, type); constructed = sp_gradient_reset_to_userspace(constructed, item); - sp_style_set_property_url(SP_OBJECT(item), ( is_fill ? "fill" : "stroke" ), SP_OBJECT(constructed), true); - SP_OBJECT(item)->requestDisplayUpdate(( SP_OBJECT_MODIFIED_FLAG | - SP_OBJECT_STYLE_MODIFIED_FLAG )); + sp_style_set_property_url(item, ( is_fill ? "fill" : "stroke" ), constructed, true); + item->requestDisplayUpdate(( SP_OBJECT_MODIFIED_FLAG | + SP_OBJECT_STYLE_MODIFIED_FLAG )); return constructed; } } @@ -1213,7 +1214,7 @@ SPGradient *sp_document_default_gradient_vector( SPDocument *document, SPColor c addStop( repr, colorStr, 0, "1" ); } - SP_OBJECT_REPR(defs)->addChild(repr, NULL); + defs->getRepr()->addChild(repr, NULL); Inkscape::GC::release(repr); /* fixme: This does not look like nice */ @@ -1234,11 +1235,11 @@ SPGradient *sp_gradient_vector_for_object( SPDocument *const doc, SPDesktop *con SPObject *const o, bool const is_fill, bool singleStop ) { SPColor color; - if (o == NULL || SP_OBJECT_STYLE(o) == NULL) { + if ( (o == NULL) || (o->style == NULL) ) { color = sp_desktop_get_color(desktop, is_fill); } else { // take the color of the object - SPStyle const &style = *SP_OBJECT_STYLE(o); + SPStyle const &style = *(o->style); SPIPaint const &paint = ( is_fill ? style.fill : style.stroke ); |
