X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-item.h;h=fc368d5b9223ffad5c13b0bf215dc6703b0ea82d;hb=129958c3b0e17dc15a5a4722ee83a89a780f9a57;hp=252821f362b060ead5c1eebc2a4366dee9dcae5b;hpb=1c08a33cfc4402041ddc6f9f470d643df81676e4;p=inkscape.git diff --git a/src/sp-item.h b/src/sp-item.h index 252821f36..fc368d5b9 100644 --- a/src/sp-item.h +++ b/src/sp-item.h @@ -9,8 +9,9 @@ * Authors: * Lauris Kaplinski * bulia byak + * Johan Engelen * - * Copyright (C) 1999-2005 authors + * Copyright (C) 1999-2006 authors * Copyright (C) 2001-2002 Ximian, Inc. * Copyright (C) 2004 Monash University * @@ -91,9 +92,9 @@ struct SPItemCtx { struct SPItem : public SPObject { unsigned int sensitive : 1; unsigned int stop_paint: 1; - double r_cx; - double r_cy; - + double transform_center_x; + double transform_center_y; + NR::Matrix transform; SPClipPathReference *clip_ref; @@ -107,19 +108,29 @@ struct SPItem : public SPObject { std::vector constraints; sigc::signal _transformed_signal; - + + void init(); bool isLocked() const; void setLocked(bool lock); bool isHidden() const; void setHidden(bool hidden); + + bool isEvaluated() const; + void setEvaluated(bool visible); + void resetEvaluated(); bool isHidden(unsigned display_key) const; bool isExplicitlyHidden() const; void setExplicitlyHidden(bool val); - + + void setCenter(NR::Point object_centre); + void unsetCenter(); + bool isCenterSet(); + NR::Point getCenter(); + bool isVisibleAndUnlocked() const; bool isVisibleAndUnlocked(unsigned display_key) const; @@ -133,9 +144,21 @@ struct SPItem : public SPObject { NR::Rect invokeBbox(NR::Matrix const &transform) const; + sigc::connection _clip_ref_connection; + sigc::connection _mask_ref_connection; + sigc::connection connectTransformed(sigc::slot slot) { return _transformed_signal.connect(slot); } + +private: + enum EvaluatedStatus + { + StatusUnknown, StatusCalculated, StatusSet + }; + + mutable bool _is_evaluated; + mutable EvaluatedStatus _evaluated_status; }; typedef std::back_insert_iterator > SnapPointsIter; @@ -197,7 +220,7 @@ void sp_item_adjust_stroke_width_recursive(SPItem *item, gdouble ex); void sp_item_adjust_paint_recursive(SPItem *item, NR::Matrix advertized_transform, NR::Matrix t_ancestors, bool is_pattern); void sp_item_write_transform(SPItem *item, Inkscape::XML::Node *repr, NRMatrix const *transform, NR::Matrix const *adv = NULL); -void sp_item_write_transform(SPItem *item, Inkscape::XML::Node *repr, NR::Matrix const &transform, NR::Matrix const *adv = NULL); +void sp_item_write_transform(SPItem *item, Inkscape::XML::Node *repr, NR::Matrix const &transform, NR::Matrix const *adv = NULL, bool compensate = true); void sp_item_set_item_transform(SPItem *item, NR::Matrix const &transform);