X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_base.h;h=4aea45469824baed9111d9234950b178da082edf;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=20285f5fd8c5c6d8b3da2555cc91ce3b38f0b6c9;hpb=122e7616d75f7148068f55634d145b942183dc44;p=lyx.git diff --git a/src/insets/render_base.h b/src/insets/render_base.h index 20285f5fd8..4aea454698 100644 --- a/src/insets/render_base.h +++ b/src/insets/render_base.h @@ -14,28 +14,54 @@ #include "dimension.h" +#include + + +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_; } + + /// 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; } + /// render state. currently, render_button uses this to store mouse_hover_ + int state_; /// Cached mutable Dimension dim_; }; + +} // namespace lyx + #endif // NOT RENDER_BASE_H