X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_base.h;h=4aea45469824baed9111d9234950b178da082edf;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=2fbb97775a49c09dab4161aaa977e42bbc21e970;hpb=dff822442ad64ea35cfa7ed7265f24624093a476;p=lyx.git diff --git a/src/insets/render_base.h b/src/insets/render_base.h index 2fbb97775a..4aea454698 100644 --- a/src/insets/render_base.h +++ b/src/insets/render_base.h @@ -14,35 +14,54 @@ #include "dimension.h" -#include +#include -class BufferView; + +namespace lyx { + +class InsetBase; class MetricsInfo; class PainterInfo; +class RenderButton; +class RenderGraphic; +class RenderPreview; +class RenderMonitoredPreview; class RenderBase { public: virtual ~RenderBase() {} - virtual RenderBase * clone() const = 0; + virtual std::auto_ptr clone(InsetBase const *) const = 0; - /// compute the size of the object returned in dim - virtual void metrics(MetricsInfo & mi, Dimension & dim) const = 0; + /// compute the size of the object returned in dim. + /// \retval true if the metrics has changed. + virtual bool metrics(MetricsInfo & mi, Dimension & dim) const = 0; /// draw inset and update (xo, yo)-cache virtual void draw(PainterInfo & pi, int x, int y) const = 0; + /// render state, exact meaning of state is render-specific + void setRenderState(int state) { state_ = state; } + /// get render state + int renderState() const { return state_; } - /// An accessor function to the cached store. - BufferView * view() const; + /// equivalent to dynamic_cast + virtual RenderButton * asButton() { return 0; } + virtual RenderGraphic * asGraphic() { return 0; } + virtual RenderPreview * asPreview() { return 0; } + virtual RenderMonitoredPreview * asMonitoredPreview() { return 0; } protected: RenderBase() {} RenderBase(RenderBase const &) {} - void operator=(RenderBase const &) {} + RenderBase & operator=(RenderBase const &) { return *this; } - /// These are cached variables (are not copied). - mutable boost::weak_ptr view_; + /// render state. currently, render_button uses this to store mouse_hover_ + int state_; + /// Cached mutable Dimension dim_; }; + +} // namespace lyx + #endif // NOT RENDER_BASE_H