]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_rootinset.C
more IU
[lyx.git] / src / mathed / math_rootinset.C
index 345b4c31ea1ea82cf661ec9013baf6e8ce777be9..98c214552afb28f0f0bf2305552b75ce6b1cc01c 100644 (file)
@@ -1,23 +1,25 @@
-/*
- *  File:        math_root.C
- *  Purpose:     Implementation of the root object
- *  Author:      Alejandro Aguilar Sierra <asierra@servidor.unam.mx>
- *  Created:     January 1999
- *  Description: Root math object
+/**
+ * \file math_rootinset.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *  Copyright: 1999 Alejandro Aguilar Sierra
+ * \author Alejandro Aguilar Sierra
+ * \author André Pönitz
  *
- *   You are free to use and modify this code under the terms of
- *   the GNU General Public Licence version 2 or later.
+ * Full author contact details are available in file CREDITS.
  */
 
+#include <config.h>
 
 #include "math_rootinset.h"
+#include "math_data.h"
 #include "math_mathmlstream.h"
+#include "LColor.h"
 #include "frontends/Painter.h"
 
 
 using std::max;
+using std::auto_ptr;
 
 
 MathRootInset::MathRootInset()
@@ -25,19 +27,20 @@ MathRootInset::MathRootInset()
 {}
 
 
-MathInset * MathRootInset::clone() const
+auto_ptr<InsetBase> MathRootInset::clone() const
 {
-       return new MathRootInset(*this);
+       return auto_ptr<InsetBase>(new MathRootInset(*this));
 }
 
 
-void MathRootInset::metrics(MetricsInfo & mi) const
+void MathRootInset::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        MathNestInset::metrics(mi);
-       dim_.a = max(cell(0).ascent()  + 5, cell(1).ascent())  + 2;
-       dim_.d = max(cell(1).descent() + 5, cell(0).descent()) + 2;
-       dim_.w = cell(0).width() + cell(1).width() + 10;
-       metricsMarkers();
+       dim_.asc = max(cell(0).ascent()  + 5, cell(1).ascent())  + 2;
+       dim_.des = max(cell(1).descent() + 5, cell(0).descent()) + 2;
+       dim_.wid = cell(0).width() + cell(1).width() + 10;
+       metricsMarkers(1);
+       dim = dim_;
 }
 
 
@@ -48,16 +51,16 @@ void MathRootInset::draw(PainterInfo & pi, int x, int y) const
        cell(0).draw(pi, x, y - 5 - cell(0).descent());
        // the "base"
        cell(1).draw(pi, x + w + 8, y);
-       int const a = ascent();
-       int const d = descent();
+       int const a = dim_.ascent();
+       int const d = dim_.descent();
        int xp[5];
        int yp[5];
-       xp[0] = x + width();  yp[0] = y - a + 1;
-       xp[1] = x + w + 4;    yp[1] = y - a + 1;
-       xp[2] = x + w;        yp[2] = y + d;
-       xp[3] = x + w - 2;    yp[3] = y + (d - a)/2 + 2;
-       //xp[4] = x;            yp[4] = y + (d - a)/2 + 2;
-       xp[4] = x + w - 5;    yp[4] = y + (d - a)/2 + 4;
+       xp[0] = x + dim_.width();  yp[0] = y - a + 1;
+       xp[1] = x + w + 4;         yp[1] = y - a + 1;
+       xp[2] = x + w;             yp[2] = y + d;
+       xp[3] = x + w - 2;         yp[3] = y + (d - a)/2 + 2;
+       //xp[4] = x;                 yp[4] = y + (d - a)/2 + 2;
+       xp[4] = x + w - 5;         yp[4] = y + (d - a)/2 + 4;
        pi.pain.lines(xp, yp, 5, LColor::math);
        drawMarkers(pi, x, y);
 }