]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/MathsSymbols.C
Bugfixes: checkboxes to radiobuttons (from J�rgen S) and remove a little
[lyx.git] / src / frontends / xforms / MathsSymbols.C
index 164d1fccb38a37af1d5a9dde111a7a29f567c96a..ff2a4b3d71dd084e7c32b6345af1bd3ec59fd24b 100644 (file)
@@ -17,8 +17,8 @@
 #endif
 
 #include "support/LAssert.h" 
+#include "support/lstrings.h"
 #include "debug.h"
-
 #include "MathsSymbols.h"
 #include "FormMathsPanel.h"
  
@@ -40,8 +40,18 @@ using std::strstr;
 #include "misc.xbm"
 #include "varsz.xbm"
 #include "dots.xbm"
+
+#include "ams_misc.xbm"
+#include "ams_arrows.xbm"
+#include "ams_rel.xbm"
+#include "ams_nrel.xbm"
+#include "ams_ops.xbm"
+
 #include "mathed/math_parser.h"
 #include "frac.xpm"
+#include "sub.xpm"
+#include "super.xpm"
+#include "style.xpm"
 #include "sqrt.xpm"
 #include "delim.xbm"
 #include "delim.xpm"
@@ -126,7 +136,11 @@ char const * latex_misc[] = {
        "Re", "Im", "aleph", "wp", "hbar",
        "angle", "top", "bot", "Vert", "neg",
        "flat", "natural", "sharp", "surd", "triangle",
-       "diamondsuit", "heartsuit", "clubsuit", "spadesuit", ""
+       "diamondsuit", "heartsuit", "clubsuit", "spadesuit", 
+       "mathbb N", "mathbb Z", "mathbb Q", 
+       "mathbb R", "mathbb C", "mathbb H",
+       "mathcal F", "mathcal L", 
+       "mathcal H", "mathcal O",""
 };
 
 int const nr_latex_misc = sizeof(latex_misc) / sizeof(char const *);
@@ -141,11 +155,111 @@ char const * latex_varsz[] = {
 
 int const nr_latex_varsz = sizeof(latex_varsz) / sizeof(char const *);
 
+char const * latex_ams_misc[] = {
+       "digamma", "varkappa", "beth", "daleth", "gimel",
+       "ulcorner", "urcorner", "llcorner", "lrcorner",
+       "hbar", "hslash", "vartriangle",
+       "triangledown", "square", "lozenge",
+       "circledS", "angle", "measuredangle",
+       "nexists", "mho", "Finv",
+       "Game", "Bbbk", "backprime",
+       "varnothing", "blacktriangle", "blacktriangledown",
+       "blacksquare", "blacklozenge", "bigstar",
+       "sphericalangle", "complement", "eth",
+       "diagup", "diagdown", ""
+};
+
+int const nr_latex_ams_misc = sizeof(latex_ams_misc) / sizeof(char const *);
+
+char const * latex_ams_arrows[] = {
+       "dashrightarrow", "dashleftarrow", "leftleftarrows",
+       "leftrightarrows", "Lleftarrow", "twoheadleftarrow",
+       "leftarrowtail", "looparrowleft", "leftrightharpoons",
+       "curvearrowleft", "circlearrowleft", "Lsh",
+       "upuparrows", "upharpoonleft", "downharpoonleft",
+       "multimap", "leftrightsquigarrow", "rightrightarrows",
+       "rightleftarrows", "rightrightarrows", "rightleftarrows",
+       "twoheadrightarrow", "rightarrowtail", "looparrowright",
+       "rightleftharpoons", "curvearrowright", "circlearrowright",
+       "Rsh", "downdownarrows", "upharpoonright", 
+       "downharpoonright", "rightsquigarrow",
+       "nleftarrow", "nrightarrow", "nLeftarrow",
+       "nRightarrow", "nleftrightarrow", "nLeftrightarrow"
+};
+
+int const nr_latex_ams_arrows = sizeof(latex_ams_arrows) / sizeof(char const *);
+
+char const * latex_ams_rel[] = {
+       "leqq", "leqslant", "eqslantless",
+       "lesssim", "lessapprox", "approxeq",
+       "lessdot", "lll", "lessgtr",
+       "lesseqgtr", "lesseqqgtr", "doteqdot",
+       "risingdotseq", "fallingdotseq", "backsim",
+       "backsimeq", "subseteqq", "Subset",
+       "sqsubset", "preccurlyeq", "curlyeqprec",
+       "precsim", "precapprox", "vartriangleleft",
+       "trianglelefteq", "vDash", "Vvdash",
+       "smallsmile", "smallfrown", "bumpeq",
+       "Bumpeq", "geqq", "geqslant",
+       "eqslantgtr", "gtrsim", "gtrapprox",
+       "gtrdot", "ggg", "gtrless", 
+       "gtreqless", "gtreqqless", "eqcirc",
+       "circeq", "triangleq", "thicksim",
+       "thickapprox", "supseteqq", "Supset",
+       "sqsupset", "succcurlyeq", "curlyeqsucc",
+       "succsim", "succapprox", "vartriangleright",
+       "trianglerighteq", "Vdash", "shortmid",
+       "shortparallel", "between", "pitchfork", 
+       "varpropto", "blacktriangleleft", "therefore",
+       "backepsilon", "blacktriangleright", "because"
+};
+
+int const nr_latex_ams_rel = sizeof(latex_ams_rel) / sizeof(char const *);
+
+char const * latex_ams_nrel[] = {
+       "nless", "nleq", "nleqslant",
+       "nleqq", "lneq", "lneqq",
+       "lvertneqq", "lnsim", "lnapprox", 
+       "nprec", "npreceq", "precnsim",
+       "precnapprox", "nsim", "nshortmid",
+       "nmid", "nvdash", "nvDash",
+       "ntriangleleft", "ntrianglelefteq", "nsubseteq",
+       "subsetneq", "varsubsetneq", "subsetneqq",
+       "varsubsetneqq", "ngtr", "ngeq",
+       "ngeqslant", "ngeqq", "gneq",
+       "gneqq", "gverteqq", "gnsim",
+       "gnapprox", "nsucc", "nsucceq",
+       "succnsim", "succnapprox", "ncong",
+       "nshortparallel", "nparallel", "nvDash",
+       "nVDash", "ntriangleright", "ntrianglerighteq",
+       "nsupseteq", "nsupseteqq", "supsetneq",
+       "varsupsetneq", "supsetneqq", "varsupsetneqq"
+};
+
+int const nr_latex_ams_nrel = sizeof(latex_ams_nrel) / sizeof(char const *);
+
+
+char const * latex_ams_ops[] = {
+       "dotplus", "smallsetminus", "Cap",
+       "Cup", "barwedge", "veebar",
+       "doublebarwedge", "boxminus", "boxtimes",
+       "boxdot", "boxplus", "divideontimes",
+       "ltimes", "rtimes", "leftthreetimes",
+       "rightthreetimes", "curlywedge", "curlyvee",
+       "circleddash", "circledast", "circledcirc",
+       "centerdot", "intercal", ""
+};
+
+int const nr_latex_ams_ops = sizeof(latex_ams_ops) / sizeof(char const *);
+
 static char const ** mathed_get_pixmap_from_icon(int d)
 {
        switch (d) {
                case MM_FRAC: return frac;
                case MM_SQRT: return sqrt_xpm;
+               case MM_SUPER: return super_xpm;
+               case MM_SUB: return sub_xpm;
+               case MM_STYLE: return style_xpm;
                case MM_DELIM: return delim;
                case MM_MATRIX: return matrix;
                case MM_EQU: return equation;
@@ -162,7 +276,7 @@ static char const ** pixmapFromBitmapData(char const * s, int wx, int hx)
        int id = -1;
 
        int i = 0;
-       for (; i < 6; ++i) {
+       for (; i < 11; ++i) {
                char const ** latex_str = 0;
                switch (i) {
                case 0: latex_str = latex_greek; break;
@@ -171,6 +285,12 @@ static char const ** pixmapFromBitmapData(char const * s, int wx, int hx)
                case 3: latex_str = latex_arrow; break;
                case 4: latex_str = latex_varsz; break;
                case 5: latex_str = latex_misc; break;
+               case 6: latex_str = latex_ams_misc; break;
+               case 7: latex_str = latex_ams_arrows; break;
+               case 8: latex_str = latex_ams_rel; break;
+               case 9: latex_str = latex_ams_nrel; break;
+               case 10: latex_str = latex_ams_ops; break;
+               // Add AMS stuff here -- MV
                }
 
                for (int k = 0; latex_str[k][0] > ' '; ++k) {
@@ -181,14 +301,14 @@ static char const ** pixmapFromBitmapData(char const * s, int wx, int hx)
                }
                if (id >= 0) break;
        }
-       if (i < 6 && id >= 0) {
+       if (i < 11 && id >= 0) {
                unsigned char const * bdata = 0;
                int w = 0;
                int h = 0;
                int dw = 0;
                int dh = 0;
 
-               lyxerr[Debug::MATHED] << "Imando " << i << ", " << id << endl;
+               lyxerr [Debug::MATHED] << "Imando " << i << ", " << id << endl;
                switch (i) {
                case 0:
                        if (id <= 10) {
@@ -251,16 +371,37 @@ static char const ** pixmapFromBitmapData(char const * s, int wx, int hx)
                        dh = 5;
                        break;
                case 5:
-                       w = misc_width;
-                       h = misc_height;
-                       bdata = misc_bits;
-                       dw = 5;
-                       dh = 6;
+                       if (id < 29) {
+                               w = misc_width;
+                               h = misc_height;
+                               bdata = misc_bits;
+                               dw = 5;
+                               dh = 6;
+                       } else if (id > 36) {
+                               w = misc3_width;
+                               h = misc3_height;
+                               bdata = misc3_bits;
+                               dw = 3;
+                               dh = 2;
+                               id -= 37;
+                       } else {
+                               w = misc2_width;
+                               h = misc2_height;
+                               bdata = misc2_bits;
+                               dw = 2;
+                               dh = 2;
+                               id -= 29;
+                       }
+                       break;
+               case 7:
+               case 8:
+               case 9:
+               case 10:
+                       // to be added -- MV
                        break;
                }
                int ww = w / dw;
                int hh = h / dh;
-
                XImage * xima = XCreateImage(fl_get_display(), 0, 1, XYBitmap, 0,
                                             const_cast<char*>(reinterpret_cast<char const *>(bdata)), w, h, 8, 0);
                xima->byte_order = LSBFirst;
@@ -301,13 +442,20 @@ char const ** get_pixmap_from_symbol(char const * arg, int wx, int hx)
        case LM_TK_SQRT:
                data = mathed_get_pixmap_from_icon(MM_SQRT);
                break;
-       case LM_TK_BIGSYM:
        case LM_TK_SYM:
+       case LM_TK_CMR:
+       case LM_TK_CMSY:
+       case LM_TK_CMEX:
+       case LM_TK_CMM:
+       case LM_TK_MSA:
+       case LM_TK_MSB:
                // I have to use directly the bitmap data since the
                // bitmap tables are not yet created when this
                // function is called.
                data = pixmapFromBitmapData(arg, wx, hx);
                break;
+       default:
+               break;
        }
 
        return data;