]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_mboxinset.C
Ensure all #warning statements are wrapped by #ifdef WITH_WARNINGS.
[lyx.git] / src / mathed / math_mboxinset.C
index 2e5fdbb32852f0158ea1aa6c0091a284c0012768..c3f090db000e8d73283536517af0225100c483c9 100644 (file)
 #include "BufferView.h"
 #include "buffer.h"
 #include "bufferparams.h"
+#include "cursor.h"
 #include "debug.h"
 #include "metricsinfo.h"
+#include "output_latex.h"
+#include "outputparams.h"
 #include "paragraph.h"
+#include "texrow.h"
 
 using std::auto_ptr;
 using std::endl;
 
 
 MathMBoxInset::MathMBoxInset(BufferView & bv)
-       : text_(&bv, true), bv_(&bv)
+       : text_(&bv), bv_(&bv)
 {
+       text_.paragraphs().clear();
        text_.paragraphs().push_back(Paragraph());
        text_.paragraphs().back().
                layout(bv.buffer()->params().getLyXTextClass().defaultLayout());
-       text_.redoParagraph(text_.paragraphs().begin());
+       text_.redoParagraph(0);
 }
 
 
@@ -51,22 +56,43 @@ void MathMBoxInset::metrics(MetricsInfo & mi, Dimension & dim) const
 
 void MathMBoxInset::draw(PainterInfo & pi, int x, int y) const
 {
-       text_.draw(pi, x + 1, y);
+       text_.draw(pi, x + 1, y - text_.ascent());
        drawMarkers(pi, x, y);
 }
 
 
-void MathMBoxInset::write(WriteStream & os) const
+void MathMBoxInset::write(WriteStream & ws) const
+{
+       if (ws.latex()) {
+               ws << "\\mbox{\n";
+               TexRow texrow;
+               OutputParams runparams;
+               latexParagraphs(*bv_->buffer(), text_.paragraphs(),
+                       ws.os(), texrow, runparams);
+               ws.addlines(texrow.rows());
+               ws << "}";
+       } else {
+               ws << "\\mbox{\n";
+               text_.write(*bv_->buffer(), ws.os());
+               ws << "}";
+       }
+}
+
+
+int MathMBoxInset::latex(Buffer const & buf, std::ostream & os,
+                       OutputParams const & runparams) const
 {
        os << "\\mbox{\n";
-       text_.write(*bv_->buffer(), os.os());
+       TexRow texrow;
+       latexParagraphs(buf, text_.paragraphs(), os, texrow, runparams);
        os << "}";
+       return texrow.rows();
 }
 
 
-DispatchResult MathMBoxInset::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
+void MathMBoxInset::priv_dispatch(LCursor & cur, FuncRequest & cmd)
 {
-       return text_.dispatch(cur, cmd);
+       text_.dispatch(cur, cmd);
 }
 
 
@@ -76,9 +102,8 @@ LyXText * MathMBoxInset::getText(int) const
 }
 
 
-void MathMBoxInset::getCursorPos(CursorSlice const & cur, int & x, int & y) const
+void MathMBoxInset::getCursorPos(LCursor const & cur, int & x, int & y) const
 {
-       x = text_.cursorX(cur);
-       //y = text_.cursorY(cur);
-       y = 100;
+       x = text_.cursorX(cur.top());
+       y = text_.cursorY(cur.top());
 }