]> git.lyx.org Git - lyx.git/commitdiff
Oooooops
authorAndré Pönitz <poenitz@gmx.net>
Mon, 6 Aug 2001 06:23:09 +0000 (06:23 +0000)
committerAndré Pönitz <poenitz@gmx.net>
Mon, 6 Aug 2001 06:23:09 +0000 (06:23 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2423 a592a061-630c-0410-9148-cb99ea01b6c8

src/mathed/math_charinset.C [new file with mode: 0644]
src/mathed/math_charinset.h [new file with mode: 0644]

diff --git a/src/mathed/math_charinset.C b/src/mathed/math_charinset.C
new file mode 100644 (file)
index 0000000..7316603
--- /dev/null
@@ -0,0 +1,99 @@
+#ifdef __GNUG__
+#pragma implementation
+#endif
+
+#include "math_charinset.h"
+#include "LColor.h"
+#include "Painter.h"
+#include "support/LOstream.h"
+#include "mathed/support.h"
+#include "math_parser.h"
+#include "debug.h"
+
+
+MathCharInset::MathCharInset(char c, MathTextCodes t)
+       : char_(c)
+{
+       code(t);
+}
+
+
+MathInset * MathCharInset::clone() const
+{   
+       return new MathCharInset(*this);
+}
+
+
+int MathCharInset::ascent() const
+{
+       return mathed_char_ascent(code_, size(), char_);
+}
+
+
+int MathCharInset::descent() const
+{
+       return mathed_char_descent(code_, size(), char_);
+}
+
+
+int MathCharInset::width() const
+{
+       return mathed_char_width(code_, size(), char_);
+}
+
+
+void MathCharInset::draw(Painter & pain, int x, int y)
+{ 
+       xo(x);
+       yo(y);
+       drawChar(pain, code_, size_, x, y, char_);
+}
+
+
+void MathCharInset::write(std::ostream & os, bool) const
+{
+       int brace = 0;
+
+       if (MathIsSymbol(code_)) {
+               latexkeys const * l = lm_get_key_by_id(char_, LM_TK_SYM);
+
+               if (l == 0) 
+                       l = lm_get_key_by_id(char_, LM_TK_BIGSYM);
+
+               if (l) {
+                       os << '\\' << l->name << ' ';
+               } else {
+                       lyxerr << "Could not find the LaTeX name for  " 
+                               << char_ << " and code_ " << code_ << "!" << std::endl;
+               }
+       } else {
+               if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM) 
+                       os << '\\' << math_font_name[code_ - LM_TC_RM] << '{';
+
+               // Is there a standard logical XOR?
+               if ((code_ == LM_TC_TEX && char_ != '{' && char_ != '}') ||
+                               (code_ == LM_TC_SPECIAL))
+                       os << '\\';
+               else {
+                       if (char_ == '{')
+                               ++brace;
+                       if (char_ == '}')
+                               --brace;
+               }
+               if (char_ == '}' && code_ == LM_TC_TEX && brace < 0) 
+                       lyxerr <<"Math warning: Unexpected closing brace.\n";
+               else           
+                       os << char_;
+       }
+
+       if (code_ >= LM_TC_RM && code_ <= LM_TC_TEXTRM)
+               os << '}';
+}
+
+
+void MathCharInset::writeNormal(std::ostream & os) const
+{
+       os << "[sqrt ";
+       cell(0).writeNormal(os); 
+       os << "] ";
+}
diff --git a/src/mathed/math_charinset.h b/src/mathed/math_charinset.h
new file mode 100644 (file)
index 0000000..718faab
--- /dev/null
@@ -0,0 +1,42 @@
+// -*- C++ -*-
+#ifndef MATH_CHARINSET_H
+#define MATH_CHARINSET_H
+
+#include "math_inset.h"
+
+#ifdef __GNUG__
+#pragma interface
+#endif
+
+/** The base character inset.
+    \author André Pönitz
+ */
+
+class MathCharInset : public MathInset {
+public:
+       ///
+       MathCharInset(char c, MathTextCodes t);
+       ///
+       MathInset * clone() const;
+       ///
+       void draw(Painter &, int x, int baseline);
+       ///
+       void write(std::ostream &, bool fragile) const;
+       ///
+       void writeNormal(std::ostream &) const;
+       /// 
+       int ascent() const;
+       ///
+       int descent() const;
+       ///
+       int width() const;
+       /// identifies Charinsets
+       bool isCharInset() const { return true; }
+       ///
+       char getChar() const { return char_; }
+
+private:
+       /// the character
+       char char_;
+};
+#endif