namespace sdr::animation { class PrimitiveAnimation;
} namespace drawinglayer::primitive2d { class Primitive2DDecompositionVisitor; }
namespace sdr::contact {
class DisplayInfo; class ObjectContact; class ViewContact;
class SVXCORE_DLLPUBLIC ViewObjectContact
{ private: // must-exist and constant contacts
ObjectContact& mrObjectContact;
ViewContact& mrViewContact;
// This range defines the object's BoundRect
basegfx::B2DRange maObjectRange;
// PrimitiveSequence of the ViewContact. This contains all necessary information // for the graphical visualisation and needs to be supported by all VCs which // can be visualized.
drawinglayer::primitive2d::Primitive2DContainer mxPrimitive2DSequence;
// the PrimitiveAnimation if Primitive2DContainer contains animations
std::unique_ptr<sdr::animation::PrimitiveAnimation> mpPrimitiveAnimation;
// possible on-demand calculated GridOffset for non-linear ViewToDevice transformation (calc)
basegfx::B2DVector maGridOffset;
// used to detect ActionChanged() during primitive construction int mnActionChangedCount;
// This bool gets set when the object gets invalidated by ActionChanged() and // can be used from the OC to late-invalidates bool mbLazyInvalidate : 1;
protected: // make redirector a protected friend, it needs to call createPrimitives as default action friendclass ViewObjectContactRedirector;
// Called from getPrimitive2DSequence() when vector has changed. Evaluate object animation // and setup accordingly void checkForPrimitive2DAnimations();
// This method is responsible for creating the graphical visualisation data which is // stored/cached in the local primitive. Default gets view-independent Primitive // from the ViewContact using ViewContact::getViewIndependentPrimitive2DContainer(), takes care of // visibility, handles glue and ghosted. // This method will not handle included hierarchies and not check geometric visibility. virtualvoid createPrimitive2DSequence(const DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const;
// method for flushing Primitive2DContainer for VOC implementations void flushPrimitive2DSequence() { mxPrimitive2DSequence.clear(); }
// Check if this primitive is animated in any OC (View) which means it has // generated a PrimitiveAnimation bool isAnimated() const { return (nullptr != mpPrimitiveAnimation); }
// Take some action when new objects are inserted void ActionChildInserted(ViewContact& rChild);
// access to the local primitive. This will ensure that the local primitive is // current in comparing the local one with a fresh created incarnation // This method will not handle included hierarchies and not check visibility.
drawinglayer::primitive2d::Primitive2DContainer const & getPrimitive2DSequence(const DisplayInfo& rDisplayInfo) const;
/// check if getPrimitive2DSequence() should create tag virtualbool isExportPDFTags() const;
// test this VOC for visibility concerning model-view stuff like e.g. Layer virtualbool isPrimitiveVisible(const DisplayInfo& rDisplayInfo) const;
// test this VOC for ghosted mode virtualbool isPrimitiveGhosted(const DisplayInfo& rDisplayInfo) const;
// process this primitive: Eventually also recursively travel an existing hierarchy, // e.g. for group objects, scenes or pages. This method will test geometrical visibility. virtualvoid getPrimitive2DSequenceHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const;
// just process the sub-hierarchy, used as tooling from getPrimitive2DSequenceHierarchy void getPrimitive2DSequenceSubHierarchy(DisplayInfo& rDisplayInfo, drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) const;
// interface to support GridOffset for non-linear ViewToDevice transformation (calc) const basegfx::B2DVector& getGridOffset() const; void resetGridOffset();
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.