]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcollapsable.C
Clean up InsetGraphics::Cache and rename as GraphicsInset.
[lyx.git] / src / insets / insetcollapsable.C
index 8d62008e0807f4ce8155fea707dbfde051771a25..facf2f5f362fd3f6cfcfd26aa19105deab1eaa21 100644 (file)
@@ -25,6 +25,7 @@
 #include "WordLangTuple.h"
 #include "funcrequest.h"
 #include "buffer.h"
+#include "metricsinfo.h"
 
 #include "frontends/font_metrics.h"
 #include "frontends/Painter.h"
@@ -123,35 +124,28 @@ int InsetCollapsable::height_collapsed() const
 }
 
 
-void InsetCollapsable::dimension(BufferView * bv, LyXFont const & font,
-       Dimension & dim) const
+void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        dimension_collapsed(dim);
        if (collapsed_)
                return;
        Dimension insetdim;
-       inset.dimension(bv, font, insetdim);
+       inset.metrics(mi, insetdim);
        dim.des += insetdim.height() + TEXT_TO_BOTTOM_OFFSET;
-       dim.wid = max(dim.wid, insetdim.width());
+       dim.wid = max(dim.wid, insetdim.wid);
 }
 
 
-void InsetCollapsable::draw_collapsed(Painter & pain,
-                                     int baseline, float & x) const
+void InsetCollapsable::draw_collapsed(PainterInfo & pi, int x, int y) const
 {
-       pain.buttonText(int(x) + TEXT_TO_INSET_OFFSET,
-                       baseline, label, labelfont);
-       Dimension dim;
-       dimension_collapsed(dim);
-       x += dim.wid;
+       pi.pain.buttonText(x + TEXT_TO_INSET_OFFSET, y, label, labelfont);
 }
 
 
-void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
-                            int baseline, float & x, bool inlined) const
+void InsetCollapsable::draw(PainterInfo & pi, int x, int y, bool inlined) const
 {
-       lyx::Assert(bv);
-       cache(bv);
+       lyx::Assert(pi.base.bv);
+       cache(pi.base.bv);
 
        if (nodraw())
                return;
@@ -159,45 +153,41 @@ void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
        Dimension dim_collapsed;
        dimension_collapsed(dim_collapsed);
 
-       Painter & pain = bv->painter();
-
+       int const aa    = ascent(pi.base.bv, pi.base.font);
        button_length   = dim_collapsed.width();
-       button_top_y    = -ascent(bv, f);
-       button_bottom_y = -ascent(bv, f) + dim_collapsed.height();
+       button_top_y    = -aa;
+       button_bottom_y = -aa + dim_collapsed.height();
 
        if (!isOpen()) {
-               draw_collapsed(pain, baseline, x);
+               draw_collapsed(pi, x, y);
                return;
        }
 
-       float old_x = x;
+       int old_x = x;
 
        if (!owner())
                x += scroll();
 
-       top_x = int(x);
-       top_baseline = baseline;
+       top_x = x;
+       top_baseline = y;
 
-       int const bl = baseline - ascent(bv, f) + dim_collapsed.ascent();
+       int const bl = y - aa + dim_collapsed.ascent();
 
        if (inlined) {
-               inset.draw(bv, f, baseline, x);
+               inset.draw(pi, x, y);
        } else {
-               draw_collapsed(pain, bl, old_x);
-               int const yy = bl + dim_collapsed.descent() + inset.ascent(bv, f);
-               inset.draw(bv, f, yy, x);
-               // contained inset may be shorter than the button
-               if (x < top_x + button_length + TEXT_TO_INSET_OFFSET)
-                       x = top_x + button_length + TEXT_TO_INSET_OFFSET;
+               draw_collapsed(pi, old_x, bl);
+               int const yy = bl + dim_collapsed.descent()
+                       + inset.ascent(pi.base.bv, pi.base.font);
+               inset.draw(pi, x, yy);
        }
 }
 
 
-void InsetCollapsable::draw(BufferView * bv, LyXFont const & f,
-                           int baseline, float & x) const
+void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
 {
        // by default, we are not inlined-drawing
-       draw(bv, f, baseline, x, false);
+       draw(pi, x, y, false);
 }