summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--starmath/inc/action.hxx105
-rw-r--r--starmath/inc/applicat.hxx160
-rw-r--r--starmath/inc/config.hxx161
-rw-r--r--starmath/inc/dialog.hxx654
-rw-r--r--starmath/inc/document.hxx277
-rw-r--r--starmath/inc/edit.hxx160
-rw-r--r--starmath/inc/format.hxx203
-rw-r--r--starmath/inc/node.hxx867
-rw-r--r--starmath/inc/parse.hxx301
-rw-r--r--starmath/inc/rect.hxx304
-rw-r--r--starmath/inc/smdll.hxx108
-rw-r--r--starmath/inc/smmod.hxx128
-rw-r--r--starmath/inc/starmath.hrc758
-rw-r--r--starmath/inc/symbol.hxx225
-rw-r--r--starmath/inc/toolbox.hxx124
-rw-r--r--starmath/inc/types.hxx216
-rw-r--r--starmath/inc/unomodel.hxx139
-rw-r--r--starmath/inc/utility.hxx471
-rw-r--r--starmath/inc/view.hxx313
-rw-r--r--starmath/prj/d.lst18
-rw-r--r--starmath/sdi/makefile.mk120
-rw-r--r--starmath/sdi/smath.sdi881
-rw-r--r--starmath/sdi/smslots.sdi505
-rw-r--r--starmath/sdi/svxitems.sdi570
-rw-r--r--starmath/source/action.cxx128
-rw-r--r--starmath/source/commands.src2714
-rw-r--r--starmath/source/config.cxx381
-rw-r--r--starmath/source/dialog.cxx2405
-rw-r--r--starmath/source/document.cxx1641
-rw-r--r--starmath/source/edit.cxx783
-rw-r--r--starmath/source/format.cxx311
-rw-r--r--starmath/source/makefile.mk163
-rw-r--r--starmath/source/math_pch.cxx893
-rw-r--r--starmath/source/mathtype.cxx3081
-rw-r--r--starmath/source/mathtype.hxx203
-rw-r--r--starmath/source/node.cxx2490
-rw-r--r--starmath/source/parse.cxx2087
-rw-r--r--starmath/source/rect.cxx908
-rw-r--r--starmath/source/smdll.cxx166
-rw-r--r--starmath/source/smmod.cxx231
-rw-r--r--starmath/source/smres.src10674
-rw-r--r--starmath/source/symbol.cxx657
-rw-r--r--starmath/source/toolbox.cxx274
-rw-r--r--starmath/source/typemap.cxx190
-rw-r--r--starmath/source/unomodel.cxx782
-rw-r--r--starmath/source/utility.cxx651
-rw-r--r--starmath/source/view.cxx1559
-rw-r--r--starmath/util/hidother.src151
-rw-r--r--starmath/util/makefile.mk149
-rw-r--r--starmath/util/sm.map9
50 files changed, 41449 insertions, 0 deletions
diff --git a/starmath/inc/action.hxx b/starmath/inc/action.hxx
new file mode 100644
index 000000000000..1482372779d2
--- /dev/null
+++ b/starmath/inc/action.hxx
@@ -0,0 +1,105 @@
+/*************************************************************************
+ *
+ * $RCSfile: action.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef ACTION_HXX
+#define ACTION_HXX
+
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+
+#ifndef FORMAT_HXX
+#include "format.hxx"
+#endif
+
+class SmDocShell;
+
+class SmEditAction: public SfxUndoAction
+{
+ SmDocShell *pDoc;
+ String aOldText;
+ String aNewText;
+
+public:
+ SmEditAction(SmDocShell *pDocSh, const String& rOldText, const String& rNewText);
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SmDocShell *pDocSh);
+ virtual String GetComment() const;
+};
+
+class SmFormatAction: public SfxUndoAction
+{
+ SmDocShell *pDoc;
+ SmFormat aOldFormat;
+ SmFormat aNewFormat;
+
+public:
+ SmFormatAction(SmDocShell *pDocSh, const SmFormat& rOldFormat, const SmFormat& rNewFormat);
+
+ virtual void Undo();
+ virtual void Redo();
+ virtual void Repeat(SmDocShell *pDocSh);
+ virtual String GetComment() const;
+};
+
+#endif
+
diff --git a/starmath/inc/applicat.hxx b/starmath/inc/applicat.hxx
new file mode 100644
index 000000000000..21e438ffcb44
--- /dev/null
+++ b/starmath/inc/applicat.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * $RCSfile: applicat.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef APPLICAT_HXX
+#define APPLICAT_HXX
+
+class SvxErrorHandler;
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+
+/**************************************************************************/
+/*
+**
+** MACRO DEFINITION
+**
+**/
+
+#define SMDLL 1
+
+#define APPLICATIONNAME "smath3"
+
+/**************************************************************************/
+/*
+**
+** CLASS DEFINITION
+**
+**/
+
+#ifdef WIN
+#define RELEASE "WIN304"
+#endif
+
+#ifdef PM2
+#define RELEASE "PM304"
+#endif
+
+#ifdef MAC
+#define RELEASE "MAC304"
+#endif
+
+#ifdef WNT
+#define RELEASE "WNT304"
+#endif
+
+#ifdef UNX
+#define RELEASE "UNX304"
+#endif
+
+#ifndef SMDLL
+class SmResId : public ResId
+{
+public:
+ SmResId(USHORT nId) :
+ ResId(nId)
+ {
+ }
+
+};
+
+#endif
+
+#ifndef _DLL_
+class SmDLL;
+
+class SmApplicat: public SfxApplication
+{
+protected:
+ SvxErrorHandler *pSvxErrorHandler;
+
+ // factories
+ virtual SfxFileDialog* CreateDocFileDialog(ULONG nBits,
+ const SfxObjectFactory &rFact);
+ virtual void OpenClients();
+
+ // initialization / deinitialization
+#ifndef VCL
+ virtual void Init(int nArgs, char* pArgs[]);
+#else
+ virtual void Init();
+#endif
+ virtual void Exit();
+
+public:
+#ifndef VCL
+ void Main(int nArgc, char* pArgv[]);
+#else
+ void Main();
+#endif
+
+ SmApplicat() :
+ SfxApplication("iso")
+ {
+ }
+
+};
+
+#endif
+#endif
+
diff --git a/starmath/inc/config.hxx b/starmath/inc/config.hxx
new file mode 100644
index 000000000000..77b6455ccc7e
--- /dev/null
+++ b/starmath/inc/config.hxx
@@ -0,0 +1,161 @@
+/*************************************************************************
+ *
+ * $RCSfile: config.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef CONFIG_HXX
+#define CONFIG_HXX
+
+#ifndef _SFXBRDCST_HXX //autogen
+#include <svtools/brdcst.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+#ifndef _FORMAT_HXX
+#include "format.hxx"
+#endif
+
+#define HINT_CONFIGCHANGED 10002
+#define SMCONFIGITEM (SID_SMA_START+1)
+
+
+class SmPreferenceDialog;
+class SmPrintDialog;
+class SmPrintOptionDialog;
+class SfxItemSet;
+
+enum SmPrintSize { PRINT_SIZE_NORMAL, PRINT_SIZE_SCALED, PRINT_SIZE_ZOOMED };
+
+class SmConfig : public SfxBroadcaster, public SfxListener, public SfxConfigItem
+{
+ String aSymbolFile;
+ SmFormat aStandardFormat;
+ SmFontPickList vFontPickList[7];
+
+ SmPrintSize ePrintSize;
+ USHORT nPrintZoom;
+
+ BOOL bPrintTitle,
+ bPrintText,
+ bPrintFrame,
+ bWarnNoSymbols,
+ bToolBoxVisible,
+ bCmdBoxWindow,
+ bAutoRedraw,
+ bFormulaCursor,
+ bNoRightSpaces; // ignorieren von ~ und ` am Zeilenende
+
+ virtual void SFX_NOTIFY(SfxBroadcaster &rBC, const TypeId &rBCType,
+ const SfxHint &rHint, const TypeId &rHintType);
+
+ void ConfigChangedAction();
+ void SetValueIfNE(BOOL &rItem, const BOOL bVal);
+
+public:
+ SmConfig();
+ virtual ~SmConfig();
+
+ virtual int Load (SvStream &rStream);
+ virtual BOOL Store(SvStream &rStream);
+
+ virtual void UseDefault();
+ virtual String GetName() const;
+
+ SmFormat & GetFormat() { return aStandardFormat; }
+ SmFontPickList & GetFontPickList(USHORT nIdent) { return vFontPickList[nIdent]; }
+
+ const String & GetSymbolFile() const { return aSymbolFile; }
+ void SetSymbolFile(const String &rText);
+
+ SmPrintSize GetPrintSize() const { return ePrintSize; }
+ USHORT GetPrintZoom() const { return nPrintZoom; }
+
+ BOOL IsCmdBoxWindowEnabled() const { return bCmdBoxWindow; }
+
+ BOOL IsPrintTitle() const { return bPrintTitle; }
+ BOOL IsPrintText() const { return bPrintText; }
+ BOOL IsPrintFrame() const { return bPrintFrame; }
+ BOOL IsNoRightSpaces() const { return bNoRightSpaces; }
+
+ BOOL IsToolBoxVisible() const { return bToolBoxVisible; }
+ void SetToolBoxVisible(BOOL bVal) { SetValueIfNE(bToolBoxVisible, bVal); }
+
+ BOOL IsAutoRedraw() const { return bAutoRedraw; }
+ void SetAutoRedraw(BOOL bVal) { SetValueIfNE(bAutoRedraw, bVal); }
+
+ BOOL IsWarnNoSymbols() const { return bWarnNoSymbols; }
+ void SetWarnNoSymbols(BOOL bVal) { SetValueIfNE(bWarnNoSymbols, bVal); }
+
+ BOOL IsShowFormulaCursor() const { return bFormulaCursor; }
+ void SetShowFormulaCursor(BOOL bVal) { SetValueIfNE(bFormulaCursor, bVal); }
+
+ void ItemSetToConfig(const SfxItemSet &rSet);
+ void ConfigToItemSet(SfxItemSet &rSet) const;
+
+ friend SvStream & operator << (SvStream &rStream, const SmConfig &rConfig);
+ friend SvStream & operator >> (SvStream &rStream, SmConfig &rConfig);
+};
+
+#endif
+
+
diff --git a/starmath/inc/dialog.hxx b/starmath/inc/dialog.hxx
new file mode 100644
index 000000000000..6a1591c212bb
--- /dev/null
+++ b/starmath/inc/dialog.hxx
@@ -0,0 +1,654 @@
+/*************************************************************************
+ *
+ * $RCSfile: dialog.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef DIALOG_HXX
+#define DIALOG_HXX
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+#ifndef _SV_IMAGE_HXX
+#include <vcl/image.hxx>
+#endif
+#ifndef _SFXTABDLG_HXX //autogen
+#include <sfx2/tabdlg.hxx>
+#endif
+#ifndef _SV_GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+#ifndef _SV_COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _SVX_OPTGENRL_HXX //autogen
+#include <svx/optgenrl.hxx>
+#endif
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+#ifndef _SV_MENUBTN_HXX //autogen
+#include <vcl/menubtn.hxx>
+#endif
+#ifndef _SV_SCRBAR_HXX //autogen
+#include <vcl/scrbar.hxx>
+#endif
+#ifndef _SV_CTRL_HXX //autogen
+#include <vcl/ctrl.hxx>
+#endif
+#ifndef _SV_MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _CTRLBOX_HXX //autogen
+#include <svtools/ctrlbox.hxx>
+#endif
+#ifndef _CTRLTOOL_HXX //autogen
+#include <svtools/ctrltool.hxx>
+#endif
+
+#ifndef UTILITY_HXX
+#include "utility.hxx"
+#endif
+#ifndef FORMAT_HXX
+#include "format.hxx"
+#endif
+#ifndef SYMBOL_HXX
+#include "symbol.hxx"
+#endif
+
+
+#define CATEGORY_NONE 0xFFFF
+
+/**************************************************************************/
+
+const XubString GetFontStyleName(const Font &rFont);
+void SetFontStyle(const XubString &rStyleName, Font &rFont);
+
+/**************************************************************************/
+
+class SmAboutDialog : public ModalDialog
+{
+ FixedText aFixedText1;
+ FixedText aFixedText2;
+ FixedText aFixedText3;
+ FixedText aFixedText4;
+ FixedText aFixedText5;
+ FixedText aFixedText6;
+ FixedText aReleaseText;
+ FixedBitmap aFixedBitmap1;
+ OKButton aOKButton1;
+
+public:
+ SmAboutDialog(Window *pParent, BOOL bFreeRes = TRUE);
+};
+
+/**************************************************************************/
+
+class SmPrintOptionsTabPage : public SfxTabPage
+{
+ GroupBox aGroupBox1;
+ CheckBox aTitle;
+ CheckBox aText;
+ CheckBox aFrame;
+ GroupBox aGroupBox3;
+ CheckBox aNoRightSpaces;
+ GroupBox aGroupBox2;
+ RadioButton aSizeNormal;
+ RadioButton aSizeScaled;
+ RadioButton aSizeZoomed;
+ MetricField aZoom;
+
+ DECL_LINK(SizeButtonClickHdl, Button *);
+
+ virtual BOOL FillItemSet(SfxItemSet& rSet);
+ virtual void Reset(const SfxItemSet& rSet);
+
+public:
+ static SfxTabPage* Create(Window *pWindow, const SfxItemSet &rSet);
+
+ SmPrintOptionsTabPage(Window *pParent, const SfxItemSet &rOptions);
+};
+
+
+#ifdef NEVER
+class SmGeneralTabPage : public SvxGeneralTabPage
+{
+public :
+ static SfxTabPage* Create(Window* pWindow, const SfxItemSet& rSet);
+
+ SmGeneralTabPage (Window *pParent, const SfxItemSet &rAttrSet) :
+ SvxGeneralTabPage (pParent, rAttrSet)
+ {
+ }
+};
+#endif //NEVER
+
+/**************************************************************************/
+
+#ifdef NEVER
+class SmExtraOptionsTabPage : public SfxTabPage
+{
+ CheckBox aAutoRedraw;
+ FixedText aFixedText1;
+ SmInfoText aSymbolFile;
+ PushButton aBrowseButton;
+
+ DECL_LINK(SymClickHdl, PushButton*);
+
+ virtual BOOL FillItemSet(SfxItemSet& rOutSet);
+ virtual void Reset(const SfxItemSet& rOutSet);
+
+public:
+ SmExtraOptionsTabPage(const SfxItemSet& rInSet, Window *pParent, BOOL bFreeRes = TRUE);
+
+ static SfxTabPage* Create(Window* pWindow, const SfxItemSet& rSet);
+};
+#endif //NEVER
+
+/**************************************************************************/
+
+class SmShowFont : public Control
+{
+ virtual void Paint(const Rectangle&);
+
+public:
+ SmShowFont(Window *pParent, const ResId& rResId) :
+ Control(pParent, rResId)
+ {
+ }
+
+ void SetFont(const Font& rFont);
+};
+
+class SmFontDialog : public ModalDialog
+{
+ FixedText aFixedText1;
+ ComboBox aFontBox;
+ CheckBox aBoldCheckBox;
+ CheckBox aItalicCheckBox;
+ OKButton aOKButton1;
+ CancelButton aCancelButton1;
+ SmShowFont aShowFont;
+ GroupBox aGroupBox1;
+ GroupBox aGroupBox2;
+
+ Font Face;
+
+ DECL_LINK(FontChangeHdl, ComboBox *);
+ DECL_LINK(AttrChangeHdl, CheckBox *);
+
+public:
+ SmFontDialog(Window * pParent, BOOL bFreeRes = TRUE);
+
+ const Font& GetFont() const { return Face; }
+ void SetFont(const Font &rFont);
+};
+
+/**************************************************************************/
+
+class SmFontSizeDialog : public ModalDialog
+{
+ FixedText aFixedText1;
+ MetricField aBaseSize;
+ FixedText aFixedText4;
+ MetricField aTextSize;
+ FixedText aFixedText5;
+ MetricField aIndexSize;
+ FixedText aFixedText6;
+ MetricField aFunctionSize;
+ FixedText aFixedText7;
+ MetricField aOperatorSize;
+ FixedText aFixedText8;
+ MetricField aBorderSize;
+ GroupBox aGroupBox1;
+ OKButton aOKButton1;
+ CancelButton aCancelButton1;
+ PushButton aDefaultButton;
+
+ DECL_LINK(DefaultButtonClickHdl, Button *);
+
+public:
+ SmFontSizeDialog(Window *pParent, BOOL bFreeRes = TRUE);
+
+ void ReadFrom(const SmFormat &rFormat);
+ void WriteTo (SmFormat &rFormat) const;
+};
+
+/**************************************************************************/
+
+class SmFontTypeDialog : public ModalDialog
+{
+ FixedText aFixedText1;
+ SmFontPickListBox aVariableFont;
+ FixedText aFixedText2;
+ SmFontPickListBox aFunctionFont;
+ FixedText aFixedText3;
+ SmFontPickListBox aNumberFont;
+ FixedText aFixedText4;
+ SmFontPickListBox aTextFont;
+ FixedText aFixedText5;
+ SmFontPickListBox aSerifFont;
+ FixedText aFixedText6;
+ SmFontPickListBox aSansFont;
+ FixedText aFixedText7;
+ SmFontPickListBox aFixedFont;
+ GroupBox aGroupBox1;
+ GroupBox aGroupBox2;
+ OKButton aOKButton1;
+ CancelButton aCancelButton1;
+ MenuButton aMenuButton;
+ PushButton aDefaultButton;
+
+ DECL_LINK(MenuSelectHdl, Menu *);
+ DECL_LINK(DefaultButtonClickHdl, Button *);
+
+public:
+ SmFontTypeDialog(Window *pParent, BOOL bFreeRes = TRUE);
+
+ void ReadFrom(const SmFormat &rFormat);
+ void WriteTo (SmFormat &rFormat) const;
+};
+
+/**************************************************************************/
+
+#define NOCATEGORIES 10
+
+class SmCategoryDesc : public Resource
+{
+ XubString Name;
+ XubString *Strings[4];
+ Bitmap *Graphics[4];
+ USHORT Minimum[4];
+ USHORT Maximum[4];
+ USHORT Value[4];
+
+public:
+ SmCategoryDesc(const ResId &rResId, USHORT nCategoryIdx);
+ ~SmCategoryDesc();
+
+ const XubString & GetName() const { return Name; }
+ const XubString * GetString(USHORT Index) const { return Strings[Index]; }
+ const Bitmap * GetGraphic(USHORT Index) const { return Graphics[Index]; }
+ USHORT GetMinimum(USHORT Index) { return Minimum[Index]; }
+ USHORT GetMaximum(USHORT Index) { return Maximum[Index]; }
+ USHORT GetValue(USHORT Index) const { return Value[Index]; }
+ void SetValue(USHORT Index, USHORT nVal) { Value[Index] = nVal;}
+};
+
+
+class SmDistanceDialog : public ModalDialog
+{
+ FixedText aFixedText1;
+ MetricField aMetricField1;
+ FixedText aFixedText2;
+ MetricField aMetricField2;
+ FixedText aFixedText3;
+ MetricField aMetricField3;
+ CheckBox aCheckBox1;
+ FixedText aFixedText4;
+ MetricField aMetricField4;
+ OKButton aOKButton1;
+ CancelButton aCancelButton1;
+ MenuButton aMenuButton;
+ PushButton aDefaultButton;
+ FixedBitmap aBitmap;
+ GroupBox aGroupBox;
+
+ SmCategoryDesc *Categories[NOCATEGORIES];
+ USHORT nActiveCategory;
+ BOOL bScaleAllBrackets;
+
+ DECL_LINK(GetFocusHdl, Control *);
+ DECL_LINK(MenuSelectHdl, Menu *);
+ DECL_LINK(DefaultButtonClickHdl, Button *);
+ DECL_LINK(CheckBoxClickHdl, CheckBox *);
+
+ void SetHelpId(MetricField &rField, ULONG nHelpId);
+ void SetCategory(USHORT Category);
+
+public:
+ SmDistanceDialog(Window *pParent, BOOL bFreeRes = TRUE);
+ ~SmDistanceDialog();
+
+ void ReadFrom(const SmFormat &rFormat);
+ void WriteTo (SmFormat &rFormat) /*const*/;
+};
+
+
+/**************************************************************************/
+
+
+class SmAlignDialog : public ModalDialog
+{
+ RadioButton aLeft;
+ RadioButton aCenter;
+ RadioButton aRight;
+ GroupBox aGroupBox1;
+ OKButton aOKButton1;
+ CancelButton aCancelButton1;
+ PushButton aDefaultButton;
+
+ DECL_LINK(DefaultButtonClickHdl, Button *);
+
+public:
+ SmAlignDialog(Window *pParent, BOOL bFreeRes = TRUE);
+
+ void ReadFrom(const SmFormat &rFormat);
+ void WriteTo (SmFormat &rFormat) const;
+};
+
+/**************************************************************************/
+
+class SmShowSymbolSet : public Control
+{
+ SmSymSet aSymbolSet;
+ ScrollBar aVScrollBar;
+ Size aOutputSize;
+ Link aSelectHdlLink;
+ Link aDblClickHdlLink;
+ USHORT nLen;
+ USHORT nRows, nColumns;
+ USHORT nSelectSymbol;
+
+ virtual void Paint(const Rectangle&);
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+ virtual void KeyInput(const KeyEvent& rKEvt);
+
+ DECL_LINK( ScrollHdl, ScrollBar* );
+
+public:
+ SmShowSymbolSet(Window *pParent, const ResId& rResId);
+
+ void SetSymbolSet(const SmSymSet& rSymbolSet);
+
+ void SelectSymbol(USHORT nSymbol);
+ USHORT GetSelectSymbol() const { return nSelectSymbol; }
+
+ void SetSelectHdl(const Link& rLink) { aSelectHdlLink = rLink; }
+ void SetDblClickHdl(const Link& rLink) { aDblClickHdlLink = rLink; }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+class SmShowSymbol : public Control
+{
+ Link aDblClickHdlLink;
+
+ virtual void Paint(const Rectangle&);
+ virtual void MouseButtonDown(const MouseEvent& rMEvt);
+
+public:
+ SmShowSymbol(Window *pParent, const ResId& rResId) :
+ Control(pParent, rResId) {}
+
+ void SetSymbol(const SmSym *pSymbol);
+ void SetDblClickHdl(const Link &rLink) { aDblClickHdlLink = rLink; }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+class SmSymDefineDialog;
+
+class SmSymbolDialog : public ModalDialog
+{
+ FixedText aSymbolSetText;
+ ListBox aSymbolSets;
+ SmShowSymbolSet aSymbolSetDisplay;
+ GroupBox aGrpBox;
+ FixedText aSymbolName;
+ SmShowSymbol aSymbolDisplay;
+ PushButton aCloseBtn;
+ PushButton aEditBtn;
+ PushButton aGetBtn;
+
+ SmSymSetManager &rSymSetMgr;
+ const SmSymSet *pSymSet;
+
+ DECL_LINK(SymbolSetChangeHdl, ListBox *);
+ DECL_LINK(SymbolChangeHdl, SmShowSymbolSet *);
+ DECL_LINK(SymbolDblClickHdl, SmShowSymbolSet *);
+ DECL_LINK(CloseClickHdl, Button *);
+ DECL_LINK(EditClickHdl, Button *);
+ DECL_LINK(GetClickHdl, Button *);
+
+ void FillSymbolSets(BOOL bDeleteText = TRUE);
+ void SetSymbolSetManager(SmSymSetManager &rMgr);
+ const SmSym *GetSymbol() const;
+
+public:
+ SmSymbolDialog(Window * pParent, SmSymSetManager &rSymSetMgr, BOOL bFreeRes = TRUE);
+
+ BOOL SelectSymbolSet(const XubString &rSymbolSetName);
+ void SelectSymbol(USHORT nSymbolNo);
+};
+
+/**************************************************************************/
+
+class SmShowCharset : public Control
+{
+ Link aSelectHdlLink;
+ Link aDblClickHdlLink;
+ USHORT nLen;
+ USHORT nRows, nColumns;
+ xub_Unicode aChar;
+
+ virtual void Paint(const Rectangle&);
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void KeyInput(const KeyEvent& rKEvt);
+
+public:
+ SmShowCharset(Window *pParent, const ResId& rResId);
+
+ void SetSelectHdl(const Link& rLink)
+ {
+ aSelectHdlLink = rLink;
+ }
+
+ void SetDblClickHdl(const Link& rLink)
+ {
+ aDblClickHdlLink = rLink;
+ }
+
+ void SetFont(const Font &rFont);
+ void SelectChar(xub_Unicode aChar);
+ xub_Unicode GetSelectChar() const { return aChar; }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+class SmShowChar : public Control
+{
+ virtual void Paint(const Rectangle&);
+
+public:
+ SmShowChar(Window *pParent, const ResId& rResId)
+ : Control(pParent, rResId)
+ {
+ }
+
+ void SetChar(xub_Unicode aChar);
+ void SetFont(const Font &rFont);
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+class SmSymDefineDialog : public ModalDialog
+{
+ FixedText aOldSymbolText;
+ ComboBox aOldSymbols;
+ FixedText aOldSymbolSetText;
+ ComboBox aOldSymbolSets;
+ SmShowCharset aCharsetDisplay;
+ FixedText aSymbolText;
+ ComboBox aSymbols;
+ FixedText aSymbolSetText;
+ ComboBox aSymbolSets;
+ FixedText aFontText;
+ ListBox aFonts;
+ FixedText aStyleText;
+ FontStyleBox aStyles;
+ FixedText aOldSymbolName;
+ SmShowChar aOldSymbolDisplay;
+ FixedText aOldSymbolSetName;
+ FixedText aSymbolName;
+ SmShowChar aSymbolDisplay;
+ FixedText aSymbolSetName;
+ OKButton aOkBtn;
+ CancelButton aCancelBtn;
+ PushButton aAddBtn;
+ PushButton aChangeBtn;
+ PushButton aDeleteBtn;
+ FixedImage aRightArrow;
+
+ SmSymSetManager aSymSetMgrCopy,
+ &rSymSetMgr;
+ const SmSym *pOrigSymbol;
+
+ FontList *pFontList;
+
+ DECL_LINK(OldSymbolChangeHdl, ComboBox *);
+ DECL_LINK(OldSymbolSetChangeHdl, ComboBox *);
+ DECL_LINK(ModifyHdl, ComboBox *);
+ DECL_LINK(FontChangeHdl, ListBox *);
+ DECL_LINK(StyleChangeHdl, ComboBox *);
+ DECL_LINK(CharSelectHdl, SmShowCharset *);
+ DECL_LINK(AddClickHdl, Button *);
+ DECL_LINK(ChangeClickHdl, Button *);
+ DECL_LINK(DeleteClickHdl, Button *);
+
+ void FillSymbols(ComboBox &rComboBox, BOOL bDeleteText = TRUE);
+ void FillSymbolSets(ComboBox &rComboBox, BOOL bDeleteText = TRUE);
+ void FillFonts(BOOL bDeleteText = TRUE);
+ void FillStyles(BOOL bDeleteText = TRUE);
+
+ void SetSymbolSetManager(const SmSymSetManager &rMgr);
+ void SetFont(const XubString &rFontName, const XubString &rStyleName);
+ void SetOrigSymbol(const SmSym *pSymbol, const XubString &rSymbolSetName);
+ void UpdateButtons();
+
+ BOOL SelectSymbolSet(ComboBox &rComboBox, const XubString &rSymbolSetName,
+ BOOL bDeleteText);
+ BOOL SelectSymbol(ComboBox &rComboBox, const XubString &rSymbolName,
+ BOOL bDeleteText);
+ BOOL SelectFont(const XubString &rFontName, BOOL bApplyFont);
+ BOOL SelectStyle(const XubString &rStyleName, BOOL bApplyFont);
+
+
+ SmSymSet *GetSymbolSet(const ComboBox &rComboBox);
+ inline const SmSymSet *GetSymbolSet(const ComboBox &rComboBox) const;
+ SmSym *GetSymbol(const ComboBox &rComboBox);
+ inline const SmSym *GetSymbol(const ComboBox &rComboBox) const;
+
+public:
+ SmSymDefineDialog(Window *pParent, SmSymSetManager &rMgr, BOOL bFreeRes = TRUE);
+ ~SmSymDefineDialog();
+
+ // Dialog
+ virtual short Execute();
+
+ inline BOOL SelectOldSymbolSet(const XubString &rSymbolSetName);
+ inline BOOL SelectOldSymbol(const XubString &rSymbolName);
+ inline BOOL SelectSymbolSet(const XubString &rSymbolSetName);
+ inline BOOL SelectSymbol(const XubString &rSymbolName);
+ BOOL SelectFont(const XubString &rFontName) { return SelectFont(rFontName, TRUE); }
+ BOOL SelectStyle(const XubString &rStyleName) { return SelectStyle(rStyleName, TRUE); };
+ void SelectChar(xub_Unicode cChar);
+};
+
+inline const SmSymSet * SmSymDefineDialog::GetSymbolSet(const ComboBox &rComboBox) const
+{
+ return ((SmSymDefineDialog *) this)->GetSymbolSet(rComboBox);
+}
+
+inline const SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox) const
+{
+ return ((SmSymDefineDialog *) this)->GetSymbol(rComboBox);
+}
+
+inline BOOL SmSymDefineDialog::SelectOldSymbolSet(const XubString &rSymbolSetName)
+{
+ return SelectSymbolSet(aOldSymbolSets, rSymbolSetName, FALSE);
+}
+
+inline BOOL SmSymDefineDialog::SelectOldSymbol(const XubString &rSymbolName)
+{
+ return SelectSymbol(aOldSymbols, rSymbolName, FALSE);
+}
+
+inline BOOL SmSymDefineDialog::SelectSymbolSet(const XubString &rSymbolSetName)
+{
+ return SelectSymbolSet(aSymbolSets, rSymbolSetName, FALSE);
+}
+
+inline BOOL SmSymDefineDialog::SelectSymbol(const XubString &rSymbolName)
+{
+ return SelectSymbol(aSymbols, rSymbolName, FALSE);
+}
+
+
+#endif
+
diff --git a/starmath/inc/document.hxx b/starmath/inc/document.hxx
new file mode 100644
index 000000000000..f33ef8169193
--- /dev/null
+++ b/starmath/inc/document.hxx
@@ -0,0 +1,277 @@
+/*************************************************************************
+ *
+ * $RCSfile: document.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef DOCUMENT_HXX
+#define DOCUMENT_HXX
+
+#define SMDLL 1
+
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _SOT_SOTREF_HXX //autogen
+#include <sot/sotref.hxx>
+#endif
+#ifndef _SFX_OBJSH_HXX //autogen
+#include <sfx2/objsh.hxx>
+#endif
+#ifndef _SFX_INTERNO_HXX //autogen
+#include <sfx2/interno.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _SFX_OBJFAC_HXX //autogen
+#include <sfx2/docfac.hxx>
+#endif
+#ifndef _SV_VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+
+#ifndef _FORMAT_HXX
+#include "format.hxx"
+#endif
+#ifndef PARSE_HXX
+#include "parse.hxx"
+#endif
+#ifndef SMMOD_HXX
+#include "smmod.hxx"
+#endif
+
+class SmNode;
+class SfxPrinter;
+class Printer;
+
+
+#ifndef SO2_DECL_SVSTORAGESTREAM_DEFINED
+#define SO2_DECL_SVSTORAGESTREAM_DEFINED
+SO2_DECL_REF(SvStorageStream)
+#endif
+
+#define HINT_DATACHANGED 1004
+
+#define SM30BIDENT ((ULONG)0x534D3033L)
+#define SM30IDENT ((ULONG)0x30334d53L)
+#define SM304AIDENT ((ULONG)0x34303330L)
+#define SM30VERSION ((ULONG)0x00010000L)
+#define SM50VERSION ((ULONG)0x00010001L) //Unterschied zur SM30VERSION ist
+ //der neue Border im Format.
+
+#define FRMIDENT ((ULONG)0x03031963L)
+#define FRMVERSION ((ULONG)0x00010001L)
+
+/* Zugriff auf den Drucker sollte ausschliesslich ueber diese Klasse erfolgen
+ * ==========================================================================
+ *
+ * Der Drucker kann dem Dokument oder auch dem OLE-Container gehoeren. Wenn
+ * das Dokument also eine OLE-Dokument ist, so gehoert der Drucker auch
+ * grundsaetzlich dem Container. Der Container arbeitet aber eventuell mit
+ * einer anderen MapUnit als der Server. Der Drucker wird bezueglich des MapMode
+ * im Konstruktor entsprechend eingestellt und im Destruktor wieder restauriert.
+ * Das bedingt natuerlich, das diese Klasse immer nur kurze Zeit existieren darf
+ * (etwa waehrend des Paints).
+ * Die Kontrolle darueber ob der Drucker selbst angelegt, vom Server besorgt
+ * oder dann auch NULL ist, uebernimmt die DocShell in der Methode GetPrt(),
+ * fuer die der Access auch Friend der DocShell ist.
+*/
+class SmDocShell;
+
+class SmPrinterAccess
+{
+ Printer *pPrinter;
+public:
+ SmPrinterAccess( SmDocShell &rDocShell );
+ ~SmPrinterAccess();
+ Printer *GetPrinter() { return pPrinter; }
+};
+
+
+////////////////////////////////////////////////////////////
+
+class SmDocShell : public SfxObjectShell, public SfxInPlaceObject, public SfxListener
+{
+ friend class SmPrinterAccess;
+
+ String aText;
+ SmFormat aFormat;
+ SmParser aInterpreter;
+ SvDataTypeList aDataTypeList;
+ SvStorageStreamRef aDocStream;
+ SmNode *pTree;
+ SvInPlaceMenuBar *pMenuBar;
+ SfxMenuBarManager *pMenuMgr;
+ SfxUndoManager *pUndoMgr;
+ SfxPrinter *pPrinter; //Siehe Kommentar zum SmPrinter Access!
+ Printer *pTmpPrinter; //ebenfalls
+ long nLeftBorder,
+ nRightBorder,
+ nTopBorder,
+ nBottomBorder;
+ USHORT nModifyCount;
+ BOOL bIsFormulaArranged;
+
+
+
+ virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType);
+
+ void RestartFocusTimer ();
+
+ BOOL Try3x( SvStorage *pStor, StreamMode eMode);
+ BOOL Try2x( SvStorage *pStor, StreamMode eMode);
+ BOOL WriteAsMathType3( SfxMedium& );
+
+ virtual void Draw(OutputDevice *pDevice,
+ const JobSetup & rSetup,
+ USHORT nAspect = ASPECT_CONTENT);
+
+ virtual void FillRegInfo(SvEmbeddedRegistryInfo * pInfo);
+ virtual void FillClass(SvGlobalName* pClassName,
+ ULONG* pFormat,
+ String* pAppName,
+ String* pFullTypeName,
+ String* pShortTypeName,
+ long nFileFormat = SOFFICE_FILEFORMAT_NOW) const;
+
+ virtual const SvDataTypeList& GetTypeList() const;
+ virtual BOOL GetData(SvData *pData);
+ virtual BOOL SetData(SvData *pData);
+ virtual ULONG GetMiscStatus() const;
+ virtual void OnDocumentPrinterChanged( Printer * );
+ virtual BOOL InitNew(SvStorage *);
+ virtual BOOL Load(SvStorage *);
+ virtual BOOL Insert(SvStorage *);
+ void ImplSave( SvStorageStreamRef xStrm );
+ virtual BOOL Save();
+ virtual BOOL SaveAs( SvStorage *pNewStor );
+ virtual BOOL ConvertTo( SfxMedium &rMedium );
+ virtual BOOL SaveCompleted( SvStorage *pNewStor );
+ virtual void HandsOff();
+
+ Printer *GetPrt();
+
+ void Convert40To50Txt();
+
+ BOOL IsFormulaArranged() const { return bIsFormulaArranged; }
+ void SetFormulaArranged(BOOL bVal) { bIsFormulaArranged = bVal; }
+ void ArrangeFormula();
+
+ virtual BOOL ConvertFrom(SfxMedium &rMedium);
+ BOOL InsertFrom(SfxMedium &rMedium);
+
+ BOOL ImportSM20File(SvStream *pStream, BOOL bInsert = FALSE);
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START+1);
+#if 0
+ SFX_DECL_OBJECTFACTORY(SmDocShell);
+#else
+ SFX_DECL_OBJECTFACTORY_DLL(SmDocShell, SM_MOD());
+#endif
+
+ SmDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED);
+ virtual ~SmDocShell();
+
+ void LoadSymbols();
+ void SaveSymbols();
+
+ //Zugriff fuer die View. Diese Zugriffe sind nur fuer den nicht OLE-Fall!
+ //und fuer die Kommunikation mit dem SFX!
+ //Alle internen Verwendungen des Printers sollten ausschlieslich uber
+ //den SmPrinterAccess funktionieren.
+ BOOL HasPrinter() { return 0 != pPrinter; }
+ SfxPrinter *GetPrinter() { GetPrt(); return pPrinter; }
+ void SetPrinter( SfxPrinter * );
+
+ const String &GetTitle() const;
+ const String &GetComment() const;
+
+ void SetText(const String& rBuffer);
+ String& GetText() { return (aText); }
+ void SetFormat(SmFormat& rFormat);
+ SmFormat& GetFormat() { return (aFormat); }
+
+ void Parse();
+ SmParser & GetParser() { return aInterpreter; }
+ const SmNode * GetFormulaTree() const { return pTree; }
+
+ void Draw(OutputDevice &rDev, Point &rPosition);
+ Size GetSize();
+
+ void Resize();
+
+ virtual SfxUndoManager *GetUndoManager ();
+
+ virtual SfxItemPool& GetPool();
+
+ void Execute( SfxRequest& rReq );
+ void GetState(SfxItemSet &);
+
+ virtual SvDataMemberObjectRef CreateSnapshot ();
+ virtual void SetVisArea (const Rectangle & rVisArea);
+ virtual void UIActivate (BOOL bActivate);
+
+virtual void SetModified(BOOL bModified);
+};
+
+
+#endif
+
diff --git a/starmath/inc/edit.hxx b/starmath/inc/edit.hxx
new file mode 100644
index 000000000000..7fee113a88df
--- /dev/null
+++ b/starmath/inc/edit.hxx
@@ -0,0 +1,160 @@
+/*************************************************************************
+ *
+ * $RCSfile: edit.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef EDIT_HXX
+#define EDIT_HXX
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+#ifndef _MyEDITDATA_HXX //autogen
+#include <svx/editdata.hxx>
+#endif
+
+class SmDocShell;
+class SmViewShell;
+class EditView;
+class EditEngine;
+class EditStatus;
+class ScrollBar;
+class ScrollBarBox;
+class DataChangedEvent;
+class Menu;
+
+/**************************************************************************/
+
+ void SmGetLeftSelectionPart(const ESelection aSelection,
+ USHORT &nPara, USHORT &nPos);
+
+/**************************************************************************/
+
+class SmEditWindow: public Window
+{
+ EditView *pEditView;
+#if SUPD >= 602
+ SfxItemPool *pEditEngineItemPool;
+#endif
+ EditEngine *pEditEngine;
+ ScrollBar *pHScrollBar,
+ *pVScrollBar;
+ ScrollBarBox *pScrollBox;
+ Timer aModifyTimer,
+ aCursorMoveTimer;
+ ESelection aOldSelection;
+
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void Command(const CommandEvent& rCEvt);
+ DECL_LINK(MenuSelectHdl, Menu *);
+ DECL_LINK(ModifyTimerHdl, Timer *);
+ DECL_LINK(CursorMoveTimerHdl, Timer *);
+
+ virtual void DataChanged( const DataChangedEvent& );
+ virtual void Resize();
+ virtual void MouseMove(const MouseEvent &rEvt);
+ virtual void MouseButtonUp(const MouseEvent &rEvt);
+ virtual void MouseButtonDown(const MouseEvent &rEvt);
+
+ virtual BOOL Drop(const DropEvent& rEvt);
+ virtual BOOL QueryDrop(DropEvent & rEvt);
+ virtual void Paint(const Rectangle& rRect);
+
+ DECL_LINK(EditStatusHdl ,EditStatus *);
+ DECL_LINK(ScrollHdl, ScrollBar *);
+
+ void CreateEditEngine();
+
+ Rectangle AdjustScrollBars();
+ void SetScrollBarRanges();
+ void InitScrollBars();
+ void ImplSetFont();
+
+public:
+ SmEditWindow(Window *pParent);
+ ~SmEditWindow();
+
+ virtual void SetText(const XubString &rText);
+ virtual XubString GetText();
+
+ ESelection GetSelection() const;
+ void SetSelection(const ESelection &rSel);
+
+ BOOL IsEmpty() const;
+ BOOL IsSelected() const;
+ BOOL IsAllSelected() const;
+ void Cut();
+ void Copy();
+ void Paste();
+ void Delete();
+ void SelectAll();
+ void InsertText(const String &rText);
+ void InsertCommand(USHORT nCommand);
+ void MarkError(const Point &rPos);
+ void SelNextMark();
+ void SelPrevMark();
+ BOOL HasMark(const String &rText) const;
+
+ void Flush();
+};
+
+#endif
+
diff --git a/starmath/inc/format.hxx b/starmath/inc/format.hxx
new file mode 100644
index 000000000000..8b17d8893fb9
--- /dev/null
+++ b/starmath/inc/format.hxx
@@ -0,0 +1,203 @@
+/*************************************************************************
+ *
+ * $RCSfile: format.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef FORMAT_HXX
+#define FORMAT_HXX
+
+
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+#ifndef _SFXBRDCST_HXX //autogen
+#include <svtools/brdcst.hxx>
+#endif
+
+#ifndef UTILITY_HXX
+#include "utility.hxx"
+#endif
+
+
+#define SM_FMT_VERSION_51 ((BYTE) 0x01)
+#define SM_FMT_VERSION_NOW SM_FMT_VERSION_51
+
+#ifndef MAC
+#define FNTNAME_TIMES "Times New Roman"
+#else
+#define FNTNAME_TIMES "Times"
+#endif
+#define FNTNAME_HELV "Helvetica"
+#define FNTNAME_COUR "Courier"
+#define FNTNAME_MATH "StarMath"
+
+
+// symbolic names used as array indices
+#define SIZ_BEGIN 0
+#define SIZ_TEXT 0
+#define SIZ_INDEX 1
+#define SIZ_FUNCTION 2
+#define SIZ_OPERATOR 3
+#define SIZ_LIMITS 4
+#define SIZ_END 4
+
+// symbolic names used as array indices
+#define FNT_BEGIN 0
+#define FNT_VARIABLE 0
+#define FNT_FUNCTION 1
+#define FNT_NUMBER 2
+#define FNT_TEXT 3
+#define FNT_SERIF 4
+#define FNT_SANS 5
+#define FNT_FIXED 6
+#define FNT_MATH 7
+#define FNT_END 7
+
+// symbolic names used as array indices
+#define DIS_BEGIN 0
+#define DIS_HORIZONTAL 0
+#define DIS_VERTICAL 1
+#define DIS_ROOT 2
+#define DIS_SUPERSCRIPT 3
+#define DIS_SUBSCRIPT 4
+#define DIS_NUMERATOR 5
+#define DIS_DENOMINATOR 6
+#define DIS_FRACTION 7
+#define DIS_STROKEWIDTH 8
+#define DIS_UPPERLIMIT 9
+#define DIS_LOWERLIMIT 10
+#define DIS_BRACKETSIZE 11
+#define DIS_BRACKETSPACE 12
+#define DIS_MATRIXROW 13
+#define DIS_MATRIXCOL 14
+#define DIS_ORNAMENTSIZE 15
+#define DIS_ORNAMENTSPACE 16
+#define DIS_OPERATORSIZE 17
+#define DIS_OPERATORSPACE 18
+#define DIS_LEFTSPACE 19
+#define DIS_RIGHTSPACE 20
+#define DIS_TOPSPACE 21
+#define DIS_BOTTOMSPACE 22
+#define DIS_NORMALBRACKETSIZE 23
+#define DIS_END 23
+
+
+// to be broadcastet on format changes:
+#define HINT_FORMATCHANGED 10003
+
+enum SmHorAlign { AlignLeft, AlignCenter, AlignRight };
+
+class SmFormat : public SfxBroadcaster
+{
+ SmFace vFont[FNT_END + 1];
+ Size aBaseSize;
+ long nVersion;
+ USHORT vSize[SIZ_END + 1];
+ USHORT vDist[DIS_END + 1];
+ SmHorAlign eHorAlign;
+ BOOL bIsTextmode,
+ bScaleNormalBrackets;
+
+public:
+ SmFormat();
+ SmFormat(const SmFormat &rFormat) { *this = rFormat; }
+
+ const Size & GetBaseSize() const { return aBaseSize; }
+ void SetBaseSize(const Size &rSize) { aBaseSize = rSize; }
+
+ const SmFace & GetFont(USHORT nIdent) const { return vFont[nIdent]; }
+ SmFace & Font (USHORT nIdent) { return vFont[nIdent]; }
+ void SetFont(USHORT nIdent, const SmFace &rFont) { vFont[nIdent] = rFont; }
+
+ USHORT GetRelSize(USHORT nIdent) const { return vSize[nIdent]; }
+ void SetRelSize(USHORT nIdent, USHORT nVal) { vSize[nIdent] = nVal;}
+
+ USHORT GetDistance(USHORT nIdent) const { return vDist[nIdent]; }
+ void SetDistance(USHORT nIdent, USHORT nVal) { vDist[nIdent] = nVal; }
+
+ SmHorAlign GetHorAlign() const { return eHorAlign; }
+ void SetHorAlign(SmHorAlign eAlign) { eHorAlign = eAlign; }
+
+ BOOL IsTextmode() const { return bIsTextmode; }
+ void SetTextmode(BOOL bVal) { bIsTextmode = bVal; }
+
+ BOOL IsScaleNormalBrackets() const { return bScaleNormalBrackets; }
+ void SetScaleNormalBrackets(BOOL bVal) { bScaleNormalBrackets = bVal; }
+
+ long GetVersion() const { return nVersion; }
+
+ //! at time (5.1) use only the lower byte!!!
+ void SetVersion(long nVer) { nVersion = nVer; }
+
+ SmFormat & operator = (const SmFormat &rFormat);
+
+ void RequestApplyChanges() const
+ {
+ ((SmFormat *) this)->Broadcast(SfxSimpleHint(HINT_FORMATCHANGED));
+ }
+
+ // functions for compatibility with older versions
+ void ReadSM20Format(SvStream &rStream);
+ void From300To304a();
+
+ friend SvStream & operator << (SvStream &rStream, const SmFormat &rFormat);
+ friend SvStream & operator >> (SvStream &rStream, SmFormat &rFormat);
+};
+
+#endif
+
diff --git a/starmath/inc/node.hxx b/starmath/inc/node.hxx
new file mode 100644
index 000000000000..7218c4dc478b
--- /dev/null
+++ b/starmath/inc/node.hxx
@@ -0,0 +1,867 @@
+/*************************************************************************
+ *
+ * $RCSfile: node.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#ifndef NODE_HXX
+#define NODE_HXX
+
+
+#ifndef _DYNARY_HXX //autogen
+#include <tools/dynary.hxx>
+#endif
+
+#include "parse.hxx"
+#include "xchar.hxx"
+#include "types.hxx"
+#include "rect.hxx"
+#include "format.hxx"
+
+
+#define ATTR_BOLD 0x0001
+#define ATTR_ITALIC 0x0002
+
+#define FNTSIZ_ABSOLUT 1
+#define FNTSIZ_PLUS 2
+#define FNTSIZ_MINUS 3
+#define FNTSIZ_MULTIPLY 4
+#define FNTSIZ_DIVIDE 5
+
+// flags to interdict respective status changes
+#define FLG_FONT 0x0001
+#define FLG_SIZE 0x0002
+#define FLG_BOLD 0x0004
+#define FLG_ITALIC 0x0008
+#define FLG_COLOR 0x0010
+#define FLG_VISIBLE 0x0020
+#define FLG_HORALIGN 0x0040
+
+
+extern SmFormat *pActiveFormat;
+
+class SmNode;
+DECLARE_DYNARRAY(SmNodeArray, SmNode *);
+
+enum SmScaleMode { SCALE_NONE, SCALE_WIDTH, SCALE_HEIGHT };
+
+enum SmNodeType
+{
+ NTABLE, NBRACE, NBRACEBODY, NOPER, NALIGN,
+ NATTRIBUT, NFONT, NUNHOR, NBINHOR, NBINVER,
+ NBINDIAGONAL, NSUBSUP, NMATRIX, NPLACE, NTEXT,
+ NSPECIAL, NGLYPH_SPECIAL, NMATH, NBLANK, NERROR,
+ NLINE, NEXPRESSION, NPOLYGON, NPOLYLINE, NROOT,
+ NROOTSYMBOL, NRECTANGLE, NVERTICAL_BRACE
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmNode : public SmRect
+{
+ SmFace aFace;
+
+ SmToken aNodeToken;
+ SmNodeType eType;
+ SmScaleMode eScaleMode;
+ RectHorAlign eRectHorAlign;
+ USHORT nFlags,
+ nAttributes;
+ BOOL bIsPhantom,
+ bIsDebug;
+protected:
+ SmNode(SmNodeType eNodeType, const SmToken &rNodeToken);
+
+public:
+ virtual ~SmNode();
+
+ virtual BOOL IsVisible() const = 0;
+
+ virtual USHORT GetNumSubNodes() const = 0;
+ virtual SmNode * GetSubNode(USHORT nIndex) = 0;
+ const SmNode * GetSubNode(USHORT nIndex) const
+ {
+ return ((SmNode *) this)->GetSubNode(nIndex);
+ }
+
+ virtual SmNode * GetLeftMost();
+ const SmNode * GetLeftMost() const
+ {
+ return ((SmNode *) this)->GetLeftMost();
+ }
+
+ USHORT & Flags() { return nFlags; }
+ USHORT & Attributes() { return nAttributes; }
+
+ BOOL IsDebug() const { return bIsDebug; }
+ BOOL IsPhantom() const { return bIsPhantom; }
+ void SetPhantom(BOOL bIsPhantom);
+ void SetColor(const Color &rColor);
+
+ void SetAttribut(USHORT nAttrib);
+ void ClearAttribut(USHORT nAttrib);
+
+ const SmFace & GetFont() const { return aFace; };
+ SmFace & GetFont() { return aFace; };
+
+ void SetFont(const SmFace &rFace);
+ void SetFontSize(const Fraction &rRelSize, USHORT nType);
+ void SetSize(const Fraction &rScale);
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void PrepareAttributes();
+
+ void ToggleDebug() const;
+
+ void SetRectHorAlign(RectHorAlign eHorAlign);
+ RectHorAlign GetRectHorAlign() const { return eRectHorAlign; }
+
+ const SmRect & GetRect() const { return *this; }
+ SmRect & GetRect() { return *this; }
+
+ virtual void Move(const Point &rPosition);
+ void MoveTo(const Point &rPosition) { Move(rPosition - GetTopLeft()); }
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+
+ USHORT GetRow() const { return aNodeToken.nRow; }
+ USHORT GetColumn() const { return aNodeToken.nCol; }
+
+ SmScaleMode GetScaleMode() const { return eScaleMode; }
+ void SetScaleMode(SmScaleMode eMode) { eScaleMode = eMode; }
+
+ virtual void AdaptToX(const OutputDevice &rDev, ULONG nWidth) {};
+ virtual void AdaptToY(const OutputDevice &rDev, ULONG nHeight) {};
+
+ SmNodeType GetType() const { return eType; }
+ const SmToken & GetToken() const { return aNodeToken; }
+
+ const SmNode * FindTokenAt(USHORT nRow, USHORT nCol) const;
+ const SmNode * FindRectClosestTo(const Point &rPoint) const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+class SmStructureNode;
+
+DECLARE_DYNARRAY(SmStructureNodeArray, SmStructureNode *);
+
+class SmStructureNode : public SmNode
+{
+ SmNodeArray aSubNodes;
+
+protected:
+ SmStructureNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+ : SmNode(eNodeType, rNodeToken)
+ {}
+
+public:
+ virtual ~SmStructureNode();
+
+ virtual BOOL IsVisible() const { return FALSE; }
+
+ virtual USHORT GetNumSubNodes() const { return aSubNodes.GetSize(); }
+ void SetNumSubNodes(USHORT nSize) { aSubNodes.SetSize(nSize); }
+
+ virtual SmNode * GetSubNode(USHORT nIndex) { return aSubNodes.Get(nIndex); }
+ void SetSubNodes(SmNode *pFirst, SmNode *pSecond,
+ SmNode *pThird = NULL);
+ void SetSubNodes(const SmNodeArray &rNodeArray);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmVisibleNode : public SmNode
+{
+protected:
+ SmVisibleNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+ : SmNode(eNodeType, rNodeToken)
+ {}
+
+public:
+
+ virtual BOOL IsVisible() const { return TRUE; }
+ virtual USHORT GetNumSubNodes() const { return 0; }
+ virtual SmNode * GetSubNode(USHORT nIndex) { return NULL; }
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmGraphicNode : public SmVisibleNode
+{
+protected:
+ SmGraphicNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+ : SmVisibleNode(eNodeType, rNodeToken)
+ {}
+
+public:
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmRectangleNode : public SmGraphicNode
+{
+ Size aToSize;
+
+public:
+ SmRectangleNode(const SmToken &rNodeToken)
+ : SmGraphicNode(NRECTANGLE, rNodeToken)
+ {}
+
+ virtual void AdaptToX(const OutputDevice &rDev, ULONG nWidth);
+ virtual void AdaptToY(const OutputDevice &rDev, ULONG nHeight);
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmPolyLineNode : public SmGraphicNode
+{
+ Polygon aPoly;
+ Size aToSize;
+ long nWidth;
+
+public:
+ SmPolyLineNode(const SmToken &rNodeToken);
+
+ long GetWidth() const { return nWidth; }
+
+ virtual void AdaptToX(const OutputDevice &rDev, ULONG nWidth);
+ virtual void AdaptToY(const OutputDevice &rDev, ULONG nHeight);
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmPolygonNode : public SmGraphicNode
+{
+ SmPolygon aPolygon;
+ Size aToSize;
+
+protected:
+ SmPolygonNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+ : SmGraphicNode(eNodeType, rNodeToken),
+ aPolygon(rNodeToken.cMathChar)
+ {}
+
+public:
+ SmPolygonNode(const SmToken &rNodeToken)
+ : SmGraphicNode(NPOLYGON, rNodeToken),
+ aPolygon(rNodeToken.cMathChar)
+ {}
+
+ SmPolygon & GetPolygon() { return aPolygon; }
+ inline const SmPolygon & GetPolygon() const;
+
+ virtual void AdaptToX(const OutputDevice &rDev, ULONG nWidth);
+ virtual void AdaptToY(const OutputDevice &rDev, ULONG nHeight);
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+};
+
+inline const SmPolygon & SmPolygonNode::GetPolygon() const
+{
+ return ((SmPolygonNode *) this)->GetPolygon();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmRootSymbolNode : public SmPolygonNode
+{
+ ULONG nBodyWidth; // width of body (argument) of root sign
+
+ void DrawBar(OutputDevice &rDev, const Point &rPosition) const;
+
+public:
+ SmRootSymbolNode(const SmToken &rNodeToken)
+ : SmPolygonNode(NROOTSYMBOL, rNodeToken)
+ {}
+
+
+ virtual void AdaptToX(const OutputDevice &rDev, ULONG nWidth) { nBodyWidth = nWidth; }
+ virtual void AdaptToY(const OutputDevice &rDev, ULONG nHeight);
+
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmTextNode : public SmVisibleNode
+{
+ XubString aText;
+ USHORT nFontDesc;
+
+protected:
+ SmTextNode(SmNodeType eNodeType, const SmToken &rNodeToken, USHORT nFontDescP)
+ : SmVisibleNode(eNodeType, rNodeToken)
+ {
+ nFontDesc = nFontDescP;
+ }
+
+public:
+ SmTextNode(const SmToken &rNodeToken, USHORT nFontDescP)
+ : SmVisibleNode(NTEXT, rNodeToken)
+ {
+ nFontDesc = nFontDescP;
+ }
+
+
+ USHORT GetFontDesc() const { return nFontDesc; }
+ void SetText(const XubString &rText) { aText = rText; }
+ const XubString & GetText() const { return aText; }
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmSpecialNode : public SmTextNode
+{
+protected:
+ SmSpecialNode(SmNodeType eNodeType, const SmToken &rNodeToken, USHORT nFontDesc)
+ : SmTextNode(eNodeType, rNodeToken, nFontDesc)
+ {}
+
+public:
+ SmSpecialNode(const SmToken &rNodeToken)
+ : SmTextNode(NSPECIAL, rNodeToken, FNT_MATH) //! default Font nicht immer richtig
+ {}
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+ virtual void Draw(OutputDevice &rDev, const Point &rPosition) const;
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmGlyphSpecialNode : public SmSpecialNode
+{
+public:
+ SmGlyphSpecialNode(const SmToken &rNodeToken)
+ : SmSpecialNode(NGLYPH_SPECIAL, rNodeToken, FNT_MATH)
+ {}
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmMathSymbolNode : public SmSpecialNode
+{
+protected:
+ SmMathSymbolNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+ : SmSpecialNode(eNodeType, rNodeToken, FNT_MATH)
+ {}
+
+public:
+ SmMathSymbolNode(const SmToken &rNodeToken);
+
+ virtual void AdaptToX(const OutputDevice &rDev, ULONG nWidth);
+ virtual void AdaptToY(const OutputDevice &rDev, ULONG nHeight);
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmPlaceNode : public SmMathSymbolNode
+{
+public:
+ SmPlaceNode(const SmToken &rNodeToken)
+ : SmMathSymbolNode(NPLACE, rNodeToken)
+ {
+ SetText((xub_Unicode) MS_PLACE);
+ }
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmErrorNode : public SmMathSymbolNode
+{
+public:
+ SmErrorNode(SmParseError eError, const SmToken &rNodeToken)
+ : SmMathSymbolNode(NERROR, rNodeToken)
+ {
+ SetText((xub_Unicode) MS_ERROR);
+ }
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmTableNode : public SmStructureNode
+{
+public:
+ SmTableNode(const SmToken &rNodeToken)
+ : SmStructureNode(NTABLE, rNodeToken)
+ {}
+
+ virtual SmNode * GetLeftMost() { return this; }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmLineNode : public SmStructureNode
+{
+protected:
+ SmLineNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+ : SmStructureNode(eNodeType, rNodeToken)
+ {}
+
+public:
+ SmLineNode(const SmToken &rNodeToken)
+ : SmStructureNode(NLINE, rNodeToken)
+ {}
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmExpressionNode : public SmLineNode
+{
+public:
+ SmExpressionNode(const SmToken &rNodeToken)
+ : SmLineNode(NEXPRESSION, rNodeToken)
+ {}
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmUnHorNode : public SmStructureNode
+{
+public:
+ SmUnHorNode(const SmToken &rNodeToken)
+ : SmStructureNode(NUNHOR, rNodeToken)
+ {
+ SetNumSubNodes(2);
+ }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmRootNode : public SmStructureNode
+{
+protected:
+ void GetHeightVerOffset(const SmRect &rRect,
+ long &rHeight, long &rVerOffset) const;
+ Point GetExtraPos(const SmRect &rRootSymbol, const SmRect &rExtra) const;
+
+public:
+ SmRootNode(const SmToken &rNodeToken)
+ : SmStructureNode(NROOT, rNodeToken)
+ {
+ SetNumSubNodes(3);
+ }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmBinHorNode : public SmStructureNode
+{
+public:
+ SmBinHorNode(const SmToken &rNodeToken)
+ : SmStructureNode(NBINHOR, rNodeToken)
+ {
+ SetNumSubNodes(3);
+ }
+
+
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmBinVerNode : public SmStructureNode
+{
+public:
+ SmBinVerNode(const SmToken &rNodeToken)
+ : SmStructureNode(NBINVER, rNodeToken)
+ {
+ SetNumSubNodes(3);
+ }
+
+ virtual SmNode * GetLeftMost() { return this; }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmBinDiagonalNode : public SmStructureNode
+{
+ BOOL bAscending;
+
+ void GetOperPosSize(Point &rPos, Size &rSize,
+ const Point &rDiagPoint, double fAngleDeg) const;
+
+public:
+ SmBinDiagonalNode(const SmToken &rNodeToken);
+
+ BOOL IsAscending() const { return bAscending; }
+ void SetAscending(BOOL bVal) { bAscending = bVal; }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+// enums used to index sub-/supscripts in the 'aSubNodes' array
+// in 'SmSubSupNode'
+// See graphic for positions at char:
+//
+// CSUP
+//
+// LSUP H H RSUP
+// H H
+// HHHH
+// H H
+// LSUB H H RSUB
+//
+// CSUB
+//
+enum SmSubSup
+{ CSUB, CSUP, RSUB, RSUP, LSUB, LSUP
+};
+
+// numbers of entries in the above enum (that is: the number of possible
+// sub-/supscripts)
+#define SUBSUP_NUM_ENTRIES 6
+
+
+class SmSubSupNode : public SmStructureNode
+{
+ BOOL bUseLimits;
+
+public:
+ SmSubSupNode(const SmToken &rNodeToken)
+ : SmStructureNode(NSUBSUP, rNodeToken)
+ {
+ SetNumSubNodes(1 + SUBSUP_NUM_ENTRIES);
+ bUseLimits = FALSE;
+ }
+
+ SmNode * GetBody() { return GetSubNode(0); }
+ const SmNode * GetBody() const
+ {
+ return ((SmSubSupNode *) this)->GetBody();
+ }
+
+ void SetUseLimits(BOOL bVal) { bUseLimits = bVal; }
+ BOOL IsUseLimits() const { return bUseLimits; };
+
+ SmNode * GetSubSup(SmSubSup eSubSup) { return GetSubNode(1 + eSubSup); };
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmBraceNode : public SmStructureNode
+{
+public:
+ SmBraceNode(const SmToken &rNodeToken)
+ : SmStructureNode(NBRACE, rNodeToken)
+ {
+ SetNumSubNodes(3);
+ }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmBracebodyNode : public SmStructureNode
+{
+ long nBodyHeight;
+
+public:
+ inline SmBracebodyNode(const SmToken &rNodeToken);
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+ long GetBodyHeight() const { return nBodyHeight; }
+};
+
+
+inline SmBracebodyNode::SmBracebodyNode(const SmToken &rNodeToken)
+: SmStructureNode(NBRACEBODY, rNodeToken)
+{
+ nBodyHeight = 0;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmVerticalBraceNode : public SmStructureNode
+{
+public:
+ inline SmVerticalBraceNode(const SmToken &rNodeToken);
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+SmVerticalBraceNode::SmVerticalBraceNode(const SmToken &rNodeToken)
+: SmStructureNode(NVERTICAL_BRACE, rNodeToken)
+{
+ SetNumSubNodes(3);
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmOperNode : public SmStructureNode
+{
+public:
+ SmOperNode(const SmToken &rNodeToken)
+ : SmStructureNode(NOPER, rNodeToken)
+ {
+ SetNumSubNodes(2);
+ }
+
+ SmNode * GetSymbol();
+ const SmNode * GetSymbol() const
+ {
+ return ((SmOperNode *) this)->GetSymbol();
+ }
+
+ long CalcSymbolHeight(const SmNode &rSymbol, const SmFormat &rFormat) const;
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmAlignNode : public SmStructureNode
+{
+public:
+ SmAlignNode(const SmToken &rNodeToken)
+ : SmStructureNode(NALIGN, rNodeToken)
+ {}
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmAttributNode : public SmStructureNode
+{
+public:
+ SmAttributNode(const SmToken &rNodeToken)
+ : SmStructureNode(NATTRIBUT, rNodeToken)
+ {}
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmFontNode : public SmStructureNode
+{
+ USHORT nSizeType;
+ Fraction aFontSize;
+
+public:
+ SmFontNode(const SmToken &rNodeToken)
+ : SmStructureNode(NFONT, rNodeToken)
+ {
+ nSizeType = FNTSIZ_MULTIPLY;
+ aFontSize = Fraction(1L);
+ }
+
+ void SetSizeParameter(const Fraction &rValue, USHORT nType);
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmMatrixNode : public SmStructureNode
+{
+ USHORT nNumRows,
+ nNumCols;
+
+public:
+ SmMatrixNode(const SmToken &rNodeToken)
+ : SmStructureNode(NMATRIX, rNodeToken)
+ {
+ nNumRows = nNumCols = 0;
+ }
+
+ USHORT GetNumRows() {return nNumRows;}
+ USHORT GetNumCols() {return nNumCols;}
+ void SetRowCol(USHORT nMatrixRows, USHORT nMatrixCols);
+
+ virtual SmNode * GetLeftMost() { return this; }
+
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+class SmBlankNode : public SmGraphicNode
+{
+ USHORT nNum;
+
+public:
+ SmBlankNode(const SmToken &rNodeToken)
+ : SmGraphicNode(NBLANK, rNodeToken)
+ {
+ nNum = 0;
+ }
+
+ void IncreaseBy(const SmToken &rToken);
+ void Clear() { nNum = 0; }
+
+ virtual void Prepare(const SmFormat &rFormat);
+ virtual void Arrange(const OutputDevice &rDev, const SmFormat &rFormat);
+};
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+#endif
+
+
diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx
new file mode 100644
index 000000000000..265fc66699bf
--- /dev/null
+++ b/starmath/inc/parse.hxx
@@ -0,0 +1,301 @@
+/*************************************************************************
+ *
+ * $RCSfile: parse.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef PARSE_HXX
+#define PARSE_HXX
+
+
+#include <ctype.h>
+
+#ifndef _STACK_HXX //autogen
+#include <tools/stack.hxx>
+#endif
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#include "types.hxx"
+
+class SmNode;
+
+
+// TokenGroups
+#define TGOPER 0x00000001
+#define TGRELATION 0x00000002
+#define TGSUM 0x00000004
+#define TGPRODUCT 0x00000008
+#define TGUNOPER 0x00000010
+#define TGPOWER 0x00000020
+#define TGATTRIBUT 0x00000040
+#define TGALIGN 0x00000080
+#define TGFUNCTION 0x00000100
+#define TGBLANK 0x00000200
+#define TGLBRACES 0x00000400
+#define TGRBRACES 0x00000800
+#define TGCOLOR 0x00001000
+#define TGFONT 0x00002000
+#define TGSTANDALONE 0x00004000
+#define TGDISCARDED 0x00008000
+#define TGLIMIT 0x00010000
+#define TGFONTATTR 0x00020000
+
+
+enum SmTokenType
+{
+ TEND, TLGROUP, TRGROUP, TLPARENT, TRPARENT,
+ TLBRACKET, TRBRACKET, TPLUS, TMINUS, TMULTIPLY,
+ TDIVIDEBY, TASSIGN, TPOUND, TSPECIAL, TSLASH,
+ TBACKSLASH, TBLANK, TSBLANK, TRSUB, TRSUP,
+ TCSUB, TCSUP, TLSUB, TLSUP, TGT,
+ TLT, TAND, TOR, TINTERSECT, TUNION,
+ TNEWLINE, TBINOM, TFROM, TTO, TINT,
+ TSUM, TOPER, TABS, TSQRT, TFACT,
+ TNROOT, TOVER, TTIMES, TGE, TLE,
+ TGG, TLL, TDOTSAXIS, TDOTSLOW, TDOTSVERT,
+ TDOTSDIAG, TDOTSUP, TDOTSDOWN, TACUTE, TBAR,
+ TBREVE, TCHECK, TCIRCLE, TDOT, TDDOT,
+ TDDDOT, TGRAVE, THAT, TTILDE, TVEC,
+ TUNDERLINE, TOVERLINE, TOVERSTRIKE, TITALIC, TNITALIC,
+ TBOLD, TNBOLD, TPHANTOM, TFONT, TSIZE,
+ TCOLOR, TALIGNL, TALIGNC, TALIGNR, TLEFT,
+ TRIGHT, TLANGLE, TLBRACE, TLLINE, TLDLINE,
+ TLCEIL, TLFLOOR, TNONE, TMLINE, TRANGLE,
+ TRBRACE, TRLINE, TRDLINE, TRCEIL, TRFLOOR,
+ TSIN, TCOS, TTAN, TCOT, TFUNC,
+ TSTACK, TMATRIX, TMATFORM, TDPOUND, TPLACE,
+ TTEXT, TNUMBER, TCHARACTER, TIDENT, TNEQ,
+ TEQUIV, TDEF, TPROP, TSIM, TSIMEQ,
+ TAPPROX, TPARALLEL, TORTHO, TIN, TNOTIN,
+ TSUBSET, TSUBSETEQ, TSUPSET, TSUPSETEQ, TPLUSMINUS,
+ TMINUSPLUS, TOPLUS, TOMINUS, TDIV, TOTIMES,
+ TODIVIDE, TTRANSL, TTRANSR, TIINT, TIIINT,
+ TLINT, TLLINT, TLLLINT, TPROD, TCOPROD,
+ TFORALL, TEXISTS, TLIM, TNABLA, TTOWARD,
+ TSINH, TCOSH, TTANH, TCOTH, TASIN,
+ TACOS, TATAN, TLN, TLOG, TUOPER,
+ TBOPER, TBLACK, TWHITE, TRED, TGREEN,
+ TBLUE, TCYAN, TMAGENTA, TYELLOW, TFIXED,
+ TSANS, TSERIF, TPOINT, TASINH, TACOSH,
+ TATANH, TACOTH, TACOT, TEXP, TCDOT,
+ TODOT, TLESLANT, TGESLANT, TNSUBSET, TNSUPSET,
+ TNSUBSETEQ, TNSUPSETEQ, TPARTIAL, TNEG, TNI,
+ TBACKEPSILON, TALEPH, TIM, TRE, TWP,
+ TEMPTYSET, TINFINITY, TESCAPE, TLIMSUP, TLIMINF,
+ TNDIVIDES, TDRARROW, TDLARROW, TDLRARROW, TUNDERBRACE,
+ TOVERBRACE, TCIRC, TTOP, THBAR, TLAMBDABAR,
+ TLEFTARROW, TRIGHTARROW, TUPARROW, TDOWNARROW, TDIVIDES,
+ TNDIBVIDES, TSETN, TSETZ, TSETQ, TSETR,
+ TSETC, TWIDEVEC, TWIDETILDE, TWIDEHAT, TWIDESLASH,
+ TWIDEBACKSLASH, TLDBRACKET, TRDBRACKET,
+ TUNKNOWN, TDEBUG
+};
+
+
+struct SmToken
+{
+ // token text
+ XubString aText;
+ // token info
+ SmTokenType eType;
+ xub_Unicode cMathChar;
+ // parse-help info
+ ULONG nGroup;
+ USHORT nLevel;
+ // token position
+ USHORT nRow;
+ USHORT nCol;
+
+ SmToken();
+};
+
+
+enum SmParseError
+{
+ PE_NONE, PE_UNEXPECTED_END_OF_INPUT,
+ PE_UNEXPECTED_CHAR, PE_UNEXPECTED_TOKEN,
+ PE_FUNC_EXPECTED, PE_UNOPER_EXPECTED,
+ PE_BINOPER_EXPECTED, PE_SYMBOL_EXPECTED,
+ PE_IDENTIFIER_EXPECTED, PE_POUND_EXPECTED,
+ PE_COLOR_EXPECTED, PE_LGROUP_EXPECTED,
+ PE_RGROUP_EXPECTED, PE_LBRACE_EXPECTED,
+ PE_RBRACE_EXPECTED, PE_PARENT_MISMATCH,
+ PE_RIGHT_EXPECTED, PE_FONT_EXPECTED,
+ PE_SIZE_EXPECTED, PE_DOUBLE_ALIGN,
+ PE_DOUBLE_SUBSUPSCRIPT
+};
+
+
+struct SmErrorDesc
+{
+ SmParseError Type;
+ SmNode *pNode;
+ XubString Text;
+};
+
+DECLARE_STACK(SmNodeStack, SmNode *);
+DECLARE_LIST(SmErrDescList, SmErrorDesc *);
+
+/**************************************************************************/
+
+class SmParser
+{
+ XubString BufferString;
+ SmToken CurToken;
+ SmNodeStack NodeStack;
+ SmErrDescList ErrDescList;
+ int CurError;
+ xub_StrLen BufferIndex,
+ nTokenIndex;
+ USHORT Row,
+ Column;
+ xub_Unicode CharLineEnd;
+ BOOL bConvert40To50;
+
+ // declare copy-constructor and assignment-operator private
+ SmParser(const SmParser &);
+ SmParser & operator = (const SmParser &);
+
+protected:
+ BOOL IsDelimiter(xub_Unicode cChar);
+ void NextToken();
+ xub_StrLen GetTokenIndex() const { return nTokenIndex; }
+ void Insert(const XubString &rText, USHORT nPos);
+
+ inline BOOL TokenInGroup(ULONG nGroup);
+ inline BOOL IsWhiteSpace(const xub_Unicode cChar) const;
+ inline BOOL IsComment(const xub_Unicode *pPos) const;
+
+ const xub_Unicode * SkipWhiteSpaces(const xub_Unicode *pPos, USHORT &nRow, USHORT &nColumn);
+ const xub_Unicode * SkipComment(const xub_Unicode *pPos, USHORT &nRow, USHORT &nColumn);
+
+ // grammar
+ void Table();
+ void Line();
+ void Expression();
+ void Relation();
+ void Sum();
+ void Product();
+ void SubSup(ULONG nActiveGroup);
+ void OpSubSup();
+ void Power();
+ void Blank();
+ void Term();
+ void Escape();
+ void Operator();
+ void Oper();
+ void UnOper();
+ void Align();
+ void FontAttribut();
+ void Attribut();
+ void Font();
+ void FontSize();
+ void Color();
+ void Brace();
+ void Bracebody(BOOL bIsLeftRight);
+ void Function();
+ void Binom();
+ void Stack();
+ void Matrix();
+ void Special();
+ void GlyphSpecial();
+ // end of grammar
+
+ void Error(SmParseError Error);
+
+public:
+ SmParser();
+
+ BOOL CheckSyntax(const XubString &rBuffer);
+ SmNode *Parse(const XubString &rBuffer);
+
+ const XubString & GetText() const { return BufferString; };
+
+ BOOL IsConvert40To50() const { return bConvert40To50; }
+ void SetConvert40To50(BOOL bConvert) { bConvert40To50 = bConvert; }
+
+ USHORT AddError(SmParseError Type, SmNode *pNode);
+
+ const SmErrorDesc * NextError();
+ const SmErrorDesc * PrevError();
+ const SmErrorDesc * GetError(USHORT i = 0xFFFF);
+};
+
+
+inline BOOL SmParser::TokenInGroup(ULONG nGroup)
+{
+ return (CurToken.nGroup & nGroup) ? TRUE : FALSE;
+}
+
+inline BOOL SmParser::IsWhiteSpace(const xub_Unicode cChar) const
+{
+ return isspace(cChar) != 0;
+}
+
+inline BOOL SmParser::IsComment(const xub_Unicode *pPos) const
+{
+ return *pPos == '%' && *(pPos + 1) == '%';
+}
+
+
+#endif
+
diff --git a/starmath/inc/rect.hxx b/starmath/inc/rect.hxx
new file mode 100644
index 000000000000..6e8b9d6b6203
--- /dev/null
+++ b/starmath/inc/rect.hxx
@@ -0,0 +1,304 @@
+/*************************************************************************
+ *
+ * $RCSfile: rect.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef RECT_HXX
+#define RECT_HXX
+
+#include <new.h>
+
+
+#ifndef _GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+
+#ifndef _SV_OUTDEV_HXX //autogen
+#include <vcl/outdev.hxx>
+#endif
+
+#ifndef _SV_METRIC_HXX //autogen
+#include <vcl/metric.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+#include "format.hxx"
+
+
+class SmPolygon;
+
+BOOL SmGetGlyphBoundRect(const OutputDevice &rDev,
+ const XubString &rText, Rectangle &rRect);
+
+BOOL SmIsMathAlpha(const XubString &rText);
+
+
+inline long SmFromTo(long nFrom, long nTo, double fRelDist)
+{
+ return nFrom + (long) (fRelDist * (nTo - nFrom));
+}
+
+
+////////////////////////////////////////
+// SmRect
+// ... (to be done)
+// This Implementation assumes that the x-axis points to the right and the
+// y-axis to the bottom.
+// Note: however, italic spaces can be negative!
+//
+
+// possible flags for the 'Draw' function below (just for debugging)
+#define SM_RECT_CORE 0x0001
+#define SM_RECT_ITALIC 0x0002
+#define SM_RECT_LINES 0x0004
+#define SM_RECT_MID 0x0008
+
+// possible positions and alignments for the 'AlignTo' function
+enum RectPos
+ // (RP_LEFT : align the current object to the left of the argument, ...)
+{ RP_LEFT, RP_RIGHT,
+ RP_TOP, RP_BOTTOM,
+ RP_ATTRIBUT
+};
+enum RectHorAlign
+{ RHA_LEFT, RHA_CENTER, RHA_RIGHT
+};
+enum RectVerAlign
+{ RVA_TOP, RVA_MID, RVA_BOTTOM, RVA_BASELINE, RVA_CENTERY,
+ RVA_ATTRIBUT_HI, RVA_ATTRIBUT_MID, RVA_ATTRIBUT_LO
+};
+
+// different methods of copying baselines and mid's in 'ExtendBy' function
+enum RectCopyMBL
+{ RCP_THIS, // keep baseline of current object even if it has none
+ RCP_ARG, // as above but for the argument
+ RCP_NONE, // result will have no baseline
+ RCP_XOR // if current object has a baseline keep it else copy
+ // the arguments baseline (even if it has none)
+};
+
+
+class SmRect
+{
+ Point aTopLeft;
+ Size aSize;
+ long nBaseline,
+ nAlignT,
+ nAlignM,
+ nAlignB,
+ nGlyphTop,
+ nGlyphBottom,
+ nItalicLeftSpace,
+ nItalicRightSpace,
+ nLoAttrFence,
+ nHiAttrFence;
+ BOOL bHasBaseline,
+ bHasAlignInfo;
+
+protected:
+ void BuildRect (const OutputDevice &rDev, const SmFormat *pFormat,
+ const XubString &rText, long nBorderWidth);
+ void Init(const OutputDevice &rDev, const SmFormat *pFormat,
+ const XubString &rText, long nBorderWidth);
+
+ void ClearBaseline() { bHasBaseline = FALSE; };
+ inline void CopyMBL(const SmRect& rRect);
+ void CopyAlignInfo(const SmRect& rRect);
+
+ SmRect & Union(const SmRect &rRect);
+
+public:
+ SmRect();
+ SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
+ const XubString &rText, long nBorderWidth);
+ SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
+ const SmPolygon &rPoly, long nBorderWidth);
+ SmRect(long nWidth, long nHeight);
+ SmRect(const SmRect &rRect);
+
+ inline void SetItalicSpaces(long nLeftSpace, long nRightSpace);
+
+ void SetWidth(ULONG nWidth) { aSize.Width() = nWidth; }
+ void SetHeight(ULONG nHeight) { aSize.Height() = nHeight; }
+
+ void SetLeft(long nLeft);
+ void SetRight(long nRight);
+ void SetBottom(long nBottom);
+ void SetTop(long nTop);
+
+ const Point & GetTopLeft() const { return aTopLeft; }
+
+ long GetTop() const { return GetTopLeft().Y(); }
+ long GetLeft() const { return GetTopLeft().X(); }
+ long GetBottom() const { return GetTop() + GetHeight() - 1; }
+ long GetRight() const { return GetLeft() + GetWidth() - 1; }
+ long GetCenterX() const { return (GetLeft() + GetRight()) / 2L; }
+ long GetCenterY() const { return (GetTop() + GetBottom()) / 2L; }
+ long GetWidth() const { return GetSize().Width(); }
+ long GetHeight() const { return GetSize().Height(); }
+
+ long GetItalicLeftSpace() const { return nItalicLeftSpace; }
+ long GetItalicRightSpace() const { return nItalicRightSpace; }
+
+ void SetHiAttrFence(long nVal) { nHiAttrFence = nVal; }
+ void SetLoAttrFence(long nVal) { nLoAttrFence = nVal; }
+ long GetHiAttrFence() const { return nHiAttrFence; }
+ long GetLoAttrFence() const { return nLoAttrFence; }
+
+ long GetItalicLeft() const { return GetLeft() - GetItalicLeftSpace(); }
+ long GetItalicCenterX() const { return (GetItalicLeft() + GetItalicRight()) / 2; }
+ long GetItalicRight() const { return GetRight() + GetItalicRightSpace(); }
+ long GetItalicWidth() const { return GetWidth() + GetItalicLeftSpace() + GetItalicRightSpace(); }
+
+ BOOL HasBaseline() const { return bHasBaseline; }
+ inline long GetBaseline() const;
+ long GetBaselineOffset() const { return GetBaseline() - GetTop(); }
+
+ void SetAlignTop(long nVal) { nAlignT = nVal; }
+
+ long GetAlignT() const { return nAlignT; }
+ long GetAlignM() const { return nAlignM; }
+ long GetAlignB() const { return nAlignB; }
+
+ void SetAlignT(long nVal) { nAlignT = nVal; }
+
+ const Point GetCenter() const
+ { return Point(GetCenterX(), GetCenterY()); }
+
+ const Size & GetSize() const { return aSize; }
+
+ const Size GetItalicSize() const
+ { return Size(GetItalicWidth(), GetHeight()); }
+
+ void Move (const Point &rPosition);
+ void MoveTo(const Point &rPosition) { Move(rPosition - GetTopLeft()); }
+
+ BOOL IsEmpty() const
+ {
+ return GetWidth() == 0 || GetHeight() == 0;
+ }
+
+ BOOL HasAlignInfo() const { return bHasAlignInfo; }
+
+ const Point AlignTo(const SmRect &rRect, RectPos ePos,
+ RectHorAlign eHor, RectVerAlign eVer) const;
+
+ SmRect & ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode);
+ SmRect & ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode,
+ long nNewAlignM);
+ SmRect & ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode,
+ BOOL bKeepVerAlignParams);
+ SmRect & ExtendBy(const Point &rPoint);
+
+ long OrientedDist(const Point &rPoint) const;
+ BOOL IsInsideRect(const Point &rPoint) const;
+ BOOL IsInsideItalicRect(const Point &rPoint) const;
+
+ inline SmRect & operator = (const SmRect &rRect);
+
+ inline Rectangle AsRectangle() const;
+ SmRect AsGlyphRect() const;
+
+ void Draw(OutputDevice &rDev, const Point &rPosition, int nFlags) const;
+};
+
+
+inline void SmRect::SetItalicSpaces(long nLeftSpace, long nRightSpace)
+ // set extra spacing to the left and right for (italic)
+ // letters/text
+{
+ nItalicLeftSpace = nLeftSpace;
+ nItalicRightSpace = nRightSpace;
+}
+
+
+inline void SmRect::CopyMBL(const SmRect &rRect)
+ // copy AlignM baseline and value of 'rRect'
+{
+ nBaseline = rRect.nBaseline;
+ bHasBaseline = rRect.bHasBaseline;
+ nAlignM = rRect.nAlignM;
+}
+
+
+inline long SmRect::GetBaseline() const
+{
+ DBG_ASSERT(HasBaseline(), "Sm: Baseline nicht vorhanden");
+ return nBaseline;
+}
+
+
+inline SmRect & SmRect::operator = (const SmRect &rRect)
+{
+ new (this) SmRect(rRect); // placement new
+ return *this;
+}
+
+
+inline Rectangle SmRect::AsRectangle() const
+{
+ return Rectangle(Point(GetItalicLeft(), GetTop()), GetItalicSize());
+}
+
+
+
+#endif
diff --git a/starmath/inc/smdll.hxx b/starmath/inc/smdll.hxx
new file mode 100644
index 000000000000..8d68db066e16
--- /dev/null
+++ b/starmath/inc/smdll.hxx
@@ -0,0 +1,108 @@
+/*************************************************************************
+ *
+ * $RCSfile: smdll.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SMDLL_HXX
+#define SMDLL_HXX
+
+#define SMDLL 1
+
+#ifndef _SMDLL0_HXX
+#include <smdll0.hxx>
+#endif
+#ifndef _TOOLS_RESID_HXX //autogen
+#include <tools/resid.hxx>
+#endif
+#ifndef _SFXDEFS_HXX
+#include <sfx2/sfxdefs.hxx>
+#endif
+
+class SmData;
+class SfxMedium;
+class SfxFilter;
+
+class SmDLL
+{
+ static BOOL bInitialized;
+public:
+ SmDLL();
+ ~SmDLL();
+
+ static void Init();
+ static void LibInit();
+ static void Exit();
+ static void LibExit();
+
+ static ULONG DetectFilter( SfxMedium& rMedium, const SfxFilter **ppFilter,
+ SfxFilterFlags nMust, SfxFilterFlags nDont );
+};
+
+#ifdef SMDLL
+class SmResId : public ResId
+{
+public:
+ SmResId(USHORT nId) :
+ ResId(nId, SM_MOD()->GetResMgr())
+ {
+ }
+};
+#endif
+
+#endif
+
diff --git a/starmath/inc/smmod.hxx b/starmath/inc/smmod.hxx
new file mode 100644
index 000000000000..a99ca19e654c
--- /dev/null
+++ b/starmath/inc/smmod.hxx
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * $RCSfile: smmod.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:24 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SMMOD_HXX
+#define _SMMOD_HXX
+
+
+#ifndef _SMDLL_HXX
+#define _SM_DLL // fuer SD_MOD()
+#include "smdll.hxx" // fuer SdModuleDummy
+#endif
+
+class SvxErrorHandler;
+class SvFactory;
+
+class SmConfig;
+class SmSymSetManager;
+class SmModule;
+
+/*************************************************************************
+|*
+|* This subclass of <SfxModule> (which is a subclass of <SfxShell>) is
+|* linked to the DLL. One instance of this class exists while the DLL is
+|* loaded.
+|*
+|* SdModule is like to be compared with the <SfxApplication>-subclass.
+|*
+|* Remember: Don`t export this class! It uses DLL-internal symbols.
+|*
+\************************************************************************/
+
+class SmRectCache;
+
+class SmModule : public SmModuleDummy
+{
+ SmConfig *pConfig;
+ SmSymSetManager *pSymSetManager;
+ SmRectCache *pRectCache;
+
+ virtual void FillStatusBar(StatusBar &rBar);
+
+public:
+ TYPEINFO();
+ SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START + 0);
+
+ SmModule(SvFactory* pObjFact);
+ virtual ~SmModule();
+
+ virtual SfxModule * Load();
+ virtual void Free();
+
+ SmConfig * GetConfig() { return pConfig; }
+ SmSymSetManager * GetSymSetManager() { return pSymSetManager; }
+ SmRectCache * GetRectCache() { return pRectCache; }
+
+ void GetState(SfxItemSet&);
+ void InitManager();
+
+ //virtuelle Methoden fuer den Optionendialog
+ virtual SfxItemSet* CreateItemSet( USHORT nId );
+ virtual void ApplyItemSet( USHORT nId, const SfxItemSet& rSet );
+ virtual SfxTabPage* CreateTabPage( USHORT nId, Window* pParent, const SfxItemSet& rSet );
+};
+
+
+#define SM_MOD1() ( *(SmModule**) GetAppData(SHL_SM) )
+
+
+#endif // _SDMOD_HXX
+
diff --git a/starmath/inc/starmath.hrc b/starmath/inc/starmath.hrc
new file mode 100644
index 000000000000..7ef5fd663018
--- /dev/null
+++ b/starmath/inc/starmath.hrc
@@ -0,0 +1,758 @@
+/*************************************************************************
+ *
+ * $RCSfile: starmath.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _STARMATH_HRC
+#define _STARMATH_HRC
+
+#ifndef _SVX_SVXIDS_HRC
+#include <svtools/solar.hrc>
+#endif
+#ifndef _SFXSIDS_HRC //autogen
+#include <sfx2/sfxsids.hrc>
+#endif
+
+
+#define SID_NEXTERR (SID_SMA_START + 1)
+#define SID_PREVERR (SID_SMA_START + 2)
+#define SID_NEXTMARK (SID_SMA_START + 3)
+#define SID_PREVMARK (SID_SMA_START + 4)
+#define SID_SYMBOLS_CATALOGUE (SID_SMA_START + 5)
+#define SID_PREFERENCES (SID_SMA_START + 6)
+#define SID_VIEW050 (SID_SMA_START + 7)
+#define SID_VIEW100 (SID_SMA_START + 8)
+#define SID_VIEW200 (SID_SMA_START + 9)
+#define SID_ZOOMIN (SID_SMA_START + 10)
+#define SID_ZOOMOUT (SID_SMA_START + 11)
+#define SID_DRAW (SID_SMA_START + 12)
+#define SID_ADJUST (SID_SMA_START + 13)
+#define SID_TOOLBOX (SID_SMA_START + 14)
+#define SID_FORMULACURSOR (SID_SMA_START + 15)
+#define SID_FONT (SID_SMA_START + 50)
+#define SID_FONTSIZE (SID_SMA_START + 51)
+#define SID_DISTANCE (SID_SMA_START + 52)
+#define SID_ALIGN (SID_SMA_START + 53)
+#define SID_SYMBOLS_LOAD (SID_SMA_START + 54)
+#define SID_AUTO_REDRAW (SID_SMA_START + 55)
+#define SID_SYMBOLS (SID_SMA_START + 56) // Muss erstmal wieder aufgenommen werden !
+#define SID_TEXTMODE (SID_SMA_START + 57)
+#define SID_INSERT_FORMULA (SID_SMA_START + 58)
+#define SID_TEXT (SID_SMA_START + 100)
+#define SID_GRAPHIC (SID_SMA_START + 101)
+#define SID_FITINWINDOW (SID_SMA_START + 103)
+#define SID_INSERTTEXT (SID_SMA_START + 104)
+#define SID_INSERTCOMMAND (SID_SMA_START + 105)
+
+#define SID_LOADSYMBOLS (SID_SMA_START + 107)
+#define SID_SAVESYMBOLS (SID_SMA_START + 108)
+#define SID_ZOOMSTATUS (SID_SMA_START + 109)
+#define SID_MODIFYSTATUS (SID_SMA_START + 110)
+#define SID_TEXTSTATUS (SID_SMA_START + 111)
+
+#define SID_PRINTTITLE (SID_SMA_START + 112)
+#define SID_PRINTTEXT (SID_SMA_START + 113)
+#define SID_PRINTFRAME (SID_SMA_START + 114)
+#define SID_PRINTSIZE (SID_SMA_START + 115)
+#define SID_PRINTZOOM (SID_SMA_START + 116)
+
+#define SID_COPYOBJECT (SID_SMA_START + 117)
+#define SID_PASTEOBJECT (SID_SMA_START + 118)
+#define SID_AUTOREDRAW (SID_SMA_START + 119)
+#define SID_SYMBOLFILE (SID_SMA_START + 120)
+#define SID_GETEDITTEXT (SID_SMA_START + 121)
+#define SID_CMDBOXWINDOW (SID_SMA_START + 122)
+#define SID_TOOLBOXWINDOW (SID_SMA_START + 123)
+#define SID_NO_RIGHT_SPACES (SID_SMA_START + 124)
+#define SID_DUMMY (SID_SMA_START + 254)
+
+//#define GID_FORMEL (RID_GROUPS_OFFSET + 1)
+//#define GID_ERROR (RID_GROUPS_OFFSET + 2)
+
+//#define RID_OPTIONSDIALOG (RID_APP_START + 1)
+#define RID_FONTDIALOG (RID_APP_START + 2)
+#define RID_FONTSIZEDIALOG (RID_APP_START + 3)
+#define RID_FONTTYPEDIALOG (RID_APP_START + 4)
+#define RID_DISTANCEDIALOG (RID_APP_START + 5)
+#define RID_ALIGNDIALOG (RID_APP_START + 6)
+#define RID_PRINTOPTIONPAGE (RID_APP_START + 7)
+#define RID_SYMBOLDIALOG (RID_APP_START + 8)
+#define RID_SYMDEFINEDIALOG (RID_APP_START + 9)
+#define RID_EXTRAOPTIONPAGE (RID_APP_START + 10)
+#define RID_MATH_TOOLBOX (RID_APP_START + 50)
+// wegen #58705# entfernt
+//#define RID_DRAW_OBJECTBAR (RID_APP_START + 51)
+
+#define RID_DEFAULTSAVEQUERY (RID_APP_START + 102)
+#define RID_WRITESYMBOLERROR (RID_APP_START + 202)
+#define RID_READSYMBOLERROR (RID_APP_START + 203)
+#define RID_NOMATHTYPEFACEWARNING (RID_APP_START + 204)
+#define RID_OBJECTNAME (RID_APP_START + 501)
+#define RID_VIEWNAME (RID_APP_START + 502)
+#define RID_UNDOEDITNAME (RID_APP_START + 503)
+#define RID_UNDOFORMATNAME (RID_APP_START + 504)
+#define RID_APPICO (RID_APP_START + 601)
+#define RID_TMPICO (RID_APP_START + 603)
+#define RID_COMMANDMENU (RID_APP_START + 701)
+#define RID_VIEWMENU (RID_APP_START + 702)
+#define RID_DISTANCEMENU (RID_APP_START + 703)
+#define RID_FONTMENU (RID_APP_START + 704)
+#define RID_STARTUPWINDOW (RID_APP_START + 800)
+#define RID_TOOLBOXWINDOW (RID_APP_START + 801)
+#define RID_CMDBOXWINDOW (RID_APP_START + 802)
+#define RID_FONTREGULAR (RID_APP_START + 804)
+#define RID_FONTITALIC (RID_APP_START + 805)
+#define RID_FONTBOLD (RID_APP_START + 806)
+//#define RID_PRINTOPTION (RID_APP_START + 807)
+#define RID_DOCUMENTSTR (RID_APP_START + 808)
+#define RID_SYMBOLFILESSTR (RID_APP_START + 809)
+#define RID_ALLFILESSTR (RID_APP_START + 810)
+#define RID_CREATORSTR (RID_APP_START + 811)
+#define RID_FILESMFTYP (RID_APP_START + 812)
+#define RID_FILESYMTYP (RID_APP_START + 813)
+#define RID_SMMENU (RID_APP_START + 814)
+#define RID_SMACCEL (RID_APP_START + 815)
+#define RID_STATUSBAR (RID_APP_START + 816)
+#define RID_APPNAMESTR (RID_APP_START + 817)
+#define STR_MATH_DOCUMENT_FULLTYPE_40 (RID_APP_START + 818)
+#define STR_MATH_DOCUMENT_FULLTYPE_31 (RID_APP_START + 819)
+#define STR_MATH_DOCUMENT_FULLTYPE_50 (RID_APP_START + 820)
+
+#define RID_ERR_IDENT (RID_APP_START + 920)
+#define RID_ERR_UNKOWN (RID_APP_START + 921)
+#define RID_ERR_UNEXPECTEDCHARACTER (RID_APP_START + 922)
+#define RID_ERR_LGROUPEXPECTED (RID_APP_START + 923)
+#define RID_ERR_RGROUPEXPECTED (RID_APP_START + 924)
+#define RID_ERR_LBRACEEXPECTED (RID_APP_START + 925)
+#define RID_ERR_RBRACEEXPECTED (RID_APP_START + 926)
+#define RID_ERR_FUNCEXPECTED (RID_APP_START + 927)
+#define RID_ERR_UNOPEREXPECTED (RID_APP_START + 928)
+#define RID_ERR_BINOPEREXPECTED (RID_APP_START + 929)
+#define RID_ERR_SYMBOLEXPECTED (RID_APP_START + 930)
+#define RID_ERR_IDENTEXPECTED (RID_APP_START + 931)
+#define RID_ERR_POUNDEXPECTED (RID_APP_START + 932)
+#define RID_ERR_COLOREXPECTED (RID_APP_START + 933)
+#define RID_ERR_LPARENTEXPECTED (RID_APP_START + 934)
+#define RID_ERR_RPARENTEXPECTED (RID_APP_START + 935)
+#define RID_ERR_RIGHTEXPECTED (RID_APP_START + 936)
+#define RID_ERR_OVERFLOW (RID_APP_START + 937)
+
+#define RID_UNBINOPS_CAT (RID_APP_START + 1101)
+#define RID_RELATIONS_CAT (RID_APP_START + 1102)
+#define RID_SETOPERATIONS_CAT (RID_APP_START + 1103)
+#define RID_FUNCTIONS_CAT (RID_APP_START + 1104)
+#define RID_OPERATORS_CAT (RID_APP_START + 1105)
+#define RID_ATTRIBUTES_CAT (RID_APP_START + 1106)
+#define RID_BRACKETS_CAT (RID_APP_START + 1107)
+#define RID_FORMAT_CAT (RID_APP_START + 1108)
+#define RID_UNBINOPS_CAT_HLP (RID_APP_START + 1109)
+#define RID_RELATIONS_CAT_HLP (RID_APP_START + 1110)
+#define RID_SETOPEROPERATIONS_CAT_HLP (RID_APP_START + 1111)
+#define RID_FUNCTIONS_CAT_HLP (RID_APP_START + 1112)
+#define RID_OPERATORS_CAT_HLP (RID_APP_START + 1113)
+#define RID_ATTRIBUTES_CAT_HLP (RID_APP_START + 1114)
+#define RID_BRACKETS_CAT_HLP (RID_APP_START + 1115)
+#define RID_FORMAT_CAT_HLP (RID_APP_START + 1116)
+#define RID_MISC_CAT (RID_APP_START + 1117)
+#define RID_MISC_CAT_HLP (RID_APP_START + 1118)
+
+// new resource ID's
+#define RID_PLUSX (RID_APP_START + 1201)
+#define RID_MINUSX (RID_APP_START + 1202)
+#define RID_PLUSMINUSX (RID_APP_START + 1203)
+#define RID_MINUSPLUSX (RID_APP_START + 1204)
+#define RID_XPLUSY (RID_APP_START + 1205)
+#define RID_XCDOTY (RID_APP_START + 1206)
+#define RID_XTIMESY (RID_APP_START + 1207)
+#define RID_XSYMTIMESY (RID_APP_START + 1208)
+#define RID_XMINUSY (RID_APP_START + 1209)
+#define RID_XOVERY (RID_APP_START + 1210)
+#define RID_XDIVY (RID_APP_START + 1211)
+#define RID_XSYMDIVIDEY (RID_APP_START + 1212)
+#define RID_NEGX (RID_APP_START + 1213)
+#define RID_XANDY (RID_APP_START + 1214)
+#define RID_XORY (RID_APP_START + 1215)
+#define RID_XODIVIDEY (RID_APP_START + 1216)
+#define RID_XODOTY (RID_APP_START + 1217)
+#define RID_XOMINUSY (RID_APP_START + 1218)
+#define RID_XOPLUSY (RID_APP_START + 1219)
+#define RID_XOTIMESY (RID_APP_START + 1220)
+#define RID_XCIRCY (RID_APP_START + 1221)
+#define RID_XWIDESLASHY (RID_APP_START + 1222)
+#define RID_XWIDEBSLASHY (RID_APP_START + 1223)
+
+#define RID_XEQY (RID_APP_START + 1301)
+#define RID_XNEQY (RID_APP_START + 1302)
+#define RID_XEQUIVY (RID_APP_START + 1303)
+#define RID_XORTHOY (RID_APP_START + 1304)
+#define RID_XLTY (RID_APP_START + 1305)
+#define RID_XGTY (RID_APP_START + 1306)
+#define RID_XAPPROXY (RID_APP_START + 1307)
+#define RID_XPARALLELY (RID_APP_START + 1308)
+#define RID_XLESLANTY (RID_APP_START + 1309)
+#define RID_XGESLANTY (RID_APP_START + 1310)
+#define RID_XSIMEQY (RID_APP_START + 1311)
+#define RID_XPROPY (RID_APP_START + 1312)
+#define RID_XLEY (RID_APP_START + 1313)
+#define RID_XGEY (RID_APP_START + 1314)
+#define RID_XSIMY (RID_APP_START + 1315)
+#define RID_XTOWARDY (RID_APP_START + 1316)
+#define RID_XLLY (RID_APP_START + 1317)
+#define RID_XGGY (RID_APP_START + 1318)
+#define RID_XDEFY (RID_APP_START + 1319)
+#define RID_XTRANSLY (RID_APP_START + 1320)
+#define RID_XTRANSRY (RID_APP_START + 1321)
+#define RID_XDIVIDESY (RID_APP_START + 1322)
+#define RID_XNDIVIDESY (RID_APP_START + 1323)
+#define RID_DLARROW (RID_APP_START + 1324)
+#define RID_DLRARROW (RID_APP_START + 1325)
+#define RID_DRARROW (RID_APP_START + 1326)
+
+#define RID_XINY (RID_APP_START + 1401)
+#define RID_XNOTINY (RID_APP_START + 1402)
+#define RID_XOWNSY (RID_APP_START + 1403)
+#define RID_XINTERSECTIONY (RID_APP_START + 1405)
+#define RID_XUNIONY (RID_APP_START + 1406)
+#define RID_XSETMINUSY (RID_APP_START + 1407)
+#define RID_XSLASHY (RID_APP_START + 1408)
+#define RID_XSUBSETY (RID_APP_START + 1409)
+#define RID_XSUBSETEQY (RID_APP_START + 1410)
+#define RID_XSUPSETY (RID_APP_START + 1411)
+#define RID_XSUPSETEQY (RID_APP_START + 1412)
+#define RID_XNSUBSETY (RID_APP_START + 1413)
+#define RID_XNSUBSETEQY (RID_APP_START + 1414)
+#define RID_XNSUPSETY (RID_APP_START + 1415)
+#define RID_XNSUPSETEQY (RID_APP_START + 1416)
+#define RID_SETN (RID_APP_START + 1417)
+#define RID_SETZ (RID_APP_START + 1418)
+#define RID_SETQ (RID_APP_START + 1419)
+#define RID_SETR (RID_APP_START + 1420)
+#define RID_SETC (RID_APP_START + 1421)
+
+#define RID_ABSX (RID_APP_START + 1501)
+#define RID_FACTX (RID_APP_START + 1502)
+#define RID_SQRTX (RID_APP_START + 1503)
+#define RID_NROOTXY (RID_APP_START + 1504)
+#define RID_EX (RID_APP_START + 1505)
+#define RID_LNX (RID_APP_START + 1506)
+#define RID_EXPX (RID_APP_START + 1507)
+#define RID_LOGX (RID_APP_START + 1508)
+#define RID_SINX (RID_APP_START + 1509)
+#define RID_COSX (RID_APP_START + 1510)
+#define RID_TANX (RID_APP_START + 1511)
+#define RID_COTX (RID_APP_START + 1512)
+#define RID_SINHX (RID_APP_START + 1513)
+#define RID_COSHX (RID_APP_START + 1514)
+#define RID_TANHX (RID_APP_START + 1515)
+#define RID_COTHX (RID_APP_START + 1516)
+#define RID_ARCSINX (RID_APP_START + 1517)
+#define RID_ARCCOSX (RID_APP_START + 1518)
+#define RID_ARCTANX (RID_APP_START + 1519)
+#define RID_ARCCOTX (RID_APP_START + 1520)
+#define RID_ARSINHX (RID_APP_START + 1521)
+#define RID_ARCOSHX (RID_APP_START + 1522)
+#define RID_ARTANHX (RID_APP_START + 1523)
+#define RID_ARCOTHX (RID_APP_START + 1524)
+
+#define RID_LIMX (RID_APP_START + 1601)
+#define RID_SUMX (RID_APP_START + 1602)
+#define RID_PRODX (RID_APP_START + 1603)
+#define RID_COPRODX (RID_APP_START + 1604)
+#define RID_INTX (RID_APP_START + 1605)
+#define RID_IINTX (RID_APP_START + 1606)
+#define RID_IIINTX (RID_APP_START + 1607)
+#define RID_LINTX (RID_APP_START + 1609)
+#define RID_LLINTX (RID_APP_START + 1610)
+#define RID_LLLINTX (RID_APP_START + 1611)
+#define RID_FROMXTOY (RID_APP_START + 1613)
+#define RID_FROMX (RID_APP_START + 1614)
+#define RID_TOX (RID_APP_START + 1615)
+#define RID_LIMINFX (RID_APP_START + 1616)
+#define RID_LIMSUPX (RID_APP_START + 1617)
+
+#define RID_ACUTEX (RID_APP_START + 1701)
+#define RID_GRAVEX (RID_APP_START + 1702)
+#define RID_CHECKX (RID_APP_START + 1703)
+#define RID_BREVEX (RID_APP_START + 1704)
+#define RID_BARX (RID_APP_START + 1705)
+#define RID_VECX (RID_APP_START + 1706)
+#define RID_HATX (RID_APP_START + 1707)
+#define RID_TILDEX (RID_APP_START + 1708)
+#define RID_CIRCLEX (RID_APP_START + 1709)
+#define RID_DOTX (RID_APP_START + 1710)
+#define RID_DDOTX (RID_APP_START + 1711)
+#define RID_DDDOTX (RID_APP_START + 1712)
+#define RID_OVERLINEX (RID_APP_START + 1713)
+#define RID_UNDERLINEX (RID_APP_START + 1714)
+#define RID_OVERSTRIKEX (RID_APP_START + 1715)
+#define RID_PHANTOMX (RID_APP_START + 1716)
+#define RID_BOLDX (RID_APP_START + 1717)
+#define RID_ITALX (RID_APP_START + 1718)
+#define RID_SIZEXY (RID_APP_START + 1719)
+#define RID_FONTXY (RID_APP_START + 1720)
+#define RID_COLORX (RID_APP_START + 1721)
+#define RID_WIDEHATX (RID_APP_START + 1722)
+#define RID_WIDETILDEX (RID_APP_START + 1723)
+#define RID_WIDEVECX (RID_APP_START + 1724)
+
+#define RID_LRPARENTX (RID_APP_START + 1801)
+#define RID_LRBRACKETX (RID_APP_START + 1802)
+#define RID_LRANGLEX (RID_APP_START + 1803)
+#define RID_LRBRACEX (RID_APP_START + 1804)
+#define RID_LRLINEX (RID_APP_START + 1805)
+#define RID_LRDLINEX (RID_APP_START + 1806)
+#define RID_LRGROUPX (RID_APP_START + 1808)
+#define RID_SLRPARENTX (RID_APP_START + 1809)
+#define RID_SLRBRACKETX (RID_APP_START + 1810)
+#define RID_SLRANGLEX (RID_APP_START + 1811)
+#define RID_SLRBRACEX (RID_APP_START + 1812)
+#define RID_SLRLINEX (RID_APP_START + 1813)
+#define RID_SLRDLINEX (RID_APP_START + 1814)
+#define RID_LRCEILX (RID_APP_START + 1817)
+#define RID_LRFLOORX (RID_APP_START + 1818)
+#define RID_SLRCEILX (RID_APP_START + 1819)
+#define RID_SLRFLOORX (RID_APP_START + 1820)
+#define RID_LMRANGLEXY (RID_APP_START + 1821)
+#define RID_SLMRANGLEXY (RID_APP_START + 1822)
+#define RID_LRDBRACKETX (RID_APP_START + 1823)
+#define RID_SLRDBRACKETX (RID_APP_START + 1824)
+#define RID_XOVERBRACEY (RID_APP_START + 1825)
+#define RID_XUNDERBRACEY (RID_APP_START + 1826)
+
+#define RID_NEWLINE (RID_APP_START + 1901)
+#define RID_SBLANK (RID_APP_START + 1902)
+#define RID_BLANK (RID_APP_START + 1903)
+#define RID_RSUBX (RID_APP_START + 1904)
+#define RID_BINOMXY (RID_APP_START + 1905)
+#define RID_STACK (RID_APP_START + 1906)
+#define RID_MATRIX (RID_APP_START + 1907)
+#define RID_RSUPX (RID_APP_START + 1908)
+#define RID_ALIGNLX (RID_APP_START + 1909)
+#define RID_ALIGNCX (RID_APP_START + 1910)
+#define RID_ALIGNRX (RID_APP_START + 1911)
+#define RID_LSUBX (RID_APP_START + 1912)
+#define RID_LSUPX (RID_APP_START + 1916)
+#define RID_CSUBX (RID_APP_START + 1917)
+#define RID_CSUPX (RID_APP_START + 1918)
+
+#define RID_ALEPH (RID_APP_START + 2001)
+#define RID_EMPTYSET (RID_APP_START + 2002)
+#define RID_RE (RID_APP_START + 2003)
+#define RID_IM (RID_APP_START + 2004)
+#define RID_INFINITY (RID_APP_START + 2005)
+#define RID_PARTIAL (RID_APP_START + 2006)
+#define RID_WP (RID_APP_START + 2007)
+#define RID_DOTSAXIS (RID_APP_START + 2008)
+#define RID_DOTSUP (RID_APP_START + 2009)
+#define RID_DOTSDOWN (RID_APP_START + 2010)
+#define RID_DOTSLOW (RID_APP_START + 2011)
+#define RID_DOTSVERT (RID_APP_START + 2012)
+#define RID_NABLA (RID_APP_START + 2013)
+#define RID_HBAR (RID_APP_START + 2014)
+#define RID_LAMBDABAR (RID_APP_START + 2015)
+#define RID_LEFTARROW (RID_APP_START + 2016)
+#define RID_RIGHTARROW (RID_APP_START + 2017)
+#define RID_UPARROW (RID_APP_START + 2018)
+#define RID_DOWNARROW (RID_APP_START + 2019)
+#define RID_EXISTS (RID_APP_START + 1608)
+#define RID_FORALL (RID_APP_START + 1612)
+
+// new menue resource ID's
+#define RID_UNBINOPS_MENU (RID_APP_START + 2164)
+#define RID_RELATIONS_MENU (RID_APP_START + 2165)
+#define RID_SETOPERATIONS_MENU (RID_APP_START + 2166)
+#define RID_FUNCTIONS_MENU (RID_APP_START + 2167)
+#define RID_OPERATORS_MENU (RID_APP_START + 2168)
+#define RID_ATTRIBUTES_MENU (RID_APP_START + 2169)
+#define RID_BRACKETS_MENU (RID_APP_START + 2170)
+#define RID_FORMAT_MENU (RID_APP_START + 2171)
+#define RID_MISC_MENU (RID_APP_START + 2172)
+#define RID_FUNCTIONSOTHER1_MENU (RID_APP_START + 2173)
+
+#define RID_XPP_LINE (RID_APP_START + 3000)
+#define RID_XPP_DLINE (RID_APP_START + 3001)
+#define RID_XPP_SQRT (RID_APP_START + 3002)
+#define RID_XPP_SQRT2 (RID_APP_START + 3003)
+#define RID_XPP_HAT (RID_APP_START + 3004)
+#define RID_XPP_TILDE (RID_APP_START + 3005)
+#define RID_XPP_BAR (RID_APP_START + 3006)
+#define RID_XPP_VEC (RID_APP_START + 3007)
+#define RID_XPP_LBRACE (RID_APP_START + 3008)
+#define RID_XPP_RBRACE (RID_APP_START + 3009)
+#define RID_XPP_LPARENT (RID_APP_START + 3010)
+#define RID_XPP_RPARENT (RID_APP_START + 3011)
+#define RID_XPP_LANGLE (RID_APP_START + 3012)
+#define RID_XPP_RANGLE (RID_APP_START + 3013)
+#define RID_XPP_LBRACKET (RID_APP_START + 3014)
+#define RID_XPP_RBRACKET (RID_APP_START + 3015)
+#define RID_XPP_LDBRACKET (RID_APP_START + 3016)
+#define RID_XPP_RDBRACKET (RID_APP_START + 3017)
+#define RID_XPP_LCEIL (RID_APP_START + 3018)
+#define RID_XPP_RCEIL (RID_APP_START + 3019)
+#define RID_XPP_LFLOOR (RID_APP_START + 3020)
+#define RID_XPP_RFLOOR (RID_APP_START + 3021)
+#define RID_XPP_OVERBRACE (RID_APP_START + 3022)
+#define RID_XPP_UNDERBRACE (RID_APP_START + 3023)
+
+#define HID_SMA_OPTIONSDIALOG (HID_SMA_START + 1)
+#define HID_SMA_FONTDIALOG (HID_SMA_START + 2)
+#define HID_SMA_FONTSIZEDIALOG (HID_SMA_START + 3)
+#define HID_SMA_FONTTYPEDIALOG (HID_SMA_START + 4)
+#define HID_SMA_DISTANCEDIALOG (HID_SMA_START + 5)
+#define HID_SMA_ALIGNDIALOG (HID_SMA_START + 6)
+#define HID_SMA_PRINTOPTIONPAGE (HID_SMA_START + 7)
+#define HID_SMA_SYMBOLDIALOG (HID_SMA_START + 8)
+#define HID_SMA_SYMDEFINEDIALOG (HID_SMA_START + 9)
+#define HID_SMA_EXTRAOPTIONPAGE (HID_SMA_START + 10)
+#define HID_SMA_DOCSAVEQUERY (HID_SMA_START + 11)
+#define HID_SMA_OBJECTSAVEQUERY (HID_SMA_START + 12)
+#define HID_SMA_DEFAULTSAVEQUERY (HID_SMA_START + 13)
+#define HID_SMA_ILLEGALOBJECTERROR (HID_SMA_START + 14)
+#define HID_SMA_ILLEGALFILEERROR (HID_SMA_START + 15)
+#define HID_SMA_WRITESYMBOLERROR (HID_SMA_START + 16)
+#define HID_SMA_READSYMBOLERROR (HID_SMA_START + 17)
+#define HID_SMA_NOMATHTYPEFACEWARNING (HID_SMA_START + 18)
+#define HID_SMA_OBJECTNAME (HID_SMA_START + 19)
+#define HID_SMA_VIEWNAME (HID_SMA_START + 20)
+#define HID_SMA_UNDOEDITNAME (HID_SMA_START + 21)
+#define HID_SMA_UNDOFORMATNAME (HID_SMA_START + 22)
+#define HID_SMA_APPICO (HID_SMA_START + 23)
+#define HID_SMA_DOCICO (HID_SMA_START + 24)
+#define HID_SMA_TMPICO (HID_SMA_START + 25)
+#define HID_SMA_COMMANDMENU (HID_SMA_START + 26)
+#define HID_SMA_VIEWMENU (HID_SMA_START + 27)
+#define HID_SMA_DISTANCEMENU (HID_SMA_START + 28)
+#define HID_SMA_FONTMENU (HID_SMA_START + 29)
+#define HID_SMA_STARTUPWINDOW (HID_SMA_START + 30)
+#define HID_SMA_TOOLBOXWINDOW (HID_SMA_START + 31)
+#define HID_SMA_CMDBOXWINDOW (HID_SMA_START + 32)
+#define HID_SMA_UPDATEOBJECT (HID_SMA_START + 33)
+#define HID_SMA_FONTREGULAR (HID_SMA_START + 34)
+#define HID_SMA_FONTITALIC (HID_SMA_START + 35)
+#define HID_SMA_FONTBOLD (HID_SMA_START + 36)
+#define HID_SMA_PRINTOPTION (HID_SMA_START + 37)
+#define HID_SMA_DOCUMENTSTR (HID_SMA_START + 38)
+#define HID_SMA_SYMBOLFILESSTR (HID_SMA_START + 39)
+#define HID_SMA_ALLFILESSTR (HID_SMA_START + 40)
+#define HID_SMA_CREATORSTR (HID_SMA_START + 41)
+#define HID_SMA_FILESMFTYP (HID_SMA_START + 42)
+#define HID_SMA_FILESYMTYP (HID_SMA_START + 43)
+#define HID_SMA_WIN_DOCUMENT (HID_SMA_START + 44)
+#define HID_SMA_COMMAND_WIN_EDIT (HID_SMA_START + 45)
+
+#define HID_SMA_PLUSX (HID_SMA_START + 50)
+#define HID_SMA_MINUSX (HID_SMA_START + 51)
+#define HID_SMA_PLUSMINUSX (HID_SMA_START + 52)
+#define HID_SMA_MINUSPLUSX (HID_SMA_START + 53)
+#define HID_SMA_NEGX (HID_SMA_START + 54)
+#define HID_SMA_XPLUSY (HID_SMA_START + 55)
+#define HID_SMA_XMINUSY (HID_SMA_START + 56)
+#define HID_SMA_XCDOTY (HID_SMA_START + 57)
+#define HID_SMA_XTIMESY (HID_SMA_START + 58)
+#define HID_SMA_XSYMTIMESY (HID_SMA_START + 59)
+#define HID_SMA_XSYMDIVIDEY (HID_SMA_START + 60)
+#define HID_SMA_XDIVY (HID_SMA_START + 61)
+#define HID_SMA_XOVERY (HID_SMA_START + 62)
+#define HID_SMA_XODIVIDEY (HID_SMA_START + 63)
+#define HID_SMA_XODOTY (HID_SMA_START + 64)
+#define HID_SMA_XOMINUSY (HID_SMA_START + 65)
+#define HID_SMA_XOPLUSY (HID_SMA_START + 66)
+#define HID_SMA_XOTIMESY (HID_SMA_START + 67)
+#define HID_SMA_XANDY (HID_SMA_START + 68)
+#define HID_SMA_XORY (HID_SMA_START + 69)
+#define HID_SMA_XEQY (HID_SMA_START + 70)
+#define HID_SMA_XNEQY (HID_SMA_START + 71)
+#define HID_SMA_XLTY (HID_SMA_START + 72)
+#define HID_SMA_XGTY (HID_SMA_START + 73)
+#define HID_SMA_XLEY (HID_SMA_START + 74)
+#define HID_SMA_XGEY (HID_SMA_START + 75)
+#define HID_SMA_XLESLANTY (HID_SMA_START + 76)
+#define HID_SMA_XGESLANTY (HID_SMA_START + 77)
+#define HID_SMA_XLLY (HID_SMA_START + 78)
+#define HID_SMA_XGGY (HID_SMA_START + 79)
+#define HID_SMA_XDEFY (HID_SMA_START + 80)
+#define HID_SMA_XEQUIVY (HID_SMA_START + 81)
+#define HID_SMA_XAPPROXY (HID_SMA_START + 82)
+#define HID_SMA_XSIMY (HID_SMA_START + 83)
+#define HID_SMA_XSIMEQY (HID_SMA_START + 84)
+#define HID_SMA_XPROPY (HID_SMA_START + 85)
+#define HID_SMA_XORTHOY (HID_SMA_START + 86)
+#define HID_SMA_XPARALLELY (HID_SMA_START + 87)
+#define HID_SMA_XTOWARDY (HID_SMA_START + 88)
+#define HID_SMA_XTRANSLY (HID_SMA_START + 89)
+#define HID_SMA_XTRANSRY (HID_SMA_START + 90)
+#define HID_SMA_XINY (HID_SMA_START + 91)
+#define HID_SMA_XNOTINY (HID_SMA_START + 92)
+#define HID_SMA_XOWNSY (HID_SMA_START + 93)
+#define HID_SMA_XUNIONY (HID_SMA_START + 94)
+#define HID_SMA_XINTERSECTIONY (HID_SMA_START + 95)
+#define HID_SMA_XSETMINUSY (HID_SMA_START + 96)
+#define HID_SMA_XSLASHY (HID_SMA_START + 97)
+#define HID_SMA_XSUBSETY (HID_SMA_START + 98)
+#define HID_SMA_XSUBSETEQY (HID_SMA_START + 99)
+#define HID_SMA_XSUPSETY (HID_SMA_START + 100)
+#define HID_SMA_XSUPSETEQY (HID_SMA_START + 101)
+#define HID_SMA_XNSUBSETY (HID_SMA_START + 102)
+#define HID_SMA_XNSUBSETEQY (HID_SMA_START + 103)
+#define HID_SMA_XNSUPSETY (HID_SMA_START + 104)
+#define HID_SMA_XNSUPSETEQY (HID_SMA_START + 105)
+#define HID_SMA_ABSX (HID_SMA_START + 106)
+#define HID_SMA_FACTX (HID_SMA_START + 107)
+#define HID_SMA_SQRTX (HID_SMA_START + 108)
+#define HID_SMA_NROOTXY (HID_SMA_START + 109)
+#define HID_SMA_EX (HID_SMA_START + 110)
+#define HID_SMA_EXPX (HID_SMA_START + 111)
+#define HID_SMA_LNX (HID_SMA_START + 112)
+#define HID_SMA_LOGX (HID_SMA_START + 113)
+#define HID_SMA_SINX (HID_SMA_START + 114)
+#define HID_SMA_COSX (HID_SMA_START + 115)
+#define HID_SMA_TANX (HID_SMA_START + 116)
+#define HID_SMA_COTX (HID_SMA_START + 117)
+#define HID_SMA_ARCSINX (HID_SMA_START + 118)
+#define HID_SMA_ARCCOSX (HID_SMA_START + 119)
+#define HID_SMA_ARCTANX (HID_SMA_START + 120)
+#define HID_SMA_ARCCOTX (HID_SMA_START + 121)
+#define HID_SMA_SINHX (HID_SMA_START + 122)
+#define HID_SMA_COSHX (HID_SMA_START + 123)
+#define HID_SMA_TANHX (HID_SMA_START + 124)
+#define HID_SMA_COTHX (HID_SMA_START + 125)
+#define HID_SMA_ARSINHX (HID_SMA_START + 126)
+#define HID_SMA_ARCOSHX (HID_SMA_START + 127)
+#define HID_SMA_ARTANHX (HID_SMA_START + 128)
+#define HID_SMA_ARCOTHX (HID_SMA_START + 129)
+#define HID_SMA_SUMX (HID_SMA_START + 130)
+#define HID_SMA_PRODX (HID_SMA_START + 131)
+#define HID_SMA_COPRODX (HID_SMA_START + 132)
+#define HID_SMA_LIMX (HID_SMA_START + 133)
+#define HID_SMA_LIMINFX (HID_SMA_START + 134)
+#define HID_SMA_LIMSUPX (HID_SMA_START + 135)
+#define HID_SMA_EXISTS (HID_SMA_START + 136)
+#define HID_SMA_FORALL (HID_SMA_START + 137)
+#define HID_SMA_NABLA (HID_SMA_START + 138)
+#define HID_SMA_INTX (HID_SMA_START + 139)
+#define HID_SMA_IINTX (HID_SMA_START + 140)
+#define HID_SMA_IIINTX (HID_SMA_START + 141)
+#define HID_SMA_LINTX (HID_SMA_START + 142)
+#define HID_SMA_LLINTX (HID_SMA_START + 143)
+#define HID_SMA_LLLINTX (HID_SMA_START + 144)
+#define HID_SMA_FROMX (HID_SMA_START + 145)
+#define HID_SMA_TOX (HID_SMA_START + 146)
+#define HID_SMA_FROMXTOY (HID_SMA_START + 147)
+#define HID_SMA_XCIRCY (HID_SMA_START + 148)
+#define HID_SMA_XDIVIDESY (HID_SMA_START + 149)
+#define HID_SMA_XNDIVIDESY (HID_SMA_START + 150)
+#define HID_SMA_DLARROW (HID_SMA_START + 151)
+#define HID_SMA_DLRARROW (HID_SMA_START + 152)
+#define HID_SMA_DRARROW (HID_SMA_START + 153)
+
+#define HID_SMA_MISC_CAT (HID_SMA_START + 154)
+#define HID_SMA_UNBINOPS_CAT (HID_SMA_START + 155)
+#define HID_SMA_RELATIONS_CAT (HID_SMA_START + 156)
+#define HID_SMA_SETOPERATIONS_CAT (HID_SMA_START + 157)
+#define HID_SMA_FUNCTIONS_CAT (HID_SMA_START + 158)
+#define HID_SMA_OPERATORS_CAT (HID_SMA_START + 159)
+#define HID_SMA_ATTRIBUTES_CAT (HID_SMA_START + 160)
+#define HID_SMA_BRACKETS_CAT (HID_SMA_START + 161)
+#define HID_SMA_FORMAT_CAT (HID_SMA_START + 162)
+
+#define HID_SMA_OPERATOR_WIN (HID_SMA_START + 163)
+#define HID_SMA_UNBINOPS_TBX (HID_SMA_START + 164)
+#define HID_SMA_RELATIONS_TBX (HID_SMA_START + 165)
+#define HID_SMA_SETOPERATIONS_TBX (HID_SMA_START + 166)
+#define HID_SMA_FUNCTIONS_TBX (HID_SMA_START + 167)
+#define HID_SMA_OPERATORS_TBX (HID_SMA_START + 168)
+#define HID_SMA_ATTRIBUTES_TBX (HID_SMA_START + 169)
+#define HID_SMA_BRACKETS_TBX (HID_SMA_START + 170)
+#define HID_SMA_FORMAT_TBX (HID_SMA_START + 171)
+#define HID_SMA_SELECTION_TBX (HID_SMA_START + 172)
+#define HID_SMA_COMMAND_WIN (HID_SMA_START + 173)
+#define HID_SMA_MISC_MENU (HID_SMA_START + 174)
+#define HID_SMA_FUNCTIONSOTHER1_MENU (HID_SMA_START + 175)
+
+#define HID_SMA_ACUTEX (HID_SMA_START + 180)
+#define HID_SMA_BARX (HID_SMA_START + 181)
+#define HID_SMA_BREVEX (HID_SMA_START + 182)
+#define HID_SMA_CHECKX (HID_SMA_START + 183)
+#define HID_SMA_CIRCLEX (HID_SMA_START + 184)
+#define HID_SMA_DOTX (HID_SMA_START + 185)
+#define HID_SMA_DDOTX (HID_SMA_START + 186)
+#define HID_SMA_DDDOTX (HID_SMA_START + 187)
+#define HID_SMA_GRAVEX (HID_SMA_START + 188)
+#define HID_SMA_HATX (HID_SMA_START + 189)
+#define HID_SMA_TILDEX (HID_SMA_START + 190)
+#define HID_SMA_VECX (HID_SMA_START + 191)
+#define HID_SMA_UNDERLINEX (HID_SMA_START + 192)
+#define HID_SMA_OVERLINEX (HID_SMA_START + 193)
+#define HID_SMA_OVERSTRIKEX (HID_SMA_START + 194)
+#define HID_SMA_PHANTOMX (HID_SMA_START + 195)
+#define HID_SMA_BOLDX (HID_SMA_START + 196)
+#define HID_SMA_ITALX (HID_SMA_START + 197)
+#define HID_SMA_SIZEXY (HID_SMA_START + 198)
+#define HID_SMA_FONTXY (HID_SMA_START + 199)
+#define HID_SMA_COLORX (HID_SMA_START + 200)
+#define HID_SMA_LRGROUPX (HID_SMA_START + 201)
+#define HID_SMA_LRPARENTX (HID_SMA_START + 202)
+#define HID_SMA_LRBRACKETX (HID_SMA_START + 203)
+#define HID_SMA_LRBRACEX (HID_SMA_START + 204)
+#define HID_SMA_LRANGLEX (HID_SMA_START + 205)
+#define HID_SMA_LRCEILX (HID_SMA_START + 206)
+#define HID_SMA_LRFLOORX (HID_SMA_START + 207)
+#define HID_SMA_LRLINEX (HID_SMA_START + 208)
+#define HID_SMA_LRDLINEX (HID_SMA_START + 209)
+#define HID_SMA_SLRPARENTX (HID_SMA_START + 210)
+#define HID_SMA_SLRBRACKETX (HID_SMA_START + 211)
+#define HID_SMA_SLRBRACEX (HID_SMA_START + 212)
+#define HID_SMA_SLRANGLEX (HID_SMA_START + 213)
+#define HID_SMA_SLRCEILX (HID_SMA_START + 214)
+#define HID_SMA_SLRFLOORX (HID_SMA_START + 215)
+#define HID_SMA_SLRLINEX (HID_SMA_START + 216)
+#define HID_SMA_SLRDLINEX (HID_SMA_START + 217)
+#define HID_SMA_RSUBX (HID_SMA_START + 218)
+#define HID_SMA_RSUPX (HID_SMA_START + 219)
+#define HID_SMA_LSUBX (HID_SMA_START + 220)
+#define HID_SMA_LSUPX (HID_SMA_START + 221)
+#define HID_SMA_SBLANK (HID_SMA_START + 222)
+#define HID_SMA_BLANK (HID_SMA_START + 223)
+#define HID_SMA_NEWLINE (HID_SMA_START + 224)
+#define HID_SMA_BINOMXY (HID_SMA_START + 225)
+#define HID_SMA_STACK (HID_SMA_START + 226)
+#define HID_SMA_MATRIX (HID_SMA_START + 227)
+#define HID_SMA_ALIGNLX (HID_SMA_START + 228)
+#define HID_SMA_ALIGNCX (HID_SMA_START + 229)
+#define HID_SMA_ALIGNRX (HID_SMA_START + 230)
+#define HID_SMA_ALEPH (HID_SMA_START + 231)
+#define HID_SMA_EMPTYSET (HID_SMA_START + 232)
+#define HID_SMA_RE (HID_SMA_START + 233)
+#define HID_SMA_IM (HID_SMA_START + 234)
+#define HID_SMA_INFINITY (HID_SMA_START + 235)
+#define HID_SMA_PARTIAL (HID_SMA_START + 236)
+#define HID_SMA_WP (HID_SMA_START + 237)
+#define HID_SMA_DOTSAXIS (HID_SMA_START + 238)
+#define HID_SMA_DOTSUP (HID_SMA_START + 239)
+#define HID_SMA_DOTSDOWN (HID_SMA_START + 240)
+#define HID_SMA_DOTSLOW (HID_SMA_START + 241)
+#define HID_SMA_DOTSVERT (HID_SMA_START + 242)
+
+#define HID_SMA_SETN (HID_SMA2_START + 1)
+#define HID_SMA_SETZ (HID_SMA2_START + 2)
+#define HID_SMA_SETQ (HID_SMA2_START + 3)
+#define HID_SMA_SETR (HID_SMA2_START + 4)
+#define HID_SMA_SETC (HID_SMA2_START + 5)
+#define HID_SMA_WIDEHATX (HID_SMA2_START + 6)
+#define HID_SMA_WIDETILDEX (HID_SMA2_START + 7)
+#define HID_SMA_WIDEVECX (HID_SMA2_START + 8)
+#define HID_SMA_CSUBX (HID_SMA2_START + 9)
+#define HID_SMA_CSUPX (HID_SMA2_START + 10)
+#define HID_SMA_HBAR (HID_SMA2_START + 11)
+#define HID_SMA_LAMBDABAR (HID_SMA2_START + 12)
+#define HID_SMA_LEFTARROW (HID_SMA2_START + 13)
+#define HID_SMA_RIGHTARROW (HID_SMA2_START + 14)
+#define HID_SMA_UPARROW (HID_SMA2_START + 15)
+#define HID_SMA_DOWNARROW (HID_SMA2_START + 16)
+
+#define HID_SMA_DEFAULT_DIST (HID_SMA2_START + 17)
+#define HID_SMA_LINE_DIST (HID_SMA2_START + 18)
+#define HID_SMA_ROOT_DIST (HID_SMA2_START + 19)
+#define HID_SMA_SUP_DIST (HID_SMA2_START + 20)
+#define HID_SMA_SUB_DIST (HID_SMA2_START + 21)
+#define HID_SMA_NUMERATOR_DIST (HID_SMA2_START + 22)
+#define HID_SMA_DENOMINATOR_DIST (HID_SMA2_START + 23)
+#define HID_SMA_FRACLINE_EXCWIDTH (HID_SMA2_START + 24)
+#define HID_SMA_FRACLINE_LINEWIDTH (HID_SMA2_START + 25)
+#define HID_SMA_UPPERLIMIT_DIST (HID_SMA2_START + 26)
+#define HID_SMA_LOWERLIMIT_DIST (HID_SMA2_START + 27)
+#define HID_SMA_BRACKET_EXCHEIGHT (HID_SMA2_START + 28)
+#define HID_SMA_BRACKET_DIST (HID_SMA2_START + 29)
+#define HID_SMA_MATRIXROW_DIST (HID_SMA2_START + 30)
+#define HID_SMA_MATRIXCOL_DIST (HID_SMA2_START + 31)
+#define HID_SMA_ATTRIBUT_DIST (HID_SMA2_START + 32)
+#define HID_SMA_INTERATTRIBUT_DIST (HID_SMA2_START + 33)
+#define HID_SMA_OPERATOR_EXCHEIGHT (HID_SMA2_START + 34)
+#define HID_SMA_OPERATOR_DIST (HID_SMA2_START + 35)
+#define HID_SMA_LEFTBORDER_DIST (HID_SMA2_START + 36)
+#define HID_SMA_RIGHTBORDER_DIST (HID_SMA2_START + 37)
+#define HID_SMA_UPPERBORDER_DIST (HID_SMA2_START + 38)
+#define HID_SMA_LOWERBORDER_DIST (HID_SMA2_START + 39)
+#define HID_SMA_SCALE_ALL_BRACKETS (HID_SMA2_START + 40)
+#define HID_SMA_BRACKET_EXCHEIGHT2 (HID_SMA2_START + 41)
+#define HID_SMA_LMRANGLEXY (HID_SMA2_START + 42)
+#define HID_SMA_SLMRANGLEXY (HID_SMA2_START + 43)
+#define HID_SMA_XWIDESLASHY (HID_SMA2_START + 44)
+#define HID_SMA_XWIDEBSLASHY (HID_SMA2_START + 45)
+#define HID_SMA_XOVERBRACEY (HID_SMA2_START + 46)
+#define HID_SMA_XUNDERBRACEY (HID_SMA2_START + 47)
+#define HID_SMA_LRDBRACKETX (HID_SMA2_START + 48)
+#define HID_SMA_SLRDBRACKETX (HID_SMA2_START + 49)
+
+
+#define BMP_ARROW_RIGHT 1
+
+#define MN_WIN 60
+#define MN_SUB_VIEW 31
+#define MN_SUB_TOOLBAR 32
+#define MN_SUB_GRAPHIC 33
+#define MN_SUB_SPELLING 34
+#define MN_SUB_TEMPLATES 35
+#define MN_SUB_SYMBOLS 90
+
+// 342 == SCH_IF_SMAVIEWSHELL, da SFX_INTERFACE_LIB kein
+// Define sondern neuerdings ein Enum ist
+#define HID_SMA_VIEWSHELL_DOCUMENT (342)
+
+#endif
+
diff --git a/starmath/inc/symbol.hxx b/starmath/inc/symbol.hxx
new file mode 100644
index 000000000000..b10fd7b67047
--- /dev/null
+++ b/starmath/inc/symbol.hxx
@@ -0,0 +1,225 @@
+/*************************************************************************
+ *
+ * $RCSfile: symbol.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef SYMBOL_HXX
+#define SYMBOL_HXX
+
+#ifndef _FONT_HXX //autogen
+#include <vcl/font.hxx>
+#endif
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+#ifndef _DYNARY_HXX //autogen
+#include <tools/dynary.hxx>
+#endif
+#ifndef UTILITY_HXX
+#include "utility.hxx"
+#endif
+
+
+#define SS_ATTR_ACCESS 0x80
+
+#define SYMBOLSET_NONE 0xFFFF
+#define SYMBOL_NONE 0xFFFF
+
+////////////////////////////////////////////////////////////////////////////////
+
+class SmSym
+{
+ friend class SmSymSetManager;
+
+ SmFace Face;
+ String Name;
+ SmSym *pHashNext;
+ SmSymSetManager *pSymSetManager;
+ sal_Unicode Character;
+ BYTE Attribut;
+
+public:
+ SmSym();
+ SmSym(const SmSym& rSymbol);
+ SmSym(const String& rName, const Font& rFont, sal_Unicode aChar);
+
+ SmSym& operator = (const SmSym& rSymbol);
+
+ void SetSymbolName(const String& rName);
+
+ const Font& GetFace() const { return Face; }
+ sal_Unicode GetCharacter() const { return Character; }
+ const String& GetName() const { return Name; }
+
+ Font& GetFace() { return Face; }
+ sal_Unicode& GetCharacter() { return Character; }
+ String& GetName() { return Name; }
+
+ friend SvStream& operator << (SvStream& rStream, const SmSym& rSymbol);
+ friend SvStream& operator >> (SvStream& rStream, SmSym& rSymbol);
+};
+
+DECLARE_LIST(SmListSym, SmSym *);
+
+/**************************************************************************/
+
+class SmSymSet
+{
+ friend class SmSymSetManager;
+
+ SmListSym SymbolList;
+ String Name;
+ SmSymSetManager *pSymSetManager;
+
+public:
+ SmSymSet();
+ SmSymSet(const SmSymSet& rSymbolSet);
+ SmSymSet(const String& rName);
+ ~SmSymSet();
+
+ SmSymSet& operator = (const SmSymSet& rSymbolSet);
+
+ const String& GetName() const { return Name; }
+ void SetName(String& rName);
+ USHORT GetCount() const { return (USHORT) SymbolList.Count(); }
+
+ const SmSym& GetSymbol(USHORT SymbolNo) const
+ {
+ DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden");
+ return *SymbolList.GetObject(SymbolNo);
+ }
+
+ USHORT AddSymbol(SmSym* pSymbol);
+ void DeleteSymbol(USHORT SymbolNo);
+ void RenameSymbol(USHORT SymbolNo, String& rName);
+ void ReplaceSymbol(USHORT SymbolNo, SmSym& rSymbol);
+ SmSym * RemoveSymbol(USHORT SymbolNo);
+ USHORT GetSymbolPos(const String& rName);
+
+ friend SvStream& operator << (SvStream& rStream, const SmSymSet& rSymbolSet);
+ friend SvStream& operator >> (SvStream& rStream, SmSymSet& rSymbolSet);
+};
+
+DECLARE_DYNARRAY(SmArraySymSet, SmSymSet *)
+
+/**************************************************************************/
+
+class SmSymbolDialog;
+
+class SmSymSetManager : public SfxListener
+{
+ SmArraySymSet SymbolSets;
+ String aStreamName;
+ SmSym **HashEntries;
+ UINT32 NoSymbolSets;
+ UINT32 NoHashEntries;
+ BOOL Modified;
+
+ virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType);
+
+ UINT32 GetHashIndex(const String& rSymbolName);
+ void EnterHashTable(SmSymSet& rSymbolSet);
+ void FillHashTable();
+
+public:
+ void Init();
+ void Exit();
+
+ SmSymSetManager(UINT32 HashTableSize = 137);
+ SmSymSetManager(const SmSymSetManager& rSymbolSetManager);
+ ~SmSymSetManager();
+
+ SmSymSetManager& operator = (const SmSymSetManager& rSymbolSetManager);
+
+ USHORT GetCount() const { return NoSymbolSets; }
+ SmSymSet *GetSymbolSet(USHORT SymbolSetNo) const { return SymbolSets.Get(SymbolSetNo);}
+
+ USHORT AddSymbolSet(SmSymSet* pSymbolSet);
+ void ChangeSymbolSet(SmSymSet* pSymbolSet);
+ void DeleteSymbolSet(USHORT SymbolSetNo);
+ USHORT GetSymbolSetPos(const String& rSymbolSetName) const;
+
+ SmSym * GetSymbol(const String& rSymbolName);
+ const SmSym * GetSymbol(const String& rSymbolName) const
+ {
+ return ((SmSymSetManager *) this)->GetSymbol(rSymbolName);
+ }
+
+ void AppendExtraSymbolSet(SmSymSet* pSymbolSet) {}
+ void ResetAccessedSymbols() {}
+ SmSymSet GetAccessedSymbols() { return SmSymSet(); }
+
+ BOOL IsModified() const { return (Modified); }
+ void SetModified(BOOL Modify) { Modified = Modify; }
+
+ void Load(const String& rURL);
+ void Save();
+
+ friend SvStream& operator << (SvStream& rStream, SmSymSetManager& rSymbolSetManager);
+ friend SvStream& operator >> (SvStream& rStream, SmSymSetManager& rSymbolSetManager);
+};
+
+#endif
+
diff --git a/starmath/inc/toolbox.hxx b/starmath/inc/toolbox.hxx
new file mode 100644
index 000000000000..8391a8800eb1
--- /dev/null
+++ b/starmath/inc/toolbox.hxx
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: toolbox.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef TOOLBOX_HXX
+#define TOOLBOX_HXX
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+#ifndef _SV_TOOLBOX_HXX //autogen
+#include <vcl/toolbox.hxx>
+#endif
+
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+#ifndef CONFIG_HXX
+#include "config.hxx"
+#endif
+
+
+#define NUM_TBX_CATEGORIES 9
+
+class SmToolBoxWindow : public SfxFloatingWindow
+{
+
+protected:
+ ToolBox aToolBoxCat;
+ ToolBox *pToolBoxCmd;
+ ToolBox *vToolBoxCategories[NUM_TBX_CATEGORIES];
+ USHORT nActiveCategory;
+
+ virtual BOOL Close();
+
+ DECL_LINK( CategoryClickHdl, ToolBox* );
+ DECL_LINK( CmdSelectHdl, ToolBox* );
+
+public:
+ SmToolBoxWindow(SfxBindings *pBindings,
+ SfxChildWindow *pChildWindow,
+ Window *pParent);
+ ~SmToolBoxWindow();
+
+ // Window
+ virtual void StateChanged( StateChangedType nStateChange );
+
+ void AdjustPosition(const Point &rPoint);
+ void SetCategory(USHORT nCategory);
+ void ShowWindows();
+};
+
+/**************************************************************************/
+
+class SmToolBoxWrapper : public SfxChildWindow
+{
+ SFX_DECL_CHILDWINDOW(SmToolBoxWrapper);
+
+protected:
+ SmToolBoxWrapper(Window *pParentWindow,
+ USHORT, SfxBindings*, SfxChildWinInfo*);
+};
+
+#endif
+
diff --git a/starmath/inc/types.hxx b/starmath/inc/types.hxx
new file mode 100644
index 000000000000..c7aac531e8bf
--- /dev/null
+++ b/starmath/inc/types.hxx
@@ -0,0 +1,216 @@
+/*************************************************************************
+ *
+ * $RCSfile: types.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef TYPES_HXX
+#define TYPES_HXX
+
+
+////////////////////////////////////////
+// enum definitions for characters from the 'StarMath' font
+// (some chars have more than one alias!)
+//! Note: not listed here does not(!) mean "not used"
+//! (see %alpha ... %gamma for example)
+//
+enum MathSymbol
+{
+ MS_FACT = (xub_Unicode) 0xF021,
+ MS_INFINITY = (xub_Unicode) 0xF027,
+ MS_SLASH = (xub_Unicode) 0xF02F,
+
+ MS_NDIVIDES = (xub_Unicode) 0xF030,
+ MS_DRARROW = (xub_Unicode) 0xF031,
+ MS_DLARROW = (xub_Unicode) 0xF032,
+ MS_DLRARROW = (xub_Unicode) 0xF033,
+ MS_UNDERBRACE = (xub_Unicode) 0xF034,
+ MS_OVERBRACE = (xub_Unicode) 0xF035,
+ MS_CIRC = (xub_Unicode) 0xF036,
+ MS_ASSIGN = (xub_Unicode) 0xF03D,
+ MS_ERROR = (xub_Unicode) 0xF03F,
+
+ MS_NEQ = (xub_Unicode) 0xF040,
+ MS_PLUS = (xub_Unicode) 0xF041,
+ MS_MINUS = (xub_Unicode) 0xF042,
+ MS_MULTIPLY = (xub_Unicode) 0xF043,
+ MS_TIMES = (xub_Unicode) 0xF044,
+ MS_CDOT = (xub_Unicode) 0xF045,
+ MS_DIV = (xub_Unicode) 0xF046,
+ MS_PLUSMINUS = (xub_Unicode) 0xF047,
+ MS_MINUSPLUS = (xub_Unicode) 0xF048,
+ MS_OPLUS = (xub_Unicode) 0xF049,
+ MS_OMINUS = (xub_Unicode) 0xF04A,
+ MS_OTIMES = (xub_Unicode) 0xF04B,
+ MS_ODIVIDE = (xub_Unicode) 0xF04C,
+ MS_ODOT = (xub_Unicode) 0xF04D,
+ MS_UNION = (xub_Unicode) 0xF04E,
+ MS_INTERSECT = (xub_Unicode) 0xF04F,
+
+ MS_LT = (xub_Unicode) 0xF050,
+ MS_GT = (xub_Unicode) 0xF051,
+ MS_LE = (xub_Unicode) 0xF052,
+ MS_GE = (xub_Unicode) 0xF053,
+ MS_LESLANT = (xub_Unicode) 0xF054,
+ MS_GESLANT = (xub_Unicode) 0xF055,
+ MS_LL = (xub_Unicode) 0xF056,
+ MS_GG = (xub_Unicode) 0xF057,
+ MS_SIM = (xub_Unicode) 0xF058,
+ MS_SIMEQ = (xub_Unicode) 0xF059,
+ MS_APPROX = (xub_Unicode) 0xF05A,
+ MS_DEF = (xub_Unicode) 0xF05B,
+ MS_EQUIV = (xub_Unicode) 0xF05C,
+ MS_PROP = (xub_Unicode) 0xF05D,
+ MS_PARTIAL = (xub_Unicode) 0xF05E,
+ MS_SUBSET = (xub_Unicode) 0xF05F,
+
+ MS_SUPSET = (xub_Unicode) 0xF060,
+ MS_SUBSETEQ = (xub_Unicode) 0xF061,
+ MS_SUPSETEQ = (xub_Unicode) 0xF062,
+ MS_NSUBSET = (xub_Unicode) 0xF063,
+ MS_NSUPSET = (xub_Unicode) 0xF064,
+ MS_NSUBSETEQ = (xub_Unicode) 0xF065,
+ MS_NSUPSETEQ = (xub_Unicode) 0xF066,
+ MS_IN = (xub_Unicode) 0xF067,
+ MS_NOTIN = (xub_Unicode) 0xF068,
+ MS_EXISTS = (xub_Unicode) 0xF06A,
+ MS_BACKEPSILON = (xub_Unicode) 0xF06B,
+ MS_ALEPH = (xub_Unicode) 0xF06C,
+ MS_IM = (xub_Unicode) 0xF06D,
+ MS_RE = (xub_Unicode) 0xF06E,
+ MS_WP = (xub_Unicode) 0xF06F,
+
+ MS_LINE = (xub_Unicode) 0xF073,
+ MS_DLINE = (xub_Unicode) 0xF074,
+ MS_ORTHO = (xub_Unicode) 0xF075,
+ MS_DOTSLOW = (xub_Unicode) 0xF076,
+ MS_DOTSAXIS = (xub_Unicode) 0xF077,
+ MS_DOTSVERT = (xub_Unicode) 0xF078,
+ MS_DOTSUP = (xub_Unicode) 0xF079,
+ MS_DOTSDOWN = (xub_Unicode) 0xF07A,
+ MS_TRANSR = (xub_Unicode) 0xF07B,
+ MS_TRANSL = (xub_Unicode) 0xF07C,
+ MS_RIGHTARROW = (xub_Unicode) 0xF07D,
+ MS_BACKSLASH = (xub_Unicode) 0xF07E,
+ MS_NEG = (xub_Unicode) 0xF07F,
+
+ MS_INT = (xub_Unicode) 0xF080,
+ MS_IINT = (xub_Unicode) 0xF081,
+ MS_IIINT = (xub_Unicode) 0xF082,
+ MS_LINT = (xub_Unicode) 0xF083,
+ MS_LLINT = (xub_Unicode) 0xF084,
+ MS_LLLINT = (xub_Unicode) 0xF085,
+ MS_SQRT = (xub_Unicode) 0xF087,
+ MS_SQRT2 = (xub_Unicode) 0xF089,
+ MS_COPROD = (xub_Unicode) 0xF08A,
+ MS_PROD = (xub_Unicode) 0xF08B,
+ MS_SUM = (xub_Unicode) 0xF08C,
+ MS_NABLA = (xub_Unicode) 0xF08D,
+ MS_FORALL = (xub_Unicode) 0xF08E,
+
+ MS_HAT = (xub_Unicode) 0xF090,
+ MS_CHECK = (xub_Unicode) 0xF091,
+ MS_BREVE = (xub_Unicode) 0xF092,
+ MS_ACUTE = (xub_Unicode) 0xF093,
+ MS_GRAVE = (xub_Unicode) 0xF094,
+ MS_TILDE = (xub_Unicode) 0xF095,
+ MS_BAR = (xub_Unicode) 0xF096,
+ MS_VEC = (xub_Unicode) 0xF097,
+ MS_DOT = (xub_Unicode) 0xF098,
+ MS_DDOT = (xub_Unicode) 0xF099,
+ MS_DDDOT = (xub_Unicode) 0xF09A,
+ MS_CIRCLE = (xub_Unicode) 0xF09B,
+ MS_AND = (xub_Unicode) 0xF09C,
+ MS_OR = (xub_Unicode) 0xF09D,
+ MS_NI = (xub_Unicode) 0xF09E,
+ MS_EMPTYSET = (xub_Unicode) 0xF09F,
+
+ MS_LBRACE = (xub_Unicode) 0xF0A0,
+ MS_RBRACE = (xub_Unicode) 0xF0A1,
+ MS_LPARENT = (xub_Unicode) 0xF0A2,
+ MS_RPARENT = (xub_Unicode) 0xF0A3,
+ MS_LANGLE = (xub_Unicode) 0xF0A4,
+ MS_RANGLE = (xub_Unicode) 0xF0A5,
+ MS_LBRACKET = (xub_Unicode) 0xF0A6,
+ MS_RBRACKET = (xub_Unicode) 0xF0A7,
+
+ MS_LDBRACKET = (xub_Unicode) 0xF0B2,
+ MS_RDBRACKET = (xub_Unicode) 0xF0B3,
+ MS_PLACE = (xub_Unicode) 0xF0BF,
+
+ MS_LCEIL = (xub_Unicode) 0xF0C0,
+ MS_LFLOOR = (xub_Unicode) 0xF0C1,
+ MS_RCEIL = (xub_Unicode) 0xF0C2,
+ MS_RFLOOR = (xub_Unicode) 0xF0C3,
+ MS_SQRT2_X = (xub_Unicode) 0xF0C5,
+
+ MS_TOP = (xub_Unicode) 0xF0F5,
+ MS_HBAR = (xub_Unicode) 0xF0F6,
+ MS_LAMBDABAR = (xub_Unicode) 0xF0F7,
+ MS_LEFTARROW = (xub_Unicode) 0xF0F8,
+ MS_UPARROW = (xub_Unicode) 0xF0F9,
+ MS_DOWNARROW = (xub_Unicode) 0xF0FA,
+ MS_SETN = (xub_Unicode) 0xF0FB,
+ MS_SETZ = (xub_Unicode) 0xF0FC,
+ MS_SETQ = (xub_Unicode) 0xF0FD,
+ MS_SETR = (xub_Unicode) 0xF0FE,
+ MS_SETC = (xub_Unicode) 0xF0FF
+};
+
+
+#endif
+
diff --git a/starmath/inc/unomodel.hxx b/starmath/inc/unomodel.hxx
new file mode 100644
index 000000000000..b4629caff162
--- /dev/null
+++ b/starmath/inc/unomodel.hxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * $RCSfile: unomodel.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef UNOMODEL_HXX
+#define UNOMODEL_HXX
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+#ifndef _SFX_SFXBASEMODEL_HXX_
+#include <sfx2/sfxbasemodel.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE3_HXX_
+#include <cppuhelper/implbase3.hxx> // helper for implementations
+#endif
+
+struct SfxItemPropertyMap;
+
+//-----------------------------------------------------------------------------
+typedef
+cppu::WeakImplHelper3
+<
+ ::com::sun::star::beans::XPropertySet,
+ ::com::sun::star::lang::XServiceInfo,
+ ::com::sun::star::lang::XUnoTunnel
+>
+SmModelBaseClass;
+class SmModel : public SmModelBaseClass,
+ public SfxBaseModel
+{
+
+ SfxItemPropertyMap* _pMap;
+
+public:
+ SmModel( SfxObjectShell *pObjSh = 0 );
+ virtual ~SmModel();
+
+ //XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL release( ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+ static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId();
+
+ //XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+ //XPropertySet
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ //XServiceInfo
+ virtual rtl::OUString SAL_CALL getImplementationName(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual BOOL SAL_CALL supportsService(const rtl::OUString& ServiceName) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw( ::com::sun::star::uno::RuntimeException );
+
+ inline ::rtl::OUString SmModel::getImplementationName_Static() throw( );
+
+ void * SAL_CALL operator new( size_t ) throw();
+ void SAL_CALL operator delete( void * ) throw();
+};
+
+inline ::rtl::OUString SmModel::getImplementationName_Static() throw( )
+{
+ return rtl::OUString::createFromAscii("math.SmModel");
+}
+
+#endif
diff --git a/starmath/inc/utility.hxx b/starmath/inc/utility.hxx
new file mode 100644
index 000000000000..bde78f80d4f1
--- /dev/null
+++ b/starmath/inc/utility.hxx
@@ -0,0 +1,471 @@
+/*************************************************************************
+ *
+ * $RCSfile: utility.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef UTILITY_HXX
+#define UTILITY_HXX
+
+#ifndef _SFXVARARR_HXX //autogen
+#include <sfx2/minarray.hxx>
+#endif
+#ifndef _FONT_HXX //autogen
+#include <vcl/font.hxx>
+#endif
+#ifndef _SV_FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+#ifndef _SV_COMBOBOX_HXX //autogen
+#include <vcl/combobox.hxx>
+#endif
+#ifndef _SV_LSTBOX_HXX //autogen
+#include <vcl/lstbox.hxx>
+#endif
+#ifndef _STREAM_HXX //autogen
+#include <tools/stream.hxx>
+#endif
+#ifndef _FRACT_HXX //autogen
+#include <tools/fract.hxx>
+#endif
+
+
+class SmRect;
+class String;
+
+#define C2S(cChar) String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM(cChar))
+
+const ByteString ExportString(const String& rString);
+
+
+inline long SmPtsTo100th_mm(long nNumPts)
+ // returns the length (in 100th of mm) that corresponds to the length
+ // 'nNumPts' (in units points).
+ // 72.27 [pt] = 1 [inch] = 2,54 [cm] = 2540 [100th of mm].
+ // result is being rounded to the nearest integer.
+{
+ DBG_ASSERT(nNumPts >= 0, "Sm : Ooops...");
+ // broken into multiple and fraction of 'nNumPts' to reduce chance
+ // of overflow
+ // (7227 / 2) is added in order to round to the nearest integer
+ return 35 * nNumPts + (nNumPts * 1055L + (7227 / 2)) / 7227L;
+}
+
+
+inline long SmPtsTo100th_mm(const Fraction &rNumPts)
+ // as above but with argument 'rNumPts' as 'Fraction'
+{
+ Fraction aTmp (254000L, 7227L);
+ return aTmp *= rNumPts;
+}
+
+
+inline Fraction Sm100th_mmToPts(long nNum100th_mm)
+ // returns the length (in points) that corresponds to the length
+ // 'nNum100th_mm' (in 100th of mm).
+{
+ DBG_ASSERT(nNum100th_mm >= 0, "Sm : Ooops...");
+ Fraction aTmp (7227L, 254000L);
+ return aTmp *= Fraction(nNum100th_mm);
+}
+
+
+inline long SmRoundFraction(const Fraction &rFrac)
+{
+ DBG_ASSERT(rFrac > Fraction(), "Sm : Ooops...");
+ return (rFrac.GetNumerator() + rFrac.GetDenominator() / 2) / rFrac.GetDenominator();
+}
+
+
+class SmViewShell;
+SmViewShell * SmGetActiveView();
+
+
+////////////////////////////////////////////////////////////
+
+class SmFace;
+
+SvStream& operator << (SvStream& rStream, const SmFace& rFont);
+SvStream& operator >> (SvStream& rStream, SmFace& rFont);
+
+void ReadSM20Font(SvStream& rStream, Font& rFont);
+
+
+////////////////////////////////////////////////////////////
+//
+// SmRectCache
+//
+
+class SmRectCache
+{
+ VirtualDevice *pVirDev;
+
+ SmRectCache(const SmRectCache &);
+ SmRectCache & operator = (const SmRectCache &);
+
+public:
+ struct Key
+ { XubString aText,
+ aFontName;
+ Size aFontSize;
+ FontWeight eFontWeight;
+ FontItalic eFontItalic;
+
+ Key(const XubString &rText, const Font &rFont);
+
+ BOOL operator < (const Key &rKey) const;
+ BOOL operator == (const Key &rKey) const;
+ };
+
+ SmRectCache();
+ ~SmRectCache();
+
+ const SmRect * Search(const Key &rKey) const;
+ const SmRect * Add(const Key &rKey, const SmRect &rRect);
+
+ VirtualDevice * GetVirDev();
+
+ void Reset();
+};
+
+
+////////////////////////////////////////////////////////////
+//
+// SmFace
+//
+
+
+class SmFace : public Font
+{
+ long nBorderWidth;
+
+public:
+ SmFace() :
+ Font(), nBorderWidth(-1) {}
+ SmFace(const Font& rFont) :
+ Font(rFont), nBorderWidth(-1) { SetSize(GetSize()); }
+ SmFace(const String& rName, const Size& rSize) :
+ Font(rName, rSize), nBorderWidth(-1) { SetSize(GetSize()); }
+ SmFace( FontFamily eFamily, const Size& rSize) :
+ Font(eFamily, rSize), nBorderWidth(-1) { SetSize(GetSize()); }
+
+ SmFace(const SmFace &rFace) :
+ Font(rFace), nBorderWidth(-1) { SetSize(GetSize()); }
+
+ // overloaded version in order to supply a min value
+ // for font size (height). (Also used in ctor's to do so.)
+ void SetSize(const Size& rSize);
+
+ void SetBorderWidth(long nWidth) { nBorderWidth = nWidth; }
+ long GetBorderWidth() const;
+ long GetDefaultBorderWidth() const { return GetSize().Height() / 20 ; }
+ void FreezeBorderWidth() { nBorderWidth = GetDefaultBorderWidth(); }
+
+ SmFace & operator = (const SmFace &rFace);
+};
+
+SmFace & operator *= (SmFace &rFace, const Fraction &rFrac);
+
+
+#ifdef NEVER
+////////////////////////////////////////////////////////////
+//
+// SmInfoText
+//
+
+class SmInfoText : public FixedText
+{
+protected:
+ USHORT nMaxLen;
+ String aText;
+
+public:
+ SmInfoText(Window* pParent, WinBits nWinStyle = 0, USHORT nMax = 128);
+ SmInfoText(Window* pParent, const ResId& rResId, USHORT nMax = 128);
+
+ void SetText(const String& rStr);
+
+ XubString GetText() const { return (aText); }
+};
+#endif
+
+
+////////////////////////////////////////////////////////////
+//
+// SmPickList
+//
+
+class SmPickList : public SfxPtrArr
+{
+protected:
+ USHORT nSize;
+
+ virtual void *CreateItem(const String& rString) = 0;
+ virtual void *CreateItem(const void *pItem) = 0;
+ virtual void DestroyItem(void *pItem) = 0;
+
+ virtual BOOL CompareItem(const void *pFirstItem, const void *pSecondItem) const = 0;
+
+ virtual String GetStringItem(void *pItem) = 0;
+
+ virtual void LoadItem(SvStream& rStream, void *pItem) = 0;
+ virtual void SaveItem(SvStream& rStream, const void *pItem) const = 0;
+
+ void *GetPtr(USHORT nPos) const { return SfxPtrArr::GetObject(nPos); }
+ void *&GetPtr(USHORT nPos) { return SfxPtrArr::GetObject(nPos); }
+ void InsertPtr(USHORT nPos, void *pItem) { SfxPtrArr::Insert(nPos, pItem); }
+ void RemovePtr(USHORT nPos, USHORT nCount = 1) { SfxPtrArr::Remove(nPos, nCount); }
+
+public:
+ SmPickList(USHORT nInitSize = 0, USHORT nMaxSize = 5);
+ ~SmPickList();
+
+ SmPickList& operator = (const SmPickList& rList);
+
+ void *Get(USHORT nPos = 0) const { return GetPtr(nPos); }
+ void Insert(const void* pItem);
+ void Update(const void* pItem, const void *pNewItem);
+ void Remove(const void* pItem);
+
+ void *operator [] (USHORT nPos) const { return GetPtr(nPos); }
+
+ void SetSize(USHORT nNewSize);
+ USHORT GetSize() const { return nSize; }
+ USHORT Count() const { return SfxPtrArr::Count(); }
+
+ BOOL Contains(const void *pItem) const;
+ void Clear();
+
+ friend SvStream& operator << (SvStream& rStream, const SmPickList& rPickList);
+ friend SvStream& operator >> (SvStream& rStream, SmPickList& rPickList);
+};
+
+
+////////////////////////////////////////////////////////////
+//
+// SmStringPickList
+//
+#ifdef NEVER
+class SmStringPickList : public SmPickList
+{
+protected:
+ virtual void *CreateItem(const String& rString);
+ virtual void *CreateItem(const void *pItem);
+ virtual void DestroyItem(void *pItem);
+
+ virtual BOOL CompareItem(const void *pFirstItem, const void *pSecondItem) const;
+
+ virtual String GetStringItem(void *pItem);
+
+ virtual void LoadItem(SvStream& rStream, void *pItem);
+ virtual void SaveItem(SvStream& rStream, const void *pItem) const;
+
+public:
+ SmStringPickList()
+ : SmPickList(0, 5) {}
+ SmStringPickList(USHORT nInitSize, USHORT nMaxSize)
+ : SmPickList(nInitSize, nMaxSize) {}
+ SmStringPickList(const SmPickList& rOrig )
+ : SmPickList(rOrig) {}
+ ~SmStringPickList() { Clear(); }
+
+ virtual void Insert(const String &rString);
+ virtual void Update(const String &rString, const String &rNewString);
+ virtual void Remove(const String &rString);
+
+ inline BOOL Contains(const String &rString) const;
+ inline String Get(USHORT nPos = 0) const;
+
+ inline SmStringPickList& operator = (const SmStringPickList& rList);
+ inline String operator [] (USHORT nPos) const;
+};
+
+inline SmStringPickList& SmStringPickList::operator = (const SmStringPickList& rList)
+{
+ *(SmPickList *)this = *(SmPickList *)&rList; return *this;
+}
+
+inline String SmStringPickList::operator [] (USHORT nPos) const
+{
+ return *((String *)SmPickList::operator[](nPos));
+}
+
+inline String SmStringPickList::Get(USHORT nPos) const
+{
+ return nPos < Count() ? *((String *)SmPickList::Get(nPos)) : String();
+}
+
+inline BOOL SmStringPickList::Contains(const String &rString) const
+{
+ return SmPickList::Contains((void *)&rString);
+}
+#endif
+
+////////////////////////////////////////////////////////////
+//
+// SmFontPickList
+//
+
+class SmFontDialog;
+
+class SmFontPickList : public SmPickList
+{
+protected:
+ virtual void *CreateItem(const String& rString);
+ virtual void *CreateItem(const void *pItem);
+ virtual void DestroyItem(void *pItem);
+
+ virtual BOOL CompareItem(const void *pFirstItem, const void *pSecondItem) const;
+
+ virtual String GetStringItem(void *pItem);
+
+ virtual void LoadItem(SvStream& rStream, void *pItem);
+ virtual void SaveItem(SvStream& rStream, const void *pItem) const;
+
+public:
+ SmFontPickList()
+ : SmPickList(0, 5) {}
+ SmFontPickList(USHORT nInitSize, USHORT nMaxSize)
+ : SmPickList(nInitSize, nMaxSize) {}
+ SmFontPickList(const SmPickList& rOrig )
+ : SmPickList(rOrig) {}
+ ~SmFontPickList() { Clear(); }
+
+ virtual void Insert(const Font &rFont);
+ virtual void Update(const Font &rFont, const Font &rNewFont);
+ virtual void Remove(const Font &rFont);
+
+ inline BOOL Contains(const Font &rFont) const;
+ inline Font Get(USHORT nPos = 0) const;
+
+ inline SmFontPickList& operator = (const SmFontPickList& rList);
+ inline Font operator [] (USHORT nPos) const;
+
+ void ReadFrom(const SmFontDialog& rDialog);
+ void WriteTo(SmFontDialog& rDialog) const;
+};
+
+inline SmFontPickList& SmFontPickList::operator = (const SmFontPickList& rList)
+{
+ *(SmPickList *)this = *(SmPickList *)&rList; return *this;
+}
+
+inline Font SmFontPickList::operator [] (USHORT nPos) const
+{
+ return *((Font *)SmPickList::operator[](nPos));
+}
+
+inline Font SmFontPickList::Get(USHORT nPos) const
+{
+ return nPos < Count() ? *((Font *)SmPickList::Get(nPos)) : Font();
+}
+
+inline BOOL SmFontPickList::Contains(const Font &rFont) const
+{
+ return SmPickList::Contains((void *)&rFont);
+}
+
+
+////////////////////////////////////////////////////////////
+//
+// SmStringPickComboBox
+//
+#ifdef NEVER
+class SmStringPickComboBox : public SmStringPickList, public ComboBox
+{
+protected:
+ virtual void LoseFocus();
+
+ DECL_LINK(SelectHdl, ComboBox *);
+
+public:
+ SmStringPickComboBox(Window* pParent, WinBits nWinStyle = 0, USHORT nMax = 4);
+ SmStringPickComboBox(Window* pParent, const ResId& rResId, USHORT nMax = 4);
+
+ SmStringPickComboBox& operator = (const SmStringPickList& rList);
+
+ void SetText(const String& rStr);
+
+ virtual void Insert(const String &rString);
+ virtual void Update(const String &rString, const String &rNewString);
+ virtual void Remove(const String &rString);
+};
+#endif
+
+////////////////////////////////////////////////////////////
+//
+// SmFontPickListBox
+//
+
+class SmFontPickListBox : public SmFontPickList, public ListBox
+{
+protected:
+ DECL_LINK(SelectHdl, ListBox *);
+
+public:
+ SmFontPickListBox(Window* pParent, WinBits nWinStyle = 0, USHORT nMax = 4);
+ SmFontPickListBox(Window* pParent, const ResId& rResId, USHORT nMax = 4);
+
+ SmFontPickListBox& operator = (const SmFontPickList& rList);
+
+ virtual void Insert(const Font &rFont);
+ virtual void Update(const Font &rFont, const Font &rNewFont);
+ virtual void Remove(const Font &rFont);
+};
+
+#endif
+
diff --git a/starmath/inc/view.hxx b/starmath/inc/view.hxx
new file mode 100644
index 000000000000..34a2cd4f19d9
--- /dev/null
+++ b/starmath/inc/view.hxx
@@ -0,0 +1,313 @@
+/*************************************************************************
+ *
+ * $RCSfile: view.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef VIEW_HXX
+#define VIEW_HXX
+
+
+#ifndef _SFXDOCKWIN_HXX //autogen
+#include <sfx2/dockwin.hxx>
+#endif
+#ifndef _SFXVIEWSH_HXX //autogen
+#include <sfx2/viewsh.hxx>
+#endif
+#ifndef _SCRWIN_HXX //autogen
+#include <svtools/scrwin.hxx>
+#endif
+#ifndef _SFXCTRLITEM_HXX //autogen
+#include <sfx2/ctrlitem.hxx>
+#endif
+#ifndef _SFX_SHELL_HXX //autogen
+#include <sfx2/shell.hxx>
+#endif
+#ifndef _VIEWFAC_HXX //autogen
+#include <sfx2/viewfac.hxx>
+#endif
+#ifndef _SFXVIEWFRM_HXX //autogen
+#include <sfx2/viewfrm.hxx>
+#endif
+
+#ifndef EDIT_HXX
+#include "edit.hxx"
+#endif
+
+#ifndef NODE_HXX
+#include "node.hxx"
+#endif
+
+class Menu;
+class DataChangedEvent;
+class SmDocShell;
+class SmViewShell;
+
+/**************************************************************************/
+
+class SmGraphicWindow: public ScrollableWindow
+{
+ Point aFormulaDrawPos;
+ Rectangle aCursorRect;
+ SmViewShell *pViewShell;
+ USHORT nZoom;
+ short nModifyCount;
+ BOOL bIsCursorVisible;
+
+protected:
+ void SetFormulaDrawPos(const Point &rPos) { aFormulaDrawPos = rPos; }
+ Point GetFormulaDrawPos() const { return aFormulaDrawPos; }
+ void SetIsCursorVisible(BOOL bVis) { bIsCursorVisible = bVis; }
+ void SetCursor(const SmNode *pNode);
+ void SetCursor(const Rectangle &rRect);
+
+ virtual void DataChanged( const DataChangedEvent& );
+ virtual void Paint(const Rectangle&);
+ virtual void KeyInput(const KeyEvent& rKEvt);
+ virtual void Command(const CommandEvent& rCEvt);
+ virtual void StateChanged( StateChangedType eChanged );
+ DECL_LINK(MenuSelectHdl, Menu *);
+
+public:
+ SmGraphicWindow(SmViewShell* pShell);
+
+ virtual void MouseButtonDown(const MouseEvent &rMEvt);
+
+ void SetZoom(USHORT Factor);
+ USHORT GetZoom() const { return nZoom; }
+
+ void ZoomToFitInWindow();
+ void SetTotalSize();
+
+ BOOL IsCursorVisible() const { return bIsCursorVisible; }
+ void ShowCursor(BOOL bShow);
+ const SmNode * SetCursorPos(USHORT nRow, USHORT nCol);
+};
+
+/**************************************************************************/
+
+class SmGraphicController: public SfxControllerItem
+{
+protected:
+ SmGraphicWindow &rGraphic;
+public:
+ SmGraphicController(SmGraphicWindow &, USHORT, SfxBindings & );
+ virtual void StateChanged(USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState);
+};
+
+/**************************************************************************/
+
+class SmEditController: public SfxControllerItem
+{
+protected:
+ SmEditWindow &rEdit;
+
+public:
+ SmEditController(SmEditWindow &, USHORT, SfxBindings & );
+ virtual void StateChanged(USHORT nSID,
+ SfxItemState eState,
+ const SfxPoolItem* pState);
+};
+
+/**************************************************************************/
+
+class SmCmdBoxWindow : public SfxDockingWindow
+{
+ SmEditWindow aEdit;
+ SmEditController aController;
+ Timer aGrabTimer;
+
+ virtual void Resize();
+ virtual void Paint(const Rectangle& rRect);
+ virtual Size CalcDockingSize(SfxChildAlignment eAlign);
+ virtual SfxChildAlignment CheckAlignment(SfxChildAlignment eActual,
+ SfxChildAlignment eWish);
+
+protected :
+ DECL_LINK(UpdateTimeoutHdl, Timer *);
+
+public:
+ SmCmdBoxWindow(SfxBindings *pBindings,
+ SfxChildWindow *pChildWindow,
+ Window *pParent);
+
+ virtual ~SmCmdBoxWindow ();
+
+ void AdjustPosition();
+
+ SmEditWindow *GetEditWindow() { return (&aEdit); }
+
+ void ShowWindows ();
+
+ void RestartFocusTimer ()
+ {
+ aGrabTimer.SetTimeout (100);
+ aGrabTimer.Start ();
+ }
+
+ virtual void ToggleFloatingMode();
+
+ // Window
+ virtual void StateChanged( StateChangedType nStateChange );
+
+ void Grab ();
+
+};
+
+/**************************************************************************/
+
+class SmCmdBoxWrapper : public SfxChildWindow
+{
+ SFX_DECL_CHILDWINDOW(SmCmdBoxWrapper);
+
+protected:
+ SmCmdBoxWrapper(Window *pParentWindow,
+ USHORT nId,
+ SfxBindings *pBindings,
+ SfxChildWinInfo *pInfo);
+
+public:
+ Size aSize;
+
+ SmEditWindow *GetEditWindow()
+ {
+ return (((SmCmdBoxWindow *)pWindow)->GetEditWindow());
+ }
+
+ void RestartFocusTimer ()
+ {
+ ((SmCmdBoxWindow *)pWindow)->RestartFocusTimer ();
+ }
+
+// virtual void FillInfo(SfxChildWinInfo &rInfo) const;
+
+ void Grab ();
+};
+
+/**************************************************************************/
+
+class SmViewShell: public SfxViewShell
+{
+ SmGraphicWindow aGraphic;
+ SmGraphicController aGraphicController;
+ String StatusText;
+ Window *pViewFrame;
+
+protected:
+
+ Size GetTextLineSize(OutputDevice& rDevice,
+ const String& rLine);
+ Size GetTextSize(OutputDevice& rDevice,
+ const String& rText,
+ long MaxWidth);
+ void DrawTextLine(OutputDevice& rDevice,
+ const Point& rPosition,
+ const String& rLine);
+ void DrawText(OutputDevice& rDevice,
+ const Point& rPosition,
+ const String& rText,
+ USHORT MaxWidth);
+
+ virtual USHORT Print(SfxProgress &rProgress,
+ PrintDialog *pPrintDialog = 0);
+ virtual SfxPrinter *GetPrinter(BOOL bCreate = FALSE);
+ virtual USHORT SetPrinter(SfxPrinter *pNewPrinter,
+ USHORT nDiffFlags = SFX_PRINTER_ALL);
+
+ virtual SfxTabPage *CreatePrintOptionsPage(Window *pParent,
+ const SfxItemSet &rOptions);
+ virtual void Deactivate(BOOL IsMDIActivate);
+ virtual void Activate(BOOL IsMDIActivate);
+ virtual Size GetOptimalSizePixel() const;
+ virtual void AdjustPosSizePixel(const Point &rPos, const Size &rSize);
+ virtual void InnerResizePixel(const Point &rOfs, const Size &rSize);
+ virtual void OuterResizePixel(const Point &rOfs, const Size &rSize);
+ virtual void QueryObjAreaPixel( Rectangle& rRect ) const;
+ virtual void SetZoomFactor( const Fraction &rX, const Fraction &rY );
+
+public:
+ TYPEINFO();
+
+ SmDocShell * GetDoc()
+ {
+ return (SmDocShell *) GetViewFrame()->GetObjectShell();
+ }
+
+ SmEditWindow * GetEditWindow();
+ SmGraphicWindow & GetGraphicWindow() { return aGraphic; }
+ const SmGraphicWindow & GetGraphicWindow() const { return aGraphic; }
+
+ void SetStatusText(const String& Text);
+
+ void ShowError( const SmErrorDesc *pErrorDesc );
+ void NextError();
+ void PrevError();
+
+ SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START+2);
+ SFX_DECL_VIEWFACTORY(SmViewShell);
+
+ virtual void Execute( SfxRequest& rReq );
+ virtual void GetState(SfxItemSet &);
+
+ SmViewShell(SfxViewFrame *pFrame, SfxViewShell *pOldSh);
+ ~SmViewShell();
+};
+
+#endif
+
diff --git a/starmath/prj/d.lst b/starmath/prj/d.lst
new file mode 100644
index 000000000000..a2726db3677e
--- /dev/null
+++ b/starmath/prj/d.lst
@@ -0,0 +1,18 @@
+..\%__SRC%\slb\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\%__SRC%\lib\lib*.* %_DEST%\lib%_EXT%\lib*.*
+..\%__SRC%\slb\ysm.lib %_DEST%\lib%_EXT%\ysm.lib
+..\%__SRC%\bin\smath3.exe %_DEST%\bin%_EXT%\smath3.exe
+..\%__SRC%\bin\smath3.sym %_DEST%\bin%_EXT%\smath3.sym
+..\%__SRC%\misc\*.map %_DEST%\bin%_EXT%\*.map
+touch: ..\%__SRC%\misc\sm.hid %_DEST%\bin%_EXT%\sm.hid
+..\%__SRC%\misc\sm.csv %_DEST%\inc%_EXT%\sm.csv
+..\%__SRC%\bin\smslots.tlb %_DEST%\bin%_EXT%\smslots.tlb
+..\%__SRC%\bin\sm%upd%*.dll %_DEST%\bin%_EXT%\sm%upd%*.dll
+..\%__SRC%\bin\sm%upd%*.res %_DEST%\bin%_EXT%\sm%upd%*.res
+..\%__SRC%\bin\sm%upd%*.sym %_DEST%\bin%_EXT%\sm%upd%*.sym
+dos: mkdir %_DEST%\inc\starmath
+
+hedabu: ..\inc\smdll.hxx %_DEST%\inc%_EXT%\starmath\smdll.hxx
+hedabu: ..\inc\smdll0.hxx %_DEST%\inc%_EXT%\starmath\smdll0.hxx
+hedabu: ..\inc\smmod.hxx %_DEST%\inc%_EXT%\starmath\smmod.hxx
+
diff --git a/starmath/sdi/makefile.mk b/starmath/sdi/makefile.mk
new file mode 100644
index 000000000000..968aa01b8709
--- /dev/null
+++ b/starmath/sdi/makefile.mk
@@ -0,0 +1,120 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:57:25 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=smath3
+TARGET=smslots
+SDIEXPORT=smnew
+SVSDIINC=$(PRJ)$/inc
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+# --- Files --------------------------------------------------------
+
+
+SDINAME=$(TARGET)
+
+SVSDIDEPEND= \
+ $(SOLARINCDIR)$/svxslots.ilb \
+ smnew.sdi \
+ smath.sdi \
+ smslots.sdi \
+ $(SVSDIINC)$/starmath.hrc
+
+SRCFILES= \
+ smslots.src
+
+# --- Targets -------------------------------------------------------
+
+.IF "$(depend)" == ""
+
+TLBLIST+=\
+ $(BIN)$/$(SDINAME).tlb
+
+ALL: \
+ ALLTAR \
+ $(TLBLIST)
+
+.ENDIF
+
+.INCLUDE : target.mk
+
+.IF "$(GUIBASE)$(VCL)"=="WIN"
+$(BIN)$/$(SDINAME).tlb: \
+ $(MISCX)$/$(SDINAME).odl
+ rscpp -I.;$(SVSDIINC);$(INC) -DSOLAR_VERSION=$(solar_version) $(MISC)$/$(SDINAME).odl $(MISC)$/$(SDINAME).odx
+.IF "$(GUI)"=="WIN"
+ wx /w /a mktyplib /nocpp /o $(MISC)$/$(SDINAME).err /tlb $(BIN)$/$(SDINAME).tlb $(MISC)$/$(SDINAME).odx
+.ELSE
+ mktyplib /win32 /nocpp /o $(MISC)$/$(SDINAME).err /tlb $(BIN)$/$(SDINAME).tlb $(MISC)$/$(SDINAME).odx
+.ENDIF
+ +type $(MISC)$/$(SDINAME).err
+.ELSE
+$(BIN)$/$(SDINAME).tlb:
+ @echo nix
+.ENDIF
+
diff --git a/starmath/sdi/smath.sdi b/starmath/sdi/smath.sdi
new file mode 100644
index 000000000000..be4e6bc82250
--- /dev/null
+++ b/starmath/sdi/smath.sdi
@@ -0,0 +1,881 @@
+//--------------------------------------------------------------------------
+SfxVoidItem NextMark SID_NEXTMARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SetPaperSize SID_GETEDITTEXT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_MATH;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PrevMark SID_PREVMARK
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem View50 SID_VIEW050
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Config SID_PREFERENCES
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem ModifyStatus SID_MODIFYSTATUS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem ConfigName SID_TEXT
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem InsertFormula SID_INSERT_FORMULA
+(SfxStringItem Name SID_INSERT_FORMULA,SfxStringItem Filter FN_PARAM_1)
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CopyObject SID_COPYOBJECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem ToolBox SID_TOOLBOX
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem NextError SID_NEXTERR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem CommandWindow SID_CMDBOXWINDOW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem View200 SID_VIEW200
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ZoomIn SID_ZOOMIN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem Textmode SID_TEXTMODE
+
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ToolBowWindow SID_TOOLBOXWINDOW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxStringItem TextStatus SID_TEXTSTATUS
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = TRUE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SymbolCatalogue SID_SYMBOLS_CATALOGUE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Symbols SID_SYMBOLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem View100 SID_VIEW100
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem RedrawAutomatic SID_AUTO_REDRAW
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PasteObject SID_PASTEOBJECT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_EDIT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangeFontSize SID_FONTSIZE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SymbolsLoad SID_SYMBOLS_LOAD
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem SaveSymbols SID_SAVESYMBOLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxInt16Item Graphic SID_GRAPHIC
+
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ Readonly = FALSE,
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_MATH;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangeFont SID_FONT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangeDistance SID_DISTANCE
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ZoomOut SID_ZOOMOUT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Draw SID_DRAW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertCommand SID_INSERTCOMMAND
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem InsertConfigName SID_INSERTTEXT
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_INSERT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem ChangeAlignment SID_ALIGN
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = TRUE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_FORMAT;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem LoadSymbols SID_LOADSYMBOLS
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Asynchron;
+
+ /* config: */
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = GID_OPTIONS;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem PrevError SID_PREVERR
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_NAVIGATOR;
+]
+
+//--------------------------------------------------------------------------
+SfxBoolItem FormelCursor SID_FORMULACURSOR
+()
+[
+ /* flags: */
+ AutoUpdate = TRUE,
+ Cachable = Cachable,
+ FastCall = TRUE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = TRUE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_MATH;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem FitInWindow SID_FITINWINDOW
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Cachable,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
+//--------------------------------------------------------------------------
+SfxVoidItem Adjust SID_ADJUST
+()
+[
+ /* flags: */
+ AutoUpdate = FALSE,
+ Cachable = Volatile,
+ FastCall = FALSE,
+ HasCoreId = FALSE,
+ HasDialog = FALSE,
+ ReadOnlyDoc = TRUE,
+ Toggle = FALSE,
+ Container = FALSE,
+ Synchron;
+
+ /* config: */
+ AccelConfig = TRUE,
+ MenuConfig = TRUE,
+ StatusBarConfig = FALSE,
+ ToolBoxConfig = TRUE,
+ GroupId = GID_VIEW;
+]
+
diff --git a/starmath/sdi/smslots.sdi b/starmath/sdi/smslots.sdi
new file mode 100644
index 000000000000..3ca9d366cb2f
--- /dev/null
+++ b/starmath/sdi/smslots.sdi
@@ -0,0 +1,505 @@
+/*************************************************************************
+#*
+#* $Workfile: SMSLOTS.SDI $
+#*
+#*
+#* Beschreibung Starmath IDL-File
+#*
+#* Letzte Aenderung $Author: hr $ $Date: 2000-09-18 16:57:26 $
+#* $Revision: 1.1.1.1 $
+#*
+#* $Logfile: T:/starmath/sdi/smslots.sdv $
+#*
+#* Copyright (c) 1989 - 1995, STAR DIVISION
+#*
+#*************************************************************************
+
+ Source Code Control System - Header
+
+ $Header: /zpool/svn/migration/cvs_rep_09_09_08/code/starmath/sdi/smslots.sdi,v 1.1.1.1 2000-09-18 16:57:26 hr Exp $
+
+*************************************************************************/
+
+
+
+import "svxslots.ilb"
+
+module
+"312C4240-35E7-101C-B12A-04021C007002"
+"58216740-35E7-101C-B12A-04021C007002"
+StarMath
+[
+ HelpText ( "StarMath Application" )
+ SlotIdFile ( "starmath.hrc" )
+ SlotIdFile ( "sfx2/sfxsids.hrc" )
+ SlotIdFile ( "svx/svxids.hrc" )
+ TypeLibFile ( "smslots.tlb" )
+]
+{
+ include "smnew.sdi"
+ include "smath.sdi"
+ interface StarMath : Module
+ [
+ uuid ( "92B0FD20-2FC1-11CF-89CA-008029E4B0B1" )
+ ]
+ {
+ SID_CONFIGEVENT //idlpp ole : no , status : no
+ [
+ StateMethod = GetState ;
+ Export = FALSE ;
+ ]
+}
+
+shell SmModule
+{
+ import StarMath[Automation];
+}
+
+interface FormulaDocument : OfficeDocument
+[
+ uuid ( "815CBB20-2FC3-11CF-89CA-008029E4B0B1" )
+]
+{
+ SID_DOCTEMPLATE //idlpp ole : no , status : no
+ [
+ StateMethod = GetState ;
+ Export = FALSE ;
+ ]
+ SID_SYMBOLS_CATALOGUE //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_SYMBOLS_LOAD //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_AUTO_REDRAW //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_TOOLBOX //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menuepunkt , also keine Texte
+ SID_LOADSYMBOLS //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menuepunkt , also keine Texte
+ SID_SAVESYMBOLS //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_INSERT_FORMULA //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE ;
+ ]
+ SID_FONT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_FONTSIZE //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_DISTANCE //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ALIGN //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_TEXTMODE //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_MODIFYSTATUS //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_TEXT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_GRAPHIC //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_COPYOBJECT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_PASTEOBJECT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+}
+
+shell SmDocShell : SfxObjectShell
+{
+ import FormulaDocument[Automation];
+}
+
+
+interface FormulaView : View
+[
+ uuid ( "CE1A6C00-2FC3-11CF-89CA-008029E4B0B1" )
+]
+{
+ SID_FORMULACURSOR
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_NEXTERR //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PREVERR //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_NEXTMARK //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_PREVMARK //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_VIEW050 //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_VIEW100 //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_VIEW200 //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ZOOMIN //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ZOOMOUT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_DRAW //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_ADJUST //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_FITINWINDOW //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ SID_CUT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile;
+ ]
+ SID_COPY //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile;
+ ]
+ SID_PASTE //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile;
+ ]
+ SID_DELETE //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Volatile;
+ ]
+ SID_SELECT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_INSERTCOMMAND //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_INSERTTEXT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_ATTR_ZOOM //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ Export = FALSE ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_TEXTSTATUS //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_GETEDITTEXT //idlpp ole : no , status : no
+ [
+ ExecMethod = Execute ;
+ StateMethod = GetState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_CMDBOXWINDOW //idlpp ole : no , status : no
+ [
+ ExecMethod = NoExec ;
+ StateMethod = NoState ;
+ ]
+ //idlpp kein Menueeintrag , also keine Texte
+ SID_TOOLBOXWINDOW //idlpp ole : no , status : no
+ [
+ ExecMethod = NoExec ;
+ StateMethod = NoState ;
+ ]
+}
+
+shell SmViewShell : SfxViewShell
+{
+ import FormulaView[Automation];
+}
+
+}
+
+/*************************************************************************
+
+ Source Code Control System - History
+
+ $Log: not supported by cvs2svn $
+ Revision 1.61 1999/07/02 10:22:24 TL
+ #67357# SID_MARKERROR deleted.
+
+
+ Rev 1.60 02 Jul 1999 12:22:24 TL
+ #67357# SID_MARKERROR deleted.
+
+ Rev 1.59 29 Jun 1999 13:23:38 TL
+ #67233# SID_INSERTDOC in SID_INSERT_FORMULA umbenannt.
+
+ Rev 1.58 23 Mar 1999 12:32:00 MA
+ #63806# ConfigName nur noch in der Resource
+
+ Rev 1.57 17 Mar 1999 15:54:14 MBA
+ #63611#: kein HelpTexte/ConfigNames mehr
+
+ Rev 1.56 17 Feb 1999 15:52:44 OS
+ #61890# Methoden fuer alte Optionsdialoge geloescht
+
+ Rev 1.55 23 Nov 1998 16:02:16 TL
+ Task #58286#: Neuer Slot fuer Textmodus
+
+ Rev 1.54 12 Nov 1998 15:53:32 MA
+ Task #58163#: Slot SDI_FORMULACURSOR neu. (pz von TL gemacht)
+
+ Rev 1.53 02 Oct 1998 19:43:10 MA
+ #57466# RELOAD hat hier nichts zu suchen
+
+ Rev 1.52 22 Jul 1998 12:49:08 MA
+ #53584# Clipboard-Slots mussen volatile sein
+
+ Rev 1.51 07 Jul 1998 15:48:02 MH
+ verlorende header wieder eingesammelt
+
+ Rev 1.50 22 Apr 1998 16:39:24 MA
+ diverse Fixes, komplette Umstellung inplace-Verhalten
+
+ Rev 1.49 09 Mar 1998 19:34:32 RG
+ idl -> sdi
+
+ Rev 1.48 04 Sep 1997 13:34:40 MBA
+ Document von OfficeDocument abgeleitet
+
+ Rev 1.47 03 Sep 1997 16:50:30 MBA
+ Neue Interface-Namen
+
+ Rev 1.46 02 Sep 1997 16:51:50 MBA
+ StarMath von Module abgeleitet
+
+ Rev 1.45 28 Aug 1997 12:32:10 MBA
+ Neue Interface-Namen
+
+ Rev 1.44 27 Jan 1997 18:42:22 MBA
+ [Automation] fehlte beim Import
+
+ Rev 1.43 20 Dec 1996 17:44:52 RB
+ Optionen in Modul verschoben
+
+ Rev 1.42 19 Dec 1996 08:48:16 TRI
+ SID_LASTVERSIONDOC -> SID_RELOAD
+
+ Rev 1.41 11 Dec 1996 12:41:40 TRI
+ kein ofa.ibl benutzen
+
+ Rev 1.40 10 Dec 1996 15:03:56 RB
+ Neuer Name
+
+ Rev 1.39 09 Dec 1996 12:09:44 SOH
+ * OptionsDialogSlot -> SID_SM_EDITOPTIONS
+
+ Rev 1.38 12 Nov 1996 14:30:30 RB
+ Umstellung auf neues DLL-Handling
+
+ Rev 1.37 05 Nov 1996 15:18:10 NF
+ ofa.ilb raus, svxslots rein ...
+
+ Rev 1.36 23 Oct 1996 12:44:22 SOH
+ + include smnew.idl
+
+ Rev 1.35 22 Oct 1996 21:39:16 HJS
+ merge 22.10.96
+
+ Rev 1.34 07 Oct 1996 14:49:18 HJS
+ merge 07.10.96
+
+ Rev 1.33 19 Sep 1996 19:25:38 MBA
+ Syntaxfehler
+
+ Rev 1.32 19 Sep 1996 19:06:14 MBA
+ Anpassung
+
+ Rev 1.31 25 Jul 1996 12:30:34 RB
+ Slot SID_GETEDITTEXT
+
+ Rev 1.30 21 Jun 1996 12:30:28 RB
+ Muss-Umstellungen idlpp
+
+ Rev 1.29 04 Apr 1996 14:38:58 RB
+ Container weg Fensterslots (#26769#)
+
+ Rev 1.28 03 Apr 1996 16:08:38 RB
+ Slots fuer Kommando- und Toolboxfenster
+
+ Rev 1.27 06 Dec 1995 15:47:28 RB
+ uuids verteilt und neue syntax, SID_LASTVERSIONDOC neu
+
+ Rev 1.26 27 Nov 1995 17:26:36 RB
+ include beseitigt
+
+ Rev 1.25 27 Nov 1995 15:02:18 RB
+ initial revision
+
+ Rev 1.24 24 Nov 1995 18:59:18 RB
+ ExecNo beseitigt
+
+ Rev 1.23 24 Nov 1995 14:14:50 RB
+ Export=FALSE und Comments
+
+ Rev 1.22 24 Nov 1995 13:42:56 RB
+ Anpassungen an neue Syntax
+
+ Rev 1.21 24 Nov 1995 12:03:54 RB
+ etwas aufgeraeumt
+
+ Rev 1.20 22 Nov 1995 17:54:54 RB
+ SID_DOCTEMPLATE neu
+
+ Rev 1.19 17 Nov 1995 18:09:20 RB
+ SID_DOCINFO vorbereitet
+
+ Rev 1.18 16 Nov 1995 14:02:26 RB
+ SID_CONFIGEVENT
+
+ Rev 1.17 13 Nov 1995 17:45:58 RB
+ ???
+
+ Rev 1.16 09 Nov 1995 18:02:38 RB
+ SID_ATTR_ZOOM wieder verfuegbar
+
+ Rev 1.15 02 Nov 1995 17:55:18 RB
+ SID_ATTR_ZOOM beseitigt
+
+ Rev 1.14 01 Nov 1995 18:30:00 RB
+ SID_TEXT... wieder verfuegbar
+
+ Rev 1.13 15 Oct 1995 16:19:42 RB
+ Umlaute
+
+ Rev 1.12 12 Oct 1995 12:49:22 RB
+
+ Rev 1.11 07 Oct 1995 15:14:02 RB
+ HelpText und ConfigName eingetragen
+
+ Rev 1.10 04 Oct 1995 18:39:50 RB
+ GID_ geaendert und //idlpp HelpText//idlpp/ ConfigName
+
+ Rev 1.9 03 Oct 1995 15:55:54 RB
+ SID_DOCINFO ueberladen rueckgaengig
+
+ Rev 1.8 29 Sep 1995 13:42:18 RB
+ slots configurierbar (bugfix 15993)
+
+ Rev 1.7 08 Sep 1995 09:01:46 RB
+ SID_DOCINFO ueberladen
+
+ Rev 1.6 12 Aug 1995 12:28:28 TRI
+
+ Rev 1.5 10 Jul 1995 09:15:56 TRI
+ RH Aenderung
+
+ Rev 1.4 06 Jul 1995 01:47:06 MH
+ CutCopyPaste-Fehler beseitigt
+
+ Rev 1.3 19 Jun 1995 08:55:30 TRI
+ Revisions-Nr
+
+
+*************************************************************************/
+
+
diff --git a/starmath/sdi/svxitems.sdi b/starmath/sdi/svxitems.sdi
new file mode 100644
index 000000000000..06cc471bfd29
--- /dev/null
+++ b/starmath/sdi/svxitems.sdi
@@ -0,0 +1,570 @@
+
+//-------------------------------------------------------------------------
+
+enum SvxAdjust
+{
+ SVX_ADJUST_LEFT,
+ SVX_ADJUST_RIGHT,
+ SVX_ADJUST_BLOCK,
+ SVX_ADJUST_CENTER,
+ SVX_ADJUST_BLOCKLINE,
+ SVX_ADJUST_END
+};
+item SvxAdjust SvxAdjustItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxCaseMap
+{
+ SVX_CASEMAP_NOT_MAPPED,
+ SVX_CASEMAP_VERSALIEN,
+ SVX_CASEMAP_GEMEINE,
+ SVX_CASEMAP_TITEL,
+ SVX_CASEMAP_KAPITAELCHEN,
+ SVX_CASEMAP_END
+};
+item SvxCaseMap SvxCaseMapItem;
+
+//-------------------------------------------------------------------------
+
+enum CharSet
+{
+ CHARSET_DONTKNOW,
+ CHARSET_ANSI,
+ CHARSET_MAC,
+ CHARSET_IBMPC_437,
+ CHARSET_IBMPC_850,
+ CHARSET_IBMPC_860,
+ CHARSET_IBMPC_861,
+ CHARSET_IBMPC_863,
+ CHARSET_IBMPC_865,
+ CHARSET_SYSTEM,
+ CHARSET_SYMBOL
+};
+item CharSet CharSetItem;
+
+//-------------------------------------------------------------------------
+
+enum FontFamily
+{
+ FAMILY_DONTKNOW,
+ FAMILY_DECORATIVE,
+ FAMILY_MODERN,
+ FAMILY_ROMAN,
+ FAMILY_SCRIPT,
+ FAMILY_SWISS,
+ FAMILY_SYSTEM
+};
+item FontFamily FontFamilyItem;
+
+//-------------------------------------------------------------------------
+
+enum FontPitch
+{
+ PITCH_DONTKNOW,
+ PITCH_FIXED,
+ PITCH_VARIABLE
+};
+item FontPitch FontPitchItem;
+
+//-------------------------------------------------------------------------
+
+enum FontAlign
+{
+ ALIGN_TOP,
+ ALIGN_BASELINE,
+ ALIGN_BOTTOM
+};
+item FontAlign FontAlignItem;
+
+//-------------------------------------------------------------------------
+
+enum FontWeight
+{
+ WEIGHT_DONTKNOW,
+ WEIGHT_THIN,
+ WEIGHT_ULTRALIGHT,
+ WEIGHT_LIGHT,
+ WEIGHT_SEMILIGHT,
+ WEIGHT_NORMAL,
+ WEIGHT_MEDIUM,
+ WEIGHT_SEMIBOLD,
+ WEIGHT_BOLD,
+ WEIGHT_ULTRABOLD,
+ WEIGHT_BLACK
+};
+item FontWeight FontWeightItem;
+
+//-------------------------------------------------------------------------
+
+enum FontUnderline
+{
+ UNDERLINE_NONE,
+ UNDERLINE_SINGLE,
+ UNDERLINE_DOUBLE,
+ UNDERLINE_DOTTED
+};
+item FontUnderline FontUnderlineItem;
+
+//-------------------------------------------------------------------------
+
+enum FontStrikeout
+{
+ STRIKEOUT_NONE,
+ STRIKEOUT_SINGLE,
+ STRIKEOUT_DOUBLE
+};
+item FontStrikeout FontStrikeoutItem;
+
+//-------------------------------------------------------------------------
+
+enum FontItalic
+{
+ ITALIC_NONE,
+ ITALIC_OBLIQUE,
+ ITALIC_NORMAL
+};
+item FontItalic FontItalicItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxDbType
+{
+ DBTYPE_STARBASE,
+ DBTYPE_ODBC,
+ DBTYPE_WATCOM
+};
+item SvxDbType SvxDbTypeItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxLineSpace
+{
+ SVX_LINE_SPACE_AUTO,
+ SVX_LINE_SPACE_MAX,
+ SVX_LINE_SPACE_MIN,
+ SVX_LINE_SPACE_END
+};
+item SvxLineSpace SvxLineSpaceItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxInterLineSpace
+{
+ SVX_INTER_LINE_SPACE_OFF,
+ SVX_INTER_LINE_SPACE_PROP,
+ SVX_INTER_LINE_SPACE_FIX,
+ SVX_INTER_LINE_SPACE_END
+};
+item SvxInterLineSpace SvxInterLineSpaceItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxBreak
+{
+ SVX_BREAK_NONE,
+ SVX_BREAK_COLUMN_BEFORE,
+ SVX_BREAK_COLUMN_AFTER,
+ SVX_BREAK_COLUMN_BOTH,
+ SVX_BREAK_PAGE_BEFORE,
+ SVX_BREAK_PAGE_AFTER,
+ SVX_BREAK_PAGE_BOTH,
+ SVX_BREAK_END
+};
+item SvxBreak SvxBreakItem;
+
+//-------------------------------------------------------------------------
+
+enum BrushStyle
+{
+ BRUSH_NULL,
+ BRUSH_SOLID,
+ BRUSH_HORZ,
+ BRUSH_VERT,
+ BRUSH_CROSS,
+ BRUSH_DIAGCROSS,
+ BRUSH_UPDIAG,
+ BRUSH_DOWNDIAG,
+ BRUSH_25,
+ BRUSH_50,
+ BRUSH_75,
+ BRUSH_BITMAP
+};
+item BrushStyle BrushStyleItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxNumType
+{
+ SVX_CHARS_UPPER_LETTER,
+ SVX_CHARS_LOWER_LETTER,
+ SVX_ROMAN_UPPER,
+ SVX_ROMAN_LOWER,
+ SVX_ARABIC,
+ SVX_NUMBER_NONE,
+ SVX_CHAR_SPECIAL,
+ SVX_PAGEDESC
+};
+item SvxNumType SvxNumTypeItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxShadowLocation
+{
+ SVX_SHADOW_NONE,
+ SVX_SHADOW_TOPLEFT,
+ SVX_SHADOW_TOPRIGHT,
+ SVX_SHADOW_BOTTOMLEFT,
+ SVX_SHADOW_BOTTOMRIGHT,
+ SVX_SHADOW_END
+};
+item SvxShadowLocation SvxShadowLocationItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxBrush
+{
+ BrushStyle Style MID_BRUSHSTYLE;
+ BOOL Transparent MID_TRANSPARENT;
+ UINT32 BackColor MID_BG_COLOR;
+ UINT32 FillColor MID_FG_COLOR;
+};
+item SvxBrush SvxBrushItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxCharSetColor
+{
+ CharSet CharSet MID_CHARSET;
+ UINT32 Color MID_FG_COLOR;
+};
+item SvxCharSetColor SvxCharSetColorItem;
+
+//-------------------------------------------------------------------------
+
+item BOOL SvxAutoKernItem;
+item UINT32 SvxColorItem;
+item BOOL SvxContourItem;
+item FontStrikeout SvxCrossedOutItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxEscapement
+{
+ INT16 Esc MID_ESCAPEMENT;
+ BYTE Prop MID_PROPORTIONAL;
+};
+item SvxEscapement SvxEscapementItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxFmtBreak
+{
+ BOOL Auto MID_AUTOBREAK;
+ UINT16 Break MID_BREAKxxx;
+}
+item SvxFmtBreak SvxFmtBreakItem;
+
+//-------------------------------------------------------------------------
+
+item BOOL SvxFmtKeepItem;
+item BOOL SvxFmtSplitItem;
+
+struct SvxFontHeight
+{
+ UINT32 Height MID_HEIGHT;
+ BYTE Prop MID_PROPORTIONAL;
+};
+item SvxFontHeight SvxFontHeightItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxFont
+{
+ String StyleName MID_FONTSTYLE;
+ FontPitch Pitch MID_FONTPICTH;
+ CharSet CharSet MID_CHARSET;
+ FontFamily Family MID_FONTFAMILY;
+ String FamilyName MID_FONTFAMILYNAME;
+};
+item SvxFont SvxFontItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxHyphenZone
+{
+ BOOL Hyphen MID_HYPHEN;
+ BOOL PageEnd MID_PAGEEND;
+ BYTE MinLead MID_MINLEAD;
+ BYTE MinTrail MID_MINTRAIL;
+ BYTE MaxHyphens MID_MAXHYPHENS;
+};
+item SvxHyphenZone SvxHyphenZoneItem;
+
+//-------------------------------------------------------------------------
+
+item INT16 SvxKerningItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxLine
+{
+ UINT32 Color MID_FG_COLOR;
+ UINT16 OutWidth MID_OUTER_WIDTH;
+ UINT16 InWidth MID_INNER_WIDTH;
+ UINT16 Distance MID_DISTANCE;
+};
+item SvxLine SvxLineItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxLRSpace
+{
+ INT16 FirstLineOffset MID_FIRSTLINE_OFFSET; // % or direct
+ UINT16 LeftMargin MID_LEFT_MARGIN; // % or direct
+ UINT16 RightMargin MID_RIGHT_MARGIN; // % or direct
+};
+item SvxLRSpace SvxLRSpaceItem;
+
+//-------------------------------------------------------------------------
+
+item UINT16 SvxLanguage;
+
+struct SvxLineSpacing
+{
+ SvxLineSpace LineSpace MID_LINESPACE;
+ UINT16 LineHeight MID_HEIGHT; // % or direct
+ SvxInterLineSpace InterLineSpace MID_INTER_LINESPACE;
+ INT16 InterSpace MID_INTER_SPACE;
+};
+item SvxLineSpacing SvxLineSpacingItem;
+
+//-------------------------------------------------------------------------
+
+item BOOL SvxNoHyphenItem;
+item BOOL SvxNoLinebreakItem;
+item BOOL SvxOpaqueItem;
+item BYTE SvxOrphansItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxPage
+{
+ String DescName MID_DESCNAMExxx;
+ BOOL Landscape MID_LANDSCAPE;
+ UINT16 Use MID_USExxx;
+ SvxNumType NumType MID_NUMTYPExxx;
+};
+item SvxPage SvxPageItem;
+
+//-------------------------------------------------------------------------
+
+item String SvxPageModelItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxPagePosSize
+{
+ INT32 XPos MID_X;
+ INT32 YPos MID_Y;
+ INT32 Width MID_WIDTH;
+ INT32 Height MID_HEIGHT;
+};
+item SvxPagePosSize SvxPagePosSizeItem;
+
+//-------------------------------------------------------------------------
+
+item BYTE SvxPaperBinItem;
+
+//-------------------------------------------------------------------------
+
+item String SvxPostItAuthorItem;
+item String SvxPostItDateItem;
+item String SvxPostItTextItem;
+item FontItalic SvxPostureItem;
+item BOOL SvxPrintItem;
+item UINT16 SvxPropSizeItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxProtect
+{
+ BOOL Content MID_CONTENT;
+ BOOL Pos MID_POS;
+ BOOL Size MID_SIZE;
+};
+item SvxProtect SvxProtectItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxSearch
+{
+ UINT16 Command MID_COMMAND;
+ String SearchString MID_SEARCH_STRING;
+ String ReplaceString MID_REPLACE_STRING;
+ // W)ord, E)xact, B)ack, S)election, R)egExpr, P)attern
+ String Flags MID_FLAGS;
+ UINT16 Family MID_FAMILY;
+ UINT16 CellType MID_CELLTYPE;
+ BOOL RowDirection MID_ROW_DIRECTION;
+ UINT16 AppFlag MID_APPFLAG;
+};
+item SvxSearch SvxSearchItem;
+
+//-------------------------------------------------------------------------
+
+item BOOL SvxShadowedItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxShadow
+{
+ SvxShadowLocation Location MID_LOCATION;
+ UINT16 Width MID_WIDTH;
+ BrushStyle Style MID_BRUSHSTYLE;
+ BOOL Transparent MID_TRANSPARENT;
+ UINT32 BackColor MID_BG_COLOR;
+ UINT32 FillColor MID_FG_COLOR;
+};
+item SvxShadow SvxShadowItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxSize
+{
+ UINT32 Width MID_WIDTH;
+ UINT32 Height MID_HEIGHT;
+};
+item SvxSize SvxSizeItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxULSpace
+{
+ UINT16 Upper MID_UPPER; // % or direct
+ UINT16 Lower MID_LOWER; // % or direct
+};
+item SvxULSpace SvxULSpaceItem
+
+//-------------------------------------------------------------------------
+
+enum SvxChooseControlEnum
+{
+ SVX_SNAP_PUSHBUTTON,
+ SVX_SNAP_CHECKBOX,
+ SVX_SNAP_RADIOBUTTON,
+ SVX_SNAP_SPINBUTTON,
+ SVX_SNAP_FIXEDTEXT,
+ SVX_SNAP_GROUPBOX,
+ SVX_SNAP_LISTBOX,
+ SVX_SNAP_COMBOBOX,
+ SVX_SNAP_EDIT,
+ SVX_SNAP_HSCROLLBAR,
+ SVX_SNAP_VSCROLLBAR,
+ SVX_SNAP_PREVIEW,
+ SVX_SNAP_SELECT,
+ SVX_SNAP_NOTHING
+}
+item SvxChooseControlEnum SvxChooseControlEnumItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxDrawToolEnum
+{
+ SVX_SNAP_DRAW_SELECT,
+ //
+ SVX_SNAP_DRAW_LINE,
+ SVX_SNAP_DRAW_RECT,
+ SVX_SNAP_DRAW_ELLIPSE,
+ SVX_SNAP_DRAW_POLYGON,
+ SVX_SNAP_DRAW_ARC,
+ SVX_SNAP_DRAW_PIE,
+ SVX_SNAP_DRAW_CIRCLECUT,
+ SVX_SNAP_DRAW_TEXT,
+ SVX_SNAP_DRAW_CAPTION,
+ SVX_SNAP_DRAW_NOTHING
+}
+item SvxDrawToolEnum SvxDrawToolEnumItem;
+
+//-------------------------------------------------------------------------
+
+item SvxChooseControlEnum SvxChooseControlItem;
+item SvxDrawToolEnum SvxDrawToolItem;
+item FontUnderline SvxUnderlineItem;
+item FontWeight SvxWeightItem;
+item BYTE SvxWidowsItem;
+item BOOL SvxWordLineModeItem;
+item String SvxBoxItem; //! Dummy
+
+//-------------------------------------------------------------------------
+
+enum SvxCellHorJustifyEnum
+{
+ SVX_HOR_JUSTIFY_STANDARD,
+ SVX_HOR_JUSTIFY_LEFT,
+ SVX_HOR_JUSTIFY_CENTER,
+ SVX_HOR_JUSTIFY_RIGHT,
+ SVX_HOR_JUSTIFY_BLOCK,
+ SVX_HOR_JUSTIFY_REPEAT
+};
+item SvxCellHorJustifyEnum SvxCellHorJustifyEnumItem;
+
+enum SvxCellVerJustifyEnum
+{
+ SVX_VER_JUSTIFY_STANDARD,
+ SVX_VER_JUSTIFY_TOP,
+ SVX_VER_JUSTIFY_CENTER,
+ SVX_VER_JUSTIFY_BOTTOM
+};
+item SvxCellVerJustifyEnum SvxCellVerJustifyEnumItem;
+
+//-------------------------------------------------------------------------
+
+enum SvxCellOrientationEnum
+{
+ SVX_ORIENTATION_STANDARD,
+ SVX_ORIENTATION_TOPBOTTOM,
+ SVX_ORIENTATION_BOTTOMTOP,
+ SVX_ORIENTATION_STACKED
+};
+item SvxCellOrientationEnum SvxCellOrientationEnumItem;
+
+//-------------------------------------------------------------------------
+
+item SvxCellHorJustifyEnum SvxHorJustifyItem;
+item SvxCellVerJustifyEnum SvxVerJustifyItem;
+item SvxCellOrientationEnum SvxOrientationItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxLongLRSpace
+{
+ INT32 Left MID_LEFT;
+ INT32 Right MID_RIGHT;
+};
+item SvxLongLRSpace SvxLongLRSpaceItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxLongULSpace
+{
+ INT32 Upper MID_UPPER;
+ INT32 Lower MID_LOWER;
+};
+item SvxLongULSpace SvxLongULSpaceItem;
+
+//-------------------------------------------------------------------------
+
+struct SvxZoom
+{
+ INT32 Type MID_TYPE;
+ UINT16 ValueSet MID_VALUESET;
+ INT32 Percent MID_PERCENT;
+};
+item SvxZoom SvxZoomItem;
+
+//-------------------------------------------------------------------------
+
+item SbxObject SvxTabStopItem;
+
+
diff --git a/starmath/source/action.cxx b/starmath/source/action.cxx
new file mode 100644
index 000000000000..15b052264e66
--- /dev/null
+++ b/starmath/source/action.cxx
@@ -0,0 +1,128 @@
+/*************************************************************************
+ *
+ * $RCSfile: action.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#include "action.hxx"
+#include "smdll.hxx"
+#include "document.hxx"
+#include "starmath.hrc"
+
+SmEditAction::SmEditAction(SmDocShell *pDocSh,
+ const String& rOldText,
+ const String& rNewText) :
+ pDoc( pDocSh ),
+ aOldText( rOldText ),
+ aNewText( rNewText )
+{
+}
+
+void SmEditAction::Undo()
+{
+ pDoc->SetText(aOldText);
+}
+
+void SmEditAction::Redo()
+{
+ pDoc->SetText(aNewText);
+}
+
+void SmEditAction::Repeat(SmDocShell *pDocSh)
+{
+ pDocSh->SetText(aNewText);
+}
+
+String SmEditAction::GetComment() const
+{
+ return (SmResId(RID_UNDOEDITNAME));
+}
+
+
+SmFormatAction::SmFormatAction(SmDocShell *pDocSh,
+ const SmFormat& rOldFormat,
+ const SmFormat& rNewFormat) :
+ pDoc( pDocSh ),
+ aOldFormat( rOldFormat ),
+ aNewFormat( rNewFormat )
+{
+}
+
+void SmFormatAction::Undo()
+{
+ pDoc->SetFormat(aOldFormat);
+}
+
+void SmFormatAction::Redo()
+{
+ pDoc->SetFormat(aNewFormat);
+}
+
+void SmFormatAction::Repeat(SmDocShell *pDocSh)
+{
+ pDocSh->SetFormat(aNewFormat);
+}
+
+String SmFormatAction::GetComment() const
+{
+ return (SmResId(RID_UNDOFORMATNAME));
+}
+
+
diff --git a/starmath/source/commands.src b/starmath/source/commands.src
new file mode 100644
index 000000000000..5482aef9e103
--- /dev/null
+++ b/starmath/source/commands.src
@@ -0,0 +1,2714 @@
+/*************************************************************************
+ *
+ * $RCSfile: commands.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+#include <sfx2/sfx.hrc>
+#include "starmath.hrc"
+
+
+////////////////////////////////////////////////////////////
+//
+// XPolyPolygon data for some characters from StarMath font
+//
+
+Resource RID_XPP_LINE
+{
+ ExtraData =
+ {
+// Zeichen: 0x73 Font: StarMath
+ 29457; 512; 76; 768; 146; 0; 59; 0;
+ 44; 0; 83; 768; 1; 5; 146; 0;
+ 141; 768; 146; 0; 59; 0; 189; 0;
+ 59; 0; 189; 0; 141; 768; 146; 0;
+ 141; 768; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x73 Font: StarMath
+ "\x73\x11\x02\x00\x00\x4C\x03\x00\x00\x92\x00\x00\x00\x3B\x00\x00"
+ "\x00\x2C\x00\x00\x00\x53\x03\x00\x00\x01\x00\x05\x00\x92\x00\x00"
+ "\x00\x8D\x03\x00\x00\x92\x00\x00\x00\x3B\x00\x00\x00\xBD\x00\x00"
+ "\x00\x3B\x00\x00\x00\xBD\x00\x00\x00\x8D\x03\x00\x00\x92\x00\x00"
+ "\x00\x8D\x03\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_DLINE
+{
+ ExtraData =
+ {
+// Zeichen: 0x74 Font: StarMath
+ 29713; 512; 76; 768; 136; 0; 59; 0;
+ 214; 0; 78; 768; 2; 5; 51; 256;
+ 136; 768; 51; 256; 59; 0; 93; 256;
+ 59; 0; 93; 256; 136; 768; 51; 256;
+ 136; 768; 0; 0; 0; 1280; -30720; 0;
+-30717; 0; -30720; 0; 15104; 0; -19968; 0;
+ 15104; 0; -19968; 0; -30717; 0; -30720; 0;
+-30717; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x74 Font: StarMath
+ "\x74\x11\x02\x00\x00\x4C\x03\x00\x00\x88\x00\x00\x00\x3B\x00\x00"
+ "\x00\xD6\x00\x00\x00\x4E\x03\x00\x00\x02\x00\x05\x00\x33\x01\x00"
+ "\x00\x88\x03\x00\x00\x33\x01\x00\x00\x3B\x00\x00\x00\x5D\x01\x00"
+ "\x00\x3B\x00\x00\x00\x5D\x01\x00\x00\x88\x03\x00\x00\x33\x01\x00"
+ "\x00\x88\x03\x00\x00\x00\x00\x00\x00\x00\x05\x00\x88\x00\x00\x00"
+ "\x88\x03\x00\x00\x88\x00\x00\x00\x3B\x00\x00\x00\xB2\x00\x00\x00"
+ "\x3B\x00\x00\x00\xB2\x00\x00\x00\x88\x03\x00\x00\x88\x00\x00\x00"
+ "\x88\x03\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_SQRT
+{
+ ExtraData =
+ {
+// Zeichen: 0x87 Font: StarMath
+-30959; 512; 76; 768; 26; 0; 48; 0;
+ 184; 256; 170; 512; 1; 10; 2; 256;
+ 217; 512; 97; 0; 184; 256; 37; 0;
+ 208; 256; 26; 0; 196; 256; 131; 0;
+ 155; 256; 15; 256; 153; 512; 189; 256;
+ 48; 0; 209; 256; 48; 0; 22; 256;
+ 217; 512; 2; 256; 217; 512; 0; 0;
+ 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x87 Font: StarMath
+ "\x87\x11\x02\x00\x00\x4C\x03\x00\x00\x1A\x00\x00\x00\x30\x00\x00"
+ "\x00\xB8\x01\x00\x00\xAA\x02\x00\x00\x01\x00\x0A\x00\x02\x01\x00"
+ "\x00\xD9\x02\x00\x00\x61\x00\x00\x00\xB8\x01\x00\x00\x25\x00\x00"
+ "\x00\xD0\x01\x00\x00\x1A\x00\x00\x00\xC4\x01\x00\x00\x83\x00\x00"
+ "\x00\x9B\x01\x00\x00\x0F\x01\x00\x00\x99\x02\x00\x00\xBD\x01\x00"
+ "\x00\x30\x00\x00\x00\xD1\x01\x00\x00\x30\x00\x00\x00\x16\x01\x00"
+ "\x00\xD9\x02\x00\x00\x02\x01\x00\x00\xD9\x02\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_SQRT2
+{
+ ExtraData =
+ {
+// Zeichen: 0x89 Font: StarMath
+-30447; 512; 76; 768; 26; 0; 48; 0;
+ 218; 0; 170; 512; 1; 10; 227; 0;
+ 217; 512; 74; 0; 203; 256; 35; 0;
+ 225; 256; 26; 0; 213; 256; 91; 0;
+ 176; 256; 229; 0; 156; 512; 227; 0;
+ 48; 0; 243; 0; 48; 0; 243; 0;
+ 217; 512; 227; 0; 217; 512; 0; 0;
+ 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x89 Font: StarMath
+ "\x89\x11\x02\x00\x00\x4C\x03\x00\x00\x1A\x00\x00\x00\x30\x00\x00"
+ "\x00\xDA\x00\x00\x00\xAA\x02\x00\x00\x01\x00\x0A\x00\xE3\x00\x00"
+ "\x00\xD9\x02\x00\x00\x4A\x00\x00\x00\xCB\x01\x00\x00\x23\x00\x00"
+ "\x00\xE1\x01\x00\x00\x1A\x00\x00\x00\xD5\x01\x00\x00\x5B\x00\x00"
+ "\x00\xB0\x01\x00\x00\xE5\x00\x00\x00\x9C\x02\x00\x00\xE3\x00\x00"
+ "\x00\x30\x00\x00\x00\xF3\x00\x00\x00\x30\x00\x00\x00\xF3\x00\x00"
+ "\x00\xD9\x02\x00\x00\xE3\x00\x00\x00\xD9\x02\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_HAT
+{
+ ExtraData =
+ {
+// Zeichen: 0x90 Font: StarMath
+-28655; 512; 76; 768; 13; 0; 113; 0;
+ 7; 256; 161; 0; 1; 7; 19; 256;
+ 12; 256; 3; 256; 14; 256; 148; 0;
+ 182; 0; 32; 0; 17; 256; 13; 0;
+ 12; 256; 150; 0; 113; 0; 19; 256;
+ 12; 256; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x90 Font: StarMath
+ "\x90\x11\x02\x00\x00\x4C\x03\x00\x00\x0D\x00\x00\x00\x71\x00\x00"
+ "\x00\x07\x01\x00\x00\xA1\x00\x00\x00\x01\x00\x07\x00\x13\x01\x00"
+ "\x00\x0C\x01\x00\x00\x03\x01\x00\x00\x0E\x01\x00\x00\x94\x00\x00"
+ "\x00\xB6\x00\x00\x00\x20\x00\x00\x00\x11\x01\x00\x00\x0D\x00\x00"
+ "\x00\x0C\x01\x00\x00\x96\x00\x00\x00\x71\x00\x00\x00\x13\x01\x00"
+ "\x00\x0C\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_TILDE
+{
+ ExtraData =
+ {
+// Zeichen: 0x95 Font: StarMath
+-27375; 512; 76; 768; 8; 0; 119; 0;
+ 8; 256; 109; 0; 1; 26; 21; 0;
+ 227; 0; 8; 0; 227; 0; 11; 0;
+ 157; 0; 37; 0; 119; 0; 86; 0;
+ 119; 0; 97; 0; 119; 0; 141; 0;
+ 140; 0; 219; 0; 177; 0; 238; 0;
+ 177; 0; 251; 0; 158; 0; 3; 256;
+ 119; 0; 15; 256; 119; 0; 15; 256;
+ 124; 0; 15; 256; 151; 0; 9; 256;
+ 175; 0; 253; 0; 194; 0; 238; 0;
+ 217; 0; 217; 0; 227; 0; 194; 0;
+ 227; 0; 177; 0; 227; 0; 131; 0;
+ 209; 0; 60; 0; 168; 0; 42; 0;
+ 168; 0; 28; 0; 189; 0; 21; 0;
+ 227; 0; 21; 0; 227; 0; 0; 2;
+ 512; 514; 2; 512; 0; 514; 2; 512;
+ 514; 2; 512; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x95 Font: StarMath
+ "\x95\x11\x02\x00\x00\x4C\x03\x00\x00\x08\x00\x00\x00\x77\x00\x00"
+ "\x00\x08\x01\x00\x00\x6D\x00\x00\x00\x01\x00\x1A\x00\x15\x00\x00"
+ "\x00\xE3\x00\x00\x00\x08\x00\x00\x00\xE3\x00\x00\x00\x0B\x00\x00"
+ "\x00\x9D\x00\x00\x00\x25\x00\x00\x00\x77\x00\x00\x00\x56\x00\x00"
+ "\x00\x77\x00\x00\x00\x61\x00\x00\x00\x77\x00\x00\x00\x8D\x00\x00"
+ "\x00\x8C\x00\x00\x00\xDB\x00\x00\x00\xB1\x00\x00\x00\xEE\x00\x00"
+ "\x00\xB1\x00\x00\x00\xFB\x00\x00\x00\x9E\x00\x00\x00\x03\x01\x00"
+ "\x00\x77\x00\x00\x00\x0F\x01\x00\x00\x77\x00\x00\x00\x0F\x01\x00"
+ "\x00\x7C\x00\x00\x00\x0F\x01\x00\x00\x97\x00\x00\x00\x09\x01\x00"
+ "\x00\xAF\x00\x00\x00\xFD\x00\x00\x00\xC2\x00\x00\x00\xEE\x00\x00"
+ "\x00\xD9\x00\x00\x00\xD9\x00\x00\x00\xE3\x00\x00\x00\xC2\x00\x00"
+ "\x00\xE3\x00\x00\x00\xB1\x00\x00\x00\xE3\x00\x00\x00\x83\x00\x00"
+ "\x00\xD1\x00\x00\x00\x3C\x00\x00\x00\xA8\x00\x00\x00\x2A\x00\x00"
+ "\x00\xA8\x00\x00\x00\x1C\x00\x00\x00\xBD\x00\x00\x00\x15\x00\x00"
+ "\x00\xE3\x00\x00\x00\x15\x00\x00\x00\xE3\x00\x00\x00\x00\x00\x02"
+ "\x02\x00\x02\x02\x00\x02\x02\x00\x00\x00\x02\x02\x00\x02\x02\x00"
+ "\x02\x02\x00\x02\x02\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_BAR
+{
+ ExtraData =
+ {
+// Zeichen: 0x96 Font: StarMath
+-27119; 512; 76; 768; 42; 0; 146; 0;
+ 87; 256; 33; 0; 1; 5; 42; 0;
+ 146; 0; 128; 256; 146; 0; 128; 256;
+ 178; 0; 42; 0; 178; 0; 42; 0;
+ 146; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x96 Font: StarMath
+ "\x96\x11\x02\x00\x00\x4C\x03\x00\x00\x2A\x00\x00\x00\x92\x00\x00"
+ "\x00\x57\x01\x00\x00\x21\x00\x00\x00\x01\x00\x05\x00\x2A\x00\x00"
+ "\x00\x92\x00\x00\x00\x80\x01\x00\x00\x92\x00\x00\x00\x80\x01\x00"
+ "\x00\xB2\x00\x00\x00\x2A\x00\x00\x00\xB2\x00\x00\x00\x2A\x00\x00"
+ "\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_VEC
+{
+ ExtraData =
+ {
+// Zeichen: 0x97 Font: StarMath
+-26863; 512; 76; 768; 40; 0; 77; 0;
+ 128; 256; 172; 0; 1; 8; 40; 0;
+ 185; 0; 40; 0; 138; 0; 27; 256;
+ 138; 0; 10; 256; 77; 0; 167; 256;
+ 163; 0; 10; 256; 248; 0; 27; 256;
+ 185; 0; 40; 0; 185; 0; 0; 0;
+ 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0x97 Font: StarMath
+ "\x97\x11\x02\x00\x00\x4C\x03\x00\x00\x28\x00\x00\x00\x4D\x00\x00"
+ "\x00\x80\x01\x00\x00\xAC\x00\x00\x00\x01\x00\x08\x00\x28\x00\x00"
+ "\x00\xB9\x00\x00\x00\x28\x00\x00\x00\x8A\x00\x00\x00\x1B\x01\x00"
+ "\x00\x8A\x00\x00\x00\x0A\x01\x00\x00\x4D\x00\x00\x00\xA7\x01\x00"
+ "\x00\xA3\x00\x00\x00\x0A\x01\x00\x00\xF8\x00\x00\x00\x1B\x01\x00"
+ "\x00\xB9\x00\x00\x00\x28\x00\x00\x00\xB9\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LBRACE
+{
+ ExtraData =
+ {
+// Zeichen: 0xA0 Font: StarMath
+-24559; 512; 76; 768; 38; 0; 43; 0;
+ 168; 0; 104; 768; 1; 42; 205; 0;
+ 146; 768; 200; 0; 146; 768; 163; 0;
+ 146; 768; 136; 0; 133; 768; 116; 0;
+ 109; 768; 97; 0; 86; 768; 89; 0;
+ 57; 768; 89; 0; 20; 768; 89; 0;
+ 26; 512; 89; 0; 247; 256; 72; 0;
+ 228; 256; 38; 0; 228; 256; 38; 0;
+ 214; 256; 57; 0; 214; 256; 70; 0;
+ 211; 256; 79; 0; 203; 256; 86; 0;
+ 196; 256; 89; 0; 181; 256; 89; 0;
+ 160; 256; 89; 0; 168; 0; 89; 0;
+ 131; 0; 99; 0; 101; 0; 119; 0;
+ 77; 0; 138; 0; 55; 0; 167; 0;
+ 43; 0; 205; 0; 43; 0; 205; 0;
+ 57; 0; 151; 0; 57; 0; 123; 0;
+ 91; 0; 123; 0; 157; 0; 119; 0;
+ 138; 256; 119; 0; 177; 256; 101; 0;
+ 206; 256; 65; 0; 223; 256; 101; 0;
+ 240; 256; 119; 0; 13; 512; 119; 0;
+ 51; 512; 123; 0; 32; 768; 123; 0;
+ 99; 768; 151; 0; 133; 768; 205; 0;
+ 133; 768; 205; 0; 146; 768; 0; 2;
+ 512; 514; 0; 514; 0; 514; 2; 512;
+ 2; 512; 514; 0; 514; 0; 514; 2;
+ 512; 2; 512; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA0 Font: StarMath
+ "\xA0\x11\x02\x00\x00\x4C\x03\x00\x00\x26\x00\x00\x00\x2B\x00\x00"
+ "\x00\xA8\x00\x00\x00\x68\x03\x00\x00\x01\x00\x2D\x00\xCD\x00\x00"
+ "\x00\x92\x03\x00\x00\xC8\x00\x00\x00\x92\x03\x00\x00\xA3\x00\x00"
+ "\x00\x92\x03\x00\x00\x88\x00\x00\x00\x85\x03\x00\x00\x74\x00\x00"
+ "\x00\x6D\x03\x00\x00\x61\x00\x00\x00\x56\x03\x00\x00\x59\x00\x00"
+ "\x00\x39\x03\x00\x00\x59\x00\x00\x00\x14\x03\x00\x00\x59\x00\x00"
+ "\x00\x1A\x02\x00\x00\x59\x00\x00\x00\x06\x02\x00\x00\x54\x00\x00"
+ "\x00\xF8\x01\x00\x00\x4D\x00\x00\x00\xF0\x01\x00\x00\x46\x00\x00"
+ "\x00\xE9\x01\x00\x00\x39\x00\x00\x00\xE4\x01\x00\x00\x26\x00\x00"
+ "\x00\xE4\x01\x00\x00\x26\x00\x00\x00\xD6\x01\x00\x00\x3B\x00\x00"
+ "\x00\xD6\x01\x00\x00\x48\x00\x00\x00\xD3\x01\x00\x00\x4F\x00\x00"
+ "\x00\xCB\x01\x00\x00\x56\x00\x00\x00\xC4\x01\x00\x00\x59\x00\x00"
+ "\x00\xB5\x01\x00\x00\x59\x00\x00\x00\xA0\x01\x00\x00\x59\x00\x00"
+ "\x00\xA8\x00\x00\x00\x59\x00\x00\x00\x83\x00\x00\x00\x63\x00\x00"
+ "\x00\x65\x00\x00\x00\x77\x00\x00\x00\x4D\x00\x00\x00\x8A\x00\x00"
+ "\x00\x37\x00\x00\x00\xA7\x00\x00\x00\x2B\x00\x00\x00\xCD\x00\x00"
+ "\x00\x2B\x00\x00\x00\xCD\x00\x00\x00\x39\x00\x00\x00\x97\x00\x00"
+ "\x00\x39\x00\x00\x00\x7B\x00\x00\x00\x5B\x00\x00\x00\x7B\x00\x00"
+ "\x00\x9D\x00\x00\x00\x77\x00\x00\x00\x8A\x01\x00\x00\x77\x00\x00"
+ "\x00\xB1\x01\x00\x00\x65\x00\x00\x00\xCE\x01\x00\x00\x41\x00\x00"
+ "\x00\xDF\x01\x00\x00\x65\x00\x00\x00\xF0\x01\x00\x00\x77\x00\x00"
+ "\x00\x0D\x02\x00\x00\x77\x00\x00\x00\x33\x02\x00\x00\x7B\x00\x00"
+ "\x00\x20\x03\x00\x00\x7B\x00\x00\x00\x63\x03\x00\x00\x97\x00\x00"
+ "\x00\x85\x03\x00\x00\xCD\x00\x00\x00\x85\x03\x00\x00\xCD\x00\x00"
+ "\x00\x92\x03\x00\x00\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02"
+ "\x00\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02\x00\x02"
+ "\x02\x00\x00\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02"
+ "\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RBRACE
+{
+ ExtraData =
+ {
+// Zeichen: 0xA1 Font: StarMath
+-24303; 512; 76; 768; 38; 0; 43; 0;
+ 168; 0; 104; 768; 1; 63; 38; 0;
+ 146; 768; 38; 0; 133; 768; 92; 0;
+ 133; 768; 121; 0; 99; 768; 121; 0;
+ 32; 768; 121; 0; 5; 768; 119; 0;
+ 222; 512; 119; 0; 169; 512; 116; 0;
+ 117; 512; 116; 0; 78; 512; 116; 0;
+ 51; 512; 116; 0; 14; 512; 135; 0;
+ 243; 256; 172; 0; 223; 256; 135; 0;
+ 206; 256; 116; 0; 177; 256; 116; 0;
+ 138; 256; 116; 0; 111; 256; 116; 0;
+ 73; 256; 119; 0; 19; 256; 119; 0;
+ 222; 0; 121; 0; 183; 0; 121; 0;
+ 157; 0; 121; 0; 91; 0; 92; 0;
+ 57; 0; 38; 0; 57; 0; 38; 0;
+ 43; 0; 43; 0; 43; 0; 79; 0;
+ 43; 0; 108; 0; 57; 0; 128; 0;
+ 81; 0; 145; 0; 102; 0; 155; 0;
+ 133; 0; 155; 0; 170; 0; 155; 0;
+ 197; 0; 153; 0; 239; 0; 150; 0;
+ 37; 256; 146; 0; 93; 256; 145; 0;
+ 135; 256; 145; 0; 162; 256; 145; 0;
+ 184; 256; 148; 0; 198; 256; 158; 0;
+ 204; 256; 167; 0; 213; 256; 182; 0;
+ 216; 256; 205; 0; 216; 256; 205; 0;
+ 230; 256; 182; 0; 230; 256; 167; 0;
+ 233; 256; 158; 0; 240; 256; 148; 0;
+ 247; 256; 145; 0; 6; 512; 145; 0;
+ 28; 512; 145; 0; 55; 512; 146; 0;
+ 97; 512; 150; 0; 151; 512; 153; 0;
+ 207; 512; 155; 0; 247; 512; 155; 0;
+ 20; 768; 155; 0; 104; 768; 116; 0;
+ 146; 768; 38; 0; 146; 768; 38; 0;
+ 146; 768; 0; 2; 512; 514; 2; 512;
+ 514; 2; 512; 514; 2; 512; 514; 0;
+ 2; 512; 514; 2; 512; 514; 2; 512;
+ 514; 0; 514; 2; 512; 514; 2; 512;
+ 514; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA1 Font: StarMath
+ "\xA1\x11\x02\x00\x00\x4C\x03\x00\x00\x26\x00\x00\x00\x2B\x00\x00"
+ "\x00\xA8\x00\x00\x00\x68\x03\x00\x00\x01\x00\x3F\x00\x26\x00\x00"
+ "\x00\x92\x03\x00\x00\x26\x00\x00\x00\x85\x03\x00\x00\x5C\x00\x00"
+ "\x00\x85\x03\x00\x00\x79\x00\x00\x00\x63\x03\x00\x00\x79\x00\x00"
+ "\x00\x20\x03\x00\x00\x79\x00\x00\x00\x05\x03\x00\x00\x77\x00\x00"
+ "\x00\xDE\x02\x00\x00\x77\x00\x00\x00\xA9\x02\x00\x00\x74\x00\x00"
+ "\x00\x75\x02\x00\x00\x74\x00\x00\x00\x4E\x02\x00\x00\x74\x00\x00"
+ "\x00\x33\x02\x00\x00\x74\x00\x00\x00\x0E\x02\x00\x00\x87\x00\x00"
+ "\x00\xF3\x01\x00\x00\xAC\x00\x00\x00\xDF\x01\x00\x00\x87\x00\x00"
+ "\x00\xCE\x01\x00\x00\x74\x00\x00\x00\xB1\x01\x00\x00\x74\x00\x00"
+ "\x00\x8A\x01\x00\x00\x74\x00\x00\x00\x6F\x01\x00\x00\x74\x00\x00"
+ "\x00\x49\x01\x00\x00\x77\x00\x00\x00\x13\x01\x00\x00\x77\x00\x00"
+ "\x00\xDE\x00\x00\x00\x79\x00\x00\x00\xB7\x00\x00\x00\x79\x00\x00"
+ "\x00\x9D\x00\x00\x00\x79\x00\x00\x00\x5B\x00\x00\x00\x5C\x00\x00"
+ "\x00\x39\x00\x00\x00\x26\x00\x00\x00\x39\x00\x00\x00\x26\x00\x00"
+ "\x00\x2B\x00\x00\x00\x2B\x00\x00\x00\x2B\x00\x00\x00\x4F\x00\x00"
+ "\x00\x2B\x00\x00\x00\x6C\x00\x00\x00\x39\x00\x00\x00\x80\x00\x00"
+ "\x00\x51\x00\x00\x00\x91\x00\x00\x00\x66\x00\x00\x00\x9B\x00\x00"
+ "\x00\x85\x00\x00\x00\x9B\x00\x00\x00\xAA\x00\x00\x00\x9B\x00\x00"
+ "\x00\xC5\x00\x00\x00\x99\x00\x00\x00\xEF\x00\x00\x00\x96\x00\x00"
+ "\x00\x25\x01\x00\x00\x92\x00\x00\x00\x5D\x01\x00\x00\x91\x00\x00"
+ "\x00\x87\x01\x00\x00\x91\x00\x00\x00\xA2\x01\x00\x00\x91\x00\x00"
+ "\x00\xB8\x01\x00\x00\x94\x00\x00\x00\xC6\x01\x00\x00\x9E\x00\x00"
+ "\x00\xCC\x01\x00\x00\xA7\x00\x00\x00\xD5\x01\x00\x00\xB6\x00\x00"
+ "\x00\xD8\x01\x00\x00\xCD\x00\x00\x00\xD8\x01\x00\x00\xCD\x00\x00"
+ "\x00\xE6\x01\x00\x00\xB6\x00\x00\x00\xE6\x01\x00\x00\xA7\x00\x00"
+ "\x00\xE9\x01\x00\x00\x9E\x00\x00\x00\xF0\x01\x00\x00\x94\x00\x00"
+ "\x00\xF7\x01\x00\x00\x91\x00\x00\x00\x06\x02\x00\x00\x91\x00\x00"
+ "\x00\x1C\x02\x00\x00\x91\x00\x00\x00\x37\x02\x00\x00\x92\x00\x00"
+ "\x00\x61\x02\x00\x00\x96\x00\x00\x00\x97\x02\x00\x00\x99\x00\x00"
+ "\x00\xCF\x02\x00\x00\x9B\x00\x00\x00\xF7\x02\x00\x00\x9B\x00\x00"
+ "\x00\x14\x03\x00\x00\x9B\x00\x00\x00\x68\x03\x00\x00\x74\x00\x00"
+ "\x00\x92\x03\x00\x00\x26\x00\x00\x00\x92\x03\x00\x00\x26\x00\x00"
+ "\x00\x92\x03\x00\x00\x00\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00"
+ "\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x00"
+ "\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00"
+ "\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00"
+ "\x02\x02\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LPARENT
+{
+ ExtraData =
+ {
+// Zeichen: 0xA2 Font: StarMath
+-24047; 512; 76; 768; 60; 0; 67; 0;
+ 162; 0; 69; 768; 1; 27; 221; 0;
+ 135; 768; 167; 0; 89; 768; 126; 0;
+ 25; 768; 99; 0; 200; 512; 72; 0;
+ 127; 512; 60; 0; 51; 512; 60; 0;
+ 228; 256; 60; 0; 152; 256; 72; 0;
+ 76; 256; 99; 0; 2; 256; 128; 0;
+ 172; 0; 168; 0; 108; 0; 221; 0;
+ 67; 0; 221; 0; 87; 0; 182; 0;
+ 124; 0; 153; 0; 185; 0; 133; 0;
+ 17; 256; 116; 0; 88; 256; 109; 0;
+ 157; 256; 109; 0; 228; 256; 109; 0;
+ 43; 512; 116; 0; 114; 512; 133; 0;
+ 183; 512; 153; 0; 16; 768; 182; 0;
+ 79; 768; 221; 0; 113; 768; 221; 0;
+ 135; 768; 0; 514; 2; 512; 514; 2;
+ 512; 2; 512; 514; 2; 512; 514; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA2 Font: StarMath
+ "\xA2\x11\x02\x00\x00\x4C\x03\x00\x00\x3C\x00\x00\x00\x43\x00\x00"
+ "\x00\xA2\x00\x00\x00\x45\x03\x00\x00\x01\x00\x1B\x00\xDD\x00\x00"
+ "\x00\x87\x03\x00\x00\xA7\x00\x00\x00\x59\x03\x00\x00\x7E\x00\x00"
+ "\x00\x19\x03\x00\x00\x63\x00\x00\x00\xC8\x02\x00\x00\x48\x00\x00"
+ "\x00\x7F\x02\x00\x00\x3C\x00\x00\x00\x33\x02\x00\x00\x3C\x00\x00"
+ "\x00\xE4\x01\x00\x00\x3C\x00\x00\x00\x98\x01\x00\x00\x48\x00\x00"
+ "\x00\x4C\x01\x00\x00\x63\x00\x00\x00\x02\x01\x00\x00\x80\x00\x00"
+ "\x00\xAC\x00\x00\x00\xA8\x00\x00\x00\x6C\x00\x00\x00\xDD\x00\x00"
+ "\x00\x43\x00\x00\x00\xDD\x00\x00\x00\x57\x00\x00\x00\xB6\x00\x00"
+ "\x00\x7C\x00\x00\x00\x99\x00\x00\x00\xB9\x00\x00\x00\x85\x00\x00"
+ "\x00\x11\x01\x00\x00\x74\x00\x00\x00\x58\x01\x00\x00\x6D\x00\x00"
+ "\x00\x9D\x01\x00\x00\x6D\x00\x00\x00\xE4\x01\x00\x00\x6D\x00\x00"
+ "\x00\x2B\x02\x00\x00\x74\x00\x00\x00\x72\x02\x00\x00\x85\x00\x00"
+ "\x00\xB7\x02\x00\x00\x99\x00\x00\x00\x10\x03\x00\x00\xB6\x00\x00"
+ "\x00\x4F\x03\x00\x00\xDD\x00\x00\x00\x71\x03\x00\x00\xDD\x00\x00"
+ "\x00\x87\x03\x00\x00\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02"
+ "\x02\x00\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RPARENT
+{
+ ExtraData =
+ {
+// Zeichen: 0xA3 Font: StarMath
+-23791; 512; 76; 768; 43; 0; 67; 0;
+ 162; 0; 69; 768; 1; 27; 43; 0;
+ 113; 768; 81; 0; 79; 768; 109; 0;
+ 20; 768; 129; 0; 191; 512; 146; 0;
+ 124; 512; 155; 0; 58; 512; 155; 0;
+ 247; 256; 155; 0; 169; 256; 146; 0;
+ 95; 256; 133; 0; 25; 256; 113; 0;
+ 190; 0; 84; 0; 126; 0; 43; 0;
+ 87; 0; 43; 0; 67; 0; 96; 0;
+ 104; 0; 136; 0; 168; 0; 167; 0;
+ 0; 256; 190; 0; 74; 256; 204; 0;
+ 150; 256; 204; 0; 228; 256; 204; 0;
+ 51; 512; 190; 0; 127; 512; 167; 0;
+ 200; 512; 136; 0; 30; 768; 96; 0;
+ 94; 768; 43; 0; 135; 768; 43; 0;
+ 113; 768; 0; 514; 2; 512; 514; 2;
+ 512; 2; 512; 514; 2; 512; 514; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA3 Font: StarMath
+ "\xA3\x11\x02\x00\x00\x4C\x03\x00\x00\x2B\x00\x00\x00\x43\x00\x00"
+ "\x00\xA2\x00\x00\x00\x45\x03\x00\x00\x01\x00\x1B\x00\x2B\x00\x00"
+ "\x00\x71\x03\x00\x00\x51\x00\x00\x00\x4F\x03\x00\x00\x6D\x00\x00"
+ "\x00\x14\x03\x00\x00\x81\x00\x00\x00\xBF\x02\x00\x00\x92\x00\x00"
+ "\x00\x7C\x02\x00\x00\x9B\x00\x00\x00\x38\x02\x00\x00\x9B\x00\x00"
+ "\x00\xF7\x01\x00\x00\x9B\x00\x00\x00\xA9\x01\x00\x00\x92\x00\x00"
+ "\x00\x5F\x01\x00\x00\x85\x00\x00\x00\x19\x01\x00\x00\x71\x00\x00"
+ "\x00\xBE\x00\x00\x00\x54\x00\x00\x00\x7C\x00\x00\x00\x2B\x00\x00"
+ "\x00\x57\x00\x00\x00\x2B\x00\x00\x00\x43\x00\x00\x00\x60\x00\x00"
+ "\x00\x68\x00\x00\x00\x88\x00\x00\x00\xA8\x00\x00\x00\xA7\x00\x00"
+ "\x00\x00\x01\x00\x00\xBE\x00\x00\x00\x4C\x01\x00\x00\xCC\x00\x00"
+ "\x00\x98\x01\x00\x00\xCC\x00\x00\x00\xE4\x01\x00\x00\xCC\x00\x00"
+ "\x00\x32\x02\x00\x00\xBE\x00\x00\x00\x7E\x02\x00\x00\xA7\x00\x00"
+ "\x00\xC8\x02\x00\x00\x88\x00\x00\x00\x20\x03\x00\x00\x60\x00\x00"
+ "\x00\x5E\x03\x00\x00\x2B\x00\x00\x00\x87\x03\x00\x00\x2B\x00\x00"
+ "\x00\x71\x03\x00\x00\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02"
+ "\x02\x00\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x02\x02\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LANGLE
+{
+ ExtraData =
+ {
+// Zeichen: 0xA4 Font: StarMath
+-23535; 512; 76; 768; 35; 0; 65; 0;
+ 222; 0; 69; 768; 1; 7; 35; 0;
+ 226; 256; 238; 0; 65; 0; 0; 256;
+ 75; 0; 57; 0; 226; 256; 0; 256;
+ 123; 768; 238; 0; 133; 768; 35; 0;
+ 226; 256; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA4 Font: StarMath
+ "\xA4\x11\x02\x00\x00\x4C\x03\x00\x00\x23\x00\x00\x00\x41\x00\x00"
+ "\x00\xDE\x00\x00\x00\x45\x03\x00\x00\x01\x00\x07\x00\x23\x00\x00"
+ "\x00\xE2\x01\x00\x00\xEE\x00\x00\x00\x41\x00\x00\x00\x00\x01\x00"
+ "\x00\x4B\x00\x00\x00\x39\x00\x00\x00\xE2\x01\x00\x00\x00\x01\x00"
+ "\x00\x7B\x03\x00\x00\xEE\x00\x00\x00\x85\x03\x00\x00\x23\x00\x00"
+ "\x00\xE2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RANGLE
+{
+ ExtraData =
+ {
+// Zeichen: 0xA5 Font: StarMath
+-23279; 512; 76; 768; 23; 0; 65; 0;
+ 226; 0; 69; 768; 1; 7; 248; 0;
+ 226; 256; 45; 0; 133; 768; 23; 0;
+ 123; 768; 222; 0; 225; 256; 25; 0;
+ 75; 0; 45; 0; 65; 0; 248; 0;
+ 226; 256; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA5 Font: StarMath
+ "\xA5\x11\x02\x00\x00\x4C\x03\x00\x00\x17\x00\x00\x00\x41\x00\x00"
+ "\x00\xE2\x00\x00\x00\x45\x03\x00\x00\x01\x00\x07\x00\xF8\x00\x00"
+ "\x00\xE2\x01\x00\x00\x2D\x00\x00\x00\x85\x03\x00\x00\x17\x00\x00"
+ "\x00\x7B\x03\x00\x00\xDE\x00\x00\x00\xE1\x01\x00\x00\x19\x00\x00"
+ "\x00\x4B\x00\x00\x00\x2D\x00\x00\x00\x41\x00\x00\x00\xF8\x00\x00"
+ "\x00\xE2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LBRACKET
+{
+ ExtraData =
+ {
+// Zeichen: 0xA6 Font: StarMath
+-23023; 512; 76; 768; 60; 0; 59; 0;
+ 148; 0; 68; 768; 1; 9; 60; 0;
+ 126; 768; 60; 0; 59; 0; 207; 0;
+ 59; 0; 207; 0; 75; 0; 102; 0;
+ 75; 0; 102; 0; 108; 768; 207; 0;
+ 108; 768; 207; 0; 126; 768; 60; 0;
+ 126; 768; 0; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA6 Font: StarMath
+ "\xA6\x11\x02\x00\x00\x4C\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00"
+ "\x00\x94\x00\x00\x00\x44\x03\x00\x00\x01\x00\x09\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00\x00\xCF\x00\x00"
+ "\x00\x3B\x00\x00\x00\xCF\x00\x00\x00\x4B\x00\x00\x00\x66\x00\x00"
+ "\x00\x4B\x00\x00\x00\x66\x00\x00\x00\x6C\x03\x00\x00\xCF\x00\x00"
+ "\x00\x6C\x03\x00\x00\xCF\x00\x00\x00\x7E\x03\x00\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RBRACKET
+{
+ ExtraData =
+ {
+// Zeichen: 0xA7 Font: StarMath
+-22767; 512; 76; 768; 32; 0; 59; 0;
+ 147; 0; 68; 768; 1; 9; 178; 0;
+ 126; 768; 32; 0; 126; 768; 32; 0;
+ 108; 768; 136; 0; 108; 768; 136; 0;
+ 75; 0; 32; 0; 75; 0; 32; 0;
+ 59; 0; 178; 0; 59; 0; 178; 0;
+ 126; 768; 0; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xA7 Font: StarMath
+ "\xA7\x11\x02\x00\x00\x4C\x03\x00\x00\x20\x00\x00\x00\x3B\x00\x00"
+ "\x00\x93\x00\x00\x00\x44\x03\x00\x00\x01\x00\x09\x00\xB2\x00\x00"
+ "\x00\x7E\x03\x00\x00\x20\x00\x00\x00\x7E\x03\x00\x00\x20\x00\x00"
+ "\x00\x6C\x03\x00\x00\x88\x00\x00\x00\x6C\x03\x00\x00\x88\x00\x00"
+ "\x00\x4B\x00\x00\x00\x20\x00\x00\x00\x4B\x00\x00\x00\x20\x00\x00"
+ "\x00\x3B\x00\x00\x00\xB2\x00\x00\x00\x3B\x00\x00\x00\xB2\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LDBRACKET
+{
+ ExtraData =
+ {
+// Zeichen: 0xB2 Font: StarMath
+-19951; 512; 76; 768; 60; 0; 59; 0;
+ 207; 0; 68; 768; 2; 9; 60; 0;
+ 126; 768; 60; 0; 59; 0; 10; 256;
+ 59; 0; 10; 256; 75; 0; 180; 0;
+ 75; 0; 180; 0; 108; 768; 10; 256;
+ 108; 768; 10; 256; 126; 768; 60; 0;
+ 126; 768; 0; 0; 0; 0; 0; 1280;
+-27136; 0; 19200; 0; 26112; 0; 19200; 0;
+ 26112; 0; 27651; 0; -27136; 0; 27651; 0;
+-27136; 0; 19200; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xB2 Font: StarMath
+ "\xB2\x11\x02\x00\x00\x4C\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00"
+ "\x00\xCF\x00\x00\x00\x44\x03\x00\x00\x02\x00\x09\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00\x00\x0A\x01\x00"
+ "\x00\x3B\x00\x00\x00\x0A\x01\x00\x00\x4B\x00\x00\x00\xB4\x00\x00"
+ "\x00\x4B\x00\x00\x00\xB4\x00\x00\x00\x6C\x03\x00\x00\x0A\x01\x00"
+ "\x00\x6C\x03\x00\x00\x0A\x01\x00\x00\x7E\x03\x00\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00"
+ "\x96\x00\x00\x00\x4B\x00\x00\x00\x66\x00\x00\x00\x4B\x00\x00\x00"
+ "\x66\x00\x00\x00\x6C\x03\x00\x00\x96\x00\x00\x00\x6C\x03\x00\x00"
+ "\x96\x00\x00\x00\x4B\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RDBRACKET
+{
+ ExtraData =
+ {
+// Zeichen: 0xB3 Font: StarMath
+-19695; 512; 76; 768; 60; 0; 59; 0;
+ 207; 0; 68; 768; 2; 9; 10; 256;
+ 126; 768; 60; 0; 126; 768; 60; 0;
+ 108; 768; 138; 0; 108; 768; 138; 0;
+ 75; 0; 60; 0; 75; 0; 60; 0;
+ 59; 0; 10; 256; 59; 0; 10; 256;
+ 126; 768; 0; 0; 0; 0; 0; 1280;
+-22528; 0; 19200; 0; -22528; 0; 27651; 0;
+ -8192; 0; 27651; 0; -8192; 0; 19200; 0;
+-22528; 0; 19200; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xB3 Font: StarMath
+ "\xB3\x11\x02\x00\x00\x4C\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00"
+ "\x00\xCF\x00\x00\x00\x44\x03\x00\x00\x02\x00\x09\x00\x0A\x01\x00"
+ "\x00\x7E\x03\x00\x00\x3C\x00\x00\x00\x7E\x03\x00\x00\x3C\x00\x00"
+ "\x00\x6C\x03\x00\x00\x8A\x00\x00\x00\x6C\x03\x00\x00\x8A\x00\x00"
+ "\x00\x4B\x00\x00\x00\x3C\x00\x00\x00\x4B\x00\x00\x00\x3C\x00\x00"
+ "\x00\x3B\x00\x00\x00\x0A\x01\x00\x00\x3B\x00\x00\x00\x0A\x01\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00"
+ "\xA8\x00\x00\x00\x4B\x00\x00\x00\xA8\x00\x00\x00\x6C\x03\x00\x00"
+ "\xE0\x00\x00\x00\x6C\x03\x00\x00\xE0\x00\x00\x00\x4B\x00\x00\x00"
+ "\xA8\x00\x00\x00\x4B\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LCEIL
+{
+ ExtraData =
+ {
+// Zeichen: 0xC0 Font: StarMath
+-16367; 512; 76; 768; 60; 0; 59; 0;
+ 148; 0; 68; 768; 1; 7; 60; 0;
+ 126; 768; 60; 0; 59; 0; 207; 0;
+ 59; 0; 207; 0; 75; 0; 102; 0;
+ 75; 0; 102; 0; 126; 768; 60; 0;
+ 126; 768; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xC0 Font: StarMath
+ "\xC0\x11\x02\x00\x00\x4C\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00"
+ "\x00\x94\x00\x00\x00\x44\x03\x00\x00\x01\x00\x07\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00\x00\xCF\x00\x00"
+ "\x00\x3B\x00\x00\x00\xCF\x00\x00\x00\x4B\x00\x00\x00\x66\x00\x00"
+ "\x00\x4B\x00\x00\x00\x66\x00\x00\x00\x7E\x03\x00\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RCEIL
+{
+ ExtraData =
+ {
+// Zeichen: 0xC2 Font: StarMath
+-15855; 512; 76; 768; 32; 0; 59; 0;
+ 147; 0; 68; 768; 1; 7; 178; 0;
+ 126; 768; 136; 0; 126; 768; 136; 0;
+ 75; 0; 32; 0; 75; 0; 32; 0;
+ 59; 0; 178; 0; 59; 0; 178; 0;
+ 126; 768; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xC2 Font: StarMath
+ "\xC2\x11\x02\x00\x00\x4C\x03\x00\x00\x20\x00\x00\x00\x3B\x00\x00"
+ "\x00\x93\x00\x00\x00\x44\x03\x00\x00\x01\x00\x07\x00\xB2\x00\x00"
+ "\x00\x7E\x03\x00\x00\x88\x00\x00\x00\x7E\x03\x00\x00\x88\x00\x00"
+ "\x00\x4B\x00\x00\x00\x20\x00\x00\x00\x4B\x00\x00\x00\x20\x00\x00"
+ "\x00\x3B\x00\x00\x00\xB2\x00\x00\x00\x3B\x00\x00\x00\xB2\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_LFLOOR
+{
+ ExtraData =
+ {
+// Zeichen: 0xC1 Font: StarMath
+-16111; 512; 76; 768; 60; 0; 59; 0;
+ 148; 0; 68; 768; 1; 7; 60; 0;
+ 126; 768; 60; 0; 59; 0; 102; 0;
+ 59; 0; 102; 0; 108; 768; 207; 0;
+ 108; 768; 207; 0; 126; 768; 60; 0;
+ 126; 768; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xC1 Font: StarMath
+ "\xC1\x11\x02\x00\x00\x4C\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00"
+ "\x00\x94\x00\x00\x00\x44\x03\x00\x00\x01\x00\x07\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x3C\x00\x00\x00\x3B\x00\x00\x00\x66\x00\x00"
+ "\x00\x3B\x00\x00\x00\x66\x00\x00\x00\x6C\x03\x00\x00\xCF\x00\x00"
+ "\x00\x6C\x03\x00\x00\xCF\x00\x00\x00\x7E\x03\x00\x00\x3C\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_RFLOOR
+{
+ ExtraData =
+ {
+// Zeichen: 0xC3 Font: StarMath
+-15599; 512; 76; 768; 32; 0; 59; 0;
+ 147; 0; 68; 768; 1; 7; 178; 0;
+ 126; 768; 32; 0; 126; 768; 32; 0;
+ 108; 768; 136; 0; 108; 768; 136; 0;
+ 59; 0; 178; 0; 59; 0; 178; 0;
+ 126; 768; 0; 0; 0; 0;
+#ifdef NO_MORE
+ // Zeichen: 0xC3 Font: StarMath
+ "\xC3\x11\x02\x00\x00\x4C\x03\x00\x00\x20\x00\x00\x00\x3B\x00\x00"
+ "\x00\x93\x00\x00\x00\x44\x03\x00\x00\x01\x00\x07\x00\xB2\x00\x00"
+ "\x00\x7E\x03\x00\x00\x20\x00\x00\x00\x7E\x03\x00\x00\x20\x00\x00"
+ "\x00\x6C\x03\x00\x00\x88\x00\x00\x00\x6C\x03\x00\x00\x88\x00\x00"
+ "\x00\x3B\x00\x00\x00\xB2\x00\x00\x00\x3B\x00\x00\x00\xB2\x00\x00"
+ "\x00\x7E\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_OVERBRACE
+{
+ ExtraData =
+ {
+// Zeichen: 0x35 Font: StarMath
+ 13585; 512; 76; 768; 20; 0; 8; 0;
+ 104; 768; 168; 0; 1; 45; 20; 0;
+ 175; 0; 20; 0; 172; 0; 20; 0;
+ 135; 0; 32; 0; 108; 0; 57; 0;
+ 87; 0; 79; 0; 70; 0; 109; 0;
+ 60; 0; 146; 0; 60; 0; 140; 256;
+ 60; 0; 159; 256; 60; 0; 172; 256;
+ 57; 0; 181; 256; 48; 0; 187; 256;
+ 42; 0; 193; 256; 28; 0; 193; 256;
+ 8; 0; 206; 256; 8; 0; 206; 256;
+ 28; 0; 209; 256; 42; 0; 218; 256;
+ 48; 0; 225; 256; 57; 0; 240; 256;
+ 60; 0; 4; 512; 60; 0; 254; 512;
+ 60; 0; 35; 768; 60; 0; 65; 768;
+ 70; 0; 89; 768; 89; 0; 111; 768;
+ 109; 0; 123; 768; 138; 0; 123; 768;
+ 175; 0; 109; 768; 175; 0; 109; 768;
+ 123; 0; 76; 768; 96; 0; 10; 768;
+ 94; 0; 28; 512; 89; 0; 245; 256;
+ 89; 0; 216; 256; 70; 0; 199; 256;
+ 35; 0; 182; 256; 70; 0; 154; 256;
+ 89; 0; 115; 256; 89; 0; 135; 0;
+ 94; 0; 67; 0; 96; 0; 33; 0;
+ 123; 0; 33; 0; 175; 0; 20; 0;
+ 175; 0; 0; 2; 512; 514; 0; 514;
+ 2; 512; 2; 512; 514; 0; 514; 2;
+ 512; 2; 512; 2; 512; 514; 0; 514;
+ 0;
+#ifdef NO_MORE
+ // Zeichen: 0x35 Font: StarMath
+ "\x35\x11\x02\x00\x00\x4C\x03\x00\x00\x14\x00\x00\x00\x08\x00\x00"
+ "\x00\x68\x03\x00\x00\xA8\x00\x00\x00\x01\x00\x2D\x00\x14\x00\x00"
+ "\x00\xAF\x00\x00\x00\x14\x00\x00\x00\xAA\x00\x00\x00\x14\x00\x00"
+ "\x00\x85\x00\x00\x00\x20\x00\x00\x00\x6A\x00\x00\x00\x39\x00\x00"
+ "\x00\x56\x00\x00\x00\x4F\x00\x00\x00\x45\x00\x00\x00\x6D\x00\x00"
+ "\x00\x3B\x00\x00\x00\x92\x00\x00\x00\x3B\x00\x00\x00\x8C\x01\x00"
+ "\x00\x3B\x00\x00\x00\x9F\x01\x00\x00\x3B\x00\x00\x00\xAC\x01\x00"
+ "\x00\x37\x00\x00\x00\xB5\x01\x00\x00\x30\x00\x00\x00\xBB\x01\x00"
+ "\x00\x2A\x00\x00\x00\xC1\x01\x00\x00\x1C\x00\x00\x00\xC1\x01\x00"
+ "\x00\x08\x00\x00\x00\xCE\x01\x00\x00\x08\x00\x00\x00\xCE\x01\x00"
+ "\x00\x1C\x00\x00\x00\xD1\x01\x00\x00\x2A\x00\x00\x00\xDA\x01\x00"
+ "\x00\x30\x00\x00\x00\xE1\x01\x00\x00\x37\x00\x00\x00\xF0\x01\x00"
+ "\x00\x3B\x00\x00\x00\x04\x02\x00\x00\x3B\x00\x00\x00\xFE\x02\x00"
+ "\x00\x3B\x00\x00\x00\x23\x03\x00\x00\x3B\x00\x00\x00\x41\x03\x00"
+ "\x00\x45\x00\x00\x00\x59\x03\x00\x00\x59\x00\x00\x00\x6F\x03\x00"
+ "\x00\x6D\x00\x00\x00\x7B\x03\x00\x00\x8A\x00\x00\x00\x7B\x03\x00"
+ "\x00\xAF\x00\x00\x00\x6D\x03\x00\x00\xAF\x00\x00\x00\x6D\x03\x00"
+ "\x00\x79\x00\x00\x00\x4C\x03\x00\x00\x5E\x00\x00\x00\x0A\x03\x00"
+ "\x00\x5C\x00\x00\x00\x1C\x02\x00\x00\x57\x00\x00\x00\xF5\x01\x00"
+ "\x00\x57\x00\x00\x00\xD8\x01\x00\x00\x46\x00\x00\x00\xC7\x01\x00"
+ "\x00\x23\x00\x00\x00\xB6\x01\x00\x00\x46\x00\x00\x00\x9A\x01\x00"
+ "\x00\x57\x00\x00\x00\x73\x01\x00\x00\x57\x00\x00\x00\x87\x00\x00"
+ "\x00\x5C\x00\x00\x00\x43\x00\x00\x00\x5E\x00\x00\x00\x21\x00\x00"
+ "\x00\x79\x00\x00\x00\x21\x00\x00\x00\xAF\x00\x00\x00\x14\x00\x00"
+ "\x00\xAF\x00\x00\x00\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02"
+ "\x00\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02\x00\x02"
+ "\x02\x00\x00\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02"
+ "\x00\x00";
+#endif
+ };
+};
+
+
+Resource RID_XPP_UNDERBRACE
+{
+ ExtraData =
+ {
+// Zeichen: 0x34 Font: StarMath
+ 13329; 512; 76; 768; 11; 0; 244; 512;
+ 104; 768; 166; 0; 1; 45; 114; 768;
+ 244; 512; 114; 768; 247; 512; 114; 768;
+ 28; 768; 103; 768; 55; 768; 79; 768;
+ 74; 768; 55; 768; 92; 768; 25; 768;
+ 103; 768; 244; 512; 103; 768; 252; 256;
+ 103; 768; 231; 256; 103; 768; 218; 256;
+ 106; 768; 209; 256; 114; 768; 201; 256;
+ 121; 768; 198; 256; 133; 768; 198; 256;
+ 153; 768; 184; 256; 153; 768; 184; 256;
+ 133; 768; 179; 256; 119; 768; 172; 256;
+ 113; 768; 164; 256; 106; 768; 150; 256;
+ 103; 768; 130; 256; 103; 768; 136; 0;
+ 103; 768; 97; 0; 103; 768; 67; 0;
+ 92; 768; 45; 0; 74; 768; 21; 0;
+ 54; 768; 11; 0; 25; 768; 11; 0;
+ 244; 512; 25; 0; 244; 512; 25; 0;
+ 40; 768; 57; 0; 67; 768; 124; 0;
+ 69; 768; 106; 256; 74; 768; 144; 256;
+ 74; 768; 172; 256; 91; 768; 191; 256;
+ 126; 768; 208; 256; 91; 768; 235; 256;
+ 74; 768; 19; 512; 74; 768; 0; 768;
+ 69; 768; 67; 768; 67; 768; 101; 768;
+ 40; 768; 101; 768; 244; 512; 114; 768;
+ 244; 512; 0; 2; 512; 514; 0; 514;
+ 2; 512; 2; 512; 514; 0; 514; 2;
+ 512; 2; 512; 2; 512; 514; 0; 514;
+ 0;
+#ifdef NO_MORE
+ // Zeichen: 0x34 Font: StarMath
+ "\x34\x11\x02\x00\x00\x4C\x03\x00\x00\x0B\x00\x00\x00\xF4\x02\x00"
+ "\x00\x68\x03\x00\x00\xA6\x00\x00\x00\x01\x00\x2D\x00\x72\x03\x00"
+ "\x00\xF4\x02\x00\x00\x72\x03\x00\x00\xF7\x02\x00\x00\x72\x03\x00"
+ "\x00\x1C\x03\x00\x00\x67\x03\x00\x00\x37\x03\x00\x00\x4F\x03\x00"
+ "\x00\x4A\x03\x00\x00\x37\x03\x00\x00\x5C\x03\x00\x00\x19\x03\x00"
+ "\x00\x67\x03\x00\x00\xF4\x02\x00\x00\x67\x03\x00\x00\xFA\x01\x00"
+ "\x00\x67\x03\x00\x00\xE6\x01\x00\x00\x67\x03\x00\x00\xD8\x01\x00"
+ "\x00\x6A\x03\x00\x00\xD1\x01\x00\x00\x71\x03\x00\x00\xC9\x01\x00"
+ "\x00\x77\x03\x00\x00\xC6\x01\x00\x00\x85\x03\x00\x00\xC6\x01\x00"
+ "\x00\x99\x03\x00\x00\xB8\x01\x00\x00\x99\x03\x00\x00\xB8\x01\x00"
+ "\x00\x85\x03\x00\x00\xB3\x01\x00\x00\x77\x03\x00\x00\xAC\x01\x00"
+ "\x00\x71\x03\x00\x00\xA4\x01\x00\x00\x6A\x03\x00\x00\x96\x01\x00"
+ "\x00\x67\x03\x00\x00\x82\x01\x00\x00\x67\x03\x00\x00\x88\x00\x00"
+ "\x00\x67\x03\x00\x00\x61\x00\x00\x00\x67\x03\x00\x00\x43\x00\x00"
+ "\x00\x5C\x03\x00\x00\x2D\x00\x00\x00\x4A\x03\x00\x00\x15\x00\x00"
+ "\x00\x36\x03\x00\x00\x0B\x00\x00\x00\x19\x03\x00\x00\x0B\x00\x00"
+ "\x00\xF4\x02\x00\x00\x19\x00\x00\x00\xF4\x02\x00\x00\x19\x00\x00"
+ "\x00\x28\x03\x00\x00\x39\x00\x00\x00\x43\x03\x00\x00\x7C\x00\x00"
+ "\x00\x45\x03\x00\x00\x6A\x01\x00\x00\x4A\x03\x00\x00\x90\x01\x00"
+ "\x00\x4A\x03\x00\x00\xAC\x01\x00\x00\x5B\x03\x00\x00\xBF\x01\x00"
+ "\x00\x7E\x03\x00\x00\xD0\x01\x00\x00\x5B\x03\x00\x00\xEB\x01\x00"
+ "\x00\x4A\x03\x00\x00\x13\x02\x00\x00\x4A\x03\x00\x00\x00\x03\x00"
+ "\x00\x45\x03\x00\x00\x43\x03\x00\x00\x43\x03\x00\x00\x65\x03\x00"
+ "\x00\x28\x03\x00\x00\x65\x03\x00\x00\xF4\x02\x00\x00\x72\x03\x00"
+ "\x00\xF4\x02\x00\x00\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02"
+ "\x00\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02\x00\x02"
+ "\x02\x00\x00\x02\x02\x00\x00\x02\x02\x00\x02\x02\x00\x00\x02\x02"
+ "\x00\x00";
+#endif
+ };
+};
+
+
+////////////////////////////////////////////////////////////
+
+
+String RID_PLUSX { Text = "+<?> " ; };
+String RID_MINUSX { Text = "-<?> " ; };
+String RID_PLUSMINUSX { Text = "+-<?> " ; };
+String RID_MINUSPLUSX { Text = "-+<?> " ; };
+String RID_NEGX { Text = "neg <?> " ; };
+String RID_XPLUSY { Text = "<?> + <?> " ; };
+String RID_XMINUSY { Text = "<?> - <?> " ; };
+String RID_XCDOTY { Text = "<?> cdot <?> " ; };
+String RID_XTIMESY { Text = "<?> times <?> " ; };
+String RID_XSYMTIMESY { Text = "<?> * <?> " ; };
+String RID_XSYMDIVIDEY { Text = "<?> / <?> " ; };
+String RID_XDIVY { Text = "<?> div <?> " ; };
+String RID_XOVERY { Text = "<?> over <?> " ; };
+String RID_XODIVIDEY { Text = "<?> odivide <?> " ; };
+String RID_XODOTY { Text = "<?> odot <?> " ; };
+String RID_XOMINUSY { Text = "<?> ominus <?> " ; };
+String RID_XOPLUSY { Text = "<?> oplus <?> " ; };
+String RID_XOTIMESY { Text = "<?> otimes <?> " ; };
+String RID_XANDY { Text = "<?> and <?> " ; };
+String RID_XORY { Text = "<?> or <?> " ; };
+String RID_XEQY { Text = "<?> = <?> " ; };
+String RID_XNEQY { Text = "<?> <> <?> " ; };
+String RID_XLTY { Text = "<?> < <?> " ; };
+String RID_XGTY { Text = "<?> > <?> " ; };
+String RID_XLEY { Text = "<?> <= <?> " ; };
+String RID_XGEY { Text = "<?> >= <?> " ; };
+String RID_XLESLANTY { Text = "<?> leslant <?> " ; };
+String RID_XGESLANTY { Text = "<?> geslant <?> " ; };
+String RID_XLLY { Text = "<?> << <?> " ; };
+String RID_XGGY { Text = "<?> >> <?> " ; };
+String RID_XDEFY { Text = "<?> def <?> " ; };
+String RID_XEQUIVY { Text = "<?> equiv <?> " ; };
+String RID_XAPPROXY { Text = "<?> approx <?> " ; };
+String RID_XSIMY { Text = "<?> sim <?> " ; };
+String RID_XSIMEQY { Text = "<?> simeq <?> " ; };
+String RID_XPROPY { Text = "<?> prop <?> " ; };
+String RID_XORTHOY { Text = "<?> ortho <?> " ; };
+String RID_XPARALLELY { Text = "<?> parallel <?> " ; };
+String RID_XTOWARDY { Text = "<?> toward <?> " ; };
+String RID_XTRANSLY { Text = "<?> transl <?> " ; };
+String RID_XTRANSRY { Text = "<?> transr <?> " ; };
+String RID_XINY { Text = "<?> in <?> " ; };
+String RID_XNOTINY { Text = "<?> notin <?> " ; };
+String RID_XOWNSY { Text = "<?> owns <?> " ; };
+String RID_XUNIONY { Text = "<?> union <?> " ; };
+String RID_XINTERSECTIONY { Text = "<?> intersection <?> " ; };
+String RID_XSETMINUSY { Text = "<?> setminus <?> " ; };
+String RID_XSLASHY { Text = "<?> slash <?> " ; };
+String RID_XSUBSETY { Text = "<?> subset <?> " ; };
+String RID_XSUBSETEQY { Text = "<?> subseteq <?> " ; };
+String RID_XSUPSETY { Text = "<?> supset <?> " ; };
+String RID_XSUPSETEQY { Text = "<?> supseteq <?> " ; };
+String RID_XNSUBSETY { Text = "<?> nsubset <?> " ; };
+String RID_XNSUBSETEQY { Text = "<?> nsubseteq <?> " ; };
+String RID_XNSUPSETY { Text = "<?> nsupset <?> " ; };
+String RID_XNSUPSETEQY { Text = "<?> nsupseteq <?> " ; };
+String RID_ABSX { Text = "abs{<?>} " ; };
+String RID_FACTX { Text = "fact <?> " ; };
+String RID_SQRTX { Text = "sqrt{<?>} " ; };
+String RID_NROOTXY { Text = "nroot{<?>}{<?>} " ; };
+String RID_EX { Text = "func e^{<?>} " ; };
+String RID_EXPX { Text = "exp(<?>) " ; };
+String RID_LNX { Text = "ln(<?>) " ; };
+String RID_LOGX { Text = "log(<?>) " ; };
+String RID_SINX { Text = "sin(<?>) " ; };
+String RID_COSX { Text = "cos(<?>) " ; };
+String RID_TANX { Text = "tan(<?>) " ; };
+String RID_COTX { Text = "cot(<?>) " ; };
+String RID_ARCSINX { Text = "arcsin(<?>) " ; };
+String RID_ARCCOSX { Text = "arccos(<?>) " ; };
+String RID_ARCTANX { Text = "arctan(<?>) " ; };
+String RID_ARCCOTX { Text = "arccot(<?>) " ; };
+String RID_SINHX { Text = "sinh(<?>) " ; };
+String RID_COSHX { Text = "cosh(<?>) " ; };
+String RID_TANHX { Text = "tanh(<?>) " ; };
+String RID_COTHX { Text = "coth(<?>) " ; };
+String RID_ARSINHX { Text = "arsinh(<?>) " ; };
+String RID_ARCOSHX { Text = "arcosh(<?>) " ; };
+String RID_ARTANHX { Text = "artanh(<?>) " ; };
+String RID_ARCOTHX { Text = "arcoth(<?>) " ; };
+String RID_SUMX { Text = "sum <?> " ; };
+String RID_PRODX { Text = "prod <?> " ; };
+String RID_COPRODX { Text = "coprod <?> " ; };
+String RID_LIMX { Text = "lim <?> " ; };
+String RID_LIMINFX { Text = "liminf <?> " ; };
+String RID_LIMSUPX { Text = "limsup <?> " ; };
+String RID_EXISTS { Text = "exists " ; };
+String RID_FORALL { Text = "forall " ; };
+String RID_INTX { Text = "int <?> " ; };
+String RID_IINTX { Text = "iint <?> " ; };
+String RID_IIINTX { Text = "iiint <?> " ; };
+String RID_LINTX { Text = "lint <?> " ; };
+String RID_LLINTX { Text = "llint <?> " ; };
+String RID_LLLINTX { Text = "lllint <?> " ; };
+String RID_FROMX { Text = "from{<?>} <?> " ; };
+String RID_TOX { Text = "to{<?>} <?> " ; };
+String RID_FROMXTOY { Text = "from{<?>} to{<?>} <?> " ; };
+String RID_ACUTEX { Text = "acute <?> " ; };
+String RID_BARX { Text = "bar <?> " ; };
+String RID_BREVEX { Text = "breve <?> " ; };
+String RID_CHECKX { Text = "check <?> " ; };
+String RID_CIRCLEX { Text = "circle <?> " ; };
+String RID_DOTX { Text = "dot <?> " ; };
+String RID_DDOTX { Text = "ddot <?> " ; };
+String RID_DDDOTX { Text = "dddot <?> " ; };
+String RID_GRAVEX { Text = "grave <?> " ; };
+String RID_HATX { Text = "hat <?> " ; };
+String RID_TILDEX { Text = "tilde <?> " ; };
+String RID_VECX { Text = "vec <?> " ; };
+String RID_UNDERLINEX { Text = "underline <?> " ; };
+String RID_OVERLINEX { Text = "overline <?> " ; };
+String RID_OVERSTRIKEX { Text = "overstrike <?> " ; };
+String RID_PHANTOMX { Text = "phantom <?> " ; };
+String RID_BOLDX { Text = "bold <?> " ; };
+String RID_ITALX { Text = "ital <?> " ; };
+String RID_SIZEXY { Text = "size <?> <?> " ; };
+String RID_FONTXY { Text = "font <?> <?> " ; };
+String RID_COLORX { Text = "color <?> <?> " ; };
+String RID_LRGROUPX { Text = "{<?>} " ; };
+String RID_LRPARENTX { Text = "(<?>) " ; };
+String RID_LRBRACKETX { Text = "[<?>] " ; };
+String RID_LRDBRACKETX { Text = "ldbracket <?> rdbracket " ; };
+String RID_LRBRACEX { Text = "lbrace <?> rbrace " ; };
+String RID_LRANGLEX { Text = "langle <?> rangle " ; };
+String RID_LRCEILX { Text = "lceil <?> rceil " ; };
+String RID_LRFLOORX { Text = "lfloor <?> rfloor " ; };
+String RID_LRLINEX { Text = "lline <?> rline " ; };
+String RID_LRDLINEX { Text = "ldline <?> rdline " ; };
+String RID_LMRANGLEXY { Text = "langle <?> mline <?> rangle " ; };
+String RID_SLRPARENTX { Text = "left ( <?> right ) " ; };
+String RID_SLRBRACKETX { Text = "left [ <?> right ] " ; };
+String RID_SLRDBRACKETX { Text = "left ldbracket <?> right rdbracket " ; };
+String RID_SLRBRACEX { Text = "left lbrace <?> right rbrace " ; };
+String RID_SLRANGLEX { Text = "left langle <?> right rangle " ; };
+String RID_SLRCEILX { Text = "left lceil <?> right rceil " ; };
+String RID_SLRFLOORX { Text = "left lfloor <?> right rfloor " ; };
+String RID_SLRLINEX { Text = "left lline <?> right rline " ; };
+String RID_SLRDLINEX { Text = "left ldline <?> right rdline " ; };
+String RID_SLMRANGLEXY { Text = "left langle <?> mline <?> right rangle " ; };
+String RID_XOVERBRACEY { Text = "<?> overbrace <?> " ; };
+String RID_XUNDERBRACEY { Text = "<?> underbrace <?> " ; };
+String RID_RSUBX { Text = "<?>_{<?>}" ; };
+String RID_RSUPX { Text = "<?>^{<?>}" ; };
+String RID_LSUBX { Text = "<?> lsub{<?>} " ; };
+String RID_LSUPX { Text = "<?> lsup{<?>} " ; };
+String RID_CSUBX { Text = "<?> csub{<?>} " ; };
+String RID_CSUPX { Text = "<?> csup{<?>} " ; };
+String RID_SBLANK { Text = "`" ; };
+String RID_BLANK { Text = "~" ; };
+String RID_NEWLINE { Text = "newline " ; };
+String RID_BINOMXY { Text = "binom{<?>}{<?>} " ; };
+String RID_STACK { Text = "stack{<?> # <?> # <?>} " ; };
+String RID_MATRIX { Text = "matrix{<?> # <?> ## <?> # <?>} " ; };
+String RID_ALIGNLX { Text = "alignl <?> " ; };
+String RID_ALIGNCX { Text = "alignc <?> " ; };
+String RID_ALIGNRX { Text = "alignr <?> " ; };
+String RID_ALEPH { Text = "aleph " ; };
+String RID_EMPTYSET { Text = "emptyset " ; };
+String RID_RE { Text = "Re " ; };
+String RID_IM { Text = "Im " ; };
+String RID_INFINITY { Text = "infinity " ; };
+String RID_PARTIAL { Text = "partial " ; };
+String RID_NABLA { Text = "nabla " ; };
+String RID_WP { Text = "wp " ; };
+String RID_DOTSAXIS { Text = "dotsaxis " ; };
+String RID_DOTSUP { Text = "dotsup " ; };
+String RID_DOTSDOWN { Text = "dotsdown " ; };
+String RID_DOTSLOW { Text = "dotslow " ; };
+String RID_DOTSVERT { Text = "dotsvert " ; };
+String RID_XCIRCY { Text = "<?> circ <?> " ; };
+String RID_XWIDESLASHY { Text = "<?> wideslash <?> " ; };
+String RID_XWIDEBSLASHY { Text = "<?> widebslash <?> " ; };
+String RID_XDIVIDESY { Text = "<?> divides <?> " ; };
+String RID_XNDIVIDESY { Text = "<?> ndivides <?> " ; };
+String RID_DLARROW { Text = "<?> dlarrow <?> " ; };
+String RID_DLRARROW { Text = "<?> dlrarrow <?> " ; };
+String RID_DRARROW { Text = "<?> drarrow <?> " ; };
+String RID_SETN { Text = "setN " ; };
+String RID_SETZ { Text = "setZ " ; };
+String RID_SETQ { Text = "setQ " ; };
+String RID_SETR { Text = "setR " ; };
+String RID_SETC { Text = "setC " ; };
+String RID_WIDEHATX { Text = "widehat <?> " ; };
+String RID_WIDETILDEX { Text = "widetilde <?> " ; };
+String RID_WIDEVECX { Text = "widevec <?> " ; };
+String RID_HBAR { Text = "hbar " ; };
+String RID_LAMBDABAR { Text = "lambdabar " ; };
+String RID_LEFTARROW { Text = "leftarrow " ; };
+String RID_RIGHTARROW { Text = "rightarrow " ; };
+String RID_UPARROW { Text = "uparrow " ; };
+String RID_DOWNARROW { Text = "downarrow " ; };
+
+
+//////////////////////////////////////////
+
+
+Menu RID_COMMANDMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_UNBINOPS_MENU ;
+ HelpId = HID_SMA_UNBINOPS_TBX ;
+ Text = "~Unäre/Binäre Operatoren" ;
+ Text [ ENGLISH ] = "Unary/binary operators" ;
+ Text [ english_us ] = "Unary/Binary Operators" ;
+ Text [ portuguese_brazilian ] = "Unäre/Binäre Operatoren" ;
+ Text [ swedish ] = "~Monära/Binära operatorer" ;
+ Text [ danish ] = "Monadiske/binære operatorer" ;
+ Text [ italian ] = "Operatori unari/binari" ;
+ Text [ spanish ] = "Operadores ~unarios/binarios" ;
+ Text [ french ] = "Opérateurs u~naires/binaires" ;
+ Text [ dutch ] = "~Unaire/binaire operatoren" ;
+ Text [ portuguese ] = "Operadores ~unários/binários" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_PLUSX;
+ HelpId = HID_SMA_PLUSX;
+ Text = "+a";
+ };
+ MenuItem
+ {
+ Identifier = RID_MINUSX;
+ HelpId = HID_SMA_MINUSX;
+ Text = "-a";
+ };
+ MenuItem
+ {
+ Identifier = RID_PLUSMINUSX;
+ HelpId = HID_SMA_PLUSMINUSX;
+ Text = "+-a";
+ };
+ MenuItem
+ {
+ Identifier = RID_MINUSPLUSX;
+ HelpId = HID_SMA_MINUSPLUSX;
+ Text = "-+a";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_XPLUSY;
+ HelpId = HID_SMA_XPLUSY;
+ Text = "a + b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XMINUSY;
+ HelpId = HID_SMA_XMINUSY;
+ Text = "a - b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XCDOTY;
+ HelpId = HID_SMA_XCDOTY;
+ Text = "a cdot b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XTIMESY;
+ HelpId = HID_SMA_XTIMESY;
+ Text = "a times b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSYMTIMESY;
+ HelpId = HID_SMA_XSYMTIMESY;
+ Text = "a * b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XOVERY;
+ HelpId = HID_SMA_XOVERY;
+ Text = "a over b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XDIVY;
+ HelpId = HID_SMA_XDIVY;
+ Text = "a div b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSYMDIVIDEY;
+ HelpId = HID_SMA_XSYMDIVIDEY;
+ Text = "a / b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XCIRCY;
+ HelpId = HID_SMA_XCIRCY;
+ Text = "a circ b";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_XWIDESLASHY;
+ HelpId = HID_SMA_XWIDESLASHY;
+ Text = "a wideslash b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XWIDEBSLASHY;
+ HelpId = HID_SMA_XWIDEBSLASHY;
+ Text = "a widebslash b";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_NEGX;
+ HelpId = HID_SMA_NEGX;
+ Text = "neg a";
+ };
+ MenuItem
+ {
+ Identifier = RID_XANDY;
+ HelpId = HID_SMA_XANDY;
+ Text = "a and b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XORY;
+ HelpId = HID_SMA_XORY;
+ Text = "a or b";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "Ò»Ôª/¶þÔªÔËËã·û";
+ Text[ russian ] = "Óíàðíûå/Áèíàðíûå îïåðàòîðû";
+ Text[ polish ] = "Unarne/binarne operatory";
+ Text[ japanese ] = "¼Þ­°ÅØ/ÊÞ²ÅØ µÍßÚ°À";
+ Text[ chinese_traditional ] = "¤@¤¸/¤G¤¸¹Bºâ²Å";
+ Text[ dutch ] = "~Unaire/binaire operatoren";
+ Text[ chinese_simplified ] = "Ò»Ôª/¶þÔªÔËËã·û";
+ Text[ greek ] = "Åíá~äéêïß/Äõáäéêïß ôåëåóôÝò";
+ Text[ korean ] = "ÀÏÁø/ÀÌÁø ¿¬»êÀÚ";
+ Text[ arabic ] = "ÚæÇãá ÊÔÛíá ÃÍÇÏíÉ/ËäÇÆíÉ";
+ Text[ turkish ] = "Birli/ikili iþleçler";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_RELATIONS_MENU ;
+ HelpId = HID_SMA_RELATIONS_TBX ;
+ Text = "~Relationen" ;
+ Text [ ENGLISH ] = "Relations" ;
+ Text [ english_us ] = "Relations" ;
+ Text [ portuguese_brazilian ] = "Relationen" ;
+ Text [ swedish ] = "~Relationer" ;
+ Text [ danish ] = "Relationer" ;
+ Text [ italian ] = "Relazioni" ;
+ Text [ spanish ] = "~Relaciones" ;
+ Text [ french ] = "~Relations" ;
+ Text [ dutch ] = "~Relaties" ;
+ Text [ portuguese ] = "~Relações" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_XEQY;
+ HelpId = HID_SMA_XEQY;
+ Text = "a = b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNEQY;
+ HelpId = HID_SMA_XNEQY;
+ Text = "a <> b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XLTY;
+ HelpId = HID_SMA_XLTY;
+ Text = "a < b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XLEY;
+ HelpId = HID_SMA_XLEY;
+ Text = "a <= b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XLESLANTY;
+ HelpId = HID_SMA_XLESLANTY;
+ Text = "a leslant b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XGTY;
+ HelpId = HID_SMA_XGTY;
+ Text = "a > b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XGEY;
+ HelpId = HID_SMA_XGEY;
+ Text = "a >= b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XGESLANTY;
+ HelpId = HID_SMA_XGESLANTY;
+ Text = "a geslant b";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_XAPPROXY;
+ HelpId = HID_SMA_XAPPROXY;
+ Text = "a approx b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSIMY;
+ HelpId = HID_SMA_XSIMY;
+ Text = "a sim b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSIMEQY;
+ HelpId = HID_SMA_XSIMEQY;
+ Text = "a simeq b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XEQUIVY;
+ HelpId = HID_SMA_XEQUIVY;
+ Text = "a equiv b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XPROPY;
+ HelpId = HID_SMA_XPROPY;
+ Text = "a prop b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XPARALLELY;
+ HelpId = HID_SMA_XPARALLELY;
+ Text = "a parallel b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XORTHOY;
+ HelpId = HID_SMA_XORTHOY;
+ Text = "a ortho b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XDIVIDESY;
+ HelpId = HID_SMA_XDIVIDESY;
+ Text = "a divides b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNDIVIDESY;
+ HelpId = HID_SMA_XNDIVIDESY;
+ Text = "a ndivides b";
+ };
+ MenuItem
+ {
+ Identifier = RID_XTOWARDY;
+ HelpId = HID_SMA_XTOWARDY;
+ Text = "a toward b";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_DLARROW;
+ HelpId = HID_SMA_DLARROW;
+ Text = "a dlarrow b";
+ };
+ MenuItem
+ {
+ Identifier = RID_DLRARROW;
+ HelpId = HID_SMA_DLRARROW;
+ Text = "a dlrarrow b";
+ };
+ MenuItem
+ {
+ Identifier = RID_DRARROW;
+ HelpId = HID_SMA_DRARROW;
+ Text = "a drarrow b";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "¹Øϵ";
+ Text[ russian ] = "Ñâÿçè";
+ Text[ polish ] = "Relacje";
+ Text[ japanese ] = "ØÚ°¼®Ý";
+ Text[ chinese_traditional ] = "Ãö«Y";
+ Text[ dutch ] = "~Relaties";
+ Text[ chinese_simplified ] = "¹Øϵ";
+ Text[ greek ] = "~Ó÷Ýóåéò";
+ Text[ korean ] = "°ü°è";
+ Text[ arabic ] = "ÚáÇÞÇÊ";
+ Text[ turkish ] = "Ýliþkiler";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_SETOPERATIONS_MENU ;
+ HelpId = HID_SMA_SETOPERATIONS_TBX ;
+ Text = "~Mengenoperationen" ;
+ Text [ ENGLISH ] = "Set operations" ;
+ Text [ english_us ] = "Set Operations" ;
+ Text [ portuguese_brazilian ] = "Mengenoperationen" ;
+ Text [ swedish ] = "~Mängdoperationer" ;
+ Text [ danish ] = "Mængdeoperationer" ;
+ Text [ italian ] = "Operazioni degli insiemi" ;
+ Text [ spanish ] = "~Operaciones de conjuntos" ;
+ Text [ french ] = "O~pérations quantitatives" ;
+ Text [ dutch ] = "~Definities" ;
+ Text [ portuguese ] = "~Operações de conjuntos" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_XINY;
+ HelpId = HID_SMA_XINY;
+ Text = "a in A";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNOTINY;
+ HelpId = HID_SMA_XNOTINY;
+ Text = "a notin A";
+ };
+ MenuItem
+ {
+ Identifier = RID_XOWNSY;
+ HelpId = HID_SMA_XOWNSY;
+ Text = "A owns a";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_XINTERSECTIONY;
+ HelpId = HID_SMA_XINTERSECTIONY;
+ Text = "A intersection B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XUNIONY;
+ HelpId = HID_SMA_XUNIONY;
+ Text = "A union B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSETMINUSY;
+ HelpId = HID_SMA_XSETMINUSY;
+ Text = "A \\ B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSLASHY;
+ HelpId = HID_SMA_XSLASHY;
+ Text = "A / B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSUBSETY;
+ HelpId = HID_SMA_XSUBSETY;
+ Text = "A subset B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSUBSETEQY;
+ HelpId = HID_SMA_XSUBSETEQY;
+ Text = "A subseteq B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSUPSETY;
+ HelpId = HID_SMA_XSUPSETY;
+ Text = "A supset B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XSUPSETEQY;
+ HelpId = HID_SMA_XSUPSETEQY;
+ Text = "A supseteq B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNSUBSETY;
+ HelpId = HID_SMA_XNSUBSETY;
+ Text = "A nsubset B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNSUBSETEQY;
+ HelpId = HID_SMA_XNSUBSETEQY;
+ Text = "A nsubseteq B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNSUPSETY;
+ HelpId = HID_SMA_XNSUPSETY;
+ Text = "A nsupset B";
+ };
+ MenuItem
+ {
+ Identifier = RID_XNSUPSETEQY;
+ HelpId = HID_SMA_XNSUPSETEQY;
+ Text = "A nsupseteq B";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_EMPTYSET;
+ HelpId = HID_SMA_EMPTYSET;
+ Text = "emptyset";
+ };
+ MenuItem
+ {
+ Identifier = RID_ALEPH;
+ HelpId = HID_SMA_ALEPH;
+ Text = "aleph";
+ };
+ MenuItem
+ {
+ Identifier = RID_SETN;
+ HelpId = HID_SMA_SETN;
+ Text = "setN";
+ };
+ MenuItem
+ {
+ Identifier = RID_SETZ;
+ HelpId = HID_SMA_SETZ;
+ Text = "setZ";
+ };
+ MenuItem
+ {
+ Identifier = RID_SETQ;
+ HelpId = HID_SMA_SETQ;
+ Text = "setQ";
+ };
+ MenuItem
+ {
+ Identifier = RID_SETR;
+ HelpId = HID_SMA_SETR;
+ Text = "setR";
+ };
+ MenuItem
+ {
+ Identifier = RID_SETC;
+ HelpId = HID_SMA_SETC;
+ Text = "setC";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ÊýÁ¿¼ÆËã";
+ Text[ russian ] = "Îïåðàöèè ìíîæåñòâà";
+ Text[ polish ] = "Operacje na zbiorach";
+ Text[ japanese ] = "W‡‰‰ŽZ";
+ Text[ chinese_traditional ] = "¼Æ¶q­pºâ";
+ Text[ dutch ] = "~Definities";
+ Text[ chinese_simplified ] = "ÊýÁ¿¼ÆËã";
+ Text[ greek ] = "~ÐñÜîåéò óõíüëùí";
+ Text[ korean ] = "¿¬»êÀÚ ¼³Á¤";
+ Text[ arabic ] = "ãÌãæÚÉ ÚãáíÇÊ";
+ Text[ turkish ] = "Küme iþlemleri";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_FUNCTIONS_MENU ;
+ HelpId = HID_SMA_FUNCTIONS_TBX ;
+ Text = "~Funktionen" ;
+ Text [ ENGLISH ] = "Functions" ;
+ Text [ english_us ] = "Functions" ;
+ Text [ portuguese_brazilian ] = "Funktionen" ;
+ Text [ swedish ] = "~Funktioner" ;
+ Text [ danish ] = "Funktioner" ;
+ Text [ italian ] = "Funzioni" ;
+ Text [ spanish ] = "~Funciones" ;
+ Text [ french ] = "~Fonctions" ;
+ Text [ dutch ] = "~Functies" ;
+ Text [ portuguese ] = "~Funções" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_ABSX;
+ HelpId = HID_SMA_ABSX;
+ Text = "|x|";
+ };
+ MenuItem
+ {
+ Identifier = RID_FACTX;
+ HelpId = HID_SMA_FACTX;
+ Text = "x!";
+ };
+ MenuItem
+ {
+ Identifier = RID_SQRTX;
+ HelpId = HID_SMA_SQRTX;
+ Text = "sqrt x";
+ };
+ MenuItem
+ {
+ Identifier = RID_NROOTXY;
+ HelpId = HID_SMA_NROOTXY;
+ Text = "nroot x y";
+ };
+ MenuItem
+ {
+ Identifier = RID_RSUPX;
+ HelpId = HID_SMA_RSUPX;
+ Text = "x^y";
+ };
+ MenuItem
+ {
+ Identifier = RID_EX;
+ HelpId = HID_SMA_EX;
+ Text = "e^x";
+ };
+ MenuItem
+ {
+ Identifier = RID_LNX;
+ HelpId = HID_SMA_LNX;
+ Text = "ln(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_EXPX;
+ HelpId = HID_SMA_EXPX;
+ Text = "exp(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_LOGX;
+ HelpId = HID_SMA_LOGX;
+ Text = "log(x)";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_SINX;
+ HelpId = HID_SMA_SINX;
+ Text = "sin(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_COSX;
+ HelpId = HID_SMA_COSX;
+ Text = "cos(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_TANX;
+ HelpId = HID_SMA_TANX;
+ Text = "tan(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_COTX;
+ HelpId = HID_SMA_COTX;
+ Text = "cot(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_SINHX;
+ HelpId = HID_SMA_SINHX;
+ Text = "sinh(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_COSHX;
+ HelpId = HID_SMA_COSHX;
+ Text = "cosh(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_TANHX;
+ HelpId = HID_SMA_TANHX;
+ Text = "tanh(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_COTHX;
+ HelpId = HID_SMA_COTHX;
+ Text = "coth(x)";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_FUNCTIONSOTHER1_MENU;
+ HelpId = HID_SMA_FUNCTIONSOTHER1_MENU;
+ Text = "andere";
+ Text [ ENGLISH ] = "other";
+ TEXT[ italian ] = "altri";
+ TEXT[ portuguese_brazilian ] = "andere";
+ TEXT[ portuguese ] = "Outros";
+ TEXT[ danish ] = "andre";
+ TEXT[ french ] = "Autres";
+ TEXT[ swedish ] = "andra";
+ TEXT[ dutch ] = "andere";
+ TEXT[ spanish ] = "otros";
+ TEXT[ english_us ] = "Other";
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_ARCSINX;
+ HelpId = HID_SMA_ARCSINX;
+ Text = "arcsin(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARCCOSX;
+ HelpId = HID_SMA_ARCCOSX;
+ Text = "arccos(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARCTANX;
+ HelpId = HID_SMA_ARCTANX;
+ Text = "arctan(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARCCOTX;
+ HelpId = HID_SMA_ARCCOTX;
+ Text = "arcot(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARSINHX;
+ HelpId = HID_SMA_ARSINHX;
+ Text = "arsinh(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARCOSHX;
+ HelpId = HID_SMA_ARCOSHX;
+ Text = "arcosh(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARTANHX;
+ HelpId = HID_SMA_ARTANHX;
+ Text = "artanh(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_ARCOTHX;
+ HelpId = HID_SMA_ARCOTHX;
+ Text = "arcoth(x)";
+ };
+ };
+ };
+ TEXT[ chinese_simplified ] = "ÆäËû";
+ TEXT[ russian ] = "äðóãèå";
+ TEXT[ polish ] = "inne";
+ TEXT[ japanese ] = "‚»‚Ì‘¼";
+ TEXT[ chinese_traditional ] = "¨ä¥L";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ dutch ] = "andere";
+ TEXT[ chinese_simplified ] = "ÆäËû";
+ TEXT[ greek ] = "Üëëá";
+ TEXT[ korean ] = "±âŸ";
+ TEXT[ arabic ] = "ÛíÑ Ðáß";
+ TEXT[ turkish ] = "Diðer";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèè";
+ Text[ polish ] = "Funkcje";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ dutch ] = "~Functies";
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ greek ] = "~ÓõíáñôÞóåéò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ arabic ] = "ÏÇáÇÊ";
+ Text[ turkish ] = "Fonksiyon";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_OPERATORS_MENU ;
+ HelpId = HID_SMA_OPERATORS_TBX ;
+ Text = "~Operatoren" ;
+ Text [ ENGLISH ] = "Operators" ;
+ Text [ english_us ] = "Operators" ;
+ Text [ portuguese_brazilian ] = "Operatoren" ;
+ Text [ swedish ] = "~Operatorer" ;
+ Text [ danish ] = "Operatorer" ;
+ Text [ italian ] = "Operatori" ;
+ Text [ spanish ] = "~Operadores" ;
+ Text [ french ] = "~Opérateurs" ;
+ Text [ dutch ] = "O~peratoren" ;
+ Text [ portuguese ] = "~Operadores" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_LIMX;
+ HelpId = HID_SMA_LIMX;
+ Text = "lim x";
+ };
+ MenuItem
+ {
+ Identifier = RID_SUMX;
+ HelpId = HID_SMA_SUMX;
+ Text = "sum x";
+ };
+ MenuItem
+ {
+ Identifier = RID_PRODX;
+ HelpId = HID_SMA_PRODX;
+ Text = "prod x";
+ };
+ MenuItem
+ {
+ Identifier = RID_COPRODX;
+ HelpId = HID_SMA_COPRODX;
+ Text = "coprod x";
+ };
+ MenuItem
+ {
+ Identifier = RID_INTX;
+ HelpId = HID_SMA_INTX;
+ Text = "int x";
+ };
+ MenuItem
+ {
+ Identifier = RID_IINTX;
+ HelpId = HID_SMA_IINTX;
+ Text = "iint x";
+ };
+ MenuItem
+ {
+ Identifier = RID_IIINTX;
+ HelpId = HID_SMA_IIINTX;
+ Text = "iiint x";
+ };
+ MenuItem
+ {
+ Identifier = RID_LINTX;
+ HelpId = HID_SMA_LINTX;
+ Text = "lint x";
+ };
+ MenuItem
+ {
+ Identifier = RID_LLINTX;
+ HelpId = HID_SMA_LLINTX;
+ Text = "llint x";
+ };
+ MenuItem
+ {
+ Identifier = RID_LLLINTX;
+ HelpId = HID_SMA_LLLINTX;
+ Text = "lllint x";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_FROMXTOY;
+ HelpId = HID_SMA_FROMXTOY;
+ Text = "... from a to b";
+ };
+ MenuItem
+ {
+ Identifier = RID_FROMX;
+ HelpId = HID_SMA_FROMX;
+ Text = "... from a";
+ };
+ MenuItem
+ {
+ Identifier = RID_TOX;
+ HelpId = HID_SMA_TOX;
+ Text = "... to b";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ÔËËã·û";
+ Text[ russian ] = "Îïåðàòîðû";
+ Text[ polish ] = "Operatory";
+ Text[ japanese ] = "‰‰ŽZŽq";
+ Text[ chinese_traditional ] = "¹Bºâ²Å";
+ Text[ dutch ] = "O~peratoren";
+ Text[ chinese_simplified ] = "ÔËËã·û";
+ Text[ greek ] = "~ÔåëåóôÝò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ arabic ] = "ÚæÇãá ÇáÊÔÛíá";
+ Text[ turkish ] = "Ýþleçler";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_ATTRIBUTES_MENU ;
+ HelpId = HID_SMA_ATTRIBUTES_TBX ;
+ Text = "~Attribute" ;
+ Text [ ENGLISH ] = "Attributes" ;
+ Text [ portuguese ] = "~Atributos" ;
+ Text [ english_us ] = "Attributes" ;
+ Text [ portuguese_brazilian ] = "Attribute" ;
+ Text [ swedish ] = "~Attribut" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ italian ] = "Attributi" ;
+ Text [ spanish ] = "~Atributos" ;
+ Text [ french ] = "~Attributs" ;
+ Text [ dutch ] = "~Attributen" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_ACUTEX;
+ HelpId = HID_SMA_ACUTEX;
+ Text = "acute a";
+ };
+ MenuItem
+ {
+ Identifier = RID_GRAVEX;
+ HelpId = HID_SMA_GRAVEX;
+ Text = "grave a";
+ };
+ MenuItem
+ {
+ Identifier = RID_CHECKX;
+ HelpId = HID_SMA_CHECKX;
+ Text = "check a";
+ };
+ MenuItem
+ {
+ Identifier = RID_BREVEX;
+ HelpId = HID_SMA_BREVEX;
+ Text = "breve a";
+ };
+ MenuItem
+ {
+ Identifier = RID_CIRCLEX;
+ HelpId = HID_SMA_CIRCLEX;
+ Text = "circle a";
+ };
+ MenuItem
+ {
+ Identifier = RID_DOTX;
+ HelpId = HID_SMA_DOTX;
+ Text = "dot a";
+ };
+ MenuItem
+ {
+ Identifier = RID_DDOTX;
+ HelpId = HID_SMA_DDOTX;
+ Text = "ddot a";
+ };
+ MenuItem
+ {
+ Identifier = RID_DDDOTX;
+ HelpId = HID_SMA_DDDOTX;
+ Text = "dddot a";
+ };
+ MenuItem
+ {
+ Identifier = RID_BARX;
+ HelpId = HID_SMA_BARX;
+ Text = "bar a";
+ };
+ MenuItem
+ {
+ Identifier = RID_VECX;
+ HelpId = HID_SMA_VECX;
+ Text = "vec a";
+ };
+ MenuItem
+ {
+ Identifier = RID_TILDEX;
+ HelpId = HID_SMA_TILDEX;
+ Text = "tilde a";
+ };
+ MenuItem
+ {
+ Identifier = RID_HATX;
+ HelpId = HID_SMA_HATX;
+ Text = "hat a";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_WIDEVECX;
+ HelpId = HID_SMA_WIDEVECX;
+ Text = "widevec abc";
+ };
+ MenuItem
+ {
+ Identifier = RID_WIDETILDEX;
+ HelpId = HID_SMA_WIDETILDEX;
+ Text = "widetilde abc";
+ };
+ MenuItem
+ {
+ Identifier = RID_WIDEHATX;
+ HelpId = HID_SMA_WIDEHATX;
+ Text = "widehat abc";
+ };
+ MenuItem
+ {
+ Identifier = RID_OVERLINEX;
+ HelpId = HID_SMA_OVERLINEX;
+ Text = "overline abc";
+ };
+ MenuItem
+ {
+ Identifier = RID_UNDERLINEX;
+ HelpId = HID_SMA_UNDERLINEX;
+ Text = "underline abc";
+ };
+ MenuItem
+ {
+ Identifier = RID_OVERSTRIKEX;
+ HelpId = HID_SMA_OVERSTRIKEX;
+ Text = "overstrike abc";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_PHANTOMX;
+ HelpId = HID_SMA_PHANTOMX;
+ Text = "phantom b";
+ };
+ MenuItem
+ {
+ Identifier = RID_BOLDX;
+ HelpId = HID_SMA_BOLDX;
+ Text = "bold b";
+ };
+ MenuItem
+ {
+ Identifier = RID_ITALX;
+ HelpId = HID_SMA_ITALX;
+ Text = "ital b";
+ };
+ MenuItem
+ {
+ Identifier = RID_SIZEXY;
+ HelpId = HID_SMA_SIZEXY;
+ Text = "size s b";
+ };
+ MenuItem
+ {
+ Identifier = RID_FONTXY;
+ HelpId = HID_SMA_FONTXY;
+ Text = "font f b";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû";
+ Text[ polish ] = "Atrybuty";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ dutch ] = "~Attributen";
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ greek ] = "~Éäéüôçôåò";
+ Text[ korean ] = "¼Ó¼º";
+ Text[ arabic ] = "ÓãÇÊ";
+ Text[ turkish ] = "Öznitelikler";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_BRACKETS_MENU ;
+ HelpId = HID_SMA_BRACKETS_TBX ;
+ Text = "~Klammern" ;
+ Text [ ENGLISH ] = "Parentheses" ;
+ Text [ english_us ] = "Brackets" ;
+ Text [ portuguese_brazilian ] = "Klammern" ;
+ Text [ swedish ] = "~Parenteser" ;
+ Text [ danish ] = "Parenteser" ;
+ Text [ italian ] = "Parentesi" ;
+ Text [ spanish ] = "~Paréntesis" ;
+ Text [ french ] = "~Parenthèses" ;
+ Text [ dutch ] = "~Haakjes" ;
+ Text [ portuguese ] = "~Parênteses" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_LRGROUPX;
+ HelpId = HID_SMA_LRGROUPX;
+ Text = "{...}";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_LRPARENTX;
+ HelpId = HID_SMA_LRPARENTX;
+ Text = "(x)";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRBRACKETX;
+ HelpId = HID_SMA_LRBRACKETX;
+ Text = "[x]";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRDBRACKETX;
+ HelpId = HID_SMA_LRDBRACKETX;
+ Text = "ldbracket x rdbracket ";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRBRACEX;
+ HelpId = HID_SMA_LRBRACEX;
+ Text = "{x}";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRANGLEX;
+ HelpId = HID_SMA_LRANGLEX;
+ Text = "langle x rangle";
+ };
+ MenuItem
+ {
+ Identifier = RID_LMRANGLEXY;
+ HelpId = HID_SMA_LMRANGLEXY;
+ Text = "langle x mline y rangle";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRCEILX;
+ HelpId = HID_SMA_LRCEILX;
+ Text = "lceil x rceil";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRFLOORX;
+ HelpId = HID_SMA_LRFLOORX;
+ Text = "lfloor x rfloor";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRLINEX;
+ HelpId = HID_SMA_LRLINEX;
+ Text = "lline x rline";
+ };
+ MenuItem
+ {
+ Identifier = RID_LRDLINEX;
+ HelpId = HID_SMA_LRDLINEX;
+ Text = "ldline x rdline";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRPARENTX;
+ HelpId = HID_SMA_SLRPARENTX;
+ Text = "left ( x rigth )";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRBRACKETX;
+ HelpId = HID_SMA_SLRBRACKETX;
+ Text = "left [ x right ]";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRDBRACKETX;
+ HelpId = HID_SMA_SLRDBRACKETX;
+ Text = "left ldbracket x right rdbracket ";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRBRACEX;
+ HelpId = HID_SMA_SLRBRACEX;
+ Text = "left { x right }";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRANGLEX;
+ HelpId = HID_SMA_SLRANGLEX;
+ Text = "left langle x right rangle";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLMRANGLEXY;
+ HelpId = HID_SMA_SLMRANGLEXY;
+ Text = "left langle x mline y right rangle";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRCEILX;
+ HelpId = HID_SMA_SLRCEILX;
+ Text = "left lceil x right rceil";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRFLOORX;
+ HelpId = HID_SMA_SLRFLOORX;
+ Text = "left lfloor x right rfloor";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRLINEX;
+ HelpId = HID_SMA_SLRLINEX;
+ Text = "left lline x right rline";
+ };
+ MenuItem
+ {
+ Identifier = RID_SLRDLINEX;
+ HelpId = HID_SMA_SLRDLINEX;
+ Text = "left ldline x right rdline";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_XOVERBRACEY;
+ HelpId = HID_SMA_XOVERBRACEY;
+ Text = "x overbrace y";
+ };
+ MenuItem
+ {
+ Identifier = RID_XUNDERBRACEY;
+ HelpId = HID_SMA_XUNDERBRACEY;
+ Text = "x underbrace y";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "À¨ºÅ";
+ Text[ russian ] = "Ñêîáêè";
+ Text[ polish ] = "Nawiasy";
+ Text[ japanese ] = "Š‡ŒÊ";
+ Text[ chinese_traditional ] = "¬A¸¹";
+ Text[ dutch ] = "~Haakjes";
+ Text[ chinese_simplified ] = "À¨ºÅ";
+ Text[ greek ] = "~ÐáñåíèÝóåéò";
+ Text[ korean ] = "°ýÈ£";
+ Text[ arabic ] = "ÃÞæÇÓ";
+ Text[ turkish ] = "Ayraçlar";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_FORMAT_MENU ;
+ HelpId = HID_SMA_FORMAT_TBX ;
+ Text = "Formatieru~ngen" ;
+ Text [ ENGLISH ] = "Format" ;
+ Text [ english_us ] = "F~ormat" ;
+ Text [ portuguese_brazilian ] = "Formatierungen" ;
+ Text [ swedish ] = "~Formateringar" ;
+ Text [ danish ] = "Formateringer" ;
+ Text [ italian ] = "Formattazioni" ;
+ Text [ spanish ] = "~Formatos" ;
+ Text [ french ] = "Format~age" ;
+ Text [ dutch ] = "~Opmaak" ;
+ Text [ portuguese ] = "~Formatos" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_RSUPX;
+ HelpId = HID_SMA_RSUPX;
+ Text = "^x";
+ };
+ MenuItem
+ {
+ Identifier = RID_RSUBX;
+ HelpId = HID_SMA_RSUBX;
+ Text = "_x";
+ };
+ MenuItem
+ {
+ Identifier = RID_LSUPX;
+ HelpId = HID_SMA_LSUPX;
+ Text = "lsup x";
+ };
+ MenuItem
+ {
+ Identifier = RID_LSUBX;
+ HelpId = HID_SMA_LSUBX;
+ Text = "lsub x";
+ };
+ MenuItem
+ {
+ Identifier = RID_CSUPX;
+ HelpId = HID_SMA_CSUPX;
+ Text = "csup x";
+ };
+ MenuItem
+ {
+ Identifier = RID_CSUBX;
+ HelpId = HID_SMA_CSUBX;
+ Text = "csub x";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_NEWLINE;
+ HelpId = HID_SMA_NEWLINE;
+ Text = "neue Zeile";
+ Text [ ENGLISH ] = "new line" ;
+ Text[ italian ] = "Nuova riga";
+ Text[ portuguese_brazilian ] = "new line";
+ Text[ portuguese ] = "nova linha";
+ Text[ danish ] = "ny linje";
+ Text[ french ] = "nouvelle ligne";
+ Text[ swedish ] = "ny rad";
+ Text[ dutch ] = "nieuwe regel";
+ Text[ spanish ] = "nueva línea";
+ Text[ english_us ] = "New Line";
+ Text[ chinese_simplified ] = "»»ÐÐ";
+ Text[ russian ] = "íîâàÿ ñòðîêà";
+ Text[ polish ] = "nowy wiersz";
+ Text[ japanese ] = "V‚µ‚¢s";
+ Text[ chinese_traditional ] = "´«¦æ";
+ Text[ dutch ] = "nieuwe regel";
+ Text[ chinese_simplified ] = "»»ÐÐ";
+ Text[ greek ] = "ÍÝá ãñáììÞ";
+ Text[ korean ] = "»õ ÁÙ";
+ Text[ arabic ] = "ÎØ ÌÏíÏ";
+ Text[ turkish ] = "Yeni satýr";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_SBLANK;
+ HelpId = HID_SMA_SBLANK;
+ Text = "kleiner Zwischenraum";
+ Text [ ENGLISH ] = "small space" ;
+ Text[ italian ] = "Spazio intemedio piccolo";
+ Text[ portuguese_brazilian ] = "small space";
+ Text[ portuguese ] = "espaçamento pequeno";
+ Text[ danish ] = "lille mellemrum";
+ Text[ french ] = "Petit espace";
+ Text[ swedish ] = "litet mellanrum";
+ Text[ dutch ] = "kleine spatie";
+ Text[ spanish ] = "espacio pequeño";
+ Text[ english_us ] = "Small Gap";
+ Text[ chinese_simplified ] = "С¼ä¸ô";
+ Text[ russian ] = "êîðîòêèé ïðîáåë";
+ Text[ polish ] = "Ma³y odstêp miêdzy ramkami";
+ Text[ japanese ] = "¬½Íß°½";
+ Text[ chinese_traditional ] = "¤p¶¡¹j";
+ Text[ dutch ] = "kleine spatie";
+ Text[ chinese_simplified ] = "С¼ä¸ô";
+ Text[ greek ] = "ìéêñü äéÜêåíï";
+ Text[ korean ] = "ÀÛÀº °£°Ý";
+ Text[ arabic ] = "ÊÈÇÚÏ ÕÛíÑ";
+ Text[ turkish ] = "Küçük aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_BLANK;
+ HelpId = HID_SMA_BLANK;
+ Text = "Zwischenraum";
+ Text [ ENGLISH ] = "space" ;
+ Text[ italian ] = "Spazio intermedio";
+ Text[ portuguese_brazilian ] = "space";
+ Text[ portuguese ] = "espaçamento";
+ Text[ danish ] = "mellemrum";
+ Text[ french ] = "Espace";
+ Text[ swedish ] = "mellanrum";
+ Text[ dutch ] = "spatie";
+ Text[ spanish ] = "espacio";
+ Text[ english_us ] = "Gap";
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Ïðîáåë";
+ Text[ polish ] = "Odstêp ramek";
+ Text[ japanese ] = "½Íß°½";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ dutch ] = "spatie";
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ greek ] = "ÄéÜêåíï";
+ Text[ korean ] = "°£°Ý";
+ Text[ arabic ] = "ÊÈÇÚÏ";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_BINOMXY;
+ HelpId = HID_SMA_BINOMXY;
+ Text = "binom x y";
+ };
+ MenuItem
+ {
+ Identifier = RID_STACK;
+ HelpId = HID_SMA_STACK;
+ Text = "stack {...}";
+ };
+ MenuItem
+ {
+ Identifier = RID_MATRIX;
+ HelpId = HID_SMA_MATRIX;
+ Text = "matrix {...}";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_ALIGNLX;
+ HelpId = HID_SMA_ALIGNLX;
+ Text = "alignl x";
+ };
+ MenuItem
+ {
+ Identifier = RID_ALIGNCX;
+ HelpId = HID_SMA_ALIGNCX;
+ Text = "alignc x";
+ };
+ MenuItem
+ {
+ Identifier = RID_ALIGNRX;
+ HelpId = HID_SMA_ALIGNRX;
+ Text = "alignr x";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "¸ñʽ(~O)";
+ Text[ russian ] = "Ôîðìàòû";
+ Text[ polish ] = "Formatowania";
+ Text[ japanese ] = "‘Ž®Ý’è(~O)";
+ Text[ chinese_traditional ] = "®æ¦¡(~O)";
+ Text[ dutch ] = "~Opmaak";
+ Text[ chinese_simplified ] = "¸ñʽ(~O)";
+ Text[ greek ] = "Ìïñ~öïðïéÞóåéò";
+ Text[ korean ] = "¼­½Ä(~O)";
+ Text[ arabic ] = "ÊäÓíÞ";
+ Text[ turkish ] = "Format";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = RID_MISC_MENU ;
+ HelpId = HID_SMA_MISC_MENU ;
+ Text = "~Sonstiges" ;
+ Text [ ENGLISH ] = "Misc" ;
+ Text [ english_us ] = "~Others" ;
+ Text [ portuguese_brazilian ] = "Sonstiges" ;
+ Text [ swedish ] = "Ö~vrigt" ;
+ Text [ danish ] = "Andet" ;
+ Text [ italian ] = "Altro" ;
+ Text [ spanish ] = "~Otros" ;
+ Text [ french ] = "~Autres" ;
+ Text [ dutch ] = "D~iversen" ;
+ Text [ portuguese ] = "~Outros" ;
+ SubMenu = Menu
+ {
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = RID_INFINITY;
+ HelpId = HID_SMA_INFINITY;
+ Text = "infinity";
+ };
+ MenuItem
+ {
+ Identifier = RID_PARTIAL;
+ HelpId = HID_SMA_PARTIAL;
+ Text = "partial";
+ };
+ MenuItem
+ {
+ Identifier = RID_NABLA;
+ HelpId = HID_SMA_NABLA;
+ Text = "nabla";
+ };
+ MenuItem
+ {
+ Identifier = RID_EXISTS;
+ HelpId = HID_SMA_EXISTS;
+ Text = "exists";
+ };
+ MenuItem
+ {
+ Identifier = RID_FORALL;
+ HelpId = HID_SMA_FORALL;
+ Text = "forall";
+ };
+ MenuItem
+ {
+ Identifier = RID_HBAR;
+ HelpId = HID_SMA_HBAR;
+ Text = "hbar";
+ };
+ MenuItem
+ {
+ Identifier = RID_LAMBDABAR;
+ HelpId = HID_SMA_LAMBDABAR;
+ Text = "lambdabar";
+ };
+ MenuItem
+ {
+ Identifier = RID_RE;
+ HelpId = HID_SMA_RE;
+ Text = "Re";
+ };
+ MenuItem
+ {
+ Identifier = RID_IM;
+ HelpId = HID_SMA_IM;
+ Text = "Im";
+ };
+ MenuItem
+ {
+ Identifier = RID_WP;
+ HelpId = HID_SMA_WP;
+ Text = "wp";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_LEFTARROW;
+ HelpId = HID_SMA_LEFTARROW;
+ Text = "leftarrow";
+ };
+ MenuItem
+ {
+ Identifier = RID_RIGHTARROW;
+ HelpId = HID_SMA_RIGHTARROW;
+ Text = "rightarrow";
+ };
+ MenuItem
+ {
+ Identifier = RID_UPARROW;
+ HelpId = HID_SMA_UPARROW;
+ Text = "uparrow";
+ };
+ MenuItem
+ {
+ Identifier = RID_DOWNARROW;
+ HelpId = HID_SMA_DOWNARROW;
+ Text = "downarrow";
+ };
+ MenuItem
+ {
+ Separator = TRUE;
+ };
+ MenuItem
+ {
+ Identifier = RID_DOTSLOW;
+ HelpId = HID_SMA_DOTSLOW;
+ Text = "dotslow";
+ };
+ MenuItem
+ {
+ Identifier = RID_DOTSAXIS;
+ HelpId = HID_SMA_DOTSAXIS;
+ Text = "dotsaxis";
+ };
+ MenuItem
+ {
+ Identifier = RID_DOTSVERT;
+ HelpId = HID_SMA_DOTSVERT;
+ Text = "dotsvert";
+ };
+ MenuItem
+ {
+ Identifier = RID_DOTSUP;
+ HelpId = HID_SMA_DOTSUP;
+ Text = "dotsup";
+ };
+ MenuItem
+ {
+ Identifier = RID_DOTSDOWN;
+ HelpId = HID_SMA_DOTSDOWN;
+ Text = "dotsdown";
+ };
+ };
+ };
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ russian ] = "Ïðî÷åå";
+ Text[ polish ] = "Ró¿ne";
+ Text[ japanese ] = "‚»‚Ì‘¼";
+ Text[ chinese_traditional ] = "¨ä¥L";
+ Text[ dutch ] = "D~iversen";
+ Text[ chinese_simplified ] = "ÆäËû";
+ Text[ greek ] = "~ÄéÜöïñá";
+ Text[ korean ] = "±âŸ(~O)";
+ Text[ arabic ] = "ãÇ ÚÏì Ðáß";
+ Text[ turkish ] = "Diðer";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/starmath/source/config.cxx b/starmath/source/config.cxx
new file mode 100644
index 000000000000..2a26b23275c3
--- /dev/null
+++ b/starmath/source/config.cxx
@@ -0,0 +1,381 @@
+/*************************************************************************
+ *
+ * $RCSfile: config.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXHINT_HXX //autogen
+#include <svtools/hint.hxx>
+#endif
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+#ifndef _SFXSIDS_HRC //autogen
+#include <sfx2/sfxsids.hrc>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+
+
+#ifndef CONFIG_HXX
+#include "config.hxx"
+#endif
+#ifndef FORMAT_HXX
+#include "format.hxx"
+#endif
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+
+#define DEFSYMFILE "starmath$(lang).sms"
+#define CONFIGVERSION (INT16)0x0001;
+
+
+SmConfig::SmConfig() :
+ SfxConfigItem(SMCONFIGITEM)
+{
+ UseDefault();
+ StartListening(aStandardFormat);
+}
+
+
+SmConfig::~SmConfig()
+{
+ EndListening(aStandardFormat);
+}
+
+
+void SmConfig::SFX_NOTIFY(SfxBroadcaster &, const TypeId &,
+ const SfxHint &rHint, const TypeId &)
+{
+ switch (((SfxSimpleHint &) rHint).GetId())
+ {
+ case HINT_FORMATCHANGED:
+ SetModified(TRUE);
+ SetDefault (FALSE);
+ break;
+ }
+}
+
+
+void SmConfig::ConfigChangedAction()
+{
+ SetModified(TRUE);
+ SetDefault(FALSE);
+ //Broadcast(SfxSimpleHint(HINT_CONFIGCHANGED));
+}
+
+
+void SmConfig::SetValueIfNE(BOOL &rItem, const BOOL bVal)
+ // "Set 'Modified' and 'Value' if not equal"
+{
+ if (rItem != bVal)
+ { rItem = bVal;
+ ConfigChangedAction();
+ }
+}
+
+
+void SmConfig::SetSymbolFile(const String &rText)
+{
+ if (aSymbolFile != rText)
+ {
+ aSymbolFile = rText;
+ ConfigChangedAction();
+ }
+}
+
+
+int SmConfig::Load(SvStream &rStream)
+{
+ // Da die Fileformat Version in ConfigItems nur einen Defaultwert hat setzen
+ // wir diesen hier auf die aktuelle Version, damit beim folgenden (impliziten)
+ // einlesen des 'SmFormat' Objekts aus dem Stream dieses entsprechend
+ // reagieren kann.
+ rStream.SetVersion(SOFFICE_FILEFORMAT_NOW);
+
+ rStream >> *this;
+ SetDefault(FALSE);
+ return SfxConfigItem::ERR_OK;
+}
+
+
+BOOL SmConfig::Store(SvStream &rStream)
+{
+ rStream << *this;
+ return TRUE;
+}
+
+/**************************************************************************/
+
+void SmConfig::UseDefault()
+{
+ SfxConfigItem::UseDefault(); // this implicitly calls 'SetDefault(TRUE)'
+
+ bToolBoxVisible = bCmdBoxWindow = bAutoRedraw = bFormulaCursor =
+ bPrintTitle = bPrintText = bPrintFrame = bWarnNoSymbols =
+ bNoRightSpaces = TRUE;
+
+ aSymbolFile = C2S(DEFSYMFILE);
+ SfxIniManager* pIniMgr = SFX_INIMANAGER();
+ pIniMgr->SearchFile( aSymbolFile, SFX_KEY_USERCONFIG_PATH );
+
+ ePrintSize = PRINT_SIZE_NORMAL;
+ nPrintZoom = 100;
+}
+
+/**************************************************************************/
+
+String SmConfig::GetName() const
+{
+ return C2S("StarMath");
+}
+
+/**************************************************************************/
+
+void SmConfig::ItemSetToConfig(const SfxItemSet &rSet)
+{
+ const SfxPoolItem *pItem = NULL;
+ BOOL bModified = FALSE;
+ String aSymbolFile;
+
+ if (rSet.GetItemState(SID_SYMBOLFILE, TRUE, &pItem) == SFX_ITEM_SET)
+ { aSymbolFile = ((const SfxStringItem *) pItem)->GetValue();
+ DBG_ASSERT(aSymbolFile.Len() > 0, "Symboldatei nicht angegeben !");
+
+ if (aSymbolFile != aSymbolFile)
+ {
+ SfxModule *p = SM_MOD1();
+ SmModule *pp = (SmModule *) p;
+
+ pp->GetConfig()->SetWarnNoSymbols(TRUE);
+ aSymbolFile = aSymbolFile;
+
+ bModified = TRUE;
+ }
+ }
+
+ UINT16 nU16;
+ if (rSet.GetItemState(SID_PRINTSIZE, TRUE, &pItem) == SFX_ITEM_SET)
+ { nU16 = ((const SfxUInt16Item *) pItem)->GetValue();
+ if (ePrintSize != nU16)
+ { ePrintSize = (SmPrintSize) nU16;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_PRINTZOOM, TRUE, &pItem) == SFX_ITEM_SET)
+ { nU16 = ((const SfxUInt16Item *) pItem)->GetValue();
+ if (nPrintZoom != nU16)
+ { nPrintZoom = (USHORT) nU16;
+ bModified = TRUE;
+ }
+ }
+
+ BOOL bVal;
+ if (rSet.GetItemState(SID_PRINTTITLE, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bPrintTitle != bVal)
+ { bPrintTitle = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_PRINTTEXT, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bPrintText != bVal)
+ { bPrintText = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_PRINTFRAME, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bPrintFrame != bVal)
+ { bPrintFrame = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_AUTOREDRAW, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bAutoRedraw != bVal)
+ { bAutoRedraw = bVal;
+ bModified = TRUE;
+ }
+ }
+ if (rSet.GetItemState(SID_NO_RIGHT_SPACES, TRUE, &pItem) == SFX_ITEM_SET)
+ { bVal = ((const SfxBoolItem *) pItem)->GetValue();
+ if (bNoRightSpaces != bVal)
+ { bNoRightSpaces = bVal;
+ bModified = TRUE;
+
+ // (angezeigte) Formeln müssen entsprechen neu formatiert werden.
+ // Das erreichen wir mit:
+ Broadcast(SfxSimpleHint(HINT_FORMATCHANGED));
+ }
+ }
+
+ if (bModified)
+ ConfigChangedAction();
+}
+
+
+void SmConfig::ConfigToItemSet(SfxItemSet &rSet) const
+{
+ const SfxItemPool *pPool = rSet.GetPool();
+
+ rSet.Put(SfxStringItem(pPool->GetWhich(SID_SYMBOLFILE),
+ aSymbolFile));
+
+ rSet.Put(SfxUInt16Item(pPool->GetWhich(SID_PRINTSIZE),
+ (UINT16) ePrintSize));
+ rSet.Put(SfxUInt16Item(pPool->GetWhich(SID_PRINTZOOM),
+ (UINT16) nPrintZoom));
+
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTTITLE), bPrintTitle));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTTEXT), bPrintText));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_PRINTFRAME), bPrintFrame));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_AUTOREDRAW), bAutoRedraw));
+ rSet.Put(SfxBoolItem(pPool->GetWhich(SID_NO_RIGHT_SPACES), bNoRightSpaces));
+}
+
+
+/**************************************************************************/
+
+
+SvStream & operator << (SvStream &rStream, const SmConfig &rConfig)
+{
+ rStream << CONFIGVERSION;
+
+ UINT16 nFlags = rConfig.bPrintTitle
+ | (rConfig.bPrintText << 1)
+ | (rConfig.bPrintFrame << 2)
+ | (rConfig.bWarnNoSymbols << 3)
+ | (rConfig.bToolBoxVisible << 4)
+ | (rConfig.bCmdBoxWindow << 5)
+ | (rConfig.bAutoRedraw << 6)
+ | (rConfig.bFormulaCursor << 7)
+ | (rConfig.bNoRightSpaces << 8);
+
+ rStream << nFlags;
+
+ rStream << (INT16) rConfig.ePrintSize;
+ rStream << (INT16) rConfig.nPrintZoom;
+
+ rStream.WriteByteString(rConfig.aSymbolFile, gsl_getSystemTextEncoding());
+ rStream << rConfig.aStandardFormat;
+
+ for (int i = 0; i < 7; i++)
+ rStream << rConfig.vFontPickList[i];
+
+ return rStream;
+}
+
+
+SvStream & operator >> (SvStream &rStream, SmConfig &rConfig)
+{
+ INT16 nVer;
+ rStream >> nVer;
+
+ UINT16 nFlags;
+ rStream >> nFlags;
+
+ rConfig.bPrintTitle = nFlags & 0x01;
+ rConfig.bPrintText = (nFlags >> 1) & 0x01;
+ rConfig.bPrintFrame = (nFlags >> 2) & 0x01;
+ rConfig.bWarnNoSymbols = (nFlags >> 3) & 0x01;
+ rConfig.bToolBoxVisible = (nFlags >> 4) & 0x01;
+ rConfig.bCmdBoxWindow = (nFlags >> 5) & 0x01;
+ rConfig.bAutoRedraw = (nFlags >> 6) & 0x01;
+ rConfig.bFormulaCursor = (nFlags >> 7) & 0x01;
+ rConfig.bNoRightSpaces = (nFlags >> 8) & 0x01;
+
+ INT16 nI16;
+ rStream >> nI16;
+ rConfig.ePrintSize = (SmPrintSize) nI16;
+ rStream >> nI16;
+ rConfig.nPrintZoom = (USHORT) nI16;
+
+ rStream.ReadByteString(rConfig.aSymbolFile, gsl_getSystemTextEncoding());
+ rStream >> rConfig.aStandardFormat;
+
+ for (int i = 0; i < 7; i++)
+ rStream >> rConfig.vFontPickList[i];
+
+ return rStream;
+}
+
+
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx
new file mode 100644
index 000000000000..056103b3c61b
--- /dev/null
+++ b/starmath/source/dialog.cxx
@@ -0,0 +1,2405 @@
+/*************************************************************************
+ *
+ * $RCSfile: dialog.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#define SMDLL 1
+
+#ifndef _TOOLS_RCID_H
+#include "tools/rcid.h"
+#endif
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _CTRLTOOL_HXX //autogen
+#include <svtools/ctrltool.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SV_SOUND_HXX //autogen
+#include <vcl/sound.hxx>
+#endif
+#ifndef _SV_SNDSTYLE_HXX //autogen
+#include <vcl/sndstyle.hxx>
+#endif
+#ifndef _SV_WAITOBJ_HXX
+#include <vcl/waitobj.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_HRC //autogen
+#include <sfx2/sfx.hrc>
+#endif
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+
+
+#ifndef CONFIG_HXX
+#include "config.hxx"
+#endif
+#ifndef DIALOG_HXX
+#include "dialog.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+#ifndef SYMBOL_HXX
+#include "symbol.hxx"
+#endif
+#ifndef VIEW_HXX
+#include "view.hxx"
+#endif
+#ifndef DOCUMENT_HXX
+#include "document.hxx"
+#endif
+
+////////////////////////////////////////
+//
+// Da der FontStyle besser über die Attribute gesetzt/abgefragt wird als über
+// den StyleName bauen wir uns hier unsere eigene Übersetzung
+// Attribute <-> StyleName
+// Die Bits des Index stellen die Attribute dar:
+// Bit 0 : italic
+// Bit 1 : bold
+//
+
+static XubString __READONLY_DATA aStyleName[4] =
+{
+ C2S("normal"), C2S("italic"),
+ C2S("bold"), C2S("bold italic")
+};
+
+USHORT aStyleNameCount = sizeof(aStyleName) / sizeof(aStyleName[0]);
+
+
+const XubString GetFontStyleName(const Font &rFont)
+{
+ USHORT nIndex = 2 * (rFont.GetWeight() == WEIGHT_BOLD)
+ + 1 * (rFont.GetItalic() == ITALIC_NORMAL);
+ return aStyleName[nIndex];
+}
+
+
+void SetFontStyle(const XubString &rStyleName, Font &rFont)
+{
+ // finden des Index passend zum StyleName fuer den leeren StyleName wird
+ // 0 (nicht bold nicht italic) angenommen.
+ USHORT nIndex = 0;
+ if (rStyleName.Len())
+ {
+ USHORT i;
+ for (i = 0; i < aStyleNameCount; i++)
+ if (rStyleName.CompareTo(aStyleName[i]) == COMPARE_EQUAL)
+ break;
+ DBG_ASSERT(i < aStyleNameCount, "Sm : StyleName unbekannt");
+ nIndex = i;
+ }
+
+ rFont.SetItalic((nIndex & 0x1) ? ITALIC_NORMAL : ITALIC_NONE);
+ rFont.SetWeight((nIndex & 0x2) ? WEIGHT_BOLD : WEIGHT_NORMAL);
+}
+
+
+/**************************************************************************/
+
+SmAboutDialog::SmAboutDialog(Window *pParent, BOOL bFreeRes) :
+ ModalDialog (pParent, SmResId(RID_DEFAULTABOUT)),
+ aFixedText1 (this, ResId(1)),
+ aFixedText2 (this, ResId(2)),
+ aFixedText3 (this, ResId(3)),
+ aFixedText4 (this, ResId(4)),
+ aFixedText5 (this, ResId(5)),
+ aFixedText6 (this, ResId(6)),
+ aReleaseText (this, ResId(7)),
+ aFixedBitmap1(this, ResId(1)),
+ aOKButton1 (this, ResId(1))
+{
+ if (bFreeRes)
+ FreeResource();
+
+#ifndef PRODUCT
+ aReleaseText.Show();
+#else
+ aReleaseText.Hide();
+#endif
+
+}
+
+/**************************************************************************/
+
+
+IMPL_LINK_INLINE_START( SmPrintOptionsTabPage, SizeButtonClickHdl, Button *, pButton )
+{
+ aZoom.Enable(aSizeZoomed.IsChecked());
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmPrintOptionsTabPage, SizeButtonClickHdl, Button *, pButton )
+
+
+SmPrintOptionsTabPage::SmPrintOptionsTabPage(Window *pParent, const SfxItemSet &rOptions)
+ : SfxTabPage(pParent, SmResId(RID_PRINTOPTIONPAGE), rOptions),
+ aGroupBox1 (this, ResId(1)),
+ aTitle (this, ResId(1)),
+ aText (this, ResId(2)),
+ aFrame (this, ResId(3)),
+ aGroupBox3 (this, ResId(3)),
+ aNoRightSpaces (this, ResId(4)),
+ aGroupBox2 (this, ResId(2)),
+ aSizeNormal (this, ResId(1)),
+ aSizeScaled (this, ResId(2)),
+ aSizeZoomed (this, ResId(3)),
+ aZoom (this, ResId(1))
+{
+ FreeResource();
+
+ aSizeNormal.SetClickHdl(LINK(this, SmPrintOptionsTabPage, SizeButtonClickHdl));
+ aSizeScaled.SetClickHdl(LINK(this, SmPrintOptionsTabPage, SizeButtonClickHdl));
+ aSizeZoomed.SetClickHdl(LINK(this, SmPrintOptionsTabPage, SizeButtonClickHdl));
+
+ Reset(rOptions);
+}
+
+
+BOOL SmPrintOptionsTabPage::FillItemSet(SfxItemSet& rSet)
+{
+ UINT16 nPrintSize;
+ if (aSizeNormal.IsChecked())
+ nPrintSize = PRINT_SIZE_NORMAL;
+ else if (aSizeScaled.IsChecked())
+ nPrintSize = PRINT_SIZE_SCALED;
+ else
+ nPrintSize = PRINT_SIZE_ZOOMED;
+
+ rSet.Put(SfxUInt16Item(GetWhich(SID_PRINTSIZE), (UINT16) nPrintSize));
+ rSet.Put(SfxUInt16Item(GetWhich(SID_PRINTZOOM), (UINT16) aZoom.GetValue()));
+ rSet.Put(SfxBoolItem(GetWhich(SID_PRINTTITLE), aTitle.IsChecked()));
+ rSet.Put(SfxBoolItem(GetWhich(SID_PRINTTEXT), aText.IsChecked()));
+ rSet.Put(SfxBoolItem(GetWhich(SID_PRINTFRAME), aFrame.IsChecked()));
+ rSet.Put(SfxBoolItem(GetWhich(SID_NO_RIGHT_SPACES), aNoRightSpaces.IsChecked()));
+
+ return TRUE;
+}
+
+
+void SmPrintOptionsTabPage::Reset(const SfxItemSet& rSet)
+{
+ SmPrintSize ePrintSize = (SmPrintSize)((const SfxUInt16Item &)rSet.Get(GetWhich(SID_PRINTSIZE))).GetValue();
+
+ aSizeNormal.Check(ePrintSize == PRINT_SIZE_NORMAL);
+ aSizeScaled.Check(ePrintSize == PRINT_SIZE_SCALED);
+ aSizeZoomed.Check(ePrintSize == PRINT_SIZE_ZOOMED);
+
+ aZoom.Enable(aSizeZoomed.IsChecked());
+
+ aZoom.SetValue(((const SfxUInt16Item &)rSet.Get(GetWhich(SID_PRINTZOOM))).GetValue());
+
+ aTitle.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_PRINTTITLE))).GetValue());
+ aText.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_PRINTTEXT))).GetValue());
+ aFrame.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_PRINTFRAME))).GetValue());
+ aNoRightSpaces.Check(((const SfxBoolItem &)rSet.Get(GetWhich(SID_NO_RIGHT_SPACES))).GetValue());
+}
+
+
+SfxTabPage* SmPrintOptionsTabPage::Create(Window* pWindow, const SfxItemSet& rSet)
+{
+ return (new SmPrintOptionsTabPage(pWindow, rSet));
+}
+
+/**************************************************************************/
+
+
+#ifdef NEVER
+SmExtraOptionsTabPage::SmExtraOptionsTabPage(const SfxItemSet& rInSet, Window * pParent, BOOL bFreeRes)
+ : SfxTabPage(pParent, SmResId(RID_EXTRAOPTIONPAGE), rInSet),
+ aAutoRedraw (this, ResId(1)),
+ aFixedText1 (this, ResId(1)),
+ aSymbolFile (this, ResId(2), 32),
+ aBrowseButton (this, ResId(1))
+{
+ if (bFreeRes)
+ FreeResource();
+
+ aBrowseButton.SetClickHdl(LINK(this, SmExtraOptionsTabPage, SymClickHdl));
+}
+
+
+IMPL_LINK( SmExtraOptionsTabPage, SymClickHdl, PushButton *, pPushButton )
+{
+ SfxSimpleFileDialog *pFileDialog =
+ new SfxSimpleFileDialog(this, WinBits(WB_OPEN | WB_3DLOOK));
+
+#ifdef MAC
+ pFileDialog->AddFilter(SmResId(RID_SYMBOLFILESSTR), SmResId(RID_FILESYMTYP));
+ pFileDialog->AddFilter(SmResId(RID_ALLFILESSTR), "****");
+
+ pFileDialog->SetCurFilter(SmResId(RID_SYMBOLFILESSTR));
+#else
+ pFileDialog->AddFilter(SmResId(RID_SYMBOLFILESSTR), C2S("*.sms"));
+ pFileDialog->AddFilter(SmResId(RID_ALLFILESSTR), C2S("*.*"));
+
+ pFileDialog->SetCurFilter(SmResId(RID_SYMBOLFILESSTR));
+
+ pFileDialog->SetDefaultExt(C2S("*.sms"));
+#endif
+
+ pFileDialog->SetPath(aSymbolFile.GetText());
+
+ if (pFileDialog->Execute() == RET_OK)
+ aSymbolFile.SetText(pFileDialog->GetPath());
+
+ delete pFileDialog;
+ return 0;
+}
+
+
+BOOL SmExtraOptionsTabPage::FillItemSet(SfxItemSet& rOutSet)
+{
+ rOutSet.Put(SfxBoolItem(GetWhich(SID_AUTOREDRAW), aAutoRedraw.IsChecked()));
+ rOutSet.Put(SfxStringItem(GetWhich(SID_SYMBOLFILE), aSymbolFile.GetText()));
+
+ return (TRUE);
+}
+
+
+void SmExtraOptionsTabPage::Reset(const SfxItemSet& rOutSet)
+{
+ aAutoRedraw.Check(((const SfxBoolItem&)rOutSet.Get(GetWhich(SID_AUTOREDRAW))).GetValue());
+ aSymbolFile.SetText(((const SfxStringItem&)rOutSet.Get(GetWhich(SID_SYMBOLFILE))).GetValue());
+}
+
+
+SfxTabPage* SmExtraOptionsTabPage::Create(Window* pWindow, const SfxItemSet& rSet)
+{
+ return (new SmExtraOptionsTabPage(rSet, pWindow));
+}
+#endif //NEVER
+
+/**************************************************************************/
+
+
+void SmShowFont::Paint(const Rectangle&)
+{
+ XubString Text (GetFont().GetName());
+ Size TextSize(GetTextWidth(Text), GetTextHeight());
+
+ DrawText(Point((GetOutputSize().Width() - TextSize.Width()) / 2,
+ (GetOutputSize().Height() - TextSize.Height()) / 2), Text);
+}
+
+
+void SmShowFont::SetFont(const Font& rFont)
+{
+ Font aFont (rFont);
+
+ Invalidate();
+ aFont.SetSize(Size(0, 24));
+ aFont.SetAlign(ALIGN_TOP);
+ Control::SetFont(aFont);
+}
+
+
+IMPL_LINK_INLINE_START( SmFontDialog, FontChangeHdl, ComboBox *, pComboBox )
+{
+ Face.SetName(pComboBox->GetText());
+ aShowFont.SetFont(Face);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmFontDialog, FontChangeHdl, ComboBox *, pComboBox )
+
+
+IMPL_LINK( SmFontDialog, AttrChangeHdl, CheckBox *, pCheckBox )
+{
+ if (aBoldCheckBox.IsChecked())
+ Face.SetWeight(FontWeight(WEIGHT_BOLD));
+ else
+ Face.SetWeight(FontWeight(WEIGHT_NORMAL));
+
+ if (aItalicCheckBox.IsChecked())
+ Face.SetItalic(ITALIC_NORMAL);
+ else
+ Face.SetItalic(ITALIC_NONE);
+
+ aShowFont.SetFont(Face);
+ return 0;
+}
+
+
+void SmFontDialog::SetFont(const Font &rFont)
+{
+ Face = rFont;
+
+ aFontBox.SetText(Face.GetName());
+ aBoldCheckBox.Check(Face.GetWeight() == WEIGHT_BOLD);
+ aItalicCheckBox.Check(Face.GetItalic() != ITALIC_NONE);
+
+ aShowFont.SetFont(Face);
+}
+
+
+SmFontDialog::SmFontDialog(Window * pParent, BOOL bFreeRes)
+ : ModalDialog(pParent,SmResId(RID_FONTDIALOG)),
+ aFixedText1 (this, ResId(1)),
+ aFontBox (this, ResId(1)),
+ aBoldCheckBox (this, ResId(1)),
+ aItalicCheckBox (this, ResId(2)),
+ aOKButton1 (this, ResId(1)),
+ aCancelButton1 (this, ResId(1)),
+ aShowFont (this, ResId(1)),
+ aGroupBox1 (this, ResId(1)),
+ aGroupBox2 (this, ResId(2))
+{
+ if (bFreeRes)
+ FreeResource();
+
+ {
+ WaitObject( this );
+ //Application::EnterWait();
+
+ // get FontList from printer (if possible), otherwise from application window
+ SmViewShell *pView = SmGetActiveView();
+ DBG_ASSERT(pView, "Sm : NULL pointer");
+ OutputDevice *pDev = pView->GetDoc()->GetPrinter();
+ if (!pDev || pDev->GetDevFontCount() == 0)
+ pDev = &pView->GetGraphicWindow();
+ FontList aFontList(pDev);
+
+ USHORT nCount = aFontList.GetFontNameCount();
+ for (USHORT i = 0; i < nCount; i++)
+ aFontBox.InsertEntry( aFontList.GetFontName(i).GetName() );
+
+ Face.SetSize(Size(0, 24));
+ Face.SetWeight(WEIGHT_NORMAL);
+ Face.SetItalic(ITALIC_NONE);
+ Face.SetFamily(FAMILY_DONTKNOW);
+ Face.SetPitch(PITCH_DONTKNOW);
+ Face.SetCharSet(RTL_TEXTENCODING_DONTKNOW);
+ Face.SetTransparent(TRUE);
+
+ aShowFont.SetFillColor( Color(COL_LIGHTGRAY) );
+
+ //Application::LeaveWait();
+ }
+
+ aFontBox.SetSelectHdl(LINK(this, SmFontDialog, FontChangeHdl));
+ aBoldCheckBox.SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl));
+ aItalicCheckBox.SetClickHdl(LINK(this, SmFontDialog, AttrChangeHdl));
+}
+
+/**************************************************************************/
+
+
+IMPL_LINK( SmFontSizeDialog, DefaultButtonClickHdl, Button *, pButton )
+{
+ QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
+
+ if (pQueryBox->Execute() == RET_YES)
+ {
+ SmModule *pp = SM_MOD1();
+ WriteTo(pp->GetConfig()->GetFormat());
+ }
+
+ delete pQueryBox;
+ return 0;
+}
+
+
+SmFontSizeDialog::SmFontSizeDialog(Window * pParent, BOOL bFreeRes)
+ : ModalDialog(pParent, SmResId(RID_FONTSIZEDIALOG)),
+ aFixedText1(this, ResId(1)),
+ aBaseSize(this, ResId(1)),
+ aFixedText4(this, ResId(4)),
+ aTextSize(this, ResId(4)),
+ aFixedText5(this, ResId(5)),
+ aIndexSize(this, ResId(5)),
+ aFixedText6(this, ResId(6)),
+ aFunctionSize(this, ResId(6)),
+ aFixedText7(this, ResId(7)),
+ aOperatorSize(this, ResId(7)),
+ aFixedText8(this, ResId(8)),
+ aBorderSize(this, ResId(8)),
+ aGroupBox1(this, ResId(1)),
+ aOKButton1(this, ResId(1)),
+ aCancelButton1(this, ResId(1)),
+ aDefaultButton(this, ResId(1))
+{
+ if (bFreeRes)
+ FreeResource();
+
+ aDefaultButton.SetClickHdl(LINK(this, SmFontSizeDialog, DefaultButtonClickHdl));
+}
+
+
+void SmFontSizeDialog::ReadFrom(const SmFormat &rFormat)
+{
+ //! aufpassen: richtig runden!
+ aBaseSize.SetValue( SmRoundFraction(
+ Sm100th_mmToPts( rFormat.GetBaseSize().Height() ) ) );
+
+ aTextSize .SetValue( rFormat.GetRelSize(SIZ_TEXT) );
+ aIndexSize .SetValue( rFormat.GetRelSize(SIZ_INDEX) );
+ aFunctionSize.SetValue( rFormat.GetRelSize(SIZ_FUNCTION) );
+ aOperatorSize.SetValue( rFormat.GetRelSize(SIZ_OPERATOR) );
+ aBorderSize .SetValue( rFormat.GetRelSize(SIZ_LIMITS) );
+}
+
+
+void SmFontSizeDialog::WriteTo(SmFormat &rFormat) const
+{
+ rFormat.SetBaseSize( Size(0, SmPtsTo100th_mm(aBaseSize.GetValue())) );
+
+ rFormat.SetRelSize(SIZ_TEXT, (USHORT) aTextSize .GetValue());
+ rFormat.SetRelSize(SIZ_INDEX, (USHORT) aIndexSize .GetValue());
+ rFormat.SetRelSize(SIZ_FUNCTION, (USHORT) aFunctionSize.GetValue());
+ rFormat.SetRelSize(SIZ_OPERATOR, (USHORT) aOperatorSize.GetValue());
+ rFormat.SetRelSize(SIZ_LIMITS, (USHORT) aBorderSize .GetValue());
+
+ const Size aTmp (rFormat.GetBaseSize());
+ for (USHORT i = FNT_BEGIN; i <= FNT_END; i++)
+ rFormat.Font(i).SetSize(aTmp);
+
+ rFormat.RequestApplyChanges();
+}
+
+
+/**************************************************************************/
+
+
+IMPL_LINK( SmFontTypeDialog, MenuSelectHdl, Menu *, pMenu )
+{
+ SmFontPickListBox *pActiveListBox;
+
+ switch (pMenu->GetCurItemId())
+ {
+ case 1: pActiveListBox = &aVariableFont; break;
+ case 2: pActiveListBox = &aFunctionFont; break;
+ case 3: pActiveListBox = &aNumberFont; break;
+ case 4: pActiveListBox = &aTextFont; break;
+ case 5: pActiveListBox = &aSerifFont; break;
+ case 6: pActiveListBox = &aSansFont; break;
+ case 7: pActiveListBox = &aFixedFont; break;
+ default:pActiveListBox = NULL;
+ }
+
+ if (pActiveListBox)
+ {
+ SmFontDialog *pFontDialog = new SmFontDialog(this);
+
+ pActiveListBox->WriteTo(*pFontDialog);
+ if (pFontDialog->Execute() == RET_OK)
+ pActiveListBox->ReadFrom(*pFontDialog);
+ delete pFontDialog;
+ }
+ return 0;
+}
+
+
+IMPL_LINK_INLINE_START( SmFontTypeDialog, DefaultButtonClickHdl, Button *, pButton )
+{
+ QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
+ if (pQueryBox->Execute() == RET_YES)
+ {
+ SmModule *pp = SM_MOD1();
+ WriteTo(pp->GetConfig()->GetFormat());
+ }
+
+ delete pQueryBox;
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmFontTypeDialog, DefaultButtonClickHdl, Button *, pButton )
+
+
+SmFontTypeDialog::SmFontTypeDialog(Window * pParent, BOOL bFreeRes)
+ : ModalDialog(pParent, SmResId(RID_FONTTYPEDIALOG)),
+ aFixedText1 (this, ResId(1)),
+ aVariableFont (this, ResId(1)),
+ aFixedText2 (this, ResId(2)),
+ aFunctionFont (this, ResId(2)),
+ aFixedText3 (this, ResId(3)),
+ aNumberFont (this, ResId(3)),
+ aFixedText4 (this, ResId(4)),
+ aTextFont (this, ResId(4)),
+ aFixedText5 (this, ResId(5)),
+ aSerifFont (this, ResId(5)),
+ aFixedText6 (this, ResId(6)),
+ aSansFont (this, ResId(6)),
+ aFixedText7 (this, ResId(7)),
+ aFixedFont (this, ResId(7)),
+ aGroupBox1 (this, ResId(1)),
+ aGroupBox2 (this, ResId(2)),
+ aOKButton1 (this, ResId(1)),
+ aCancelButton1 (this, ResId(1)),
+ aMenuButton (this, ResId(1)),
+ aDefaultButton (this, ResId(2))
+{
+ if (bFreeRes)
+ FreeResource();
+
+ aDefaultButton.SetClickHdl(LINK(this, SmFontTypeDialog, DefaultButtonClickHdl));
+
+ aMenuButton.GetPopupMenu()->SetSelectHdl(LINK(this, SmFontTypeDialog, MenuSelectHdl));
+}
+
+void SmFontTypeDialog::ReadFrom(const SmFormat &rFormat)
+{
+ SmModule *pp = SM_MOD1();
+
+ aVariableFont = pp->GetConfig()->GetFontPickList(FNT_VARIABLE);
+ aFunctionFont = pp->GetConfig()->GetFontPickList(FNT_FUNCTION);
+ aNumberFont = pp->GetConfig()->GetFontPickList(FNT_NUMBER);
+ aTextFont = pp->GetConfig()->GetFontPickList(FNT_TEXT);
+ aSerifFont = pp->GetConfig()->GetFontPickList(FNT_SERIF);
+ aSansFont = pp->GetConfig()->GetFontPickList(FNT_SANS);
+ aFixedFont = pp->GetConfig()->GetFontPickList(FNT_FIXED);
+
+ aVariableFont.Insert( rFormat.GetFont(FNT_VARIABLE) );
+ aFunctionFont.Insert( rFormat.GetFont(FNT_FUNCTION) );
+ aNumberFont .Insert( rFormat.GetFont(FNT_NUMBER) );
+ aTextFont .Insert( rFormat.GetFont(FNT_TEXT) );
+ aSerifFont .Insert( rFormat.GetFont(FNT_SERIF) );
+ aSansFont .Insert( rFormat.GetFont(FNT_SANS) );
+ aFixedFont .Insert( rFormat.GetFont(FNT_FIXED) );
+}
+
+
+void SmFontTypeDialog::WriteTo(SmFormat &rFormat) const
+{
+ SmModule *pp = SM_MOD1();
+
+ pp->GetConfig()->GetFontPickList(FNT_VARIABLE) = aVariableFont;
+ pp->GetConfig()->GetFontPickList(FNT_FUNCTION) = aFunctionFont;
+ pp->GetConfig()->GetFontPickList(FNT_NUMBER) = aNumberFont;
+ pp->GetConfig()->GetFontPickList(FNT_TEXT) = aTextFont;
+ pp->GetConfig()->GetFontPickList(FNT_SERIF) = aSerifFont;
+ pp->GetConfig()->GetFontPickList(FNT_SANS) = aSansFont;
+ pp->GetConfig()->GetFontPickList(FNT_FIXED) = aFixedFont;
+
+ rFormat.SetFont( FNT_VARIABLE, aVariableFont.Get(0) );
+ rFormat.SetFont( FNT_FUNCTION, aFunctionFont.Get(0) );
+ rFormat.SetFont( FNT_NUMBER, aNumberFont .Get(0) );
+ rFormat.SetFont( FNT_TEXT, aTextFont .Get(0) );
+ rFormat.SetFont( FNT_SERIF, aSerifFont .Get(0) );
+ rFormat.SetFont( FNT_SANS, aSansFont .Get(0) );
+ rFormat.SetFont( FNT_FIXED, aFixedFont .Get(0) );
+
+ for (USHORT i = FNT_BEGIN; i <= FNT_FIXED; i++)
+ rFormat.Font(i).SetTransparent(TRUE);
+
+ rFormat.RequestApplyChanges();
+}
+
+/**************************************************************************/
+
+struct FieldMinMax
+{
+ USHORT nMin, nMax;
+};
+
+// Data for min and max values of the 4 metric fields
+// for each of the 10 categories
+static const FieldMinMax pMinMaxData[10][4] =
+{
+ // 0
+ {{ 0, 200 }, { 0, 200 }, { 0, 100 }, { 0, 0 }},
+ // 1
+ {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
+ // 2
+ {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
+ // 3
+ {{ 0, 100 }, { 1, 100 }, { 0, 0 }, { 0, 0 }},
+ // 4
+ {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
+ // 5
+ {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 100 }},
+ // 6
+ {{ 0, 300 }, { 0, 300 }, { 0, 0 }, { 0, 0 }},
+ // 7
+ {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
+ // 8
+ {{ 0, 100 }, { 0, 100 }, { 0, 0 }, { 0, 0 }},
+ // 9
+ {{ 0, 10000 }, { 0, 10000 }, { 0, 10000 }, { 0, 10000 }}
+};
+
+SmCategoryDesc::SmCategoryDesc(const ResId& rResId, USHORT nCategoryIdx) :
+ Resource(rResId)
+{
+ if (IsAvailableRes(ResId(1).SetRT(RSC_STRING)))
+ {
+ Name = XubString(ResId(1));
+
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ int nI2 = i + 2;
+
+ if (IsAvailableRes(ResId(nI2).SetRT(RSC_STRING)))
+ {
+ Strings[i] = new XubString(ResId(nI2));
+ Graphics[i] = new Bitmap(ResId(nI2));
+ }
+ else
+ {
+ Strings[i] = 0;
+ Graphics[i] = 0;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ const FieldMinMax &rMinMax = pMinMaxData[ nCategoryIdx ][i];
+ Value[i] = Minimum[i] = rMinMax.nMin;
+ Maximum[i] = rMinMax.nMax;
+ }
+ }
+
+ FreeResource();
+}
+
+
+SmCategoryDesc::~SmCategoryDesc()
+{
+ for (int i = 0; i < 4; i++)
+ {
+ delete Strings[i];
+ delete Graphics[i];
+ }
+}
+
+/**************************************************************************/
+
+IMPL_LINK( SmDistanceDialog, GetFocusHdl, Control *, pControl )
+{
+ if (Categories[nActiveCategory])
+ {
+ USHORT i;
+
+ if (pControl == &aMetricField1)
+ i = 0;
+ else if (pControl == &aMetricField2)
+ i = 1;
+ else if (pControl == &aMetricField3)
+ i = 2;
+ else if (pControl == &aMetricField4)
+ i = 3;
+ else
+ return 0;
+ aBitmap.SetBitmap(*(Categories[nActiveCategory]->GetGraphic(i)));
+ }
+ return 0;
+}
+
+IMPL_LINK( SmDistanceDialog, MenuSelectHdl, Menu *, pMenu )
+{
+ SetCategory(pMenu->GetCurItemId() - 1);
+ return 0;
+}
+
+
+IMPL_LINK( SmDistanceDialog, DefaultButtonClickHdl, Button *, pButton )
+{
+ QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
+
+ if (pQueryBox->Execute() == RET_YES)
+ {
+ SmModule *pp = SM_MOD1();
+ WriteTo(pp->GetConfig()->GetFormat());
+ }
+ delete pQueryBox;
+ return 0;
+}
+
+
+IMPL_LINK( SmDistanceDialog, CheckBoxClickHdl, CheckBox *, pCheckBox )
+{
+ if (pCheckBox == &aCheckBox1)
+ {
+ aCheckBox1.Toggle();
+
+ BOOL bChecked = aCheckBox1.IsChecked();
+ aFixedText4 .Enable( bChecked );
+ aMetricField4.Enable( bChecked );
+ }
+ return 0;
+}
+
+
+void SmDistanceDialog::SetHelpId(MetricField &rField, ULONG nHelpId)
+{
+ //! HelpID's die auf diese Weise explizit gesetzt werden, müssen im
+ //! util Verzeichnis im File "hidother.src" mit Hilfe von "hidspecial"
+ //! definiert werden!
+
+ const XubString aEmptyText;
+ DBG_ASSERT(aEmptyText.Len() == 0, "Sm: Ooops...");
+
+ rField.SetHelpId(nHelpId);
+ rField.SetHelpText(aEmptyText);
+
+ // since MetricField inherits from SpinField which has a sub Edit field
+ // (which is actually the one we modify) we have to set the help-id
+ // for it too.
+ Edit *pSubEdit = rField.GetSubEdit();
+ if (pSubEdit)
+ { pSubEdit->SetHelpId(nHelpId);
+ pSubEdit->SetHelpText(aEmptyText);
+ }
+}
+
+
+void SmDistanceDialog::SetCategory(USHORT nCategory)
+{
+ DBG_ASSERT(0 <= nCategory && nCategory < NOCATEGORIES,
+ "Sm: falsche Kategorienummer in SmDistanceDialog");
+
+ // array to convert category- and metricfield-number in help ids.
+ // 0 is used in case of unused combinations.
+ DBG_ASSERT(NOCATEGORIES == 10, "Sm : Array paßt nicht zu Anzahl der Kategorien");
+ ULONG __READONLY_DATA aCatMf2Hid[10][4] =
+ {
+ HID_SMA_DEFAULT_DIST, HID_SMA_LINE_DIST, HID_SMA_ROOT_DIST, 0,
+ HID_SMA_SUP_DIST, HID_SMA_SUB_DIST , 0, 0,
+ HID_SMA_NUMERATOR_DIST, HID_SMA_DENOMINATOR_DIST, 0, 0,
+ HID_SMA_FRACLINE_EXCWIDTH, HID_SMA_FRACLINE_LINEWIDTH, 0, 0,
+ HID_SMA_UPPERLIMIT_DIST, HID_SMA_LOWERLIMIT_DIST, 0, 0,
+ HID_SMA_BRACKET_EXCHEIGHT, HID_SMA_BRACKET_DIST, 0, HID_SMA_BRACKET_EXCHEIGHT2,
+ HID_SMA_MATRIXROW_DIST, HID_SMA_MATRIXCOL_DIST, 0, 0,
+ HID_SMA_ATTRIBUT_DIST, HID_SMA_INTERATTRIBUT_DIST, 0, 0,
+ HID_SMA_OPERATOR_EXCHEIGHT, HID_SMA_OPERATOR_DIST, 0, 0,
+ HID_SMA_LEFTBORDER_DIST, HID_SMA_RIGHTBORDER_DIST, HID_SMA_UPPERBORDER_DIST, HID_SMA_LOWERBORDER_DIST
+ };
+
+ // array to help iterate over the controls
+ Window * __READONLY_DATA aWin[4][2] =
+ {
+ &aFixedText1, &aMetricField1,
+ &aFixedText2, &aMetricField2,
+ &aFixedText3, &aMetricField3,
+ &aFixedText4, &aMetricField4
+ };
+
+ SmCategoryDesc *pCat;
+
+ // merken der (evtl neuen) Einstellungen der aktiven SmCategoryDesc
+ // bevor zu der neuen gewechselt wird.
+ if (nActiveCategory != CATEGORY_NONE)
+ {
+ pCat = Categories[nActiveCategory];
+ pCat->SetValue(0, (USHORT) aMetricField1.GetValue());
+ pCat->SetValue(1, (USHORT) aMetricField2.GetValue());
+ pCat->SetValue(2, (USHORT) aMetricField3.GetValue());
+ pCat->SetValue(3, (USHORT) aMetricField4.GetValue());
+
+ if (nActiveCategory == 5)
+ bScaleAllBrackets = aCheckBox1.IsChecked();
+
+ aMenuButton.GetPopupMenu()->CheckItem(nActiveCategory + 1, FALSE);
+ }
+
+ // aktivieren/deaktivieren der zugehörigen Controls in Abhängigkeit von der
+ // gewählten Kategorie.
+ BOOL bActive;
+ for (int i = 0; i < 4; i++)
+ {
+ FixedText *pFT = (FixedText * const) aWin[i][0];
+ MetricField *pMF = (MetricField * const) aWin[i][1];
+
+ // Um feststellen welche Controls aktiv sein sollen wird das
+ // vorhandensein einer zugehörigen HelpID überprüft.
+ bActive = aCatMf2Hid[nCategory][i] != 0;
+
+ pFT->Show(bActive);
+ pFT->Enable(bActive);
+ pMF->Show(bActive);
+ pMF->Enable(bActive);
+
+ // setzen von Maßeinheit und Anzahl der Nachkommastellen
+ FieldUnit eUnit;
+ USHORT nDigits;
+ if (nCategory < 9)
+ {
+ eUnit = FUNIT_CUSTOM;
+ nDigits = 0;
+ pMF->SetCustomUnitText( '%' );
+ }
+ else
+ {
+ eUnit = FUNIT_100TH_MM;
+ nDigits = 2;
+ }
+ pMF->SetUnit(eUnit); //! verändert den Wert
+ pMF->SetDecimalDigits(nDigits);
+
+ if (bActive)
+ {
+ pCat = Categories[nCategory];
+ pFT->SetText(*pCat->GetString(i));
+
+ pMF->SetMin(pCat->GetMinimum(i));
+ pMF->SetMax(pCat->GetMaximum(i));
+ pMF->SetValue(pCat->GetValue(i));
+
+ SetHelpId(*pMF, aCatMf2Hid[nCategory][i]);
+ }
+ }
+ // nun noch die CheckBox und das zugehörige MetricField genau dann aktivieren,
+ // falls es sich um das Klammer Menu handelt.
+ bActive = nCategory == 5;
+ aCheckBox1.Show(bActive);
+ aCheckBox1.Enable(bActive);
+ if (bActive)
+ {
+ aCheckBox1.Check( bScaleAllBrackets );
+
+ BOOL bChecked = aCheckBox1.IsChecked();
+ aFixedText4 .Enable( bChecked );
+ aMetricField4.Enable( bChecked );
+ }
+
+ aMenuButton.GetPopupMenu()->CheckItem(nCategory + 1, TRUE);
+ aGroupBox.SetText(Categories[nCategory]->GetName());
+
+ nActiveCategory = nCategory;
+
+ aMetricField1.GrabFocus();
+ Invalidate();
+ Update();
+}
+
+
+SmDistanceDialog::SmDistanceDialog(Window *pParent, BOOL bFreeRes)
+ : ModalDialog(pParent, SmResId(RID_DISTANCEDIALOG)),
+ aFixedText1 (this, ResId(1)),
+ aFixedText2 (this, ResId(2)),
+ aFixedText3 (this, ResId(3)),
+ aFixedText4 (this, ResId(4)),
+ aMetricField1 (this, ResId(1)),
+ aMetricField2 (this, ResId(2)),
+ aMetricField3 (this, ResId(3)),
+ aMetricField4 (this, ResId(4)),
+ aOKButton1 (this, ResId(1)),
+ aCancelButton1 (this, ResId(1)),
+ aMenuButton (this, ResId(1)),
+ aDefaultButton (this, ResId(1)),
+ aCheckBox1 (this, ResId(1)),
+ aBitmap (this, ResId(1)),
+ aGroupBox (this, ResId(1))
+{
+ for (int i = 0; i < NOCATEGORIES; i++)
+ Categories[i] = new SmCategoryDesc(SmResId(i + 1), i);
+ nActiveCategory = CATEGORY_NONE;
+ bScaleAllBrackets = FALSE;
+
+ if (bFreeRes)
+ FreeResource();
+
+ aMetricField1.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
+ aMetricField2.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
+ aMetricField3.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
+ aMetricField4.SetGetFocusHdl(LINK(this, SmDistanceDialog, GetFocusHdl));
+ aCheckBox1.SetClickHdl(LINK(this, SmDistanceDialog, CheckBoxClickHdl));
+
+ aMenuButton.GetPopupMenu()->SetSelectHdl(LINK(this, SmDistanceDialog, MenuSelectHdl));
+
+ aDefaultButton.SetClickHdl(LINK(this, SmDistanceDialog, DefaultButtonClickHdl));
+ }
+
+
+SmDistanceDialog::~SmDistanceDialog()
+{
+ for (int i = 0; i < NOCATEGORIES; i++)
+ DELETEZ(Categories[i]);
+}
+
+
+void SmDistanceDialog::ReadFrom(const SmFormat &rFormat)
+{
+ Categories[0]->SetValue(0, rFormat.GetDistance(DIS_HORIZONTAL));
+ Categories[0]->SetValue(1, rFormat.GetDistance(DIS_VERTICAL));
+ Categories[0]->SetValue(2, rFormat.GetDistance(DIS_ROOT));
+ Categories[1]->SetValue(0, rFormat.GetDistance(DIS_SUPERSCRIPT));
+ Categories[1]->SetValue(1, rFormat.GetDistance(DIS_SUBSCRIPT));
+ Categories[2]->SetValue(0, rFormat.GetDistance(DIS_NUMERATOR));
+ Categories[2]->SetValue(1, rFormat.GetDistance(DIS_DENOMINATOR));
+ Categories[3]->SetValue(0, rFormat.GetDistance(DIS_FRACTION));
+ Categories[3]->SetValue(1, rFormat.GetDistance(DIS_STROKEWIDTH));
+ Categories[4]->SetValue(0, rFormat.GetDistance(DIS_UPPERLIMIT));
+ Categories[4]->SetValue(1, rFormat.GetDistance(DIS_LOWERLIMIT));
+ Categories[5]->SetValue(0, rFormat.GetDistance(DIS_BRACKETSIZE));
+ Categories[5]->SetValue(1, rFormat.GetDistance(DIS_BRACKETSPACE));
+ Categories[5]->SetValue(3, rFormat.GetDistance(DIS_NORMALBRACKETSIZE));
+ Categories[6]->SetValue(0, rFormat.GetDistance(DIS_MATRIXROW));
+ Categories[6]->SetValue(1, rFormat.GetDistance(DIS_MATRIXCOL));
+ Categories[7]->SetValue(0, rFormat.GetDistance(DIS_ORNAMENTSIZE));
+ Categories[7]->SetValue(1, rFormat.GetDistance(DIS_ORNAMENTSPACE));
+ Categories[8]->SetValue(0, rFormat.GetDistance(DIS_OPERATORSIZE));
+ Categories[8]->SetValue(1, rFormat.GetDistance(DIS_OPERATORSPACE));
+ Categories[9]->SetValue(0, rFormat.GetDistance(DIS_LEFTSPACE));
+ Categories[9]->SetValue(1, rFormat.GetDistance(DIS_RIGHTSPACE));
+ Categories[9]->SetValue(2, rFormat.GetDistance(DIS_TOPSPACE));
+ Categories[9]->SetValue(3, rFormat.GetDistance(DIS_BOTTOMSPACE));
+
+ bScaleAllBrackets = rFormat.IsScaleNormalBrackets();
+
+ // force update (even of category 0) by setting nActiveCategory to a
+ // non-existent category number
+ nActiveCategory = CATEGORY_NONE;
+ SetCategory(0);
+}
+
+
+void SmDistanceDialog::WriteTo(SmFormat &rFormat) /*const*/
+{
+ // hmm... k”nnen die tats„chlich unterschiedlich sein?
+ // wenn nicht kann oben n„mlich das const stehen!
+ SetCategory(nActiveCategory);
+
+ rFormat.SetDistance( DIS_HORIZONTAL, Categories[0]->GetValue(0) );
+ rFormat.SetDistance( DIS_VERTICAL, Categories[0]->GetValue(1) );
+ rFormat.SetDistance( DIS_ROOT, Categories[0]->GetValue(2) );
+ rFormat.SetDistance( DIS_SUPERSCRIPT, Categories[1]->GetValue(0) );
+ rFormat.SetDistance( DIS_SUBSCRIPT, Categories[1]->GetValue(1) );
+ rFormat.SetDistance( DIS_NUMERATOR, Categories[2]->GetValue(0) );
+ rFormat.SetDistance( DIS_DENOMINATOR, Categories[2]->GetValue(1) );
+ rFormat.SetDistance( DIS_FRACTION, Categories[3]->GetValue(0) );
+ rFormat.SetDistance( DIS_STROKEWIDTH, Categories[3]->GetValue(1) );
+ rFormat.SetDistance( DIS_UPPERLIMIT, Categories[4]->GetValue(0) );
+ rFormat.SetDistance( DIS_LOWERLIMIT, Categories[4]->GetValue(1) );
+ rFormat.SetDistance( DIS_BRACKETSIZE, Categories[5]->GetValue(0) );
+ rFormat.SetDistance( DIS_BRACKETSPACE, Categories[5]->GetValue(1) );
+ rFormat.SetDistance( DIS_MATRIXROW, Categories[6]->GetValue(0) );
+ rFormat.SetDistance( DIS_MATRIXCOL, Categories[6]->GetValue(1) );
+ rFormat.SetDistance( DIS_ORNAMENTSIZE, Categories[7]->GetValue(0) );
+ rFormat.SetDistance( DIS_ORNAMENTSPACE, Categories[7]->GetValue(1) );
+ rFormat.SetDistance( DIS_OPERATORSIZE, Categories[8]->GetValue(0) );
+ rFormat.SetDistance( DIS_OPERATORSPACE, Categories[8]->GetValue(1) );
+ rFormat.SetDistance( DIS_LEFTSPACE, Categories[9]->GetValue(0) );
+ rFormat.SetDistance( DIS_RIGHTSPACE, Categories[9]->GetValue(1) );
+ rFormat.SetDistance( DIS_TOPSPACE, Categories[9]->GetValue(2) );
+ rFormat.SetDistance( DIS_BOTTOMSPACE, Categories[9]->GetValue(3) );
+ rFormat.SetDistance( DIS_NORMALBRACKETSIZE, Categories[5]->GetValue(3) );
+
+ rFormat.SetScaleNormalBrackets( bScaleAllBrackets );
+
+ rFormat.RequestApplyChanges();
+}
+
+
+/**************************************************************************/
+
+
+IMPL_LINK( SmAlignDialog, DefaultButtonClickHdl, Button *, pButton )
+{
+ QueryBox *pQueryBox = new QueryBox(this, SmResId(RID_DEFAULTSAVEQUERY));
+
+ if (pQueryBox->Execute() == RET_YES)
+ {
+ SmModule *pp = SM_MOD1();
+ WriteTo(pp->GetConfig()->GetFormat());
+ }
+
+ delete pQueryBox;
+ return 0;
+}
+
+
+SmAlignDialog::SmAlignDialog(Window * pParent, BOOL bFreeRes)
+ : ModalDialog(pParent, SmResId(RID_ALIGNDIALOG)),
+ aLeft (this, ResId(1)),
+ aCenter (this, ResId(2)),
+ aRight (this, ResId(3)),
+ aGroupBox1 (this, ResId(1)),
+ aOKButton1 (this, ResId(1)),
+ aCancelButton1 (this, ResId(1)),
+ aDefaultButton (this, ResId(1))
+{
+ if (bFreeRes)
+ FreeResource();
+
+ aDefaultButton.SetClickHdl(LINK(this, SmAlignDialog, DefaultButtonClickHdl));
+}
+
+
+void SmAlignDialog::ReadFrom(const SmFormat &rFormat)
+{
+ switch (rFormat.GetHorAlign())
+ {
+ case AlignLeft:
+ aLeft .Check(TRUE);
+ aCenter.Check(FALSE);
+ aRight .Check(FALSE);
+ break;
+
+ case AlignCenter:
+ aLeft .Check(FALSE);
+ aCenter.Check(TRUE);
+ aRight .Check(FALSE);
+ break;
+
+ case AlignRight:
+ aLeft .Check(FALSE);
+ aCenter.Check(FALSE);
+ aRight .Check(TRUE);
+ break;
+ }
+}
+
+
+void SmAlignDialog::WriteTo(SmFormat &rFormat) const
+{
+ if (aLeft.IsChecked())
+ rFormat.SetHorAlign(AlignLeft);
+ else if (aRight.IsChecked())
+ rFormat.SetHorAlign(AlignRight);
+ else
+ rFormat.SetHorAlign(AlignCenter);
+
+ rFormat.RequestApplyChanges();
+}
+
+
+/**************************************************************************/
+
+
+void SmShowSymbolSet::Paint(const Rectangle&)
+{
+ Push(PUSH_MAPMODE);
+
+ // MapUnit einstellen für die 'nLen' berechnet wurde
+ SetMapMode(MapMode(MAP_PIXEL));
+
+ int v = (int) (aVScrollBar.GetThumbPos() * nColumns);
+ int nSymbols = (int) aSymbolSet.GetCount();
+
+ for (int i = v; i < nSymbols ; i++)
+ {
+ SmSym aSymbol (aSymbolSet.GetSymbol(i));
+ Font aFont (aSymbol.GetFace());
+
+ // etwas kleinere FontSize nehmen (als nLen) um etwas Luft zu haben
+ // (hoffentlich auch genug für links und rechts!)
+ aFont.SetSize(Size(0, nLen - (nLen / 3)));
+ SetFont(aFont);
+
+ int nIV = i - v;
+ Size aSize(GetTextWidth(aSymbol.GetCharacter()), GetTextHeight());
+
+ DrawText(Point((nIV % nColumns) * nLen + (nLen - aSize.Width()) / 2,
+ (nIV / nColumns) * nLen + (nLen - aSize.Height()) / 2),
+ aSymbol.GetCharacter());
+ }
+
+ if (nSelectSymbol != SYMBOL_NONE)
+ {
+ Invert(Rectangle(Point(((nSelectSymbol - v) % nColumns) * nLen,
+ ((nSelectSymbol - v) / nColumns) * nLen),
+ Size(nLen, nLen)));
+ }
+
+ Pop();
+}
+
+
+void SmShowSymbolSet::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ GrabFocus();
+
+ if (rMEvt.IsLeft() && Rectangle(Point(0, 0), aOutputSize).IsInside(rMEvt.GetPosPixel()))
+ {
+ SelectSymbol ((rMEvt.GetPosPixel().Y() / nLen) * nColumns + (rMEvt.GetPosPixel().X() / nLen) +
+ aVScrollBar.GetThumbPos() * nColumns);
+
+ aSelectHdlLink.Call(this);
+
+ if (rMEvt.GetClicks() > 1) aDblClickHdlLink.Call(this);
+ }
+ else Control::MouseButtonDown (rMEvt);
+}
+
+
+void SmShowSymbolSet::KeyInput(const KeyEvent& rKEvt)
+{
+ USHORT n = nSelectSymbol;
+
+ if (n != SYMBOL_NONE)
+ {
+ switch (rKEvt.GetKeyCode().GetCode())
+ {
+ case KEY_DOWN: n += nColumns; break;
+ case KEY_UP: n -= nColumns; break;
+ case KEY_LEFT: n -= 1; break;
+ case KEY_RIGHT: n += 1; break;
+ case KEY_HOME: n = 0; break;
+ case KEY_END: n = aSymbolSet.GetCount() - 1; break;
+ case KEY_PAGEUP: n -= nColumns * nRows; break;
+ case KEY_PAGEDOWN: n += nColumns * nRows; break;
+
+ default:
+ Control::KeyInput(rKEvt);
+ return;
+ }
+ }
+ else
+ n = 0;
+
+ if (n >= aSymbolSet.GetCount())
+ n = nSelectSymbol;
+
+ // adjust scrollbar
+ if ((n < (USHORT) (aVScrollBar.GetThumbPos() * nColumns)) ||
+ (n >= (USHORT) ((aVScrollBar.GetThumbPos() + nRows) * nColumns)))
+ {
+ aVScrollBar.SetThumbPos(n / nColumns);
+ Invalidate();
+ Update();
+ }
+
+ SelectSymbol(n);
+ aSelectHdlLink.Call(this);
+}
+
+
+SmShowSymbolSet::SmShowSymbolSet(Window *pParent, const ResId& rResId) :
+ Control(pParent, rResId),
+ aVScrollBar(this, WinBits(WB_VSCROLL))
+{
+ nSelectSymbol = SYMBOL_NONE;
+
+ aOutputSize = GetOutputSizePixel();
+ long nScrollBarWidth = aVScrollBar.GetSizePixel().Width(),
+ nUseableWidth = aOutputSize.Width() - nScrollBarWidth;
+
+ // Höhe von 16pt in Pixeln (passend zu 'aOutputSize')
+ nLen = (USHORT) LogicToPixel(Size(0, 16), MapMode(MAP_POINT)).Height();
+
+ nColumns = nUseableWidth / nLen;
+ if (nColumns > 2 && nColumns % 2 != 0)
+ nColumns--;
+ nRows = aOutputSize.Height() / nLen;
+ DBG_ASSERT(nColumns > 0, "Sm : keine Spalten");
+ DBG_ASSERT(nRows > 0, "Sm : keine Zeilen");
+
+ // genau passend machen
+ aOutputSize.Width() = nColumns * nLen;
+ aOutputSize.Height() = nRows * nLen;
+
+ aVScrollBar.SetPosSizePixel(Point(aOutputSize.Width() + 1, -1),
+ Size(nScrollBarWidth, aOutputSize.Height() + 2));
+ aVScrollBar.Enable(FALSE);
+ aVScrollBar.Show();
+ aVScrollBar.SetScrollHdl(LINK(this, SmShowSymbolSet, ScrollHdl));
+
+ Size WindowSize (aOutputSize);
+ WindowSize.Width() += nScrollBarWidth;
+ SetOutputSizePixel(WindowSize);
+
+}
+
+
+void SmShowSymbolSet::SetSymbolSet(const SmSymSet& rSymbolSet)
+{
+ aSymbolSet = rSymbolSet;
+
+ if (aSymbolSet.GetCount() > (nColumns * nRows))
+ {
+ aVScrollBar.SetRange(Range(0, ((aSymbolSet.GetCount() + (nColumns - 1)) / nColumns) - nRows));
+ aVScrollBar.Enable(TRUE);
+ }
+ else
+ {
+ aVScrollBar.SetRange(Range(0,0));
+ aVScrollBar.Enable (FALSE);
+ }
+
+ Invalidate();
+}
+
+
+void SmShowSymbolSet::SelectSymbol(USHORT nSymbol)
+{
+ int v = (int) (aVScrollBar.GetThumbPos() * nColumns);
+
+ if (nSelectSymbol != SYMBOL_NONE)
+ Invalidate(Rectangle(Point(((nSelectSymbol - v) % nColumns) * nLen,
+ ((nSelectSymbol - v) / nColumns) * nLen),
+ Size(nLen, nLen)));
+
+ if (nSymbol < aSymbolSet.GetCount())
+ nSelectSymbol = nSymbol;
+
+ if (aSymbolSet.GetCount() == 0)
+ nSelectSymbol = SYMBOL_NONE;
+
+ if (nSelectSymbol != SYMBOL_NONE)
+ Invalidate(Rectangle(Point(((nSelectSymbol - v) % nColumns) * nLen,
+ ((nSelectSymbol - v) / nColumns) * nLen),
+ Size(nLen, nLen)));
+
+ Update();
+}
+
+IMPL_LINK( SmShowSymbolSet, ScrollHdl, ScrollBar*, pScrollBar)
+{
+ Invalidate();
+ return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void SmShowSymbol::Paint(const Rectangle&)
+{
+ const XubString &rText = GetText();
+ Size aTextSize(GetTextWidth(rText), GetTextHeight());
+
+ DrawText(Point((GetOutputSize().Width() - aTextSize.Width()) / 2,
+ (GetOutputSize().Height() - aTextSize.Height()) / 2), rText);
+}
+
+
+void SmShowSymbol::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ if (rMEvt.GetClicks() > 1)
+ aDblClickHdlLink.Call(this);
+ else
+ Control::MouseButtonDown (rMEvt);
+}
+
+
+void SmShowSymbol::SetSymbol(const SmSym *pSymbol)
+{
+ if (pSymbol)
+ {
+ Font aFont (pSymbol->GetFace());
+ aFont.SetSize(Size(0, GetOutputSize().Height() - GetOutputSize().Height() / 3));
+ SetFont(aFont);
+
+ SetText(XubString(pSymbol->GetCharacter()));
+ }
+
+ // 'Invalidate' füllt den background mit der background-Farbe.
+ // Falls der NULL pointer übergeben wurde reicht dies also zum löschen
+ // der Anzeige
+ Invalidate();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void SmSymbolDialog::FillSymbolSets(BOOL bDeleteText)
+ // füllt die Einträge der möglichen 'SymbolsSet's im Dialog mit den
+ // aktuellen Werten des SymbolSet Managers, selektiert aber keinen.
+{
+ aSymbolSets.Clear();
+ if (bDeleteText)
+ aSymbolSets.SetNoSelection();
+
+ USHORT nNumSymSets = rSymSetMgr.GetCount();
+ for (USHORT i = 0; i < nNumSymSets; i++)
+ aSymbolSets.InsertEntry(rSymSetMgr.GetSymbolSet(i)->GetName());
+}
+
+
+IMPL_LINK( SmSymbolDialog, SymbolSetChangeHdl, ListBox *, pListBox )
+{
+ DBG_ASSERT(pListBox == &aSymbolSets, "Sm : falsches Argument");
+
+ SelectSymbolSet(aSymbolSets.GetSelectEntry());
+ return 0;
+}
+
+
+IMPL_LINK( SmSymbolDialog, SymbolChangeHdl, SmShowSymbolSet *, pShowSymbolSet )
+{
+ DBG_ASSERT(pShowSymbolSet == &aSymbolSetDisplay, "Sm : falsches Argument");
+
+ SelectSymbol(aSymbolSetDisplay.GetSelectSymbol());
+ return 0;
+}
+
+IMPL_LINK( SmSymbolDialog, EditClickHdl, Button *, pButton )
+{
+ DBG_ASSERT(pButton == &aEditBtn, "Sm : falsches Argument");
+
+ SmSymDefineDialog *pDialog = new SmSymDefineDialog(this, rSymSetMgr);
+
+ // aktuelles Symbol und SymbolSet am neuen Dialog setzen
+ const XubString aSymSetName (aSymbolSets.GetSelectEntry()),
+ aSymName (aSymbolName.GetText());
+ pDialog->SelectOldSymbolSet(aSymSetName);
+ pDialog->SelectOldSymbol(aSymName);
+ pDialog->SelectSymbolSet(aSymSetName);
+ pDialog->SelectSymbol(aSymName);
+
+ // altes SymbolSet merken
+ XubString aOldSymbolSet (aSymbolSets.GetSelectEntry());
+
+ // Dialog an evtl geänderte Daten des SymbolSet Manager anpassen
+ if (pDialog->Execute() == RET_OK && rSymSetMgr.IsModified())
+ FillSymbolSets();
+
+ // wenn das alte SymbolSet nicht mehr existiert zum ersten gehen
+ // (soweit eines vorhanden ist)
+ if (!SelectSymbolSet(aOldSymbolSet) && aSymbolSets.GetEntryCount() > 0)
+ SelectSymbolSet(aSymbolSets.GetEntry(0));
+
+ delete pDialog;
+ return 0;
+}
+
+
+IMPL_LINK( SmSymbolDialog, SymbolDblClickHdl, SmShowSymbolSet *, pShowSymbolSet )
+{
+ DBG_ASSERT(pShowSymbolSet == &aSymbolSetDisplay, "Sm : falsches Argument");
+
+ GetClickHdl(&aGetBtn);
+ EndDialog(RET_OK);
+ return 0;
+}
+
+
+IMPL_LINK( SmSymbolDialog, GetClickHdl, Button *, pButton )
+{
+ DBG_ASSERT(pButton == &aGetBtn, "Sm : falscher Button");
+
+ const SmSym *pSym = GetSymbol();
+ if (pSym)
+ {
+ XubString aText ('%');
+ aText += pSym->GetName();
+
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_INSERTTEXT, SFX_CALLMODE_STANDARD,
+ new SfxStringItem(SID_INSERTTEXT, aText), 0L);
+ }
+
+ return 0;
+}
+
+
+IMPL_LINK_INLINE_START( SmSymbolDialog, CloseClickHdl, Button *, pButton )
+{
+ DBG_ASSERT(pButton == &aCloseBtn, "Sm : falscher Button");
+
+ EndDialog(TRUE);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmSymbolDialog, CloseClickHdl, Button *, pButton )
+
+
+SmSymbolDialog::SmSymbolDialog(Window *pParent, SmSymSetManager &rMgr, BOOL bFreeRes) :
+ ModalDialog (pParent, SmResId(RID_SYMBOLDIALOG)),
+ aSymbolSetText (this, ResId(1)),
+ aSymbolSets (this, ResId(1)),
+ aSymbolSetDisplay (this, ResId(1)),
+ aGrpBox (this, ResId(1)),
+ aSymbolName (this, ResId(2)),
+ aSymbolDisplay (this, ResId(2)),
+ aCloseBtn (this, ResId(3)),
+ aEditBtn (this, ResId(1)),
+ aGetBtn (this, ResId(2)),
+ rSymSetMgr (rMgr)
+{
+ if (bFreeRes)
+ FreeResource();
+
+ pSymSet = NULL;
+ FillSymbolSets();
+ if (aSymbolSets.GetEntryCount() > 0)
+ SelectSymbolSet(aSymbolSets.GetEntry(0));
+
+ // set background color to white
+ Wallpaper aWhiteWall( (Color) Color(COL_WHITE) );
+ aSymbolDisplay .SetBackground( aWhiteWall );
+ aSymbolSetDisplay.SetBackground( aWhiteWall );
+
+ aSymbolSets .SetSelectHdl (LINK(this, SmSymbolDialog, SymbolSetChangeHdl));
+ aSymbolSetDisplay.SetSelectHdl (LINK(this, SmSymbolDialog, SymbolChangeHdl));
+ aSymbolSetDisplay.SetDblClickHdl(LINK(this, SmSymbolDialog, SymbolDblClickHdl));
+ aSymbolDisplay .SetDblClickHdl(LINK(this, SmSymbolDialog, SymbolDblClickHdl));
+ aCloseBtn .SetClickHdl (LINK(this, SmSymbolDialog, CloseClickHdl));
+ aEditBtn .SetClickHdl (LINK(this, SmSymbolDialog, EditClickHdl));
+ aGetBtn .SetClickHdl (LINK(this, SmSymbolDialog, GetClickHdl));
+}
+
+
+BOOL SmSymbolDialog::SelectSymbolSet(const XubString &rSymbolSetName)
+{
+ BOOL bRet = FALSE;
+ USHORT nPos = aSymbolSets.GetEntryPos(rSymbolSetName);
+
+ pSymSet = NULL;
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aSymbolSets.SelectEntryPos(nPos);
+ USHORT nSymbolSetNo = rSymSetMgr.GetSymbolSetPos(aSymbolSets.GetSelectEntry());
+ pSymSet = rSymSetMgr.GetSymbolSet(nSymbolSetNo);
+ DBG_ASSERT(pSymSet, "Sm : NULL pointer");
+
+ aSymbolSetDisplay.SetSymbolSet(*pSymSet);
+ if (pSymSet->GetCount() > 0)
+ SelectSymbol(0);
+
+ bRet = TRUE;
+ }
+ else
+ aSymbolSets.SetNoSelection();
+
+ return bRet;
+}
+
+
+void SmSymbolDialog::SelectSymbol(USHORT nSymbolNo)
+{
+ const SmSym *pSym = NULL;
+ if (pSymSet && nSymbolNo < pSymSet->GetCount())
+ pSym = &pSymSet->GetSymbol(nSymbolNo);
+
+ aSymbolSetDisplay.SelectSymbol(nSymbolNo);
+ aSymbolDisplay.SetSymbol(pSym);
+ aSymbolName.SetText(pSym ? pSym->GetName() : XubString());
+}
+
+
+const SmSym * SmSymbolDialog::GetSymbol() const
+{
+ USHORT nSymbolNo = aSymbolSetDisplay.GetSelectSymbol();
+ return pSymSet == NULL ? NULL : &pSymSet->GetSymbol(nSymbolNo);
+}
+
+
+/**************************************************************************/
+
+
+void SmShowCharset::Paint(const Rectangle&)
+{
+ Size OutputSize = GetOutputSizePixel();
+
+ int i;
+ for (i = 1; i < (int) nColumns; i++)
+ {
+ int nLenI = nLen * i;
+
+ DrawLine(Point(nLenI, 0), Point(nLenI, OutputSize.Height()));
+ }
+
+ for (i = 1; i < (int) nRows; i++)
+ {
+ int nLenI = nLen * i;
+
+ DrawLine(Point(0, nLenI), Point(OutputSize.Width(), nLenI));
+ }
+
+ for (i = 1; i < 256; i++)
+ {
+ int x = (i % nColumns) * nLen;
+ int y = (i / nColumns) * nLen;
+
+ Size aTextSize(GetTextWidth(aChar), GetTextHeight());
+
+ XubString aChar((xub_Unicode) i);
+ DrawText(Point(x + (nLen - aTextSize.Width()) / 2,
+ y + (nLen - aTextSize.Height()) / 2), aChar);
+ }
+}
+
+
+void SmShowCharset::MouseButtonDown(const MouseEvent& rMEvt)
+{
+ if (rMEvt.IsLeft())
+ {
+ GrabFocus();
+
+ USHORT n = (USHORT) ((rMEvt.GetPosPixel().Y() / nLen) * nColumns +
+ (rMEvt.GetPosPixel().X() / nLen));
+ SelectChar((xub_Unicode)Min((USHORT) n, (USHORT) 255));
+
+ aSelectHdlLink.Call(this);
+
+ if (rMEvt.GetClicks() > 1)
+ aDblClickHdlLink.Call(this);
+ }
+ else Control::MouseButtonDown (rMEvt);
+}
+
+
+void SmShowCharset::KeyInput(const KeyEvent& rKEvt)
+{
+ xub_Unicode n = aChar;
+
+ switch (rKEvt.GetKeyCode().GetCode())
+ {
+ case KEY_DOWN: n += (xub_Unicode) nColumns; break;
+ case KEY_UP: n -= (xub_Unicode) nColumns; break;
+ case KEY_LEFT: n -= 1; break;
+ case KEY_RIGHT: n += 1; break;
+ case KEY_HOME: n = 0; break;
+ case KEY_END: n = (xub_Unicode) 255; break;
+ case KEY_PAGEUP: n -= (xub_Unicode) nColumns; break;
+ case KEY_PAGEDOWN: n += (xub_Unicode) nColumns; break;
+
+ default:
+ Control::KeyInput(rKEvt);
+ return;
+ }
+
+ SelectChar(n);
+ aSelectHdlLink.Call(this);
+}
+
+
+SmShowCharset::SmShowCharset(Window *pParent, const ResId& rResId) :
+ Control(pParent, rResId)
+{
+ aChar = xub_Unicode('\0');
+
+ Size aOutputSize (GetOutputSizePixel());
+
+ nColumns = 32;
+ nRows = 8;
+
+ // FontSize passend wählen
+ nLen = Min(aOutputSize.Width() / nColumns, aOutputSize.Height() / nRows);
+
+ // Fenster genau passend machen (wird höchstens kleiner!)
+ aOutputSize.Width() = nColumns * nLen;
+ aOutputSize.Height() = nRows * nLen;
+
+ SetOutputSizePixel(aOutputSize);
+}
+
+
+void SmShowCharset::SetFont(const Font &rFont)
+{
+ Font aFont (rFont);
+
+ // etwas kleinere FontSize nehmen (als nLen) um etwas Luft zu haben
+ // (hofentlich auch genug für links und rechts)
+ aFont.SetSize(Size(0, nLen - (nLen / 3)));
+ aFont.SetTransparent(TRUE);
+ Control::SetFont(aFont);
+
+ Invalidate();
+}
+
+
+void SmShowCharset::SelectChar(xub_Unicode aCharP)
+{
+ int c = aChar & 0xFF;
+ Size aNSize (nLen, nLen);
+
+ Invalidate(Rectangle(Point((c % nColumns) * nLen, (c / nColumns) * nLen), aNSize));
+
+ aChar = aCharP;
+ c = aChar & 0xFF;
+ Invalidate(Rectangle(Point((c % nColumns) * nLen, (c / nColumns) * nLen), aNSize));
+
+ Update();
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+void SmShowChar::Paint(const Rectangle&)
+{
+ XubString Text (GetText ());
+
+ if (Text.Len() > 0)
+ {
+ Size aTextSize(GetTextWidth(Text), GetTextHeight());
+
+ DrawText(Point((GetOutputSize().Width() - aTextSize.Width()) / 2,
+ (GetOutputSize().Height() - aTextSize.Height()) / 2), Text);
+ }
+}
+
+
+void SmShowChar::SetChar(xub_Unicode aChar)
+{
+ SetText(XubString(aChar));
+ Invalidate();
+}
+
+
+void SmShowChar::SetFont(const Font &rFont)
+{
+ Font aFont (rFont);
+ Size aSize (Size(0, GetOutputSize().Height() - GetOutputSize().Height() / 3));
+
+ aFont.SetSize(aSize);
+ aFont.SetTransparent(TRUE);
+ Control::SetFont(aFont);
+
+ Invalidate();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void SmSymDefineDialog::FillSymbols(ComboBox &rComboBox, BOOL bDeleteText)
+{
+ DBG_ASSERT(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
+ "Sm : falsche ComboBox");
+
+ rComboBox.Clear();
+ if (bDeleteText)
+ rComboBox.SetText(XubString());
+
+ ComboBox &rSymbolSets = &rComboBox == &aOldSymbols ?
+ aOldSymbolSets : aSymbolSets;
+ const SmSymSet *pSymSet = GetSymbolSet(rSymbolSets);
+ if (pSymSet)
+ { USHORT nNumSymbols = pSymSet->GetCount();
+ for (USHORT i = 0; i < nNumSymbols; i++)
+ rComboBox.InsertEntry(pSymSet->GetSymbol(i).GetName());
+ }
+
+}
+
+
+void SmSymDefineDialog::FillSymbolSets(ComboBox &rComboBox, BOOL bDeleteText)
+{
+ DBG_ASSERT(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets,
+ "Sm : falsche ComboBox");
+
+ rComboBox.Clear();
+ if (bDeleteText)
+ rComboBox.SetText(XubString());
+
+ USHORT nNumSymSets = aSymSetMgrCopy.GetCount();
+ for (USHORT i = 0; i < nNumSymSets; i++)
+ rComboBox.InsertEntry(aSymSetMgrCopy.GetSymbolSet(i)->GetName());
+}
+
+
+void SmSymDefineDialog::FillFonts(BOOL bDelete)
+{
+ aFonts.Clear();
+ if (bDelete)
+ aFonts.SetNoSelection();
+
+ // alle Fonts der 'FontList' in die Fontliste aufnehmen
+ // von denen mit gleichen Namen jedoch nur einen (denn der Style wird
+ // über die 'FontStyleBox' gewählt und nicht auch noch hier)
+ DBG_ASSERT(pFontList, "Sm : NULL pointer");
+ USHORT nCount = pFontList->GetFontNameCount();
+ for (USHORT i = 0; i < nCount; i++)
+ aFonts.InsertEntry( pFontList->GetFontName(i).GetName() );
+}
+
+
+void SmSymDefineDialog::FillStyles(BOOL bDeleteText)
+{
+ aStyles.Clear();
+ if (bDeleteText)
+ aStyles.SetText(XubString());
+
+ XubString aText (aFonts.GetSelectEntry());
+ if (aText.Len() != 0)
+ {
+ //aStyles.Fill(aText, &aFontList);
+ // eigene StyleName's verwenden
+ for (USHORT i = 0; i < aStyleNameCount; i++)
+ aStyles.InsertEntry( aStyleName[i] );
+
+ DBG_ASSERT(aStyles.GetEntryCount() > 0, "Sm : keine Styles vorhanden");
+ aStyles.SetText( aStyles.GetEntry(0) );
+ }
+}
+
+
+SmSymSet * SmSymDefineDialog::GetSymbolSet(const ComboBox &rComboBox)
+{
+ DBG_ASSERT(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets,
+ "Sm : falsche ComboBox");
+
+ USHORT nSymbolSetNo = aSymSetMgrCopy.GetSymbolSetPos(rComboBox.GetText());
+
+ return nSymbolSetNo == SYMBOLSET_NONE ?
+ NULL : aSymSetMgrCopy.GetSymbolSet(nSymbolSetNo);
+}
+
+
+SmSym * SmSymDefineDialog::GetSymbol(const ComboBox &rComboBox)
+{
+ DBG_ASSERT(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
+ "Sm : falsche ComboBox");
+
+ return aSymSetMgrCopy.GetSymbol(rComboBox.GetText());
+}
+
+
+IMPL_LINK( SmSymDefineDialog, OldSymbolChangeHdl, ComboBox *, pComboBox )
+{
+ DBG_ASSERT(pComboBox == &aOldSymbols, "Sm : falsches Argument");
+ SelectSymbol(aOldSymbols, aOldSymbols.GetText(), FALSE);
+ return 0;
+}
+
+
+IMPL_LINK( SmSymDefineDialog, OldSymbolSetChangeHdl, ComboBox *, pComboBox )
+{
+ DBG_ASSERT(pComboBox == &aOldSymbolSets, "Sm : falsches Argument");
+ SelectSymbolSet(aOldSymbolSets, aOldSymbolSets.GetText(), FALSE);
+ return 0;
+}
+
+
+IMPL_LINK( SmSymDefineDialog, ModifyHdl, ComboBox *, pComboBox )
+{
+ // merken der Cursorposition zum wiederherstellen derselben
+ Selection aSelection (pComboBox->GetSelection());
+
+ if (pComboBox == &aSymbols)
+ SelectSymbol(aSymbols, aSymbols.GetText(), FALSE);
+ else if (pComboBox == &aSymbolSets)
+ SelectSymbolSet(aSymbolSets, aSymbolSets.GetText(), FALSE);
+ else if (pComboBox == &aOldSymbols)
+ // nur Namen aus der Liste erlauben
+ SelectSymbol(aOldSymbols, aOldSymbols.GetText(), TRUE);
+ else if (pComboBox == &aOldSymbolSets)
+ // nur Namen aus der Liste erlauben
+ SelectSymbolSet(aOldSymbolSets, aOldSymbolSets.GetText(), TRUE);
+ else if (pComboBox == &aStyles)
+ // nur Namen aus der Liste erlauben (ist hier eh immer der Fall)
+ SelectStyle(aStyles.GetText(), TRUE);
+ else
+ DBG_ASSERT(0, "Sm : falsche ComboBox Argument");
+
+ pComboBox->SetSelection(aSelection);
+
+ UpdateButtons();
+
+ return 0;
+}
+
+
+IMPL_LINK( SmSymDefineDialog, FontChangeHdl, ListBox *, pListBox )
+{
+ DBG_ASSERT(pListBox == &aFonts, "Sm : falsches Argument");
+
+ SelectFont(aFonts.GetSelectEntry());
+ return 0;
+}
+
+
+IMPL_LINK( SmSymDefineDialog, StyleChangeHdl, ComboBox *, pComboBox )
+{
+ DBG_ASSERT(pComboBox == &aStyles, "Sm : falsches Argument");
+
+ SelectStyle(aStyles.GetText());
+ return 0;
+}
+
+
+IMPL_LINK_INLINE_START( SmSymDefineDialog, CharSelectHdl, SmShowCharset *, pShowCharset )
+{
+ DBG_ASSERT(pShowCharset == &aCharsetDisplay, "Sm : falsches Argument");
+
+ SelectChar(aCharsetDisplay.GetSelectChar());
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmSymDefineDialog, CharSelectHdl, SmShowCharset *, pShowCharset )
+
+
+IMPL_LINK( SmSymDefineDialog, AddClickHdl, Button *, pButton )
+{
+ DBG_ASSERT(pButton == &aAddBtn, "Sm : falsches Argument");
+ DBG_ASSERT(aAddBtn.IsEnabled(), "Sm : Voraussetzungen erfüllt ??");
+
+ SmSymSet *pSymSet = GetSymbolSet(aSymbolSets);
+
+ // SymbolSet einfügen falls es noch nicht existiert
+ if (!pSymSet)
+ {
+ pSymSet = new SmSymSet(aSymbolSets.GetText());
+ aSymSetMgrCopy.AddSymbolSet(pSymSet);
+ FillSymbolSets(aOldSymbolSets, FALSE);
+ FillSymbolSets(aSymbolSets, FALSE);
+ }
+ DBG_ASSERT(pSymSet, "Sm : NULL pointer");
+
+ // Symbol ins SymbolSet einfügen
+ SmSym *pSym = new SmSym(aSymbols.GetText(), aCharsetDisplay.GetFont(),
+ aCharsetDisplay.GetSelectChar());
+ pSymSet->AddSymbol(pSym);
+
+ // update der Hash Tabelle erzwingen (damit aAddBtn disabled wird).
+ // (wird später nach Überarbeitung von symbol.cxx überflüssig werden).
+ aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1);
+
+ // Symbolliste aktualiseren
+ FillSymbols(aOldSymbols ,FALSE);
+ FillSymbols(aSymbols ,FALSE);
+
+ UpdateButtons();
+
+ return 0;
+}
+
+
+IMPL_LINK( SmSymDefineDialog, ChangeClickHdl, Button *, pButton )
+{
+ DBG_ASSERT(pButton == &aChangeBtn, "Sm : falsches Argument");
+ DBG_ASSERT(aChangeBtn.IsEnabled(), "Sm : Voraussetzungen erfüllt ??");
+
+ // finden des SymbolSets zum alten Symbol
+ SmSymSet *pOldSymSet = GetSymbolSet(aOldSymbolSets);
+ DBG_ASSERT(pOldSymSet, "Sm : NULL pointer");
+
+ // suchen des neuen SymbolSets
+ SmSymSet *pNewSymSet = GetSymbolSet(aSymbolSets);
+ // SymbolSet einfügen falls es noch nicht existiert
+ if (!pNewSymSet)
+ {
+ pNewSymSet = new SmSymSet(aSymbolSets.GetText());
+ aSymSetMgrCopy.AddSymbolSet(pNewSymSet);
+ FillSymbolSets(aOldSymbolSets, FALSE);
+ FillSymbolSets(aSymbolSets, FALSE);
+ }
+
+ // das (alte) Symbol besorgen
+ USHORT nSymbol = pOldSymSet->GetSymbolPos(aOldSymbols.GetText());
+ SmSym *pSym = (SmSym *) &pOldSymSet->GetSymbol(nSymbol);
+ DBG_ASSERT(pSym, "Sm : NULL pointer");
+
+ // Änderungen durchführen;
+ pSym->GetName() = aSymbols.GetText();
+ pSym->GetFace() = aCharsetDisplay.GetFont();
+ pSym->GetCharacter() = aCharsetDisplay.GetSelectChar();
+
+ // das SymbolSet wechseln wenn nötig
+ if (pOldSymSet != pNewSymSet)
+ {
+ pOldSymSet->RemoveSymbol(nSymbol);
+ pNewSymSet->AddSymbol(pSym);
+ }
+
+ //!! den SymbolSet Manger dazu zwingen seinen HashTable zu aktualisieren,
+ //!! um mit möglich neuen bzw fehlenden alten Symbol Namen konform zu sein.
+ aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1);
+
+ UpdateButtons();
+
+ return 0;
+}
+
+
+IMPL_LINK( SmSymDefineDialog, DeleteClickHdl, Button *, pButton )
+{
+ DBG_ASSERT(pButton == &aDeleteBtn, "Sm : falsches Argument");
+ DBG_ASSERT(aDeleteBtn.IsEnabled(), "Sm : Voraussetzungen erfüllt ??");
+
+ if (pOrigSymbol)
+ {
+ // löschen des Symbols:
+ //
+ // zugehöriges SymbolSet finden
+ SmSymSet *pSymSet = GetSymbolSet(aOldSymbolSets);
+ DBG_ASSERT(pSymSet, "Sm : NULL pointer");
+ // finden des Index
+ XubString aOldSymbolName (pOrigSymbol->GetName());
+ USHORT nSymbolNo = pSymSet->GetSymbolPos(aOldSymbolName);
+ DBG_ASSERT(nSymbolNo != SYMBOL_NONE, "Sm : kein Symbol");
+ // Bezüge auf das Symbols löschen
+ DBG_ASSERT(pOrigSymbol == &pSymSet->GetSymbol(nSymbolNo),
+ "Sm : Fehler beim löschen des Symbols");
+ SetOrigSymbol(NULL, XubString());
+ // und weg mit dem Symbol
+ pSymSet->DeleteSymbol(nSymbolNo);
+
+ //!! den SymbolSet Manger dazu zwingen seinen HashTable zu aktualisieren,
+ //!! was er nämlich nicht tut, wenn in einem seiner SymbolSets geändert/
+ //!! gelöscht wird, was wiederum zu einem Absturz führen kann (wenn er
+ //!! über ein nicht mehr existentes aber nicht entferntes Symbol iteriert).
+ aSymSetMgrCopy.ChangeSymbolSet((SmSymSet *)1);
+
+ // aktualisieren der Symboleinträge des Dialogs
+ aOldSymbols.SetText(XubString());
+ aOldSymbols.RemoveEntry(aOldSymbolName);
+ if (aSymbolSets.GetText() == aOldSymbolSets.GetText())
+ aSymbols.RemoveEntry(aOldSymbolName);
+ }
+
+ UpdateButtons();
+
+ return 0;
+}
+
+
+void SmSymDefineDialog::UpdateButtons()
+{
+ BOOL bAdd = FALSE,
+ bChange = FALSE,
+ bDelete = FALSE,
+ bEqual;
+ XubString aSymbolName (aSymbols.GetText()),
+ aSymbolSetName (aSymbolSets.GetText());
+
+ if (aSymbolName.Len() > 0 && aSymbolSetName.Len() > 0)
+ {
+ // alle Einstellungen gleich?
+ //! (Font-, Style- und SymbolSet Name werden nicht case sensitiv verglichen)
+ bEqual = pOrigSymbol
+ && aSymbolSetName.EqualsIgnoreCaseAscii(aOldSymbolSetName.GetText())
+ && aSymbolName.Equals(pOrigSymbol->GetName())
+ && aFonts.GetSelectEntry().EqualsIgnoreCaseAscii(pOrigSymbol->GetFace().GetName())
+ && aStyles.GetText().EqualsIgnoreCaseAscii(GetFontStyleName(pOrigSymbol->GetFace()))
+ && aCharsetDisplay.GetSelectChar() == pOrigSymbol->GetCharacter();
+
+ // hinzufügen nur wenn es noch kein Symbol desgleichen Namens gibt
+ bAdd = aSymSetMgrCopy.GetSymbol(aSymbolName) == NULL;
+
+ // löschen nur wenn alle Einstellungen gleich sind
+ bDelete = pOrigSymbol != NULL;
+
+ // ändern wenn bei gleichem Namen mindestens eine Einstellung anders ist
+ // oder wenn es noch kein Symbol des neuen Namens gibt (würde implizites
+ // löschen des bereits vorhandenen Symbols erfordern)
+ BOOL bEqualName = pOrigSymbol && aSymbolName == pOrigSymbol->GetName();
+ bChange = pOrigSymbol && (bEqualName && !bEqual || !bEqualName && bAdd);
+ }
+
+ aAddBtn .Enable(bAdd);
+ aChangeBtn.Enable(bChange);
+ aDeleteBtn.Enable(bDelete);
+}
+
+
+SmSymDefineDialog::SmSymDefineDialog(Window * pParent, SmSymSetManager &rMgr, BOOL bFreeRes) :
+ ModalDialog (pParent, SmResId(RID_SYMDEFINEDIALOG)),
+ aOldSymbolText (this, ResId(1)),
+ aOldSymbols (this, ResId(1)),
+ aOldSymbolSetText (this, ResId(2)),
+ aOldSymbolSets (this, ResId(2)),
+ aCharsetDisplay (this, ResId(1)),
+ aSymbolText (this, ResId(9)),
+ aSymbols (this, ResId(4)),
+ aSymbolSetText (this, ResId(10)),
+ aSymbolSets (this, ResId(5)),
+ aFontText (this, ResId(3)),
+ aFonts (this, ResId(1)),
+ aStyleText (this, ResId(4)),
+ aStyles (this, ResId(3)),
+ aOldSymbolName (this, ResId(7)),
+ aOldSymbolDisplay (this, ResId(3)),
+ aOldSymbolSetName (this, ResId(8)),
+ aSymbolName (this, ResId(5)),
+ aSymbolDisplay (this, ResId(2)),
+ aSymbolSetName (this, ResId(6)),
+ aAddBtn (this, ResId(1)),
+ aChangeBtn (this, ResId(2)),
+ aDeleteBtn (this, ResId(3)),
+ aOkBtn (this, ResId(1)),
+ aCancelBtn (this, ResId(1)),
+ aRightArrow (this, ResId(1)),
+ pFontList (NULL),
+ rSymSetMgr (rMgr)
+{
+ if (bFreeRes)
+ FreeResource();
+
+ // get FontList from printer (if possible), otherwise from application window
+ SmViewShell *pView = SmGetActiveView();
+ DBG_ASSERT(pView, "Sm : NULL pointer");
+ OutputDevice *pDev = pView->GetDoc()->GetPrinter();
+ if (!pDev || pDev->GetDevFontCount() == 0)
+ pDev = &pView->GetGraphicWindow();
+ pFontList = new FontList(pDev);
+
+
+ pOrigSymbol = 0;
+
+ // make autocompletion for symbols case-sensitive
+ aOldSymbols.EnableAutocomplete(TRUE, TRUE);
+ aSymbols .EnableAutocomplete(TRUE, TRUE);
+
+ FillFonts();
+ if (aFonts.GetEntryCount() > 0)
+ SelectFont(aFonts.GetEntry(0));
+
+ // set background color to white
+ Wallpaper aWhiteWall( (Color) Color(COL_WHITE) );
+ aCharsetDisplay .SetBackground( aWhiteWall );
+ aOldSymbolDisplay.SetBackground( aWhiteWall );
+ aOldSymbolDisplay.SetBackground( aWhiteWall );
+
+ SetSymbolSetManager(rSymSetMgr);
+
+ aOldSymbols .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolChangeHdl));
+ aOldSymbolSets .SetSelectHdl(LINK(this, SmSymDefineDialog, OldSymbolSetChangeHdl));
+ aSymbolSets .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
+ aOldSymbolSets .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
+ aSymbols .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
+ aOldSymbols .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
+ aStyles .SetModifyHdl(LINK(this, SmSymDefineDialog, ModifyHdl));
+ aFonts .SetSelectHdl(LINK(this, SmSymDefineDialog, FontChangeHdl));
+ aStyles .SetSelectHdl(LINK(this, SmSymDefineDialog, StyleChangeHdl));
+ aAddBtn .SetClickHdl (LINK(this, SmSymDefineDialog, AddClickHdl));
+ aChangeBtn .SetClickHdl (LINK(this, SmSymDefineDialog, ChangeClickHdl));
+ aDeleteBtn .SetClickHdl (LINK(this, SmSymDefineDialog, DeleteClickHdl));
+ aCharsetDisplay.SetSelectHdl(LINK(this, SmSymDefineDialog, CharSelectHdl));
+}
+
+
+SmSymDefineDialog::~SmSymDefineDialog()
+{
+ delete pFontList;
+}
+
+
+short SmSymDefineDialog::Execute()
+{
+ short nResult = ModalDialog::Execute();
+
+ // Änderungen übernehmen falls Dialog mit OK beendet wurde
+ if (aSymSetMgrCopy.IsModified() && nResult == RET_OK)
+ {
+ // leere SymbolSets aus dem Ergebnis entfernen.
+ // Dabei von hinten durch das array iterieren, da beim löschen die
+ // Elemente aufrücken.
+ USHORT nSymbolSets = aSymSetMgrCopy.GetCount();
+ for (int i = nSymbolSets - 1; i >= 0; i--)
+ if (aSymSetMgrCopy.GetSymbolSet(i)->GetCount() == 0)
+ aSymSetMgrCopy.DeleteSymbolSet(i);
+
+ rSymSetMgr = aSymSetMgrCopy;
+ }
+
+ return nResult;
+}
+
+
+void SmSymDefineDialog::SetSymbolSetManager(const SmSymSetManager &rMgr)
+{
+ aSymSetMgrCopy = rMgr;
+
+ // Das modified Flag der Kopie auf FALSE setzen, damit man später damit
+ // testen kann ob sich was geändert hat.
+ aSymSetMgrCopy.SetModified(FALSE);
+
+ FillSymbolSets(aOldSymbolSets);
+ if (aOldSymbolSets.GetEntryCount() > 0)
+ SelectSymbolSet(aOldSymbolSets.GetEntry(0));
+ FillSymbolSets(aSymbolSets);
+ if (aSymbolSets.GetEntryCount() > 0)
+ SelectSymbolSet(aSymbolSets.GetEntry(0));
+ FillSymbols(aOldSymbols);
+ if (aOldSymbols.GetEntryCount() > 0)
+ SelectSymbol(aOldSymbols.GetEntry(0));
+ FillSymbols(aSymbols);
+ if (aSymbols.GetEntryCount() > 0)
+ SelectSymbol(aSymbols.GetEntry(0));
+
+ UpdateButtons();
+}
+
+
+BOOL SmSymDefineDialog::SelectSymbolSet(ComboBox &rComboBox,
+ const XubString &rSymbolSetName, BOOL bDeleteText)
+{
+ DBG_ASSERT(&rComboBox == &aOldSymbolSets || &rComboBox == &aSymbolSets,
+ "Sm : falsche ComboBox");
+
+ // 'Normalisieren' des SymbolNamens (ohne leading und trailing Leerzeichen)
+ XubString aNormName (rSymbolSetName);
+ aNormName.EraseLeadingChars(' ');
+ aNormName.EraseTrailingChars(' ');
+ // und evtl Abweichungen in der Eingabe beseitigen
+ rComboBox.SetText(aNormName);
+
+ BOOL bRet = FALSE;
+ USHORT nPos = rComboBox.GetEntryPos(aNormName);
+
+ if (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ rComboBox.SetText(rComboBox.GetEntry(nPos));
+ bRet = TRUE;
+ }
+ else if (bDeleteText)
+ rComboBox.SetText(XubString());
+
+ BOOL bIsOld = &rComboBox == &aOldSymbolSets;
+
+ // setzen des SymbolSet Namens an der zugehörigen Darstellung
+ FixedText &rFT = bIsOld ? aOldSymbolSetName : aSymbolSetName;
+ rFT.SetText(rComboBox.GetText());
+
+ // setzen der zum SymbolSet gehörenden Symbol Namen an der zugehörigen
+ // Auswahbox
+ ComboBox &rCB = bIsOld ? aOldSymbols : aSymbols;
+ FillSymbols(rCB, FALSE);
+
+ // bei Wechsel des SymbolSets für das alte Zeichen ein gültiges
+ // Symbol bzw keins zur Anzeige bringen
+ if (bIsOld)
+ {
+ XubString aOldSymbolName;
+ if (aOldSymbols.GetEntryCount() > 0)
+ aOldSymbolName = aOldSymbols.GetEntry(0);
+ SelectSymbol(aOldSymbols, aOldSymbolName, TRUE);
+ }
+
+ UpdateButtons();
+
+ return bRet;
+}
+
+
+void SmSymDefineDialog::SetOrigSymbol(const SmSym *pSymbol,
+ const XubString &rSymbolSetName)
+{
+ pOrigSymbol = pSymbol;
+
+ XubString aSymName,
+ aSymSetName;
+ if (pSymbol)
+ {
+ aSymName = pSymbol->GetName();
+ aSymSetName = rSymbolSetName;
+ aOldSymbolDisplay.SetFont(pSymbol->GetFace());
+ aOldSymbolDisplay.SetChar(pSymbol->GetCharacter());
+ }
+ else
+ { // löschen des angezeigten Symbols
+ aOldSymbolDisplay.SetText(XubString());
+ aOldSymbolDisplay.Invalidate();
+ }
+ aOldSymbolName .SetText(aSymName);
+ aOldSymbolSetName.SetText(aSymSetName);
+}
+
+
+BOOL SmSymDefineDialog::SelectSymbol(ComboBox &rComboBox,
+ const XubString &rSymbolName, BOOL bDeleteText)
+{
+ DBG_ASSERT(&rComboBox == &aOldSymbols || &rComboBox == &aSymbols,
+ "Sm : falsche ComboBox");
+
+ // 'Normalisieren' des SymbolNamens (ohne Leerzeichen)
+ XubString aNormName (rSymbolName);
+ aNormName.EraseAllChars(' ');
+ // und evtl Abweichungen in der Eingabe beseitigen
+ rComboBox.SetText(aNormName);
+
+ BOOL bRet = FALSE;
+ USHORT nPos = rComboBox.GetEntryPos(aNormName);
+
+ BOOL bIsOld = &rComboBox == &aOldSymbols;
+
+ if (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ rComboBox.SetText(rComboBox.GetEntry(nPos));
+
+ if (!bIsOld)
+ {
+ const SmSym *pSymbol = GetSymbol(aSymbols);
+ if (pSymbol)
+ {
+ // Font und Style entsprechend wählen
+ const Font &rFont = pSymbol->GetFace();
+ SelectFont(rFont.GetName(), FALSE);
+ SelectStyle(GetFontStyleName(rFont), FALSE);
+
+ // da das setzen des Fonts über den Style Namen des SymbolsFonts nicht
+ // so gut klappt (er kann zB leer sein obwohl der Font selbst 'bold' und
+ // 'italic' ist!). Setzen wir hier den Font wie er zum Symbol gehört
+ // zu Fuß.
+ aCharsetDisplay.SetFont(rFont);
+ aSymbolDisplay.SetFont(rFont);
+
+ // das zugehörige Zeichen auswählen
+ SelectChar(pSymbol->GetCharacter());
+ }
+ }
+
+ bRet = TRUE;
+ }
+ else if (bDeleteText)
+ rComboBox.SetText(XubString());
+
+ if (bIsOld)
+ {
+ // bei Wechsel des alten Symbols nur vorhandene anzeigen sonst keins
+ const SmSym *pOldSymbol = NULL;
+ XubString aOldSymbolSetName;
+ if (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ pOldSymbol = aSymSetMgrCopy.GetSymbol(aNormName);
+ aOldSymbolSetName = aOldSymbolSets.GetText();
+ }
+ SetOrigSymbol(pOldSymbol, aOldSymbolSetName);
+ }
+ else
+ aSymbolName.SetText(rComboBox.GetText());
+
+ UpdateButtons();
+
+ return bRet;
+}
+
+
+void SmSymDefineDialog::SetFont(const XubString &rFontName, const XubString &rStyleName)
+{
+ // Font (FontInfo) passend zu Namen und Style holen
+ DBG_ASSERT(pFontList, "Sm : NULL pointer");
+ FontInfo aFI( pFontList->Get(rFontName, WEIGHT_NORMAL, ITALIC_NONE) );
+ SetFontStyle(rStyleName, aFI);
+
+ aCharsetDisplay.SetFont(aFI);
+ aSymbolDisplay.SetFont(aFI);
+}
+
+
+BOOL SmSymDefineDialog::SelectFont(const XubString &rFontName, BOOL bApplyFont)
+{
+ BOOL bRet = FALSE;
+ USHORT nPos = aFonts.GetEntryPos(rFontName);
+
+ if (nPos != LISTBOX_ENTRY_NOTFOUND)
+ {
+ aFonts.SelectEntryPos(nPos);
+ if (aStyles.GetEntryCount() > 0)
+ SelectStyle(aStyles.GetEntry(0));
+ if (bApplyFont)
+ SetFont(aFonts.GetSelectEntry(), aStyles.GetText());
+ bRet = TRUE;
+ }
+ else
+ aFonts.SetNoSelection();
+ FillStyles();
+
+ UpdateButtons();
+
+ return bRet;
+}
+
+
+BOOL SmSymDefineDialog::SelectStyle(const XubString &rStyleName, BOOL bApplyFont)
+{
+ BOOL bRet = FALSE;
+ USHORT nPos = aStyles.GetEntryPos(rStyleName);
+
+ // falls der Style nicht zur Auswahl steht nehmen wir den erst möglichen
+ // (sofern vorhanden)
+ if (nPos == COMBOBOX_ENTRY_NOTFOUND && aStyles.GetEntryCount() > 0)
+ nPos = 0;
+
+ if (nPos != COMBOBOX_ENTRY_NOTFOUND)
+ {
+ aStyles.SetText(aStyles.GetEntry(nPos));
+ if (bApplyFont)
+ SetFont(aFonts.GetSelectEntry(), aStyles.GetText());
+ bRet = TRUE;
+ }
+ else
+ aStyles.SetText(XubString());
+
+ UpdateButtons();
+
+ return bRet;
+}
+
+
+void SmSymDefineDialog::SelectChar(xub_Unicode cChar)
+{
+ aCharsetDisplay.SelectChar(cChar);
+ aSymbolDisplay.SetChar(cChar);
+
+ UpdateButtons();
+}
+
+
+/**************************************************************************/
+
+#ifdef NEVER
+SfxTabPage* SmGeneralTabPage::Create(Window* pWindow, const SfxItemSet& rSet)
+{
+ return new SmGeneralTabPage(pWindow, rSet);
+}
+#endif NEVER
+
+
+
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
new file mode 100644
index 000000000000..130f00126f47
--- /dev/null
+++ b/starmath/source/document.cxx
@@ -0,0 +1,1641 @@
+/*************************************************************************
+ *
+ * $RCSfile: document.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#include <sot/formats.hxx>
+#ifndef _SVSTOR_HXX //autogen
+#include <so3/svstor.hxx>
+#endif
+#ifndef _SFXSMPLHINT_HXX //autogen
+#include <svtools/smplhint.hxx>
+#endif
+#ifndef _SO_CLSIDS_HXX //autogen
+#include <so3/clsids.hxx>
+#endif
+#ifndef _SOT_EXCHANGE_HXX //autogen
+#include <sot/exchange.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef SVTOOLS_URIHELPER_HXX
+#include <svtools/urihelper.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXDOCINF_HXX //autogen
+#include <sfx2/docinf.hxx>
+#endif
+#ifndef _SFXDOCFILE_HXX //autogen
+#include <sfx2/docfile.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _IODLG_HXX
+#include <sfx2/iodlg.hxx>
+#endif
+#ifndef _SFXECODE_HXX //autogen
+#include <svtools/sfxecode.hxx>
+#endif
+#ifndef _SV_EXCHANGE_HXX //autogen
+#include <vcl/exchange.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFX_DOCFILT_HACK_HXX
+#include <sfx2/docfilt.hxx>
+#endif
+
+#ifndef STARMATH_HRC
+#include <starmath.hrc>
+#endif
+#ifndef DOCUMENT_HXX
+#include <document.hxx>
+#endif
+#ifndef UNOMODEL_HXX
+#include <unomodel.hxx>
+#endif
+#ifndef CONFIG_HXX
+#include <config.hxx>
+#endif
+#ifndef SYMBOL_HXX
+#include <symbol.hxx>
+#endif
+#ifndef TOOLBOX_HXX
+#include <toolbox.hxx>
+#endif
+#ifndef DIALOG_HXX
+#include <dialog.hxx>
+#endif
+#ifndef ACTION_HXX
+#include <action.hxx>
+#endif
+#ifndef VIEW_HXX
+#include <view.hxx>
+#endif
+#ifndef FORMAT_HXX
+#include <format.hxx>
+#endif
+#ifndef MATHTYPE_HXX
+#include <mathtype.hxx>
+#endif
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::rtl;
+
+#ifndef SO2_DECL_SVSTORAGESTREAM_DEFINED
+#define SO2_DECL_SVSTORAGESTREAM_DEFINED
+SO2_DECL_REF(SvStorageStream)
+#endif
+#ifndef SO2_DECL_SVSTORAGE_DEFINED
+#define SO2_DECL_SVSTORAGE_DEFINED
+SO2_DECL_REF(SvStorage)
+#endif
+
+#define DOCUMENT_BUFFER_SIZE (USHORT)32768
+
+static const char __FAR_DATA pStarMathDoc[] = "StarMathDocument";
+
+
+/**************************************************************************/
+/*
+**
+** CLASS IMPLEMENTATION
+**
+**/
+
+#define SmDocShell
+#include "smslots.hxx"
+
+TYPEINIT1( SmDocShell, SfxObjectShell );
+
+SFX_IMPL_INTERFACE(SmDocShell, SfxObjectShell, SmResId(0))
+{
+ SFX_POPUPMENU_REGISTRATION(SmResId(RID_VIEWMENU));
+ SFX_POPUPMENU_REGISTRATION(SmResId(RID_COMMANDMENU));
+// SFX_OBJECTBAR_REGISTRATION(
+// SFX_OBJECTBAR_OBJECT|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_SERVER,
+// SmResId(RID_DEFAULTTOOLBOX));
+}
+
+#if 0
+SFX_IMPL_OBJECTFACTORY(SmDocShell, SFXOBJECTSHELL_STD_NORMAL, smath, SvGlobalName(SO3_SM_CLASSID_50) )
+{
+ SFX_SIMPLE_FILTER_REGISTRATION( C2S("StarMath 5.0"), C2S("*.smf"),
+ SFX_FILTER_OWN | SFX_FILTER_IMPORT | SFX_FILTER_EXPORT,
+ SOT_FORMATSTR_ID_STARMATH_50,
+ C2S("SVsm0.smf"), C2S("OS2"), 0, C2S("0"), String());
+
+//JP 13.06.00: das fehlt vwohl noch, oder??
+// SfxObjectFactory& rFactory = (SfxObjectFactory&)Factory();
+// SfxFactoryFilterContainer *pFltContainer = rFactory.GetFilterContainer( FALSE );
+// rFactory.GetFilterContainer()->SetDetectFilter( &SmDLL::DetectFilter );
+
+ // FG: Sonst gibts keine Hilfe im Math #38447#
+ Factory().RegisterHelpFile (C2S("smath.svh"));
+}
+#else
+SFX_IMPL_OBJECTFACTORY_DLL(SmDocShell, smath, SvGlobalName(SO3_SM_CLASSID_50), Sm);
+#endif
+
+void SmDocShell::SFX_NOTIFY(SfxBroadcaster&, const TypeId&,
+ const SfxHint& rHint, const TypeId&)
+{
+ switch (((SfxSimpleHint&)rHint).GetId())
+ {
+ case HINT_CONFIGCHANGED:
+ {
+ SmModule *pp = SM_MOD1();
+
+ if (pp->GetConfig()->IsAutoRedraw())
+ { nModifyCount++; //! merkwrdig...
+ // ohne dies wird die Grafik letztlich
+ // nicht geupdatet
+ Resize();
+ }
+ break;
+ }
+
+ case HINT_FORMATCHANGED:
+ SetFormulaArranged(FALSE);
+ nModifyCount++; //! merkwrdig...
+ // ohne dies wird die Grafik letztlich
+ // nicht geupdatet
+ Resize();
+ break;
+ }
+}
+
+void SmDocShell::LoadSymbols()
+{
+ SmModule *pp = SM_MOD1();
+ String sURL(pp->GetConfig()->GetSymbolFile());
+ SfxIniManager* pIniMgr = SFX_INIMANAGER();
+ sURL = pIniMgr->SubstPathVars( sURL );
+ BOOL bExist = FALSE;
+ INetURLObject aURLObj;
+ aURLObj.SetSmartProtocol( INET_PROT_FILE );
+ aURLObj.SetSmartURL(sURL);
+ try
+ {
+ if(aURLObj.GetProtocol() == INET_PROT_FILE)
+ bExist = ::ucb::Content( aURLObj.GetMainURL(),
+ uno::Reference< XCommandEnvironment >()).isDocument();
+ }
+ catch(...){}
+ if(!bExist)
+ pIniMgr->SearchFile( sURL, SFX_KEY_USERCONFIG_PATH );
+
+ sURL = URIHelper::SmartRelToAbs(sURL);
+ pp->GetSymSetManager()->Load(sURL);
+}
+
+const String &SmDocShell::GetTitle() const
+{
+ return ((SmDocShell *) this)->GetDocInfo().GetTitle();
+}
+
+
+
+const String &SmDocShell::GetComment() const
+{
+ return ((SmDocShell *) this)->GetDocInfo().GetComment();
+}
+
+
+
+void SmDocShell::SetText(const String& rBuffer)
+{
+ if (rBuffer != aText)
+ {
+ aText = rBuffer;
+ Parse();
+ SetFormulaArranged(FALSE);
+ Resize();
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetBindings().Invalidate(SID_TEXT);
+ SetModified(TRUE);
+ }
+}
+
+void SmDocShell::SetFormat(SmFormat& rFormat)
+{
+ aFormat = rFormat;
+ SetFormulaArranged(FALSE);
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetBindings().Invalidate(SID_GRAPHIC);
+ SetModified(TRUE);
+}
+
+
+void SmDocShell::Parse()
+{
+ if (pTree)
+ delete pTree;
+ pTree = aInterpreter.Parse(aText);
+ nModifyCount++;
+}
+
+
+void SmDocShell::ArrangeFormula()
+{
+ //! Nur für die Dauer der Existenz dieses Objekts sind am Drucker die
+ //! richtigen Einstellungen garantiert.
+ SmPrinterAccess aPrtAcc(*this);
+
+ OutputDevice *pOutDev = aPrtAcc.GetPrinter();
+
+#ifndef PRODUCT
+ if (!pOutDev)
+ DBG_WARNING("Sm : kein Drucker vorhanden");
+#endif
+
+ // falls nötig ein anderes OutputDevice holen für das formatiert wird
+ if (!pOutDev)
+ {
+ SmViewShell *pView = SmGetActiveView();
+ if (pView)
+ pOutDev = &pView->GetGraphicWindow();
+ else
+ { pOutDev = new VirtualDevice;
+ pOutDev->SetMapMode( MapMode(MAP_100TH_MM) );
+ }
+ }
+ DBG_ASSERT(pOutDev->GetMapMode().GetMapUnit() == MAP_100TH_MM,
+ "Sm : falscher MapMode");
+
+ const SmFormat &rFormat = GetFormat();
+ pTree->Prepare(rFormat);
+ pTree->Arrange(*pOutDev, rFormat);
+
+ SetFormulaArranged(TRUE);
+}
+
+
+void SmDocShell::Draw(OutputDevice &rDev, Point &rPosition)
+{
+ if (!pTree)
+ Parse();
+ DBG_ASSERT(pTree, "Sm : NULL pointer");
+
+ if (!IsFormulaArranged())
+ ArrangeFormula();
+
+ //Problem: Was passiert mit dem WYSIWYG? Wir haben waehrend wir inplace aktiv
+ //sind kein Referenzdevice und sind auch nicht darauf ausgerichtet. Es kann
+ //also jetzt eine Differenz zwischen der VisArea (spricht die Groesse im Client)
+ //und der jetzt vorliegenden Groese geben.
+ //Idee: Die Differenz koennte, zumindest behelfsmaessig, mit SmNod::SetSize
+ //angepasst werden.
+
+ rPosition.X() += aFormat.GetDistance( DIS_LEFTSPACE );
+ rPosition.Y() += aFormat.GetDistance( DIS_TOPSPACE );
+ pTree->Draw(rDev, rPosition);
+}
+
+
+
+Size SmDocShell::GetSize()
+{
+ Size aRet;
+
+ if (!pTree)
+ Parse();
+
+ if (pTree)
+ {
+ if (!IsFormulaArranged())
+ ArrangeFormula();
+ aRet = pTree->GetSize();
+
+ if ( !aRet.Width() )
+ aRet.Width() = 2000;
+ else
+ aRet.Width() += aFormat.GetDistance( DIS_LEFTSPACE ) +
+ aFormat.GetDistance( DIS_RIGHTSPACE );
+ if ( !aRet.Height() )
+ aRet.Height() = 1000;
+ else
+ aRet.Height() += aFormat.GetDistance( DIS_TOPSPACE ) +
+ aFormat.GetDistance( DIS_BOTTOMSPACE );
+ }
+
+ return aRet;
+}
+
+////////////////////////////////////////
+
+SmPrinterAccess::SmPrinterAccess( SmDocShell &rDocShell )
+{
+ if ( 0 != (pPrinter = rDocShell.GetPrt()) )
+ {
+ pPrinter->Push( PUSH_MAPMODE );
+ if ( rDocShell.GetProtocol().IsInPlaceActive() ||
+ SFX_CREATE_MODE_EMBEDDED == rDocShell.GetCreateMode() )
+ {
+ // if it is an embedded object (without it's own printer)
+ // we change the MapMode temporarily.
+ //!If it is a document with it's own printer the MapMode should
+ //!be set correct (once) elsewhere(!), in order to avoid numerous
+ //!superfluous pushing and poping of the MapMode when using
+ //!this class.
+
+ const MapUnit eOld = pPrinter->GetMapMode().GetMapUnit();
+ if ( MAP_100TH_MM != eOld )
+ {
+ MapMode aMap( pPrinter->GetMapMode() );
+ aMap.SetMapUnit( MAP_100TH_MM );
+ Point aTmp( aMap.GetOrigin() );
+ aTmp.X() = OutputDevice::LogicToLogic( aTmp.X(), eOld, MAP_100TH_MM );
+ aTmp.Y() = OutputDevice::LogicToLogic( aTmp.Y(), eOld, MAP_100TH_MM );
+ aMap.SetOrigin( aTmp );
+ pPrinter->SetMapMode( aMap );
+ }
+ }
+ }
+}
+
+SmPrinterAccess::~SmPrinterAccess()
+{
+ if ( pPrinter )
+ pPrinter->Pop();
+}
+
+////////////////////////////////////////
+
+Printer *SmDocShell::GetPrt()
+{
+ if ( GetProtocol().IsInPlaceActive() ||
+ SFX_CREATE_MODE_EMBEDDED == GetCreateMode() )
+ {
+ //Normalerweise wird der Printer vom Server besorgt. Wenn dieser aber
+ //keinen liefert (weil etwa noch keine connection da ist), kann es
+ //dennoch sein, dass wir den Printer kennen, denn dieser wird in
+ //OnDocumentPrinterChanged vom Server durchgereicht und dann temporaer
+ //festgehalten.
+ Printer *pPrt = GetDocumentPrinter();
+ if ( !pPrt )
+ pPrt = pTmpPrinter;
+ return pPrt;
+ }
+ else if ( !pPrinter )
+ {
+ SfxItemSet *pOptions =
+ new SfxItemSet(GetPool(),
+ SID_PRINTSIZE, SID_PRINTSIZE,
+ SID_PRINTZOOM, SID_PRINTZOOM,
+ SID_PRINTTITLE, SID_PRINTTITLE,
+ SID_PRINTTEXT, SID_PRINTTEXT,
+ SID_PRINTFRAME, SID_PRINTFRAME,
+ SID_NO_RIGHT_SPACES, SID_NO_RIGHT_SPACES,
+ 0);
+
+ SmModule *pp = SM_MOD1();
+ pp->GetConfig()->ConfigToItemSet(*pOptions);
+ pPrinter = new SfxPrinter(pOptions);
+ pPrinter->SetMapMode( MapMode(MAP_100TH_MM) );
+ }
+ return pPrinter;
+}
+
+
+void SmDocShell::SetPrinter( SfxPrinter *pNew )
+{
+ delete pPrinter;
+ pPrinter = pNew; //Eigentumsuebergang!
+ pPrinter->SetMapMode( MapMode(MAP_100TH_MM) );
+ SetFormulaArranged(FALSE);
+ SM_MOD1()->GetRectCache()->Reset();
+ Resize();
+}
+
+void SmDocShell::OnDocumentPrinterChanged( Printer *pPrt )
+{
+ pTmpPrinter = pPrt;
+ SetFormulaArranged(FALSE);
+ SM_MOD1()->GetRectCache()->Reset();
+ Size aOldSize = GetVisArea().GetSize();
+ Resize();
+ if ( aOldSize != GetVisArea().GetSize() )
+ SetModified( TRUE );
+ pTmpPrinter = 0;
+}
+
+void SmDocShell::Resize()
+{
+ Size aVisSize = GetSize();
+
+ BOOL bIsEnabled = IsEnableSetModified();
+ if ( bIsEnabled )
+ EnableSetModified( FALSE );
+
+ SetUpdateTimeout( 0L );
+ SetVisAreaSize( aVisSize );
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetBindings().Invalidate(SID_GRAPHIC);
+
+ if ( bIsEnabled )
+ EnableSetModified( bIsEnabled );
+}
+
+
+SmDocShell::SmDocShell(SfxObjectCreateMode eMode) :
+ SfxObjectShell(eMode),
+ aDataTypeList(SvEmbeddedObject::GetStdFormatList()),
+ pTree( 0 ),
+ pPrinter( 0 ),
+ pTmpPrinter( 0 ),
+ nModifyCount( 0 ),
+ bIsFormulaArranged( FALSE )
+{
+ SetPool(&SFX_APP()->GetPool());
+
+ SmModule *pp = SM_MOD1();
+ aFormat = pp->GetConfig()->GetFormat();
+
+ StartListening(aFormat);
+ StartListening(*pp->GetConfig());
+ LoadSymbols();
+
+ SetShell(this);
+ SetModel( new SmModel(this) ); //! das hier mit new erzeugte Model brauch
+ //! im Destruktor nicht explizit gelöscht werden.
+ //! Dies erledigt das Sfx.
+ pUndoMgr = new SfxUndoManager;
+ aDataTypeList.Append(SvDataType(FORMAT_STRING, MEDIUM_MEMORY));
+}
+
+
+
+SmDocShell::~SmDocShell()
+{
+ SmModule *pp = SM_MOD1();
+
+ EndListening(aFormat);
+ EndListening(*pp->GetConfig());
+
+ SaveSymbols();
+
+ delete pUndoMgr;
+ delete pTree;
+ delete pPrinter;
+}
+
+
+
+BOOL SmDocShell::GetData(SvData *pData)
+{
+ if ( FORMAT_STRING == pData->GetFormat() )
+ {
+ pData->SetData(GetText());
+ return TRUE;
+ }
+
+ return SfxInPlaceObject::GetData(pData);
+}
+
+BOOL SmDocShell::SetData( SvData *pData )
+{
+ if ( FORMAT_STRING == pData->GetFormat() )
+ {
+ String aData;
+ if ( pData->GetData( aData ) )
+ {
+ SetText( aData );
+ return TRUE;
+ }
+ }
+ return SfxInPlaceObject::SetData( pData );
+}
+
+void SmDocShell::Convert40To50Txt()
+ // adapts the text 'aText' to be parsed from 4.0 version, to changes made
+ // in 5.0 version. (Namely that functions do not need arguments any more)
+ // Example: "2 over sin x" acts very different in 4.0 and 5.0
+{
+ if (pTree)
+ delete pTree;
+
+ // parse in old 4.0 style and make changes for 5.0 style
+ BOOL bVal = aInterpreter.IsConvert40To50();
+ aInterpreter.SetConvert40To50(TRUE);
+ pTree = aInterpreter.Parse(aText);
+ aInterpreter.SetConvert40To50(bVal);
+
+ // get new to 5.0 version converted text
+ aText = aInterpreter.GetText();
+
+ // clean up tree parsed in old style
+ if (pTree)
+ { delete pTree;
+ pTree = NULL;
+ }
+}
+
+
+BOOL SmDocShell::ConvertFrom(SfxMedium &rMedium)
+{
+ BOOL bSuccess = FALSE;
+ String aTmpStr( C2S( "Equation Native" ));
+ if( rMedium.IsStorage() && rMedium.GetStorage()->IsStream( aTmpStr ))
+ {
+ // is this a MathType Storage?
+ MathType aEquation( aText );
+ bSuccess = aEquation.Parse( rMedium.GetStorage() );
+ }
+ else
+ {
+ SvStream *pStream = rMedium.GetInStream();
+ if (pStream)
+ {
+ bSuccess = ImportSM20File( pStream );
+ rMedium.CloseInStream();
+ }
+ }
+ FinishedLoading( SFX_LOADED_ALL );
+ return bSuccess;
+}
+
+
+
+BOOL SmDocShell::InsertFrom(SfxMedium &rMedium)
+{
+ BOOL bSuccess = FALSE;
+ SvStream *pStream = rMedium.GetInStream();
+
+ if (pStream)
+ {
+ bSuccess = ImportSM20File( pStream, TRUE );
+ rMedium.CloseInStream();
+ }
+ return bSuccess;
+}
+
+
+
+BOOL SmDocShell::InitNew(SvStorage * pStor)
+{
+ BOOL bRet = FALSE;
+ if (SfxInPlaceObject::InitNew(pStor))
+ {
+ bRet = TRUE;
+ SetVisArea(Rectangle(Point(0, 0), Size(2000, 1000)));
+ if (pStor)
+ {
+ aDocStream = pStor->OpenStream(String::CreateFromAscii(pStarMathDoc));
+ aDocStream->SetVersion (pStor->GetVersion ());
+ GetPool().SetFileFormatVersion(USHORT(pStor->GetVersion()));
+
+ if (! aDocStream )
+ bRet = FALSE;
+ }
+ }
+ return bRet;
+}
+
+
+BOOL SmDocShell::Load(SvStorage *pStor)
+{
+ BOOL bRet = FALSE;
+ if( SfxInPlaceObject::Load( pStor ))
+ {
+ String aTmpStr( C2S( "Equation Native" ));
+ if( pStor->IsStream( aTmpStr ))
+ {
+ // is this a MathType Storage?
+ MathType aEquation(aText);
+ bRet = (1 == aEquation.Parse(pStor));
+ }
+ else
+ {
+ bRet = 0 != Try3x (pStor, STREAM_READWRITE);
+
+ if( !bRet )
+ {
+ pStor->Remove(String::CreateFromAscii(pStarMathDoc));
+ bRet = 0 != Try2x (pStor, STREAM_READWRITE);
+ pStor->Remove(C2S("\1Ole10Native"));
+ }
+ else
+ {
+ if ( pStor->GetVersion() <= SOFFICE_FILEFORMAT_40 )
+ Convert40To50Txt();
+ }
+ }
+ }
+ FinishedLoading( SFX_LOADED_ALL );
+ return bRet;
+}
+
+
+
+BOOL SmDocShell::Insert(SvStorage *pStor)
+{
+ String aTemp = aText;
+ BOOL bRet = TRUE;
+
+ if (!Try3x (pStor, STREAM_STD_READ))
+ {
+ pStor->Remove (String::CreateFromAscii(pStarMathDoc));
+ bRet = !Try2x (pStor, STREAM_STD_READ);
+ pStor->Remove(C2S("\1Ole10Native"));
+ }
+
+ if ( bRet )
+ {
+ aTemp += aText;
+ aText = aTemp;
+
+ if ( pStor->GetVersion() <= SOFFICE_FILEFORMAT_40 )
+ Convert40To50Txt();
+
+ Parse();
+ SetModified(TRUE);
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ {
+ SfxBindings &rBnd = pViewSh->GetViewFrame()->GetBindings();
+ rBnd.Invalidate(SID_GRAPHIC);
+ rBnd.Invalidate(SID_TEXT);
+ }
+ }
+ return bRet;
+}
+
+//------------------------------------------------------------------
+
+void SmDocShell::ImplSave( SvStorageStreamRef xStrm )
+{
+ ByteString exString (ExportString(aText));
+ SmModule *pp = SM_MOD1();
+
+ *xStrm << SM304AIDENT << SM50VERSION
+ << 'T';
+ xStrm->WriteByteString(exString);
+ *xStrm << 'F' << aFormat
+ << 'S' << pp->GetSymSetManager()->GetAccessedSymbols()
+ << '\0';
+}
+
+BOOL SmDocShell::Save()
+{
+ if ( SfxInPlaceObject::Save() && aDocStream.Is() )
+ {
+ aDocStream->Seek(0);
+ ImplSave( aDocStream );
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+BOOL SmDocShell::SaveAs(SvStorage * pNewStor)
+{
+ BOOL bRet = FALSE;
+ if ( SfxInPlaceObject::SaveAs( pNewStor ) )
+ {
+ SvStorageStreamRef aStm = pNewStor->OpenStream(
+ String::CreateFromAscii(pStarMathDoc));
+ aStm->SetVersion( pNewStor->GetVersion() );
+ GetPool().SetFileFormatVersion( USHORT( pNewStor->GetVersion() ));
+ aStm->SetBufferSize(DOCUMENT_BUFFER_SIZE);
+ aStm->SetKey( pNewStor->GetKey() ); // Passwort setzen
+
+ if ( aStm.Is() )
+ {
+ ImplSave( aStm );
+ bRet = TRUE;
+ }
+ }
+ return bRet;
+}
+
+BOOL SmDocShell::ConvertTo( SfxMedium &rMedium )
+{
+ BOOL bRet = FALSE;
+ const SfxFilter* pFlt = rMedium.GetFilter();
+ if( pFlt && pFlt->GetFilterName().EqualsAscii( "MathType 3.x" ))
+ bRet = WriteAsMathType3( rMedium );
+ return bRet;
+}
+
+BOOL SmDocShell::SaveCompleted(SvStorage * pStor)
+{
+ if( SfxInPlaceObject::SaveCompleted( pStor ))
+ {
+ if (! pStor)
+ return TRUE;
+
+ aDocStream = pStor->OpenStream(String::CreateFromAscii(pStarMathDoc));
+ aDocStream->SetVersion (pStor->GetVersion ());
+ GetPool().SetFileFormatVersion(USHORT(pStor->GetVersion()));
+ aDocStream->SetBufferSize(DOCUMENT_BUFFER_SIZE);
+ aDocStream->SetKey( pStor->GetKey() ); // Passwort setzen
+ return aDocStream.Is();
+ }
+ return FALSE;
+}
+
+
+
+BOOL SmDocShell::ImportSM20File(SvStream *pStream, BOOL bInsert)
+{
+ void ReadSM20SymSet(SvStream*, SmSymSet*);
+
+ char cTag;
+ ULONG lIdent, lVersion;
+ long lTime;
+ ULONG lDate;
+ String aBuffer;
+ SmSymSet *pSymbolSet;
+ ULONG FilePos = pStream->Tell();
+
+ *pStream >> lIdent >> lVersion;
+
+ if (lIdent == FRMIDENT)
+ {
+ DBG_ASSERT((lVersion == FRMVERSION), "Illegal file version");
+
+ *pStream >> cTag;
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ while (cTag && !pStream->IsEof())
+ {
+ switch (cTag)
+ {
+ case 'T':
+ pStream->ReadByteString(aBuffer, eEnc);
+ if (! bInsert)
+ {
+ aText = aBuffer;
+ Parse();
+ }
+ else
+ {
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_INSERTTEXT, SFX_CALLMODE_STANDARD,
+ new SfxStringItem(SID_INSERTTEXT, aBuffer), 0L);
+ }
+ break;
+
+ case 'D':
+ {
+ pStream->ReadByteString(aBuffer, eEnc);
+ pStream->ReadByteString(aBuffer, eEnc);
+ *pStream >> lDate >> lTime;
+ pStream->ReadByteString(aBuffer, eEnc);
+ *pStream >> lDate >> lTime;
+ pStream->ReadByteString(aBuffer, eEnc);
+ }
+ break;
+
+ case 'F':
+ aFormat.ReadSM20Format(*pStream);
+ aFormat.From300To304a ();
+ break;
+
+ case 'S':
+ pSymbolSet = new SmSymSet();
+ ReadSM20SymSet(pStream, pSymbolSet);
+ if (! bInsert)
+ {
+ SmModule *pp = SM_MOD1();
+ pp->GetSymSetManager()->AppendExtraSymbolSet(pSymbolSet);
+ }
+ else
+ delete pSymbolSet;
+ break;
+
+ default:
+ DBG_ASSERT((cTag != 0), "Illegal data tag");
+ }
+ *pStream >> cTag;
+ }
+
+ return TRUE;
+ }
+
+ pStream->Seek(FilePos);
+
+ return FALSE;
+}
+
+
+void SmDocShell::Execute(SfxRequest& rReq)
+{
+ SfxBindings *pBindings = NULL;
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pBindings = &pViewSh->GetViewFrame()->GetBindings();
+ switch (rReq.GetSlot())
+ {
+ case SID_TEXTMODE:
+ {
+ SmFormat &rFormat = GetFormat();
+ rFormat.SetTextmode(!rFormat.IsTextmode());
+ rFormat.RequestApplyChanges();
+ break;
+ }
+
+ case SID_SYMBOLS_LOAD:
+ {
+ SmModule *pp = SM_MOD1();
+
+ SfxSimpleFileDialog *pFileDialog =
+ new SfxSimpleFileDialog(0, WinBits(WB_OPEN | WB_3DLOOK));
+
+#ifdef MAC
+ pFileDialog->AddFilter(SmResId(RID_SYMBOLFILESSTR), SmResId(RID_FILESYMTYP));
+ pFileDialog->AddFilter(SmResId(RID_ALLFILESSTR), C2S("****"));
+
+ pFileDialog->SetCurFilter(SmResId(RID_SYMBOLFILESSTR));
+#else
+ String aExt( C2S("*.sms" ));
+ pFileDialog->AddFilter(SmResId(RID_SYMBOLFILESSTR), aExt);
+ pFileDialog->AddFilter(SmResId(RID_ALLFILESSTR), C2S("*.*"));
+ pFileDialog->SetCurFilter(SmResId(RID_SYMBOLFILESSTR));
+ pFileDialog->SetDefaultExt(aExt);
+#endif
+
+ pFileDialog->SetPath(pp->GetConfig()->GetSymbolFile());
+
+ if ( RET_OK == pFileDialog->Execute() )
+ {
+ // save old symbols and sets if necessary
+ if (pp->GetSymSetManager()->IsModified())
+ pp->GetSymSetManager()->Save();
+ // load new symbols and sets from file
+ INetURLObject aURLObj;
+ aURLObj.SetSmartProtocol( INET_PROT_FILE );
+ aURLObj.SetSmartURL( pFileDialog->GetPath() );
+ pp->GetSymSetManager()->Load( aURLObj.GetMainURL() );
+ // make that file the new default symbolfile
+ pp->GetConfig()->SetSymbolFile( pFileDialog->GetPath() );
+ }
+
+ delete pFileDialog;
+ }
+ break;
+
+ case SID_AUTO_REDRAW :
+ {
+ SmModule *pp = SM_MOD1();
+ BOOL bRedraw = pp->GetConfig()->IsAutoRedraw();
+ pp->GetConfig()->SetAutoRedraw(!bRedraw);
+ break;
+ }
+
+ case SID_SYMBOLS_CATALOGUE:
+ {
+ SmSymSetManager *pSymSetMgr = SM_MOD1()->GetSymSetManager();
+ SmSymbolDialog(NULL, *pSymSetMgr).Execute();
+ RestartFocusTimer();
+ break;
+ }
+
+ case SID_TOOLBOX:
+ {
+ SmViewShell *pView = SmGetActiveView();
+ pView->GetViewFrame()->ToggleChildWindow(
+ SmToolBoxWrapper::GetChildWindowId() );
+ break;
+ }
+
+ case SID_INSERT_FORMULA:
+ {
+ SfxMedium *pMedium = SFX_APP()->
+ InsertDocumentDialog(SFXWB_INSERT | WB_OPEN | WB_3DLOOK,
+ SmDocShell::Factory());
+
+ if (pMedium != NULL)
+ {
+ if (pMedium->IsStorage())
+ Insert(pMedium->GetStorage());
+ else
+ InsertFrom(*pMedium);
+ delete pMedium;
+
+ SetFormulaArranged(FALSE);
+ // Fenster anpassen, neuzeichnen, ModifyCount erhöhen,...
+ if (pBindings)
+ pBindings->Invalidate(SID_GRAPHIC);
+ }
+ RestartFocusTimer();
+ rReq.SetReturnValue (SfxBoolItem (rReq.GetSlot(), TRUE));
+ break;
+ }
+
+ case SID_LOADSYMBOLS:
+ LoadSymbols();
+ break;
+
+ case SID_SAVESYMBOLS:
+ SaveSymbols();
+ break;
+
+ case SID_FONT:
+ {
+ SmFontTypeDialog *pFontTypeDialog = new SmFontTypeDialog(NULL);
+
+ pFontTypeDialog->ReadFrom(GetFormat());
+ if (pFontTypeDialog->Execute() == RET_OK)
+ {
+ SmFormat& rOldFormat = GetFormat();
+
+ pFontTypeDialog->WriteTo(GetFormat());
+ GetUndoManager()->AddUndoAction(
+ new SmFormatAction(this, rOldFormat, GetFormat()));
+
+ if (aText.Len ())
+ {
+ SetModified(TRUE);
+ if (pBindings)
+ pBindings->Invalidate(SID_GRAPHIC);
+ }
+ else SetModified (FALSE);
+ }
+ delete pFontTypeDialog;
+ RestartFocusTimer ();
+ break;
+ }
+
+ case SID_FONTSIZE:
+ {
+ SmFontSizeDialog *pFontSizeDialog = new SmFontSizeDialog(NULL);
+
+ pFontSizeDialog->ReadFrom(GetFormat());
+ if (pFontSizeDialog->Execute() == RET_OK)
+ {
+ SmFormat& rOldFormat = GetFormat();
+
+ pFontSizeDialog->WriteTo(GetFormat());
+
+ GetUndoManager()->AddUndoAction(
+ new SmFormatAction(this, rOldFormat, GetFormat()));
+
+ if (aText.Len ())
+ {
+ SetModified(TRUE);
+ if (pBindings)
+ pBindings->Invalidate(SID_GRAPHIC);
+ }
+ else SetModified (FALSE);
+ }
+ delete pFontSizeDialog;
+ RestartFocusTimer ();
+ break;
+ }
+
+ case SID_DISTANCE:
+ {
+ SmDistanceDialog *pDistanceDialog = new SmDistanceDialog(NULL);
+
+ pDistanceDialog->ReadFrom(GetFormat());
+ if (pDistanceDialog->Execute() == RET_OK)
+ {
+ SmFormat& rOldFormat = GetFormat();
+
+ pDistanceDialog->WriteTo(GetFormat());
+
+ GetUndoManager()->AddUndoAction(
+ new SmFormatAction(this, rOldFormat, GetFormat()));
+
+ if (aText.Len ())
+ {
+ SetModified(TRUE);
+ if (pBindings)
+ pBindings->Invalidate(SID_GRAPHIC);
+ }
+ else
+ SetModified (FALSE);
+ }
+ delete pDistanceDialog;
+ RestartFocusTimer ();
+ break;
+ }
+
+ case SID_ALIGN:
+ {
+ SmAlignDialog *pAlignDialog = new SmAlignDialog(NULL);
+
+ pAlignDialog->ReadFrom(GetFormat());
+ if (pAlignDialog->Execute() == RET_OK)
+ {
+ SmFormat& rOldFormat = GetFormat();
+
+ pAlignDialog->WriteTo(GetFormat());
+ SmModule *pp = SM_MOD1();
+ pAlignDialog->WriteTo(pp->GetConfig()->GetFormat());
+
+ GetUndoManager()->AddUndoAction(
+ new SmFormatAction(this, rOldFormat, GetFormat()));
+
+ if (aText.Len ())
+ {
+ SetModified(TRUE);
+ if (pBindings)
+ pBindings->Invalidate(SID_GRAPHIC);
+ }
+ else
+ SetModified (FALSE);
+ }
+ delete pAlignDialog;
+ RestartFocusTimer ();
+ break;
+ }
+
+ case SID_TEXT:
+ {
+ const SfxStringItem& rItem =
+ (const SfxStringItem&)rReq.GetArgs()->Get(SID_TEXT);
+
+ if (GetText() != rItem.GetValue())
+ {
+ GetUndoManager()->AddUndoAction(
+ new SmEditAction(this, GetText(), rItem.GetValue()));
+
+ SetText(rItem.GetValue());
+ }
+ break;
+ }
+
+ case SID_COPYOBJECT:
+ {
+ SvDataMemberObjectRef ObjRef = CreateSnapshot();
+ ObjRef->CopyClipboard();
+ break;
+ }
+
+ case SID_PASTEOBJECT:
+ {
+ SvDataObjectRef ObjRef = SvDataObject::PasteClipboard();
+
+ if (ObjRef.Is())
+ {
+ SvObjectDescriptor ObjDesc(ObjRef);
+
+ if (ObjDesc.GetClassName() == *GetSvFactory())
+ {
+ SvStorageRef StorageRef(new SvStorage(String()));
+ SvData ObjData(SOT_FORMATSTR_ID_EMBED_SOURCE);
+
+ ObjData.SetData(StorageRef, TRANSFER_REFERENCE);
+
+ if (ObjRef->GetDataHere(&ObjData))
+ Insert(StorageRef);
+ }
+ }
+
+ break;
+ }
+ }
+}
+
+
+void SmDocShell::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+
+ for (USHORT nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich())
+ {
+ switch (nWh)
+ {
+ case SID_TEXTMODE:
+ {
+ rSet.Put(SfxBoolItem(SID_TEXTMODE, GetFormat().IsTextmode()));
+ break;
+ }
+
+ case SID_DOCTEMPLATE :
+ rSet.DisableItem (SID_DOCTEMPLATE);
+ break;
+
+ case SID_AUTO_REDRAW :
+ {
+ SmModule *pp = SM_MOD1();
+ BOOL bRedraw = pp->GetConfig()->IsAutoRedraw();
+
+ rSet.Put (SfxBoolItem(SID_AUTO_REDRAW, bRedraw));
+ break;
+ }
+
+ case SID_TOOLBOX:
+ {
+ BOOL bState = FALSE;
+ SmViewShell *pView = SmGetActiveView();
+ SfxChildWindow *pChildWnd = pView->GetViewFrame()->
+ GetChildWindow( SmToolBoxWrapper::GetChildWindowId() );
+
+ if (pChildWnd && pChildWnd->GetWindow()->IsVisible())
+ bState = TRUE;
+ rSet.Put(SfxBoolItem(SID_TOOLBOX, bState));
+ break;
+ }
+
+ case SID_MODIFYSTATUS:
+ {
+ char cMod = ' ';
+ if (IsModified())
+ cMod = '*';
+ rSet.Put(SfxStringItem(SID_MODIFYSTATUS, String(cMod)));
+ break;
+ }
+
+ case SID_TEXT:
+ rSet.Put(SfxStringItem(SID_TEXT, GetText()));
+ break;
+
+ case SID_GRAPHIC:
+ rSet.Put(SfxInt16Item(SID_GRAPHIC, nModifyCount));
+ break;
+ }
+ }
+}
+
+
+
+void SmDocShell::FillRegInfo(SvEmbeddedRegistryInfo * pInfo)
+{
+ SfxInPlaceObject::FillRegInfo(pInfo);
+ pInfo->aObjName.AssignAscii( RTL_CONSTASCII_STRINGPARAM(pStarMathDoc));
+ pInfo->nMajorVers = 5;
+ pInfo->nMinorVers = 0;
+ pInfo->aHumanShortTypeName = String(SmResId(RID_DOCUMENTSTR));
+ pInfo->nShell = REG_SHELL_OPEN | REG_SHELL_PRINT | REG_SHELL_PRINTTO;
+ pInfo->aExt.AssignAscii( RTL_CONSTASCII_STRINGPARAM(".SMF"));
+ pInfo->nIconResId = REG_ICON_RESID_MATH;
+}
+
+
+
+SfxUndoManager *SmDocShell::GetUndoManager ()
+{
+ if (! pUndoMgr)
+ {
+ pUndoMgr = new SfxUndoManager;
+ SetUndoManager(pUndoMgr);
+ }
+ return pUndoMgr;
+}
+
+
+
+void SmDocShell::SaveSymbols()
+{
+ SmModule *pp = SM_MOD1();
+ pp->GetSymSetManager()->Save();
+}
+
+
+
+void SmDocShell::RestartFocusTimer ()
+{
+ SmCmdBoxWrapper *pWrapper = NULL;
+ SmViewShell *pView = SmGetActiveView();
+ if (pView)
+ pWrapper = (SmCmdBoxWrapper *) pView->GetViewFrame()->
+ GetChildWindow( SmCmdBoxWrapper::GetChildWindowId() );
+
+ if (pWrapper)
+ pWrapper->RestartFocusTimer ();
+}
+
+
+
+void SmDocShell::Draw(OutputDevice *pDevice,
+ const JobSetup &,
+ USHORT nAspect)
+{
+ pDevice->IntersectClipRegion(GetVisArea());
+ Point atmppoint;
+ Draw(*pDevice, atmppoint);
+}
+
+
+
+void SmDocShell::HandsOff()
+{
+ SfxInPlaceObject::HandsOff();
+ aDocStream.Clear();
+}
+
+
+
+SvDataMemberObjectRef SmDocShell::CreateSnapshot ()
+{
+ return SfxInPlaceObject::CreateSnapshot ();
+}
+
+
+
+SfxItemPool& SmDocShell::GetPool()
+{
+ return SFX_APP()->GetPool();
+}
+
+const SvDataTypeList& SmDocShell::GetTypeList() const
+{
+ return aDataTypeList;
+}
+
+void SmDocShell::SetVisArea (const Rectangle & rVisArea)
+{
+ Rectangle aNewRect (rVisArea);
+
+ aNewRect.SetPos(Point ());
+
+ if (! aNewRect.Right ()) aNewRect.Right () = 2000;
+ if (! aNewRect.Bottom ()) aNewRect.Bottom () = 1000;
+
+ BOOL bIsEnabled = IsEnableSetModified();
+ if ( bIsEnabled )
+ EnableSetModified( FALSE );
+
+ // If outplace editing, then dont resize the OutplaceWindow. But the
+ // ObjectShell has to resize. Bug 56470
+ BOOL bUnLockFrame;
+ if( GetProtocol().IsEmbed() && !GetProtocol().IsInPlaceActive() &&
+ GetFrame() )
+ {
+ GetFrame()->LockAdjustPosSizePixel();
+ bUnLockFrame = TRUE;
+ }
+ else
+ bUnLockFrame = FALSE;
+
+ SfxInPlaceObject::SetVisArea( aNewRect );
+
+ if( bUnLockFrame )
+ GetFrame()->UnlockAdjustPosSizePixel();
+
+ if ( bIsEnabled )
+ EnableSetModified( bIsEnabled );
+}
+
+
+BOOL SmDocShell::Try3x (SvStorage *pStor,
+ StreamMode eMode)
+
+{
+ BOOL bRet = FALSE;
+
+ SvStorageStreamRef aTempStream = pStor->OpenStream(
+ String::CreateFromAscii(pStarMathDoc), eMode);
+ aTempStream->SetVersion (pStor->GetVersion ());
+ GetPool().SetFileFormatVersion (USHORT(pStor->GetVersion()));
+ aTempStream->SetBufferSize(DOCUMENT_BUFFER_SIZE);
+ aTempStream->SetKey( pStor->GetKey() ); // Passwort setzen
+
+ if (aTempStream->GetError() == 0)
+ {
+ SvStream* pSvStream = aTempStream;
+ char cTag;
+ ULONG lIdent, lVersion;
+ long lTime;
+ ULONG lDate;
+ String aBuffer;
+ SmSymSet *pSymbolSet;
+
+ *pSvStream >> lIdent >> lVersion;
+
+ if ((lIdent == SM30IDENT) || (lIdent == SM30BIDENT) || (lIdent == SM304AIDENT))
+ {
+ DBG_ASSERT((lVersion == SM30VERSION) ||
+ (lVersion == SM50VERSION), "Illegal file version");
+
+ *pSvStream >> cTag;
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ while (cTag && !pSvStream->IsEof())
+ {
+ switch (cTag)
+ {
+ case 'T':
+ pSvStream->ReadByteString(aText, eEnc);
+ Parse();
+ break;
+
+ case 'D':
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ *pSvStream >> lDate >> lTime;
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ *pSvStream >> lDate >> lTime;
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ break;
+
+ case 'F':
+ *pSvStream >> aFormat;
+ if (lIdent != SM304AIDENT)
+ aFormat.From300To304a ();
+ else if ( lVersion == SM30VERSION )
+ {
+ aFormat.SetDistance(DIS_LEFTSPACE, 100);
+ aFormat.SetDistance(DIS_RIGHTSPACE, 100);
+ aFormat.SetDistance(DIS_TOPSPACE, 100);
+ aFormat.SetDistance(DIS_BOTTOMSPACE, 100);
+ }
+ break;
+
+ case 'S':
+ {
+ pSymbolSet = new SmSymSet();
+ *pSvStream >> *pSymbolSet;
+
+ SmModule *pp = SM_MOD1();
+
+ pp->GetSymSetManager()->AppendExtraSymbolSet(pSymbolSet);
+ break;
+ }
+
+ default:
+ DBG_ASSERT((cTag != 0), "Illegal data tag");
+ }
+ *pSvStream >> cTag;
+ }
+
+ bRet = TRUE;
+ aDocStream = aTempStream;
+ }
+ }
+
+ if (!bRet)
+ {
+ // kein Passwort gesetzt --> Datei marode
+ if (pStor->GetKey().Len() == 0)
+ {
+ SetError(ERRCODE_SFX_DOLOADFAILED);
+ }
+ // Passwort gesetzt --> war wohl falsch
+ else
+ {
+ SetError(ERRCODE_SFX_WRONGPASSWORD);
+ }
+ }
+
+ return bRet;
+}
+
+
+
+BOOL SmDocShell::Try2x (SvStorage *pStor,
+ StreamMode eMode)
+{
+ SvStorageStreamRef aTempStream = pStor->OpenStream(C2S("\1Ole10Native"), eMode);
+ aTempStream->SetVersion (pStor->GetVersion ());
+ GetPool().SetFileFormatVersion(USHORT(pStor->GetVersion ()));
+
+ if (aTempStream->GetError() == SVSTREAM_OK)
+ {
+ void ReadSM20SymSet(SvStream*, SmSymSet*);
+
+ SvStream* pSvStream = aTempStream;
+ char cTag;
+ ULONG lIdent, lVersion;
+ long lTime;
+ ULONG lDate;
+ UINT32 lDataSize;
+ String aBuffer;
+ SmSymSet *pSymbolSet;
+
+ *pSvStream >> lDataSize >> lIdent >> lVersion;
+
+ if (lIdent == FRMIDENT)
+ {
+ DBG_ASSERT((lVersion == FRMVERSION), "Illegal file version");
+
+ *pSvStream >> cTag;
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ while (cTag && !pSvStream->IsEof())
+ {
+ switch (cTag)
+ {
+ case 'T':
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ aText = aBuffer;
+ Parse();
+ break;
+
+ case 'D':
+ {
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ *pSvStream >> lDate >> lTime;
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ *pSvStream >> lDate >> lTime;
+ pSvStream->ReadByteString(aBuffer, eEnc);
+ }
+ break;
+
+ case 'F':
+ {
+ //SmFormat aFormat;
+ aFormat.ReadSM20Format(*pSvStream);
+ aFormat.From300To304a ();
+ }
+ break;
+
+ case 'S':
+ {
+ pSymbolSet = new SmSymSet();
+ ReadSM20SymSet(pSvStream, pSymbolSet);
+
+ SmModule *pp = SM_MOD1();
+
+ pp->GetSymSetManager()->AppendExtraSymbolSet(pSymbolSet);
+ break;
+ }
+
+ default:
+ DBG_ASSERT((cTag != 0), "Illegal data tag");
+ }
+ *pSvStream >> cTag;
+ }
+
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+
+void SmDocShell::UIActivate (BOOL bActivate)
+{
+ if (bActivate)
+ {
+ SfxInPlaceObject::UIActivate (bActivate);
+ SmCmdBoxWrapper *pWrapper = NULL;
+ SmViewShell *pView = SmGetActiveView();
+ if (pView)
+ pWrapper = (SmCmdBoxWrapper *)pView->GetViewFrame()->
+ GetChildWindow( SmCmdBoxWrapper::GetChildWindowId() );
+
+ if (pWrapper)
+ pWrapper->Grab ();
+ }
+ else
+ {
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ {
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_GETEDITTEXT, SFX_CALLMODE_STANDARD,
+ new SfxVoidItem (SID_GETEDITTEXT), 0L);
+ SfxInPlaceObject::UIActivate (bActivate);
+ Resize();
+ }
+ }
+}
+
+
+
+void SmDocShell::FillClass(SvGlobalName* pClassName,
+ ULONG* pFormat,
+ String* pAppName,
+ String* pFullTypeName,
+ String* pShortTypeName,
+ long nFileFormat) const
+{
+ SfxInPlaceObject::FillClass(pClassName, pFormat, pAppName, pFullTypeName,
+ pShortTypeName, nFileFormat);
+
+ if (nFileFormat == SOFFICE_FILEFORMAT_31)
+ {
+ *pClassName = SvGlobalName(SO3_SM_CLASSID_30);
+ *pFormat = SOT_FORMATSTR_ID_STARMATH;
+ pAppName->AssignAscii( RTL_CONSTASCII_STRINGPARAM("Smath 3.1"));
+ *pFullTypeName = String(SmResId(STR_MATH_DOCUMENT_FULLTYPE_31));
+ *pShortTypeName = String(SmResId(RID_DOCUMENTSTR));
+ }
+ else if (nFileFormat == SOFFICE_FILEFORMAT_40)
+ {
+ *pClassName = SvGlobalName(SO3_SM_CLASSID_40);
+ *pFormat = SOT_FORMATSTR_ID_STARMATH_40;
+ *pFullTypeName = String(SmResId(STR_MATH_DOCUMENT_FULLTYPE_40));
+ *pShortTypeName = String(SmResId(RID_DOCUMENTSTR));
+ }
+ else if (nFileFormat == SOFFICE_FILEFORMAT_NOW)
+ {
+ *pFullTypeName = String(SmResId(STR_MATH_DOCUMENT_FULLTYPE_50));
+ *pShortTypeName = String(SmResId(RID_DOCUMENTSTR));
+ }
+}
+
+ULONG SmDocShell::GetMiscStatus() const
+{
+ return SfxInPlaceObject::GetMiscStatus() | SVOBJ_MISCSTATUS_NOTRESIZEABLE
+ | SVOBJ_MISCSTATUS_RESIZEONPRINTERCHANGE;
+}
+
+void SmDocShell::SetModified(BOOL bModified)
+{
+ SfxObjectShell::SetModified(bModified);
+ Broadcast(SfxSimpleHint(SFX_HINT_DOCCHANGED));
+}
+
+BOOL SmDocShell::WriteAsMathType3( SfxMedium& rMedium )
+{
+ MathType aEquation( aText, pTree );
+ BOOL bRet = 0 != aEquation.ConvertFromStarMath( rMedium.GetStorage() );
+ return bRet;
+}
+
+
+
diff --git a/starmath/source/edit.cxx b/starmath/source/edit.cxx
new file mode 100644
index 000000000000..6b1bcc163791
--- /dev/null
+++ b/starmath/source/edit.cxx
@@ -0,0 +1,783 @@
+/*************************************************************************
+ *
+ * $RCSfile: edit.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#include "starmath.hrc"
+#define ITEMID_FONT 1
+#define ITEMID_FONTHEIGHT 2
+#define ITEMID_LRSPACE 3
+#define ITEMID_WEIGHT 4
+
+
+#ifndef _SV_MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _MyEDITVIEW_HXX //autogen
+#include <svx/editview.hxx>
+#endif
+#ifndef _MyEDITENG_HXX //autogen
+#include <svx/editeng.hxx>
+#endif
+#ifndef _EDITSTAT_HXX //autogen
+#include <svx/editstat.hxx>
+#endif
+#ifndef _EEITEM_HXX //autogen
+#include <svx/eeitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXITEMPOOL_HXX //autogen
+#include <svtools/itempool.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SVX_FHGTITEM_HXX //autogen
+#include <svx/fhgtitem.hxx>
+#endif
+#ifndef _SVX_WGHTITEM_HXX //autogen
+#include <svx/wghtitem.hxx>
+#endif
+#ifndef _SVX_LRSPITEM_HXX //autogen
+#include <svx/lrspitem.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SVX_FONTITEM_HXX //autogen
+#include <svx/fontitem.hxx>
+#endif
+
+
+#include "edit.hxx"
+#include "view.hxx"
+#include "document.hxx"
+#include "config.hxx"
+
+#define SCROLL_LINE 24
+
+#define MINWIDTH 200
+#define MINHEIGHT 200
+#define MINSPLIT 40
+#define SPLITTERWIDTH 2
+
+
+////////////////////////////////////////
+
+
+void SmGetLeftSelectionPart(const ESelection aSel,
+ USHORT &nPara, USHORT &nPos)
+ // returns paragraph number and position of the selections left part
+{
+ // compare start and end of selection and use the one that comes first
+ if ( aSel.nStartPara < aSel.nEndPara
+ || aSel.nStartPara == aSel.nEndPara && aSel.nStartPos < aSel.nEndPos)
+ { nPara = aSel.nStartPara;
+ nPos = aSel.nStartPos;
+ }
+ else
+ { nPara = aSel.nEndPara;
+ nPos = aSel.nEndPos;
+ }
+}
+
+////////////////////////////////////////
+
+SmEditWindow::SmEditWindow(Window* pParent) :
+ Window(pParent),
+ pEditView( 0 ),
+#if SUPD >= 602
+ pEditEngineItemPool( 0 ),
+#endif
+ pEditEngine( 0 ),
+ pHScrollBar( 0 ),
+ pVScrollBar( 0 ),
+ pScrollBox( 0 )
+{
+ SetHelpId(HID_SMA_COMMAND_WIN_EDIT);
+ EnableDrop();
+ SetMapMode(MAP_PIXEL);
+
+ SetBackground( GetSettings().GetStyleSettings().GetWindowColor() );
+
+ aModifyTimer.SetTimeoutHdl(LINK(this, SmEditWindow, ModifyTimerHdl));
+ aModifyTimer.SetTimeout(2000);
+ aModifyTimer.Start();
+
+ aCursorMoveTimer.SetTimeoutHdl(LINK(this, SmEditWindow, CursorMoveTimerHdl));
+ aCursorMoveTimer.SetTimeout(500);
+}
+
+SmEditWindow::~SmEditWindow()
+{
+ aCursorMoveTimer.Stop();
+ aModifyTimer.Stop();
+ if ( pEditEngine )
+ {
+ pEditEngine->RemoveView(pEditView);
+ delete pEditView;
+ delete pEditEngine;
+#if SUPD >= 602
+ delete pEditEngineItemPool;
+#endif
+ delete pHScrollBar;
+ delete pVScrollBar;
+ delete pScrollBox;
+ }
+}
+
+
+void SmEditWindow::ImplSetFont()
+{
+ SetPointFont( GetSettings().GetStyleSettings().GetAppFont() );
+ if ( pEditEngine )
+ {
+ Font aFont = GetFont();
+ pEditEngine->SetDefTab( USHORT( GetTextWidth( C2S("XXXX") ) ) );
+
+#if SUPD >= 602
+ DBG_ASSERT( pEditEngineItemPool, "NULL pointer");
+ pEditEngineItemPool->SetPoolDefaultItem(
+ SvxFontItem( aFont.GetFamily(), aFont.GetName(),
+ aFont.GetStyleName(), aFont.GetPitch(), aFont.GetCharSet(),
+ EE_CHAR_FONTINFO ) );
+ pEditEngineItemPool->SetPoolDefaultItem(
+ SvxFontHeightItem( aFont.GetSize().Height(), 100,
+ EE_CHAR_FONTHEIGHT ) );
+// pEditEngineItemPool->SetPoolDefaultItem(
+// SvxWeightItem( WEIGHT_BOLD, EE_CHAR_WEIGHT ) );
+#else
+ SfxItemSet aSet( pEditEngine->GetEmptyItemSet() );
+ aSet.Put( SvxFontItem( aFont.GetFamily(), aFont.GetName(),
+ aFont.GetStyleName(), aFont.GetPitch(), aFont.GetCharSet(),
+ EE_CHAR_FONTINFO ) );
+ aSet.Put( SvxFontHeightItem( aFont.GetSize().Height(), 100, EE_CHAR_FONTHEIGHT ) );
+// aSet.Put( SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT ) );
+
+ pEditEngine->SetDefaults(aSet);
+#endif
+ }
+}
+
+void SmEditWindow::DataChanged( const DataChangedEvent& )
+{
+ SetBackground( GetSettings().GetStyleSettings().GetWindowColor() );
+ ImplSetFont();
+ AdjustScrollBars();
+ Resize();
+}
+
+IMPL_LINK( SmEditWindow, ModifyTimerHdl, Timer *, pTimer )
+{
+ SmModule *pp = SM_MOD1();
+ if (pp->GetConfig()->IsAutoRedraw())
+ Flush();
+ aModifyTimer.Start();
+ return 0;
+}
+
+
+IMPL_LINK(SmEditWindow, CursorMoveTimerHdl, Timer *, pTimer)
+ // every once in a while check cursor position (selection) of edit
+ // window and if it has changed (try to) set the formula-cursor
+ // according to that.
+{
+ ESelection aNewSelection (GetSelection());
+
+ if (!aNewSelection.IsEqual(aOldSelection))
+ { SmViewShell *pView = SmGetActiveView();
+ //! woher weiß man, dass die Shell die wir hier kriegen die ist, die
+ //! zu dem SmEditWindow gehoert fuer das er gestartet wurde?
+ //! (Eine ViewShell vom Math ist es immer)
+ //! Siehe auch Kommentar zu:
+ //! SmEditWindow::SetText und SmViewShell::Activate
+
+ if (pView)
+ {
+ // get row and column to look for
+ USHORT nRow, nCol;
+ SmGetLeftSelectionPart(aNewSelection, nRow, nCol);
+ nRow++;
+ nCol++;
+
+ pView->GetGraphicWindow().SetCursorPos(nRow, nCol);
+
+ aOldSelection = aNewSelection;
+ }
+ }
+
+ return 0;
+}
+
+
+void SmEditWindow::Resize()
+{
+ if (!pEditEngine)
+ CreateEditEngine();
+
+ if (pEditView)
+ {
+ pEditView->SetOutputArea(AdjustScrollBars());
+ pEditView->ShowCursor();
+
+ const long nMaxVisAreaStart = pEditView->GetEditEngine()->GetTextHeight() -
+ pEditView->GetOutputArea().GetHeight();
+ if (pEditView->GetVisArea().Top() > nMaxVisAreaStart)
+ {
+ Rectangle aVisArea(pEditView->GetVisArea() );
+ aVisArea.Top() = (nMaxVisAreaStart > 0 ) ? nMaxVisAreaStart : 0;
+ aVisArea.SetSize(pEditView->GetOutputArea().GetSize());
+ pEditView->SetVisArea(aVisArea);
+ pEditView->ShowCursor();
+ }
+ InitScrollBars();
+ }
+ Invalidate();
+}
+
+void SmEditWindow::MouseButtonUp(const MouseEvent &rEvt)
+{
+ if (pEditView)
+ pEditView->MouseButtonUp(rEvt);
+ else
+ Window::MouseButtonUp (rEvt);
+
+ // ggf FormulaCursor neu positionieren
+ CursorMoveTimerHdl(&aCursorMoveTimer);
+}
+
+void SmEditWindow::MouseButtonDown(const MouseEvent &rEvt)
+{
+ if (pEditView)
+ pEditView->MouseButtonDown(rEvt);
+ else
+ Window::MouseButtonDown (rEvt);
+
+ GrabFocus();
+}
+
+void SmEditWindow::Command(const CommandEvent& rCEvt)
+{
+ if (rCEvt.GetCommand() == COMMAND_CONTEXTMENU)
+ {
+ GetParent()->ToTop();
+
+ PopupMenu* pPopupMenu = new PopupMenu(SmResId(RID_COMMANDMENU));
+ pPopupMenu->SetSelectHdl(LINK(this, SmEditWindow, MenuSelectHdl));
+
+ pPopupMenu->Execute( this, OutputToScreenPixel(
+ rCEvt.GetMousePosPixel() ) );
+ delete pPopupMenu;
+ }
+ else if (pEditView)
+ pEditView->Command( rCEvt );
+ else
+ Window::Command (rCEvt);
+}
+
+IMPL_LINK_INLINE_START( SmEditWindow, MenuSelectHdl, Menu *, pMenu )
+{
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_INSERTCOMMAND, SFX_CALLMODE_STANDARD,
+ new SfxInt16Item(SID_INSERTCOMMAND, pMenu->GetCurItemId()), 0L);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmEditWindow, MenuSelectHdl, Menu *, pMenu )
+
+void SmEditWindow::KeyInput(const KeyEvent& rKEvt)
+{
+ if (rKEvt.GetKeyCode().GetCode() == KEY_ESCAPE)
+ {
+ BOOL bCallBase = TRUE;
+ SfxViewShell* pViewShell = SfxViewShell::Current();
+ if ( pViewShell && pViewShell->ISA(SmViewShell) )
+ {
+ SmDocShell* pDocSh = (SmDocShell*) pViewShell->GetViewFrame()->GetObjectShell();
+ if (pDocSh)
+ {
+ /* fuert zum (sofortigen) Zerstoeren von this! */
+ pDocSh->DoInPlaceActivate( FALSE );
+ bCallBase = FALSE;
+ }
+ }
+ if ( bCallBase )
+ Window::KeyInput( rKEvt );
+ }
+ else
+ {
+ // Timer neu starten, um den Handler (auch bei längeren Eingaben)
+ // möglichst nur einmal am Ende aufzurufen.
+ aCursorMoveTimer.Start();
+
+ if ( !pEditView->PostKeyEvent(rKEvt) )
+ {
+ if ( !SfxViewShell::Current()->KeyInput(rKEvt) )
+ {
+ /* fuert bei F1 (Hilfe) zum Zerstoeren von this! */
+ Flush();
+ if ( aModifyTimer.IsActive() )
+ aModifyTimer.Stop();
+ Window::KeyInput(rKEvt);
+ }
+ else
+ {
+ //SFX hat evtl. Slot an der View gecallt und dabei (wg. Hack
+ //im SFX) den Focus auf die View gesetzt
+ SfxViewShell* pVShell = SfxViewShell::Current();
+ if ( pVShell && pVShell->ISA(SmViewShell) &&
+ ((SmViewShell*)pVShell)->GetGraphicWindow().HasFocus() )
+ {
+ GrabFocus();
+ }
+ }
+ }
+ else
+ aModifyTimer.Start();
+ }
+}
+
+void SmEditWindow::Paint(const Rectangle& rRect)
+{
+ if (!pEditEngine)
+ CreateEditEngine();
+
+ pEditView->Paint(rRect);
+}
+
+void SmEditWindow::CreateEditEngine()
+{
+ if (! pEditEngine)
+ {
+#if SUPD >= 602
+ pEditEngineItemPool = EditEngine::CreatePool();
+ pEditEngine = new EditEngine( pEditEngineItemPool );
+#else
+ pEditEngine = new EditEngine;
+#endif
+ pEditView = new EditView(pEditEngine, this);
+ pEditEngine->SetUpdateMode(FALSE);
+ pEditEngine->InsertView(pEditView);
+
+ pEditEngine->SetControlWord((pEditEngine->GetControlWord() | EE_CNTRL_AUTOINDENTING) &
+ (~EE_CNTRL_UNDOATTRIBS) & (~EE_CNTRL_PASTESPECIAL));
+
+ pEditEngine->SetWordDelimiters( C2S(" .=+-*/(){}[];\"" ));
+ pEditEngine->SetRefMapMode(MAP_PIXEL);
+
+ ImplSetFont();
+ pEditEngine->Clear(); //#77957 incorrect font size
+
+ pEditEngine->SetPaperSize( Size( 800, 0 ) );
+
+ pVScrollBar = new ScrollBar(this, WinBits(WB_VSCROLL));
+ pHScrollBar = new ScrollBar(this, WinBits(WB_HSCROLL));
+ pVScrollBar->SetScrollHdl(LINK(this, SmEditWindow, ScrollHdl));
+ pHScrollBar->SetScrollHdl(LINK(this, SmEditWindow, ScrollHdl));
+ pScrollBox = new ScrollBarBox(this);
+
+ pEditView->SetOutputArea(AdjustScrollBars());
+
+ ESelection eSelection;
+
+ pEditView->SetSelection(eSelection);
+ pEditEngine->SetUpdateMode(TRUE);
+ Update();
+ pEditView->ShowCursor(TRUE, TRUE);
+
+ pEditEngine->SetStatusEventHdl(LINK(this, SmEditWindow, EditStatusHdl));
+ SetPointer(pEditView->GetPointer());
+
+ pEditEngine->EraseVirtualDevice();
+ pEditEngine->ClearModifyFlag();
+
+ SetScrollBarRanges();
+ }
+}
+
+IMPL_LINK( SmEditWindow, EditStatusHdl, EditStatus *, pStat )
+{
+ if (! pEditView)
+ return 1;
+ else
+ {
+ SetScrollBarRanges();
+ return 0;
+ }
+}
+
+IMPL_LINK_INLINE_START( SmEditWindow, ScrollHdl, ScrollBar *, pScrollBar )
+{
+ pEditView->SetVisArea(Rectangle(Point(pHScrollBar->GetThumbPos(),
+ pVScrollBar->GetThumbPos()),
+ pEditView->GetVisArea().GetSize()));
+ pEditView->Invalidate();
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmEditWindow, ScrollHdl, ScrollBar *, pScrollBar )
+
+Rectangle SmEditWindow::AdjustScrollBars()
+{
+ const Size aOut( GetOutputSizePixel() );
+ Point aPoint;
+ Rectangle aRect( aPoint, aOut );
+
+ if ( pEditEngine )
+ {
+ const long nTmp = GetSettings().GetStyleSettings().GetScrollBarSize();
+ Point aPt( aRect.TopRight() ); aPt.X() -= nTmp -1L;
+ pVScrollBar->SetPosSizePixel( aPt, Size(nTmp, aOut.Height() - nTmp));
+
+ aPt = aRect.BottomLeft(); aPt.Y() -= nTmp - 1L;
+ pHScrollBar->SetPosSizePixel( aPt, Size(aOut.Width() - nTmp, nTmp));
+
+ aPt.X() = pHScrollBar->GetSizePixel().Width();
+ aPt.Y() = pVScrollBar->GetSizePixel().Height();
+ pScrollBox->SetPosSizePixel(aPt, Size(nTmp, nTmp ));
+
+ aRect.Right() = aPt.X() - 2;
+ aRect.Bottom() = aPt.Y() - 2;
+ }
+ return aRect;
+}
+
+void SmEditWindow::SetScrollBarRanges()
+{
+ // Extra-Methode, nicht InitScrollBars, da auch fuer EditEngine-Events.
+ if (pEditEngine )
+ {
+ long nTmp = pEditEngine->GetTextHeight();
+ pVScrollBar->SetRange(Range(0, nTmp));
+ pVScrollBar->SetThumbPos(pEditView->GetVisArea().Top());
+
+ nTmp = pEditEngine->GetPaperSize().Width();
+ pHScrollBar->SetRange(Range(0,nTmp));
+ pHScrollBar->SetThumbPos(pEditView->GetVisArea().Left());
+ }
+}
+
+void SmEditWindow::InitScrollBars()
+{
+ if (pEditEngine )
+ {
+ const Size aOut( pEditView->GetOutputArea().GetSize() );
+ pVScrollBar->SetVisibleSize(aOut.Height());
+ pVScrollBar->SetPageSize(aOut.Height() * 8 / 10);
+ pVScrollBar->SetLineSize(aOut.Height() * 2 / 10);
+
+ pHScrollBar->SetVisibleSize(aOut.Width());
+ pHScrollBar->SetPageSize(aOut.Width() * 8 / 10);
+ pHScrollBar->SetLineSize(SCROLL_LINE );
+
+ SetScrollBarRanges();
+
+ pVScrollBar->Show();
+ pHScrollBar->Show();
+ pScrollBox->Show();
+ }
+}
+
+XubString SmEditWindow::GetText()
+{
+ if (!pEditEngine)
+ CreateEditEngine();
+
+ String aText (pEditEngine->GetText( LINEEND_LF ));
+ return aText;
+}
+
+void SmEditWindow::SetText(const XubString& rText)
+{
+ if (!pEditEngine)
+ CreateEditEngine();
+
+ if (!pEditEngine->IsModified())
+ {
+ ESelection eSelection = pEditView->GetSelection();
+
+ pEditEngine->SetText(rText);
+ pEditEngine->ClearModifyFlag();
+
+ //! Hier die Timer neu zu starten verhindert, dass die Handler für andere
+ //! (im Augenblick nicht mehr aktive) Math Tasks aufgerufen werden.
+ aModifyTimer.Start();
+ aCursorMoveTimer.Start();
+
+ pEditView->SetSelection(eSelection);
+ }
+}
+
+BOOL SmEditWindow::IsAllSelected() const
+{
+ ESelection eSelection = pEditView->GetSelection();
+
+ if (!(pEditEngine->GetParagraphCount() - 1))
+ {
+ String Text (pEditEngine->GetText( LINEEND_LF ));
+ return !eSelection.nStartPos && (eSelection.nEndPos == Text.Len () - 1);
+ }
+ else
+ return !eSelection.nStartPara && (eSelection.nEndPara == (pEditEngine->GetParagraphCount() - 1));
+}
+
+void SmEditWindow::SelectAll()
+{
+ // set selection from first paragraph, first char to
+ // last paragraph, last char
+ ULONG nParaCnt = pEditEngine->GetParagraphCount(); //! always >= 1
+ DBG_ASSERT( nParaCnt >= 1, "Sm : paragraph count is 0!" );
+ ULONG nParaLen = pEditEngine->GetTextLen( nParaCnt - 1 );
+ pEditView->SetSelection( ESelection( 0, 0, nParaCnt - 1, nParaLen - 1 ) );
+}
+
+void SmEditWindow::InsertCommand(USHORT Command)
+{
+ //Anfang der Selektion merken und hinterher den Cursor daraufsetzen. Nur so
+ //macht das SelNextMark() Sinn.
+ ESelection aSelection = pEditView->GetSelection();
+ aSelection.nEndPos = aSelection.nStartPos;
+ aSelection.nEndPara = aSelection.nStartPara;
+
+ String aText = String(SmResId(Command));
+ pEditView->InsertText(aText);
+
+ if (HasMark(aText))
+ { // set selection to next mark
+ pEditView->SetSelection(aSelection);
+ SelNextMark();
+ }
+ else
+ { // set selection after inserted text
+ aSelection.nStartPos =
+ aSelection.nEndPos += aText.Len();
+ pEditView->SetSelection(aSelection);
+ }
+
+ GrabFocus();
+}
+
+void SmEditWindow::MarkError(const Point &rPos)
+{
+ const int Col = rPos.X();
+ const int Row = rPos.Y() - 1;
+
+ pEditView->SetSelection(ESelection (Row, Col - 1, Row, Col));
+ GrabFocus();
+}
+
+void SmEditWindow::SelNextMark()
+{
+ ESelection eSelection = pEditView->GetSelection();
+ USHORT Pos = eSelection.nEndPos;
+ String aMark (C2S("<?>"));
+ String aText;
+ USHORT nCounts = pEditEngine->GetParagraphCount();
+
+ while (eSelection.nEndPara < nCounts)
+ {
+ aText = pEditEngine->GetText(eSelection.nEndPara);
+ Pos = aText.Search(aMark, Pos);
+
+ if (Pos != STRING_NOTFOUND)
+ {
+ pEditView->SetSelection(ESelection (eSelection.nEndPara, Pos, eSelection.nEndPara, Pos + 3));
+ break;
+ }
+
+ Pos = 0;
+ eSelection.nEndPara++;
+ }
+}
+
+void SmEditWindow::SelPrevMark()
+{
+ ESelection eSelection = pEditView->GetSelection();
+ USHORT Pos = STRING_NOTFOUND;
+ xub_StrLen Max = eSelection.nStartPos;
+ String Text (pEditEngine->GetText(eSelection.nStartPara));
+ String aMark (C2S("<?>"));
+ USHORT nCounts = pEditEngine->GetParagraphCount();
+
+ do
+ {
+ USHORT Fnd = Text.Search(aMark, 0);
+
+ while ((Fnd < Max) && (Fnd != STRING_NOTFOUND))
+ {
+ Pos = Fnd;
+ Fnd = Text.Search(aMark, Fnd + 1);
+ }
+
+ if (Pos == STRING_NOTFOUND)
+ {
+ eSelection.nStartPara--;
+ Text = pEditEngine->GetText(eSelection.nStartPara);
+ Max = Text.Len();
+ }
+ }
+ while ((eSelection.nStartPara < nCounts) &&
+ (Pos == STRING_NOTFOUND));
+
+ if (Pos != STRING_NOTFOUND)
+ {
+ pEditView->SetSelection(ESelection (eSelection.nStartPara, Pos, eSelection.nStartPara, Pos + 3));
+ }
+}
+
+BOOL SmEditWindow::HasMark(const String& rText) const
+ // returns true iff 'rText' contains a mark
+{
+ return rText.SearchAscii("<?>", 0) != STRING_NOTFOUND;
+}
+
+void SmEditWindow::MouseMove(const MouseEvent &rEvt)
+{
+ if (pEditView) pEditView->MouseMove(rEvt);
+}
+
+BOOL SmEditWindow::Drop(const DropEvent& rEvt)
+{
+ return pEditView
+ ? (pEditView->Drop(rEvt))
+ : FALSE;
+}
+
+BOOL SmEditWindow::QueryDrop(DropEvent& rEvt)
+{
+ return pEditView
+ ? pEditView->QueryDrop(rEvt)
+ : FALSE;
+}
+
+ESelection SmEditWindow::GetSelection() const
+{
+ DBG_ASSERT(pEditView, "Sm : NULL pointer");
+ return pEditView->GetSelection();
+}
+
+void SmEditWindow::SetSelection(const ESelection &rSel)
+{
+ DBG_ASSERT(pEditView, "Sm : NULL pointer");
+ pEditView->SetSelection(rSel);
+}
+
+BOOL SmEditWindow::IsEmpty() const
+{
+ return pEditEngine->GetTextLen() == 0;
+}
+
+BOOL SmEditWindow::IsSelected() const
+{
+ return pEditView->HasSelection();
+}
+
+void SmEditWindow::Cut()
+{
+ pEditView->Cut();
+}
+
+void SmEditWindow::Copy()
+{
+ pEditView->Copy();
+}
+
+void SmEditWindow::Paste()
+{
+ pEditView->Paste();
+}
+
+void SmEditWindow::Delete()
+{
+ pEditView->DeleteSelected();
+}
+
+void SmEditWindow::InsertText(const String& Text)
+{
+ pEditView->InsertText(Text);
+}
+
+void SmEditWindow::Flush()
+{
+ if ( pEditEngine && pEditEngine->IsModified() )
+ {
+ pEditEngine->ClearModifyFlag();
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_TEXT, SFX_CALLMODE_STANDARD,
+ new SfxStringItem(SID_TEXT, GetText()), 0L);
+ }
+
+ if (aCursorMoveTimer.IsActive())
+ {
+ aCursorMoveTimer.Stop();
+ // ggf noch die (neue) FormulaCursor Position setzen
+ CursorMoveTimerHdl(&aCursorMoveTimer);
+ }
+}
+
+
diff --git a/starmath/source/format.cxx b/starmath/source/format.cxx
new file mode 100644
index 000000000000..b5ed6622f2ff
--- /dev/null
+++ b/starmath/source/format.cxx
@@ -0,0 +1,311 @@
+/*************************************************************************
+ *
+ * $RCSfile: format.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+
+#ifndef FORMAT_HXX
+#include "format.hxx"
+#endif
+
+SmFormat::SmFormat()
+: aBaseSize(0, SmPtsTo100th_mm(12))
+{
+ nVersion = SM_FMT_VERSION_NOW;
+
+ eHorAlign = AlignCenter;
+ bIsTextmode = bScaleNormalBrackets = FALSE;
+
+ vSize[SIZ_TEXT] = 100;
+ vSize[SIZ_INDEX] = 60;
+ vSize[SIZ_FUNCTION] =
+ vSize[SIZ_OPERATOR] = 100;
+ vSize[SIZ_LIMITS] = 60;
+
+ vDist[DIS_HORIZONTAL] = 10;
+ vDist[DIS_VERTICAL] = 5;
+ vDist[DIS_ROOT] = 0;
+ vDist[DIS_SUPERSCRIPT] =
+ vDist[DIS_SUBSCRIPT] = 20;
+ vDist[DIS_NUMERATOR] =
+ vDist[DIS_DENOMINATOR] = 0;
+ vDist[DIS_FRACTION] = 10;
+ vDist[DIS_STROKEWIDTH] = 5;
+ vDist[DIS_UPPERLIMIT] =
+ vDist[DIS_LOWERLIMIT] = 0;
+ vDist[DIS_BRACKETSIZE] =
+ vDist[DIS_BRACKETSPACE] = 5;
+ vDist[DIS_MATRIXROW] = 3;
+ vDist[DIS_MATRIXCOL] = 30;
+ vDist[DIS_ORNAMENTSIZE] =
+ vDist[DIS_ORNAMENTSPACE] = 0;
+ vDist[DIS_OPERATORSIZE] = 50;
+ vDist[DIS_OPERATORSPACE] = 20;
+ vDist[DIS_LEFTSPACE] =
+ vDist[DIS_RIGHTSPACE] = 100;
+ vDist[DIS_TOPSPACE] =
+ vDist[DIS_BOTTOMSPACE] =
+ vDist[DIS_NORMALBRACKETSIZE] = 0;
+
+ vFont[FNT_VARIABLE] =
+ vFont[FNT_FUNCTION] =
+ vFont[FNT_NUMBER] =
+ vFont[FNT_TEXT] =
+ vFont[FNT_SERIF] = SmFace(C2S(FNTNAME_TIMES), aBaseSize);
+ vFont[FNT_SANS] = SmFace(C2S(FNTNAME_HELV), aBaseSize);
+ vFont[FNT_FIXED] = SmFace(C2S(FNTNAME_COUR), aBaseSize);
+ vFont[FNT_MATH] = SmFace(C2S(FNTNAME_MATH), aBaseSize);
+
+ vFont[FNT_VARIABLE].SetItalic(ITALIC_NORMAL);
+ vFont[FNT_FUNCTION].SetItalic(ITALIC_NONE);
+ vFont[FNT_TEXT].SetItalic(ITALIC_NONE);
+
+ for ( USHORT i = FNT_BEGIN; i <= FNT_END; i++ )
+ {
+ vFont[i].SetTransparent(TRUE);
+ vFont[i].SetAlign(ALIGN_BASELINE);
+ }
+}
+
+
+SmFormat & SmFormat::operator = (const SmFormat &rFormat)
+{
+ SetBaseSize(rFormat.GetBaseSize());
+ SetVersion (rFormat.GetVersion());
+ SetHorAlign(rFormat.GetHorAlign());
+ SetTextmode(rFormat.IsTextmode());
+ SetScaleNormalBrackets(rFormat.IsScaleNormalBrackets());
+
+ USHORT i;
+ for (i = FNT_BEGIN; i <= FNT_END; i++)
+ SetFont(i, rFormat.GetFont(i));
+ for (i = SIZ_BEGIN; i <= SIZ_END; i++)
+ SetRelSize(i, rFormat.GetRelSize(i));
+ for (i = DIS_BEGIN; i <= DIS_END; i++)
+ SetDistance(i, rFormat.GetDistance(i));
+
+ return *this;
+}
+
+
+SvStream & operator << (SvStream &rStream, const SmFormat &rFormat)
+{
+ //Da hier keinerlei Kompatibilit„t vorgesehen ist muessen wir leider
+ //heftig tricksen. Gluecklicherweise sind offenbar einige Informationen
+ //ueberfluessig geworden. In diese quetschen wir jetzt vier neue
+ //Einstellungen fuer die Rander.
+ //Bei Gelegenheit wird hier ein Im- Und Export gebraucht. Dann muessen
+ //die Stream-Operatoren dieser Klassen dringend mit Versionsverwaltung
+ //versehen werden!
+
+ UINT16 n;
+
+ // convert the heigth (in 100th of mm) to Pt and round the result to the
+ // nearest integer
+ n = (UINT16) SmRoundFraction(Sm100th_mmToPts(rFormat.aBaseSize.Height()));
+ DBG_ASSERT((n & 0xFF00) == 0, "Sm : higher Byte nicht leer");
+
+ // to be compatible with the old format (size and order) we put the info
+ // about textmode in the higher byte (height is already restricted to a
+ // maximum of 127!)
+ n |= (rFormat.bIsTextmode != 0) << 8
+ | (rFormat.bScaleNormalBrackets != 0) << 9;
+ rStream << n;
+
+ rStream << rFormat.vDist[DIS_LEFTSPACE]; //Wir nutzen den Platz
+ rStream << rFormat.vDist[DIS_RIGHTSPACE]; //Wir nutzen den Platz
+
+ for ( n = SIZ_BEGIN; n <= SIZ_END; ++n )
+ rStream << rFormat.vSize[n];
+
+ rStream << rFormat.vDist[DIS_TOPSPACE]; //Wir nutzen den Platz
+
+ for ( n = 0; n <= FNT_FIXED; ++n )
+ rStream << rFormat.vFont[n];
+
+ // Den zweiten Wert noch im HigherByte unterbringen
+ USHORT uTmp = rFormat.vDist[DIS_BRACKETSIZE]
+ | rFormat.vDist[DIS_NORMALBRACKETSIZE] << 8;
+ // und dann dieses rausstreamen
+ for ( n = 0; n <= DIS_OPERATORSPACE; ++n )
+ rStream << (USHORT)(n != DIS_BRACKETSIZE ? rFormat.vDist[(USHORT) n] : uTmp);
+
+ // higher byte is version number, lower byte is horizontal alignment
+ n = rFormat.eHorAlign | SM_FMT_VERSION_NOW << 8;
+ rStream << n;
+
+ rStream << rFormat.vDist[DIS_BOTTOMSPACE]; //Wir nutzen den Platz
+
+ return rStream;
+}
+
+
+SvStream & operator >> (SvStream &rStream, SmFormat &rFormat)
+{
+ UINT16 n;
+
+ rStream >> n;
+ long nBaseHeight = n & 0x00FF;
+ rFormat.bIsTextmode = ((n >> 8) & 0x01) != 0;
+ rFormat.bScaleNormalBrackets = ((n >> 9) & 0x01) != 0;
+ rFormat.aBaseSize = Size(0, SmPtsTo100th_mm(nBaseHeight));
+
+ rStream >> rFormat.vDist[DIS_LEFTSPACE]; //Wir nutzen den Platz
+ rStream >> rFormat.vDist[DIS_RIGHTSPACE]; //Wir nutzen den Platz
+
+ for ( n = SIZ_BEGIN; n <= SIZ_END; ++n )
+ rStream >> rFormat.vSize[n];
+
+ rStream >> rFormat.vDist[DIS_TOPSPACE]; //Wir nutzen den Platz
+
+ for ( n = 0; n <= FNT_FIXED; ++n )
+ rStream >> rFormat.vFont[n];
+
+ for ( n = 0; n <= DIS_OPERATORSPACE; ++n )
+ rStream >> rFormat.vDist[n];
+ // den zweiten Wert aus dem HigherByte holen
+ rFormat.vDist[DIS_NORMALBRACKETSIZE] = rFormat.vDist[DIS_BRACKETSIZE] >> 8;
+ // und dieses dann ausblenden
+ rFormat.vDist[DIS_BRACKETSIZE] &= 0x00FF;
+
+ // higher byte is version number, lower byte is horizontal alignment
+ rStream >> n;
+ rFormat.nVersion = n >> 8;
+ rFormat.eHorAlign = (SmHorAlign) (n & 0x00FF);
+
+ rStream >> rFormat.vDist[DIS_BOTTOMSPACE]; //Wir nutzen den Platz
+
+ const Size aTmp( rFormat.GetBaseSize() );
+ for ( USHORT i = 0; i <= FNT_FIXED; ++i )
+ {
+ rFormat.vFont[i].SetSize(aTmp);
+ rFormat.vFont[i].SetTransparent(TRUE);
+ rFormat.vFont[i].SetAlign(ALIGN_BASELINE);
+ }
+ rFormat.vFont[FNT_MATH].SetSize(aTmp);
+
+ // Für Version 4.0 (und älter) sollen auch die normalen Klammern skalierbar
+ // sein und wachsen (so wie es der Fall war), in der 5.0 Version jedoch nicht.
+ // In späteren Versionen (>= 5.1) ist das Verhalten nun durch den Anwender
+ // festzulegen (bleibt also wie aus dem Stream gelesen).
+ if (rFormat.nVersion < SM_FMT_VERSION_51)
+ {
+ BOOL bIs50Stream = rStream.GetVersion() == SOFFICE_FILEFORMAT_50;
+ BOOL bVal = bIs50Stream ? FALSE : TRUE;
+ USHORT nExcHeight = bIs50Stream ? 0 : rFormat.vDist[DIS_BRACKETSIZE];
+
+ rFormat.SetScaleNormalBrackets(bVal);
+ rFormat.SetDistance(DIS_NORMALBRACKETSIZE, nExcHeight);
+ }
+
+ return rStream;
+}
+
+void SmFormat::ReadSM20Format(SvStream &rStream)
+{
+ UINT16 n;
+ USHORT i;
+
+ rStream >> n;
+ SetBaseSize( Size(0, SmPtsTo100th_mm(n)) );
+
+ rStream >> n >> n;
+
+ for (i = SIZ_BEGIN; i <= SIZ_LIMITS; i++)
+ { rStream >> n;
+ SetRelSize(i, n);
+ }
+
+ rStream >> n;
+
+ for (i = FNT_BEGIN; i <= FNT_FIXED; i++)
+ ReadSM20Font(rStream, Font(i));
+
+ for (i = DIS_BEGIN; i <= DIS_OPERATORSPACE; i++)
+ { rStream >> n;
+ SetDistance(i, n);
+ }
+
+ rStream >> n;
+ SetHorAlign((SmHorAlign) n);
+ rStream >> n;
+
+ const Size aTmp (GetBaseSize());
+ for (i = FNT_BEGIN; i <= FNT_FIXED; i++)
+ {
+ Font(i).SetSize(aTmp);
+ Font(i).SetTransparent(TRUE);
+ Font(i).SetAlign(ALIGN_BASELINE);
+ }
+ Font(FNT_MATH).SetSize(aTmp);
+}
+
+
+void SmFormat::From300To304a()
+{
+ long nBaseSize = SmRoundFraction(Sm100th_mmToPts(aBaseSize.Height()))
+ * 2540l / 72l;
+ for (USHORT i = DIS_BEGIN; i < DIS_OPERATORSPACE; i++)
+ SetDistance(i, USHORT(GetDistance(i) * 254000L / 72L / nBaseSize));
+}
+
+
+
diff --git a/starmath/source/makefile.mk b/starmath/source/makefile.mk
new file mode 100644
index 000000000000..fed1043b88d0
--- /dev/null
+++ b/starmath/source/makefile.mk
@@ -0,0 +1,163 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+#MKDEPENDSOLVER=YES
+PROJECTPCH4DLL=TRUE
+
+PRJ=..
+
+PRJNAME=starmath
+TARGET=starmath
+
+PROJECTPCH=math_pch
+PDBTARGET=math_pch
+PROJECTPCHSOURCE=math_pch
+
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+.INCLUDE : $(PRJ)$/util$/makefile.pmk
+
+.INCLUDE : $(UPD)minor.mk
+RSCUPDVER=$(RSCREVISION)(SV$(UPD)$(UPDMINOR))
+
+IMGLST_SRS=$(SRS)$/smres.srs
+
+# --- Files --------------------------------------------------------
+
+SMDLL=TRUE
+
+SRS2NAME =smres
+SRC2FILES = smres.src \
+ commands.src
+
+SLOFILES = \
+ $(SLO)$/frmload.obj \
+ $(SLO)$/typemap.obj \
+ $(SLO)$/symbol.obj \
+ $(SLO)$/toolbox.obj \
+ $(SLO)$/action.obj \
+ $(SLO)$/config.obj \
+ $(SLO)$/dialog.obj \
+ $(SLO)$/document.obj \
+ $(SLO)$/mathtype.obj \
+ $(SLO)$/format.obj \
+ $(SLO)$/node.obj \
+ $(SLO)$/parse.obj \
+ $(SLO)$/utility.obj \
+ $(SLO)$/smdll.obj \
+ $(SLO)$/smmod.obj \
+ $(SLO)$/view.obj \
+ $(SLO)$/edit.obj \
+ $(SLO)$/rect.obj \
+ $(SLO)$/unomodel.obj \
+ $(SLO)$/xchar.obj
+
+EXCEPTIONSFILES = \
+ $(SLO)$/document.obj \
+ $(SLO)$/frmload.obj \
+ $(SLO)$/symbol.obj \
+ $(SLO)$/unomodel.obj
+
+
+LIB2TARGET = $(SLB)$/ysm.lib
+LIB2ARCHIV = $(LB)$/libysm.a
+LIB2OBJFILES = $(SLO)$/smlib.obj
+
+DEPOBJFILES = $(SLO)$/smlib.obj
+# --- Targets -------------------------------------------------------
+
+.IF "$(depend)" == ""
+
+ALL: \
+ $(INCCOM)$/dllname.hxx \
+ ALLTAR
+
+.IF "$(GUI)"=="UNX" || "$(GUI)"=="MAC"
+CDEFS+=-DUSE_POLYGON
+.ENDIF
+
+$(INCCOM)$/dllname.hxx: makefile.mk
+.IF "$(GUI)"=="OS2"
+ echo #define DLL_NAME "sm$(UPD)$(DLLPOSTFIX)" >$@
+.ELSE
+.IF "$(GUI)"=="MAC"
+ echo "$(HASHMARK)define DLL_NAME ¶"sm$(UPD)$(DLLPOSTFIX).dll¶"" > $@
+.ELSE
+.IF "$(GUI)"=="UNX"
+ $(RM) $@
+ echo #define DLL_NAME \"libsm$(UPD)$(DLLPOSTFIX)$(DLLPOST)\" >$@
+.ELSE
+ echo #define DLL_NAME "sm$(UPD)$(DLLPOSTFIX)$(DLLPOST)" >$@
+.ENDIF
+.ENDIF
+.ENDIF
+
+.ENDIF
+
+.INCLUDE : target.mk
+
+$(SRS)$/smres.srs: $(SOLARINCDIR)$/svx$/globlmn.hrc
+
diff --git a/starmath/source/math_pch.cxx b/starmath/source/math_pch.cxx
new file mode 100644
index 000000000000..8570ebc4d579
--- /dev/null
+++ b/starmath/source/math_pch.cxx
@@ -0,0 +1,893 @@
+/*************************************************************************
+ *
+ * $RCSfile: math_pch.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define SMDLL 1
+
+#include "starmath.hrc"
+
+#define ITEMID_FONT 1
+#define ITEMID_FONTHEIGHT 2
+#define ITEMID_LRSPACE 3
+#define ITEMID_WEIGHT 4
+
+//--------- ab hier die "generierten"
+#include <tools/string.hxx>
+#include <tools/solar.h>
+#include <tools/list.hxx>
+#include <tools/contnr.hxx>
+#include <tools/rtti.hxx>
+#include <tools/ref.hxx>
+#include <tools/link.hxx>
+#include <svtools/brdcst.hxx>
+#include <svtools/svarray.hxx>
+#include <tools/debug.hxx>
+#include <svtools/hint.hxx>
+#include <svtools/smplhint.hxx>
+#include <sot/sotref.hxx>
+#include <tools/globname.hxx>
+#include <sot/factory.hxx>
+#include <vcl/sv.h>
+#include <svtools/sbxdef.hxx>
+#include <tools/time.hxx>
+#include <tools/gen.hxx>
+#include <tools/stream.hxx>
+#include <tools/errinf.hxx>
+#include <tools/errcode.hxx>
+#include <sot/object.hxx>
+#include <sot/sotdata.hxx>
+#include <sfx2/shell.hxx>
+#include <sal/types.h>
+#include <sal/config.h>
+#include <tools/date.hxx>
+#include <sot/dtrans.hxx>
+#include <tools/ownlist.hxx>
+#include <vcl/accel.hxx>
+#include <vcl/resid.hxx>
+#include <tools/resid.hxx>
+#include <vcl/rc.hxx>
+#include <tools/rc.hxx>
+#include <tools/lang.hxx>
+#include <tools/resmgr.hxx>
+#include <vcl/keycod.hxx>
+#include <vcl/keycodes.hxx>
+#include <vcl/vclenum.hxx>
+#include <vcl/timer.hxx>
+#include <vcl/cmdevt.hxx>
+#include <vcl/font.hxx>
+#include <vcl/color.hxx>
+#include <vcl/outdev.hxx>
+#include <vcl/region.hxx>
+#include <vcl/mapmod.hxx>
+#include <tools/fract.hxx>
+#include <vcl/wall.hxx>
+#include <vcl/settings.hxx>
+#include <tools/intn.hxx>
+#include <vcl/bitmap.hxx>
+#include <vcl/pointr.hxx>
+#include <vcl/ptrstyle.hxx>
+#include <vcl/wintypes.hxx>
+#include <vcl/inputctx.hxx>
+#include <vcl/event.hxx>
+#include <format.hxx>
+#include <utility.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/image.hxx>
+#include <vcl/ctrl.hxx>
+#include <vcl/window.hxx>
+#include <vcl/icon.hxx>
+#include <sfx2/minarray.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/combobox.h>
+#include <vcl/edit.hxx>
+#include <vcl/menu.hxx>
+#include <vcl/bitmapex.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/lstbox.h>
+#include <usr/guid.hxx>
+#include <usr/sequ.hxx>
+#include <uno/types.h>
+#include <uno/macros.h>
+#include <vos/xception.hxx>
+#include <osl/mutex.h>
+#include <tools/shl.hxx>
+#include <sfx2/module.hxx>
+#include <sfx2/imgdef.hxx>
+#include <usr/uno.hxx>
+#include <usr/xiface.hxx>
+#include <usr/ustring.hxx>
+#include <vos/refernce.hxx>
+#include <vos/types.hxx>
+#include <osl/types.h>
+#include <osl/interlck.h>
+#include <vos/object.hxx>
+#include <vos/macros.hxx>
+#include <smdll.hxx>
+#include <smdll0.hxx>
+#include <sfx2/sfxsids.hrc>
+#include <chaos/cntids.hrc>
+#include <svtools/cntwids.hrc>
+#include <svtools/solar.hrc>
+#include <svtools/lstner.hxx>
+#include <starmath.hrc>
+#include <svtools/sbx.hxx>
+#include <svtools/sbxform.hxx>
+#include <svtools/sbxobj.hxx>
+#include <svtools/sbxvar.hxx>
+#include <svtools/sbxcore.hxx>
+#include <svtools/sbxprop.hxx>
+#include <svtools/sbxmeth.hxx>
+#include <tools/unqid.hxx>
+#include <tools/unqidx.hxx>
+#include <svtools/poolitem.hxx>
+#include <svtools/args.hxx>
+#include <smmod.hxx>
+#include <vos/thread.hxx>
+#include <osl/thread.h>
+#include <vos/runnable.hxx>
+#include <vcl/apptypes.hxx>
+#include <tools/dynary.hxx>
+#include <vcl/metric.hxx>
+#include <vcl/svapp.hxx>
+#include <svtools/iniman.hxx>
+#include <vcl/timer.hxx>
+#include <sfx2/app.hxx>
+#include <svtools/plugapp.hxx>
+#include <sfx2/sfx.hrc>
+#include <svtools/memberid.hrc>
+#include <vcl/syswin.hxx>
+#include <vcl/virdev.hxx>
+#include <tools/datetime.hxx>
+#include <tools/wldcrd.hxx>
+#include <parse.hxx>
+#include <tools/stack.hxx>
+#include <types.hxx>
+#include <config.hxx>
+#include <sfx2/cfgitem.hxx>
+#include <svtools/confitem.hxx>
+#include <xchar.hxx>
+#include <vcl/poly.hxx>
+#include <svx/xpoly.hxx>
+#include <rect.hxx>
+#include <vcl/outdev.hxx>
+#include <so3/so2ref.hxx>
+#ifndef _SMART_COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTOR_HXX_
+#include <smart/com/sun/star/frame/XDispatchProviderInterceptor.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XDISPATCH_HXX_
+#include <smart/com/sun/star/frame/XDispatch.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XDISPATCHPROVIDER_HXX_
+#include <smart/com/sun/star/frame/XDispatchProvider.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XSTATUSLISTENER_HXX_
+#include <smart/com/sun/star/frame/XStatusListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_FRAMESEARCHFLAG_HXX_
+#include <smart/com/sun/star/frame/FrameSearchFlag.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTION_HXX_
+#include <smart/com/sun/star/frame/XDispatchProviderInterception.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_FEATURESTATEEVENT_HXX_
+#include <smart/com/sun/star/frame/FeatureStateEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_DISPATCHDESCRIPTOR_HXX_
+#include <smart/com/sun/star/frame/DispatchDescriptor.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XFRAMEACTIONLISTENER_HXX_
+#include <smart/com/sun/star/frame/XFrameActionListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XCOMPONENTLOADER_HXX_
+#include <smart/com/sun/star/frame/XComponentLoader.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XFRAME_HXX_
+#include <smart/com/sun/star/frame/XFrame.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_FRAMEACTIONEVENT_HXX_
+#include <smart/com/sun/star/frame/FrameActionEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_FRAMEACTION_HXX_
+#include <smart/com/sun/star/frame/FrameAction.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_UTIL_XURLTRANSFORMER_HXX_
+#include <smart/com/sun/star/util/XURLTransformer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_TASK_XSTATUSINDICATORFACTORY_HXX_
+#include <smart/com/sun/star/task/XStatusIndicatorFactory.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_TASK_XSTATUSINDICATORSUPPLIER_HXX_
+#include <smart/com/sun/star/task/XStatusIndicatorSupplier.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_TASK_XSTATUSINDICATOR_HXX_
+#include <smart/com/sun/star/task/XStatusIndicator.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_FRAME_XBROWSEHISTORYREGISTRY_HXX_
+#include <smart/com/sun/star/frame/XBrowseHistoryRegistry.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_IO_BUFFERSIZEEXCEEDEDEXCEPTION_HXX_
+#include <smart/com/sun/star/io/BufferSizeExceededException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_IO_NOTCONNECTEDEXCEPTION_HXX_
+#include <smart/com/sun/star/io/NotConnectedException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_IO_IOEXCEPTION_HXX_
+#include <smart/com/sun/star/io/IOException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_IO_UNEXPECTEDEOFEXCEPTION_HXX_
+#include <smart/com/sun/star/io/UnexpectedEOFException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_IO_WRONGFORMATEXCEPTION_HXX_
+#include <smart/com/sun/star/io/WrongFormatException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_SERVICENOTREGISTEREDEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/ServiceNotRegisteredException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_NULLPOINTEREXCEPTION_HXX_
+#include <smart/com/sun/star/lang/NullPointerException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_CLASSNOTFOUNDEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/ClassNotFoundException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_NOSUCHMETHODEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/NoSuchMethodException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_SECURITYEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/SecurityException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_NOSUCHFIELDEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/NoSuchFieldException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/DisposedException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/ArrayIndexOutOfBoundsException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_ILLEGALACCESSEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/IllegalAccessException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_INDEXOUTOFBOUNDSEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/IndexOutOfBoundsException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_ILLEGALARGUMENTEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/IllegalArgumentException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_NOSUPPORTEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/NoSupportException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_WRAPPEDTARGETEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/WrappedTargetException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_PARAMINFO_HXX_
+#include <smart/com/sun/star/reflection/ParamInfo.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLARRAY_HXX_
+#include <smart/com/sun/star/reflection/XIdlArray.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLCLASSPROVIDER_HXX_
+#include <smart/com/sun/star/reflection/XIdlClassProvider.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_FIELDACCESSMODE_HXX_
+#include <smart/com/sun/star/reflection/FieldAccessMode.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLCLASS_HXX_
+#include <smart/com/sun/star/reflection/XIdlClass.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLFIELD_HXX_
+#include <smart/com/sun/star/reflection/XIdlField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_PARAMMODE_HXX_
+#include <smart/com/sun/star/reflection/ParamMode.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_METHODMODE_HXX_
+#include <smart/com/sun/star/reflection/MethodMode.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLMEMBER_HXX_
+#include <smart/com/sun/star/reflection/XIdlMember.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLREFLECTION_HXX_
+#include <smart/com/sun/star/reflection/XIdlReflection.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_XIDLMETHOD_HXX_
+#include <smart/com/sun/star/reflection/XIdlMethod.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_REFLECTION_INVOCATIONTARGETEXCEPTION_HXX_
+#include <smart/com/sun/star/reflection/InvocationTargetException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYVALUES_HXX_
+#include <smart/com/sun/star/beans/PropertyValues.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYSET_HXX_
+#include <smart/com/sun/star/beans/XPropertySet.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYVALUE_HXX_
+#include <smart/com/sun/star/beans/PropertyValue.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYSTATE_HXX_
+#include <smart/com/sun/star/beans/PropertyState.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYSETINFO_HXX_
+#include <smart/com/sun/star/beans/XPropertySetInfo.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XMULTIPROPERTYSET_HXX_
+#include <smart/com/sun/star/beans/XMultiPropertySet.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XFASTPROPERTYSET_HXX_
+#include <smart/com/sun/star/beans/XFastPropertySet.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XVETOABLECHANGELISTENER_HXX_
+#include <smart/com/sun/star/beans/XVetoableChangeListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYSTATE_HXX_
+#include <smart/com/sun/star/beans/XPropertyState.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYSTATECHANGELISTENER_HXX_
+#include <smart/com/sun/star/beans/XPropertyStateChangeListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HXX_
+#include <smart/com/sun/star/beans/PropertyAttribute.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTIESCHANGELISTENER_HXX_
+#include <smart/com/sun/star/beans/XPropertiesChangeListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HXX_
+#include <smart/com/sun/star/beans/XPropertyChangeListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYACCESS_HXX_
+#include <smart/com/sun/star/beans/XPropertyAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_XPROPERTYCONTAINER_HXX_
+#include <smart/com/sun/star/beans/XPropertyContainer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYSTATECHANGEEVENT_HXX_
+#include <smart/com/sun/star/beans/PropertyStateChangeEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HXX_
+#include <smart/com/sun/star/beans/PropertyChangeEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_UNKNOWNPROPERTYEXCEPTION_HXX_
+#include <smart/com/sun/star/beans/UnknownPropertyException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_INTROSPECTIONEXCEPTION_HXX_
+#include <smart/com/sun/star/beans/IntrospectionException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYEXISTEXCEPTION_HXX_
+#include <smart/com/sun/star/beans/PropertyExistException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_ILLEGALTYPEEXCEPTION_HXX_
+#include <smart/com/sun/star/beans/IllegalTypeException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_BEANS_PROPERTYVETOEXCEPTION_HXX_
+#include <smart/com/sun/star/beans/PropertyVetoException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XENUMERATIONACCESS_HXX_
+#include <smart/com/sun/star/container/XEnumerationAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XHIERARCHICALNAMEACCESS_HXX_
+#include <smart/com/sun/star/container/XHierarchicalNameAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XNAMEACCESS_HXX_
+#include <smart/com/sun/star/container/XNameAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XCONTENTENUMERATIONACCESS_HXX_
+#include <smart/com/sun/star/container/XContentEnumerationAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XENUMERATION_HXX_
+#include <smart/com/sun/star/container/XEnumeration.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XELEMENTACCESS_HXX_
+#include <smart/com/sun/star/container/XElementAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XINDEXACCESS_HXX_
+#include <smart/com/sun/star/container/XIndexAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_XEVENTLISTENER_HXX_
+#include <smart/com/sun/star/lang/XEventListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_EVENTOBJECT_HXX_
+#include <smart/com/sun/star/lang/EventObject.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_SCRIPT_XALLLISTENERADAPTERSERVICE_HXX_
+#include <smart/com/sun/star/script/XAllListenerAdapterService.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_SCRIPT_XALLLISTENER_HXX_
+#include <smart/com/sun/star/script/XAllListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_SCRIPT_ALLEVENTOBJECT_HXX_
+#include <smart/com/sun/star/script/AllEventObject.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XCOMPONENTENUMERATION_HXX_
+#include <smart/com/sun/star/container/XComponentEnumeration.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_XCOMPONENT_HXX_
+#include <smart/com/sun/star/lang/XComponent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_XCOMPONENTENUMERATIONACCESS_HXX_
+#include <smart/com/sun/star/container/XComponentEnumerationAccess.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_LISTENEREXISTEXCEPTION_HXX_
+#include <smart/com/sun/star/lang/ListenerExistException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_ELEMENTEXISTEXCEPTION_HXX_
+#include <smart/com/sun/star/container/ElementExistException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_LANG_INVALIDLISTENEREXCEPTION_HXX_
+#include <smart/com/sun/star/lang/InvalidListenerException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_CONTAINER_NOSUCHELEMENTEXCEPTION_HXX_
+#include <smart/com/sun/star/container/NoSuchElementException.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XKEYLISTENER_HXX_
+#include <smart/com/sun/star/awt/XKeyListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XPAINTLISTENER_HXX_
+#include <smart/com/sun/star/awt/XPaintListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_KEYEVENT_HXX_
+#include <smart/com/sun/star/awt/KeyEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_KEYMODIFIER_HXX_
+#include <smart/com/sun/star/awt/KeyModifier.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XMOUSEMOTIONLISTENER_HXX_
+#include <smart/com/sun/star/awt/XMouseMotionListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FOCUSEVENT_HXX_
+#include <smart/com/sun/star/awt/FocusEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XWINDOWLISTENER_HXX_
+#include <smart/com/sun/star/awt/XWindowListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XACTIVATELISTENER_HXX_
+#include <smart/com/sun/star/awt/XActivateListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_MOUSEEVENT_HXX_
+#include <smart/com/sun/star/awt/MouseEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTOPWINDOWLISTENER_HXX_
+#include <smart/com/sun/star/awt/XTopWindowListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_PAINTEVENT_HXX_
+#include <smart/com/sun/star/awt/PaintEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_INPUTEVENT_HXX_
+#include <smart/com/sun/star/awt/InputEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_KEYGROUP_HXX_
+#include <smart/com/sun/star/awt/KeyGroup.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_KEY_HXX_
+#include <smart/com/sun/star/awt/Key.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_WINDOWEVENT_HXX_
+#include <smart/com/sun/star/awt/WindowEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XMOUSELISTENER_HXX_
+#include <smart/com/sun/star/awt/XMouseListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_KEYFUNCTION_HXX_
+#include <smart/com/sun/star/awt/KeyFunction.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FOCUSCHANGEREASON_HXX_
+#include <smart/com/sun/star/awt/FocusChangeReason.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_MOUSEBUTTON_HXX_
+#include <smart/com/sun/star/awt/MouseButton.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XFOCUSLISTENER_HXX_
+#include <smart/com/sun/star/awt/XFocusListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XADJUSTMENTLISTENER_HXX_
+#include <smart/com/sun/star/awt/XAdjustmentListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XACTIONLISTENER_HXX_
+#include <smart/com/sun/star/awt/XActionListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTEXTLISTENER_HXX_
+#include <smart/com/sun/star/awt/XTextListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XSPINLISTENER_HXX_
+#include <smart/com/sun/star/awt/XSpinListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XITEMLISTENER_HXX_
+#include <smart/com/sun/star/awt/XItemListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XVCLCONTAINERLISTENER_HXX_
+#include <smart/com/sun/star/awt/XVclContainerListener.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XFILEDIALOG_HXX_
+#include <smart/com/sun/star/awt/XFileDialog.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTEXTCOMPONENT_HXX_
+#include <smart/com/sun/star/awt/XTextComponent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XLISTBOX_HXX_
+#include <smart/com/sun/star/awt/XListBox.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XPROGRESSMONITOR_HXX_
+#include <smart/com/sun/star/awt/XProgressMonitor.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_TEXTALIGN_HXX_
+#include <smart/com/sun/star/awt/TextAlign.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XSCROLLBAR_HXX_
+#include <smart/com/sun/star/awt/XScrollBar.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XVCLCONTAINERPEER_HXX_
+#include <smart/com/sun/star/awt/XVclContainerPeer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTABCONTROLLERMODEL_HXX_
+#include <smart/com/sun/star/awt/XTabControllerModel.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XMESSAGEBOX_HXX_
+#include <smart/com/sun/star/awt/XMessageBox.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTEXTEDITFIELD_HXX_
+#include <smart/com/sun/star/awt/XTextEditField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_STYLE_HXX_
+#include <smart/com/sun/star/awt/Style.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTIMEFIELD_HXX_
+#include <smart/com/sun/star/awt/XTimeField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XVCLWINDOWPEER_HXX_
+#include <smart/com/sun/star/awt/XVclWindowPeer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XCONTROLMODEL_HXX_
+#include <smart/com/sun/star/awt/XControlModel.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XSPINFIELD_HXX_
+#include <smart/com/sun/star/awt/XSpinField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XUNOCONTROLCONTAINER_HXX_
+#include <smart/com/sun/star/awt/XUnoControlContainer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTEXTLAYOUTCONSTRAINS_HXX_
+#include <smart/com/sun/star/awt/XTextLayoutConstrains.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XNUMERICFIELD_HXX_
+#include <smart/com/sun/star/awt/XNumericField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XBUTTON_HXX_
+#include <smart/com/sun/star/awt/XButton.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTEXTAREA_HXX_
+#include <smart/com/sun/star/awt/XTextArea.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XIMAGEBUTTON_HXX_
+#include <smart/com/sun/star/awt/XImageButton.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XFIXEDTEXT_HXX_
+#include <smart/com/sun/star/awt/XFixedText.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XCONTROLCONTAINER_HXX_
+#include <smart/com/sun/star/awt/XControlContainer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XDIALOG_HXX_
+#include <smart/com/sun/star/awt/XDialog.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_SCROLLBARORIENTATION_HXX_
+#include <smart/com/sun/star/awt/ScrollBarOrientation.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XRADIOBUTTON_HXX_
+#include <smart/com/sun/star/awt/XRadioButton.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XCURRENCYFIELD_HXX_
+#include <smart/com/sun/star/awt/XCurrencyField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XPATTERNFIELD_HXX_
+#include <smart/com/sun/star/awt/XPatternField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_VCLWINDOWPEERATTRIBUTE_HXX_
+#include <smart/com/sun/star/awt/VclWindowPeerAttribute.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTABCONTROLLER_HXX_
+#include <smart/com/sun/star/awt/XTabController.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XVCLCONTAINER_HXX_
+#include <smart/com/sun/star/awt/XVclContainer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XDATEFIELD_HXX_
+#include <smart/com/sun/star/awt/XDateField.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XCOMBOBOX_HXX_
+#include <smart/com/sun/star/awt/XComboBox.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XCONTROL_HXX_
+#include <smart/com/sun/star/awt/XControl.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XCHECKBOX_HXX_
+#include <smart/com/sun/star/awt/XCheckBox.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_MESSAGEBOXCOMMAND_HXX_
+#include <smart/com/sun/star/awt/MessageBoxCommand.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XLAYOUTCONSTRAINS_HXX_
+#include <smart/com/sun/star/awt/XLayoutConstrains.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XPROGRESSBAR_HXX_
+#include <smart/com/sun/star/awt/XProgressBar.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_SIMPLEFONTMETRIC_HXX_
+#include <smart/com/sun/star/awt/SimpleFontMetric.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTWEIGHT_HXX_
+#include <smart/com/sun/star/awt/FontWeight.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTSLANT_HXX_
+#include <smart/com/sun/star/awt/FontSlant.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_CHARSET_HXX_
+#include <smart/com/sun/star/awt/CharSet.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTDESCRIPTOR_HXX_
+#include <smart/com/sun/star/awt/FontDescriptor.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTWIDTH_HXX_
+#include <smart/com/sun/star/awt/FontWidth.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XFONT_HXX_
+#include <smart/com/sun/star/awt/XFont.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTTYPE_HXX_
+#include <smart/com/sun/star/awt/FontType.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTUNDERLINE_HXX_
+#include <smart/com/sun/star/awt/FontUnderline.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTSTRIKEOUT_HXX_
+#include <smart/com/sun/star/awt/FontStrikeout.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTFAMILY_HXX_
+#include <smart/com/sun/star/awt/FontFamily.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_FONTPITCH_HXX_
+#include <smart/com/sun/star/awt/FontPitch.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTOPWINDOW_HXX_
+#include <smart/com/sun/star/awt/XTopWindow.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XWINDOW_HXX_
+#include <smart/com/sun/star/awt/XWindow.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_POSSIZE_HXX_
+#include <smart/com/sun/star/awt/PosSize.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_VCLCONTAINEREVENT_HXX_
+#include <smart/com/sun/star/awt/VclContainerEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_ITEMEVENT_HXX_
+#include <smart/com/sun/star/awt/ItemEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_SPINEVENT_HXX_
+#include <smart/com/sun/star/awt/SpinEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_TEXTEVENT_HXX_
+#include <smart/com/sun/star/awt/TextEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_ADJUSTMENTTYPE_HXX_
+#include <smart/com/sun/star/awt/AdjustmentType.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_ACTIONEVENT_HXX_
+#include <smart/com/sun/star/awt/ActionEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_ADJUSTMENTEVENT_HXX_
+#include <smart/com/sun/star/awt/AdjustmentEvent.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_RECTANGLE_HXX_
+#include <smart/com/sun/star/awt/Rectangle.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_SELECTION_HXX_
+#include <smart/com/sun/star/awt/Selection.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_SIZE_HXX_
+#include <smart/com/sun/star/awt/Size.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_WINDOWDESCRIPTOR_HXX_
+#include <smart/com/sun/star/awt/WindowDescriptor.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_INVALIDATESTYLE_HXX_
+#include <smart/com/sun/star/awt/InvalidateStyle.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XTOOLKIT_HXX_
+#include <smart/com/sun/star/awt/XToolkit.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XWINDOWPEER_HXX_
+#include <smart/com/sun/star/awt/XWindowPeer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_WINDOWCLASS_HXX_
+#include <smart/com/sun/star/awt/WindowClass.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XSYSTEMDEPENDENTWINDOWPEER_HXX_
+#include <smart/com/sun/star/awt/XSystemDependentWindowPeer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_WINDOWATTRIBUTE_HXX_
+#include <smart/com/sun/star/awt/WindowAttribute.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XPOINTER_HXX_
+#include <smart/com/sun/star/awt/XPointer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_SYSTEMPOINTER_HXX_
+#include <smart/com/sun/star/awt/SystemPointer.hxx>
+#endif
+#ifndef _SMART_COM_SUN_STAR_AWT_XVIEW_HXX_
+#include <smart/com/sun/star/awt/XView.hxx>
+#endif
+#include <usr/refl.hxx>
+#include <vcl/resid.hxx>
+#include <sfx2/msg.hxx>
+#include <svtools/itemset.hxx>
+#include <sfx2/basedlgs.hxx>
+#include <vcl/floatwin.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/window.hxx>
+#include <so3/protocol.hxx>
+#include <sfx2/viewfrm.hxx>
+#include <so3/factory.hxx>
+#include <sfx2/frame.hxx>
+#include <sfx2/objface.hxx>
+#include <so3/advise.hxx>
+#include <so3/dtrans.hxx>
+#include <vcl/event.hxx>
+#include <svtools/eitem.hxx>
+#include <svtools/intitem.hxx>
+#include <symbol.hxx>
+#include <svtools/itempool.hxx>
+#include <vcl/image.hxx>
+#include <vcl/metric.hxx>
+#include <so3/iface.hxx>
+#include <sfx2/inimgr.hxx>
+#include <node.hxx>
+#include <so3/so2dll.hxx>
+#include <tools/pstm.hxx>
+#include <tools/table.hxx>
+#include <so3/ipobj.hxx>
+#include <so3/embobj.hxx>
+#include <sfx2/docfac.hxx>
+#include <so3/pseudo.hxx>
+#include <svtools/ownlist.hxx>
+#include <sfx2/objsh.hxx>
+#include <svtools/stritem.hxx>
+#include <vcl/mapmod.hxx>
+#include <sfx2/ipfrm.hxx>
+#include <vcl/dialog.hxx>
+#include <so3/svstor.hxx>
+#include <sfx2/dispatch.hxx>
+#include <svtools/svstdarr.hxx>
+#include <sfx2/bindings.hxx>
+#include <so3/persist.hxx>
+#include <dialog.hxx>
+#include <vcl/button.hxx>
+#include <vcl/symbol.hxx>
+#include <sfx2/tabdlg.hxx>
+#include <vcl/button.hxx>
+#include <so3/so2defs.hxx>
+#include <vcl/tabdlg.hxx>
+#include <vcl/tabpage.hxx>
+#include <vcl/tabctrl.hxx>
+#include <vcl/group.hxx>
+#include <svx/optgenrl.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/edit.hxx>
+#include <vcl/group.hxx>
+#include <document.hxx>
+#include <so3/binding.hxx>
+#include <vcl/field.hxx>
+#include <vcl/spinfld.hxx>
+#include <vcl/menubtn.hxx>
+#include <vcl/scrbar.hxx>
+#include <svtools/ctrlbox.hxx>
+#include <vcl/lstbox.hxx>
+#include <vcl/virdev.hxx>
+#include <vcl/combobox.hxx>
+#include <vcl/field.hxx>
+#include <svtools/ctrltool.hxx>
+#include <sfx2/interno.hxx>
+#include <sfx2/sfxdefs.hxx>
+#include <sfx2/childwin.hxx>
+#include <sfx2/chalign.hxx>
+#include <vcl/floatwin.hxx>
+#include <sot/storage.hxx>
+#include <rsc/rscsfx.hxx>
+#include <vcl/msgbox.hxx>
+#include <vcl/btndlg.hxx>
+#include <uno/uno.h>
+#include <uno/string.h>
+#include <uno/sequence.h>
+#include <uno/any.h>
+#include <uno/exceptn.h>
+#include <uno/intrface.h>
+#include <uno/factory.h>
+#include <uno/api.h>
+#include <svx/svxids.hrc>
+#include <view.hxx>
+#include <sfx2/dockwin.hxx>
+#include <vcl/dockwin.hxx>
+#include <sfx2/viewsh.hxx>
+#include <vcl/icon.hxx>
+#include <sfx2/clientsh.hxx>
+#include <so3/ipclient.hxx>
+#include <so3/client.hxx>
+#include <svtools/scrwin.hxx>
+#include <vcl/scrbar.hxx>
+#include <sfx2/ctrlitem.hxx>
+#include <sfx2/viewfac.hxx>
+#include <edit.hxx>
+#include <svx/editdata.hxx>
+#include <toolbox.hxx>
+#include <vcl/toolbox.hxx>
+#include <vcl/dockwin.hxx>
+#include <smslots.hxx>
+#include <svtools/undo.hxx>
+#include <sfx2/request.hxx>
+#include <svtools/whiter.hxx>
+#include <vcl/prntypes.hxx>
+#include <vcl/jobset.hxx>
+#include <vcl/gdimtf.hxx>
+#include <sot/exchange.hxx>
+#include <vcl/exchange.hxx>
+#include <vcl/wrkwin.hxx>
+#include <tools/sstring.hxx>
+#include <action.hxx>
+#include <sfx2/docinf.hxx>
+#include <sfx2/filedlg.hxx>
+#include <sfx2/iodlg.hxx>
diff --git a/starmath/source/mathtype.cxx b/starmath/source/mathtype.cxx
new file mode 100644
index 000000000000..181794883639
--- /dev/null
+++ b/starmath/source/mathtype.cxx
@@ -0,0 +1,3081 @@
+/*************************************************************************
+ *
+ * $RCSfile: mathtype.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef MATHTYPE_HXX
+#include <mathtype.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_H
+#include <tools/debug.hxx>
+#endif
+
+#define APPEND(str,ascii) str.AppendAscii(RTL_CONSTASCII_STRINGPARAM(ascii))
+
+#if 0
+String aEmbelList[21] =
+{
+ " ",
+ " ",
+ "single dot",
+ "double dot",
+ "triple dot",
+ "single prime",
+ "double prime",
+ "backwards prime (left of character)",
+ "tilde",
+ "hat (circumflex)",
+ "diagonal slash through character",
+ "right arrow",
+ "left arrow",
+ "double-headed arrow",
+ "right single-barbed arrow",
+ "left single-barbed arrow",
+ "mid-height horizontal bar",
+ "over-bar",
+ "triple prime",
+ "over-arc, concave downward",
+ "over-arc, concave upward"
+};
+
+String aSelectorList[49] =
+{
+ "angle brackets",
+ "parentheses",
+ "braces (curly brackets)",
+ "square brackets",
+ "vertical bars",
+ "double vertical bars",
+ "floor brackets",
+ "ceiling brackets",
+ "left brace, left brace",
+ "right brace, right brace",
+ "right brace, left brace",
+ "left brace, right parenthesis",
+ "left parenthesis, right brace",
+ "radical",
+ "fractions",
+ "subscript/superscript",
+ "underbar",
+ "overbar",
+ "left-pointing arrow",
+ "right-pointing arrow",
+ "left- and right-pointing arrow",
+ "single integral",
+ "double integral",
+ "triple integral",
+ "single summation-style integral",
+ "double summation-style integral",
+ "triple summation-style integral",
+ "upper horizontal brace",
+ "lower horizontal brace",
+ "summation",
+ "summation (integral-style limits)",
+ "product",
+ "product (integral-style limits)",
+ "coproduct",
+ "coproduct (integral-style limits)",
+ "union",
+ "union (integral-style limits)",
+ "intersection",
+ "intersection (integral-style limits)",
+ "limit",
+ "long division",
+ "slash fractions",
+ "big integral-style operators",
+ "big summation-style operators",
+ "leading sub- and superscripts",
+ "Dirac delta",
+ "under arrow",
+ "over arrow",
+ "over arc"
+};
+
+String aIntegralOpt[2] =
+{
+ "fixed-size integral",
+ "integral expands vertically to fit its contents"
+};
+
+String aFenceOpt[3] =
+{
+ "center fence on math axis",
+ "center fence on contents, place math axis of contents on math axis of containing line",
+ "center fence on contents, center contents on math axis of containing line"
+};
+
+String aTypeFaces[12] =
+{
+ "",
+ "fnTEXT",
+ "fnFUNCTION",
+ "fnVARIABLE",
+ "fnLCGREEK",
+ "fnUCGREEK",
+ "fnSYMBOL",
+ "fnVECTOR",
+ "fnNUMBER",
+ "fnUSER1",
+ "fnUSER2",
+ "fnMTEXTRA"
+};
+
+String aSizes[7] =
+{
+ "full",
+ "subscript",
+ "sub-subscript",
+ "symbol",
+ "sub-symbol",
+ "user 1",
+ "user 2"
+};
+#endif
+
+/*This table is not fully complete and is pending on what decisions are
+ *made as regards the StarMath to Unicode stuff*/
+sal_Unicode aMathTypeTable[256] =
+{
+0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
+0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011, 0x0012, 0x0013,
+0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019, 0x001a, 0x001b, 0x001c, 0x001d,
+0x001e, 0x001f, 0x0020, 0x0021, 0x0022, 0x0023, 0x2031, 0x0025, 0x0026, 0x221E,
+0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x2212, 0x002E, 0x002F, 0x2224, 0x21D2,
+0x21D0, 0x21D4, 0xffff, 0xffff, 0x2218, 0xffff, 0xffff, 0xffff, 0x003A, 0x003B,
+0x003C, 0x003D, 0x003E, 0x00BF, 0x2260, 0x002B, 0x2212, 0x002A, 0x00D7, 0x22C5,
+0x00F7, 0x00B1, 0x2213, 0x2295, 0x2296, 0x2297, 0x2298, 0x2299, 0x222A, 0x2229,
+0x003C, 0x003E, 0x2264, 0x2265, 0x2264, 0x2265, 0x226A, 0x226B, 0x007E, 0x2245,
+0x2248, 0xffff, 0x2261, 0x221D, 0x2202, 0x2282, 0x2283, 0x2286, 0x2287, 0x2284,
+0x2285, 0x2288, 0x2289, 0x2208, 0x2209, 0x2208, 0x2203, 0x220B, 0x2135, 0x2111,
+0x211C, 0x2118, 0x0192, 0x2221, 0x2222, 0x007C, 0x2225, 0x22A5, 0x2026, 0x22EF,
+0x22EE, 0x22F0, 0x22F1, 0x22B6, 0x22B7, 0x2192, 0x005C, 0x00AC, 0x222B, 0x222C,
+0x222D, 0x222E, 0x222F, 0x2230, 0x221A, 0x221A, 0x221A, 0x221A, 0x2210, 0x220F,
+0x2211, 0x2207, 0x2200, 0x2225, 0x005E, 0x02C7, 0x02D8, 0x00B4, 0x0060, 0x02DC,
+0x00AF, 0x2192, 0x02D9, 0x00A8, 0xffff, 0x02DA, 0x2227, 0x2228, 0x220D, 0x2205,
+0x007B, 0x007D, 0x0028, 0x0029, 0x2329, 0x232a, 0x005B, 0x005D, 0x2220, 0x221F,
+0xffff, 0x225C, 0x2254, 0x2255, 0x21B3, 0x2197, 0x2198, 0x2245, 0x301A, 0x301B,
+0xffff, 0xffff, 0xffff, 0xffff, 0x2112, 0x2130, 0x2131, 0xffff, 0xffff, 0x002F,
+0x005C, 0x274F, 0x2308, 0x230A, 0x2309, 0x230B, 0xffff, 0xffff, 0x0393, 0x0394,
+0x0398, 0x039B, 0x039E, 0x03A0, 0x03A3, 0x03A5, 0x03A6, 0x03A8, 0x0389, 0x03B1,
+0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB,
+0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6,
+0x03C7, 0x03C8, 0x03C9, 0x03B5, 0x03D1, 0xffff, 0x03F1, 0x03DB, 0x2118, 0xffff,
+0x2113, 0x2129, 0x2107, 0x2127, 0x210A, 0x22A4, 0x210F, 0x019B, 0x2190, 0x2191,
+0x2193, 0x2115, 0x2124, 0x211A, 0x211D, 0x2102
+};
+
+void EQNOLEFILEHDR::Read(SvStorageStream *pS)
+{
+ *pS >> nCBHdr;
+ *pS >> nVersion;
+ *pS >> nCf;
+ *pS >> nCBObject;
+ *pS >> nReserved1;
+ *pS >> nReserved2;
+ *pS >> nReserved3;
+ *pS >> nReserved4;
+}
+
+void EQNOLEFILEHDR::Write(SvStorageStream *pS)
+{
+ *pS << nCBHdr;
+ *pS << nVersion;
+ *pS << nCf;
+ *pS << nCBObject;
+ *pS << nReserved1;
+ *pS << nReserved2;
+ *pS << nReserved3;
+ *pS << nReserved4;
+}
+
+/*ToDo replace with table rather than switch, returns
+ TRUE in the case that the char is just a char, and
+ FALSE if the character is an operator which must not be
+ placed inside the quote sequence designed to protect
+ against being parsed as a keyword
+
+ General solution required to force starmath to handle
+ unicode math chars the way it handles its own math
+ chars rathar than handle them as text as it will do
+ for the default case below, i.e. incorrect spacing
+ between math symbols and ordinary text e.g. 1=2 rather
+ than 1 = 2
+ */
+BOOL MathType::LookupChar(sal_Unicode nChar)
+{
+ BOOL bRet=FALSE;
+ const char *pC = NULL;
+ switch(nChar)
+ {
+ case 0x00ac:
+ pC = " neg ";
+ break;
+ case 0x00b1:
+ pC = " +- ";
+ break;
+ case 0x0057:
+ if ((nVersion < 3) && (nTypeFace == 0x85))
+ pC = " %OMEGA ";
+ else
+ {
+ rRet.Append(nChar);
+ bRet=TRUE;
+ }
+ break;
+ case 0x00d7:
+ if (nVersion < 3)
+ pC = " cdot ";
+ else
+ pC = " times ";
+ break;
+ case 0x00f7:
+ pC = " div ";
+ break;
+ case 0x019b:
+ pC = " lambdabar ";
+ break;
+ case 0x2026:
+ pC = " dotslow ";
+ break;
+ case 0x2022:
+ pC = " cdot ";
+ break;
+ case 0x210f:
+ pC = " hbar ";
+ break;
+ case 0x2111:
+ pC = " Im ";
+ break;
+ case 0x2118:
+ pC = " wp ";
+ break;
+ case 0x211c:
+ pC = " Re ";
+ break;
+ case 0x2135:
+ pC = " aleph ";
+ break;
+ case 0x2190:
+ pC = " leftarrow ";
+ break;
+ case 0x2191:
+ pC = " uparrow ";
+ break;
+ case 0x2192:
+ pC = " rightarrow ";
+ break;
+ case 0x2193:
+ pC = " downarrow ";
+ break;
+ case 0x21d4:
+ pC = " dlrarrow ";
+ break;
+ case 0x2200:
+ pC = " forall ";
+ break;
+ case 0x2202:
+ pC = " partial ";
+ break;
+ case 0x2203:
+ pC = " exists ";
+ break;
+ case 0x2205:
+ pC = " emptyset ";
+ break;
+ case 0x2207:
+ pC = " nabla ";
+ break;
+ case 0x2208:
+ pC = " in ";
+ break;
+ case 0x2209:
+ pC = " notin ";
+ break;
+ case 0x220d:
+ pC = " owns ";
+ break;
+ case 0x220f:
+ pC = " prod ";
+ break;
+ case 0x2210:
+ pC = " coprod ";
+ break;
+ case 0x2211:
+ pC = " sum ";
+ break;
+ case 0x2212:
+ pC = " - ";
+ break;
+ case 0x2213:
+ pC = " -+ ";
+ break;
+ case 0x2217:
+ pC = " * ";
+ break;
+ case 0x2218:
+ pC = " circ ";
+ break;
+ case 0x221d:
+ pC = " prop ";
+ break;
+ case 0x221e:
+ pC = " infinity ";
+ break;
+ case 0x2227:
+ pC = " and ";
+ break;
+ case 0x2228:
+ pC = " or ";
+ break;
+ case 0x2229:
+ pC = " intersection ";
+ break;
+ case 0x222a:
+ pC = " union ";
+ break;
+ case 0x222b:
+ pC = " int ";
+ break;
+ case 0x2245:
+ pC = " simeq ";
+ break;
+ case 0x2248:
+ pC = " approx ";
+ break;
+ case 0x2260:
+ pC = " <> ";
+ break;
+ case 0x2261:
+ pC = " equiv ";
+ break;
+ case 0x2264:
+ pC = " <= ";
+ break;
+ case 0x2265:
+ pC = " >= ";
+ break;
+ case 0x2282:
+ pC = " subset ";
+ break;
+ case 0x2283:
+ pC = " supset ";
+ break;
+ case 0x2284:
+ pC = " nsubset ";
+ break;
+ case 0x2286:
+ pC = " subseteq ";
+ break;
+ case 0x2287:
+ pC = " supseteq ";
+ break;
+ case 0x227a:
+ case 0x227b:
+ case 0x22b2:
+ case 0x22b3:
+ rRet += ' ';
+ rRet.Append(nChar);
+ rRet += ' ';
+ break;
+ case 0x22a5:
+ pC = " ortho ";
+ break;
+ case 0x22c5:
+ pC = " cdot ";
+ break;
+ case 0x22ee:
+ pC = " dotsvert ";
+ break;
+ case 0x22ef:
+ pC = " dotsaxis ";
+ break;
+ case 0x22f0:
+ pC = " dotsup ";
+ break;
+ case 0x22f1:
+ pC = " dotsdown ";
+ break;
+ case 0xeb01: //no space
+ case 0xeb08: //normal space
+ bRet=TRUE;
+ break;
+ case 0xeb02: //small space
+ case 0xeb04: //medium space
+ rRet.Append('`');
+ break;
+ case 0xeb05: //large space
+ rRet.Append('~');
+ break;
+ case 0x3a9:
+ pC = " %OMEGA ";
+ break;
+ default:
+ rRet.Append(nChar);
+ bRet=TRUE;
+ break;
+ }
+ if (pC)
+ rRet.AppendAscii(pC);
+ return bRet;
+}
+
+int MathType::Parse(SvStorage *pStor)
+{
+ SvStorageStreamRef xSrc = pStor->OpenStream(
+ String::CreateFromAscii("Equation Native"),
+ STREAM_STD_READ | STREAM_NOCREATE);
+ if ( (!xSrc.Is()) || (SVSTREAM_OK != xSrc->GetError()))
+ return NULL;
+ pS = &xSrc;
+ pS->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ EQNOLEFILEHDR aHdr;
+ aHdr.Read(pS);
+ *pS >> nVersion;
+ *pS >> nPlatform;
+ *pS >> nProduct;
+ *pS >> nProdVersion;
+ *pS >> nProdSubVersion;
+
+#ifdef STANDALONE
+ *pOut << "Format Version is " << int(nVersion) << endl;
+ *pOut << "Generating Platform is " << (nPlatform ? "Windows"
+ : "Mac") << endl;
+ *pOut << "Generating Product is " << (nPlatform ? "Equation Editor"
+ : "Equation Editor") << endl;
+ *pOut << "Prod Version is " << int(nProdVersion) << "." <<
+ int(nProdSubVersion) << endl << endl;
+#endif
+
+ int nRet = HandleRecords();
+ //little crude hack to close ocassionally open expressions
+ //a sophisticated system to determine what expressions are
+ //opened is required, but this is as much work as rewriting
+ //starmaths internals.
+ APPEND(rRet,"{}");
+
+ //sanity check
+ ULONG nEnd = pS->Tell();
+ if (nEnd != pS->Seek(STREAM_SEEK_TO_END))
+ return 0;
+ return nRet;
+}
+
+/*Fabously complicated as many tokens have to be reordered and generally
+ *moved around from mathtypes paradigm to starmaths.*/
+int MathType::HandleRecords(int nLevel,BYTE nSelector,
+ BYTE nVariation, int nMatrixRows,int nMatrixCols)
+{
+ BYTE nTag,nRecord;
+ BYTE nTabType,nTabStops;
+ BYTE nTface,nStyle;
+ UINT16 nTabOffset;
+ sal_Char nChar8;
+ String sFontName;
+ int i,nRet=1,newline=0;
+ BOOL bSilent=FALSE;
+ int nPart=0;
+ String sPush,sMainTerm;
+ int nSetSize=0,nSetAlign=0;
+ int nCurRow=0,nCurCol=0;
+ BOOL bOpenString=FALSE;
+ xub_StrLen nTextStart;
+
+ do
+ {
+ *pS >> nTag;
+ nRecord = nTag&0x0F;
+
+ /*MathType strings can of course include words which
+ *are StarMath keywords, the simplest solution is
+ to escape strings of greater than len 1 with double
+ quotes to avoid scanning the TokenTable for matches
+
+ Unfortunately it may turn out that the string gets
+ split during the handling of a character emblishment
+ so this special case must be handled in the
+ character handler case 2:
+ */
+ if ((nRecord == CHAR) && (!bSilent) && (!bOpenString))
+ {
+ bOpenString=TRUE;
+ nTextStart = rRet.Len();
+ }
+ else if ((nRecord != CHAR) && (bOpenString))
+ {
+ bOpenString=FALSE;
+ if ((rRet.Len() - nTextStart) > 1)
+ {
+ rRet.InsertAscii(" ital \"",nTextStart);
+ rRet += '\"';
+ }
+ }
+
+ switch(nRecord)
+ {
+ case LINE:
+ {
+ //if (xfLMOVE(nTag))
+ //if (xfLSPACE(nTag))
+ //if (xfRULER(nTag))
+
+ if (newline>0)
+ APPEND(rRet,"\nnewline\n");
+ if (!(xfNULL(nTag)))
+ {
+ switch (nSelector)
+ {
+ case 0x0:
+ if (nVariation==0)
+ APPEND(rRet," langle ");
+ else if (nVariation==1)
+ APPEND(rRet," \\langle ");
+ break;
+ case 0x1:
+ if (nVariation==0)
+ APPEND(rRet," left (");
+ else if (nVariation==1)
+ APPEND(rRet,"\\(");
+ break;
+ case 0x2:
+ if (nVariation==0)
+ APPEND(rRet," lbrace ");
+ else if (nVariation==1)
+ APPEND(rRet," \\lbrace ");
+ break;
+ case 0x3:
+ if (nVariation==0)
+ APPEND(rRet," left [");
+ else if (nVariation==1)
+ APPEND(rRet,"\\[");
+ break;
+ case 0x8:
+ case 0xb:
+ APPEND(rRet," \\[");
+ break;
+ case 0x4:
+ if (nVariation==0)
+ APPEND(rRet," lline ");
+ else if (nVariation==1)
+ APPEND(rRet," \\lline ");
+ break;
+ case 0x5:
+ if (nVariation==0)
+ APPEND(rRet," ldline ");
+ else if (nVariation==1)
+ APPEND(rRet," \\ldline ");
+ break;
+ case 0x6:
+ if (nVariation==0)
+ APPEND(rRet," lfloor ");
+ else if (nVariation==1)
+ APPEND(rRet," \\lfloor ");
+ break;
+ case 0x7:
+ if (nVariation==0)
+ APPEND(rRet," lceil ");
+ else if (nVariation==1)
+ APPEND(rRet," \\lceil ");
+ break;
+ case 0x9:
+ case 0xa:
+ APPEND(rRet," \\]");
+ break;
+ case 0xc:
+ APPEND(rRet," \\(");
+ break;
+ case 0xd:
+ if (nPart == 0)
+ {
+ if (nVariation == 0)
+ APPEND(rRet," sqrt");
+ else
+ {
+ APPEND(rRet," nroot");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ APPEND(rRet," {");
+ break;
+ case 0xe:
+ if (nPart == 0)
+ APPEND(rRet," { ");
+
+
+ if (nPart == 1)
+ APPEND(rRet," over ");
+ APPEND(rRet," {");
+ break;
+ case 0xf:
+ if ((nVariation == 0) ||
+ ((nVariation == 2) && (nPart==1)))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) ||
+ ((nVariation == 2) && (nPart==0)))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x10:
+ if (nVariation == 0)
+ APPEND(rRet," underline ");
+ else if (nVariation == 1)
+ APPEND(rRet," underline underline ");
+ APPEND(rRet," {");
+ break;
+ case 0x11:
+ if (nVariation == 0)
+ APPEND(rRet," overline ");
+ else if (nVariation == 1)
+ APPEND(rRet," overline overline ");
+ APPEND(rRet," {");
+ break;
+ case 0x12:
+ if (nPart == 0)
+ {
+ if (nVariation == 0)
+ APPEND(rRet," widevec ");//left arrow above
+ else if (nVariation == 1)
+ APPEND(rRet," widevec ");//left arrow below
+ APPEND(rRet," {");
+ }
+ break;
+ case 0x13:
+ if (nPart == 0)
+ {
+ if (nVariation == 0)
+ APPEND(rRet," widevec ");//right arrow above
+ else if (nVariation == 1)
+ APPEND(rRet," widevec ");//right arrow below
+ APPEND(rRet," {");
+ }
+ break;
+ case 0x14:
+ if (nPart == 0)
+ {
+ if (nVariation == 0)
+ APPEND(rRet," widevec ");//double arrow above
+ else if (nVariation == 1)
+ APPEND(rRet," widevec ");//double arrow below
+ APPEND(rRet," {");
+ }
+ break;
+ case 0x15:
+ if (nPart == 0)
+ {
+ if ((nVariation == 3) || (nVariation == 4))
+ APPEND(rRet," lInt");
+ else
+ APPEND(rRet," Int");
+ if ( (nVariation != 0) && (nVariation != 3))
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if (((nVariation == 1) ||
+ (nVariation == 4)) && (nPart==1))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 2) && (nPart==2))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 2) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x16:
+ if (nPart == 0)
+ {
+ if ((nVariation == 2) || (nVariation == 3))
+ APPEND(rRet," llInt");
+ else
+ APPEND(rRet," iInt");
+ if ( (nVariation != 0) && (nVariation != 2))
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if (((nVariation == 1) ||
+ (nVariation == 3)) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x17:
+ if (nPart == 0)
+ {
+ if ((nVariation == 2) || (nVariation == 3))
+ APPEND(rRet," lllInt");
+ else
+ APPEND(rRet," iiInt");
+ if ( (nVariation != 0) && (nVariation != 2))
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if (((nVariation == 1) ||
+ (nVariation == 3)) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x18:
+ if (nPart == 0)
+ {
+ if (nVariation == 2)
+ APPEND(rRet," lInt");
+ else
+ APPEND(rRet," Int");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if (((nVariation == 1) ||
+ (nVariation == 2)) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 0) && (nPart==2))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x19:
+ if (nPart == 0)
+ {
+ if (nVariation == 0)
+ APPEND(rRet," llInt");
+ else
+ APPEND(rRet," iInt");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if (nPart==1)
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x1a:
+ if (nPart == 0)
+ {
+ if (nVariation == 0)
+ APPEND(rRet," lllInt");
+ else
+ APPEND(rRet," iiInt");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if (nPart==1)
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x1b:
+ case 0x1c:
+ APPEND(rRet," {");
+ break;
+ case 0x1d:
+ if (nPart == 0)
+ {
+ APPEND(rRet," Sum");
+ if (nVariation != 2)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x1e:
+ if (nPart == 0)
+ {
+ APPEND(rRet," Sum");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x1f:
+ if (nPart == 0)
+ {
+ APPEND(rRet," Prod");
+ if (nVariation != 2)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x20:
+ if (nPart == 0)
+ {
+ APPEND(rRet," Prod");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x21:
+ if (nPart == 0)
+ {
+ APPEND(rRet," coProd");
+ if (nVariation != 2)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x22:
+ if (nPart == 0)
+ {
+ APPEND(rRet," coProd");
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x23:
+ if (nPart == 0)
+ {
+ APPEND(rRet," union"); //union
+ if (nVariation != 2)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x24:
+ if (nPart == 0)
+ {
+ APPEND(rRet," union"); //union
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x25:
+ if (nPart == 0)
+ {
+ APPEND(rRet," intersect"); //intersect
+ if (nVariation != 2)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x26:
+ if (nPart == 0)
+ {
+ APPEND(rRet," intersect"); //intersect
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 1) && (nPart==2))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x27:
+ if ((nVariation == 0) && (nPart==1))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 2) && (nPart==1))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 2) && (nPart==2))
+ APPEND(rRet," cSup");
+ APPEND(rRet," {");
+ break;
+ case 0x28:
+ if (nVariation == 0)
+ {
+ if (nPart == 0)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ }
+ APPEND(rRet," {");
+ if (nVariation == 0)
+ {
+ if (nPart == 1)
+ APPEND(rRet,"alignr ");
+ }
+ if (nPart == 0)
+ APPEND(rRet,"\\lline ");
+ if (nVariation == 1)
+ APPEND(rRet,"overline ");
+ break;
+ case 0x29:
+ APPEND(rRet," {");
+ break;
+ case 0x2a:
+ if (nPart == 0)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==0))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 2) && (nPart==1))
+ APPEND(rRet," rSup");
+ else if ((nVariation == 1) && (nPart==0))
+ APPEND(rRet," rSub");
+ else if ((nVariation == 2) && (nPart==0))
+ APPEND(rRet," rSub");
+ APPEND(rRet," {");
+ break;
+ case 0x2b:
+ if (nPart == 0)
+ {
+ sPush = rRet;
+ rRet.Erase();
+ }
+ if ((nVariation == 0) && (nPart==0))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 2) && (nPart==1))
+ APPEND(rRet," cSup");
+ else if ((nVariation == 1) && (nPart==0))
+ APPEND(rRet," cSub");
+ else if ((nVariation == 2) && (nPart==0))
+ APPEND(rRet," cSub");
+ APPEND(rRet," {");
+ break;
+ case 0x2c:
+ if (nPart == 0)
+ APPEND(rRet,"\"\"");
+ if ((nVariation == 0)
+ || ((nVariation == 2) && (nPart==1)))
+ APPEND(rRet," lSup");
+ else if ((nVariation == 1)
+ || ((nVariation == 2) && (nPart==0)))
+ APPEND(rRet," lSub");
+ APPEND(rRet," {");
+ break;
+ case 0x2d:
+ if (nVariation==0)
+ {
+ if (nPart == 0)
+ APPEND(rRet," langle ");
+ }
+ else if (nVariation==1)
+ {
+ APPEND(rRet," \\langle ");
+ newline--;
+ }
+ else if (nVariation==2)
+ {
+ APPEND(rRet," \\lline ");
+ newline--;
+ }
+ break;
+ case 0x2e:
+ if (nVariation == 0)
+ APPEND(rRet," widevec ");//left below
+ else if (nVariation == 1)
+ APPEND(rRet," widevec ");//right below
+ else if (nVariation == 2)
+ APPEND(rRet," widevec ");//double headed below
+ APPEND(rRet," {");
+ break;
+ case 0x2f:
+ if (nVariation == 0)
+ APPEND(rRet," widevec ");//left above
+ else if (nVariation == 1)
+ APPEND(rRet," widevec ");//right above
+ else if (nVariation == 2)
+ APPEND(rRet," widevec ");//double headed above
+ APPEND(rRet," {");
+ break;
+ default:
+ break;
+ }
+ int nOldCurSize=nCurSize;
+ HandleSize(nLSize,nDSize,nSetSize);
+ nRet = HandleRecords(nLevel+1,nSelector,nVariation);
+ while (nSetSize)
+ {
+ APPEND(rRet,"} ");
+ nSetSize--;
+ nCurSize=nOldCurSize;
+ }
+
+
+ HandleMatrixSeperator(nMatrixRows,nMatrixCols,
+ nCurCol,nCurRow);
+
+ switch (nSelector)
+ {
+ case 0x0:
+ if (nVariation==0)
+ APPEND(rRet," rangle ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rangle ");
+ break;
+ case 0x1:
+ if (nVariation==0)
+ APPEND(rRet," right )");
+ else if (nVariation==2)
+ APPEND(rRet,"\\)");
+ break;
+ case 0x2:
+ if (nVariation==0)
+ APPEND(rRet," rbrace ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rbrace ");
+ break;
+ case 0x3:
+ if (nVariation==0)
+ APPEND(rRet," right ]");
+ else if (nVariation==2)
+ APPEND(rRet,"\\]");
+ break;
+ case 0x4:
+ if (nVariation==0)
+ APPEND(rRet," rline ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rline ");
+ break;
+ case 0x5:
+ if (nVariation==0)
+ APPEND(rRet," rdline ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rdline ");
+ break;
+ case 0x6:
+ if (nVariation==0)
+ APPEND(rRet," rfloor ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rfloor ");
+ break;
+ case 0x7:
+ if (nVariation==0)
+ APPEND(rRet," rceil ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rceil ");
+ break;
+ case 0x8:
+ case 0xa:
+ APPEND(rRet,"\\[");
+ break;
+ case 0x9:
+ case 0xc:
+ APPEND(rRet,"\\]");
+ break;
+ case 0xd:
+ APPEND(rRet,"} ");
+ if (nVariation == 1)
+ {
+ if (nPart == 0)
+ {
+ newline--;
+ sMainTerm = rRet;
+ rRet.Erase();
+ }
+ else
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ }
+ }
+ else
+ {
+ if (nPart == 0)
+ newline--;
+ }
+ nPart++;
+ break;
+ case 0xb:
+ APPEND(rRet,"\\)");
+ break;
+ case 0xe:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ newline--;
+ else
+ APPEND(rRet,"} ");
+ nPart++;
+ break;
+ case 0xf:
+ case 0x2c:
+ if ((nPart == 0) &&
+ ((nVariation == 2) || (nVariation == 1)))
+ newline--;
+ APPEND(rRet,"} ");
+ nPart++;
+ break;
+ case 0x10:
+ case 0x11:
+ case 0x2e:
+ case 0x2f:
+ APPEND(rRet,"} ");
+ break;
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ if (nPart == 0)
+ {
+ newline--;
+ APPEND(rRet,"} ");
+ }
+ nPart++;
+ break;
+ case 0x1b:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ newline--;
+ APPEND(rRet,"overbrace");
+ }
+ nPart++;
+ break;
+ case 0x1c:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ newline--;
+ APPEND(rRet,"underbrace");
+ }
+ nPart++;
+ break;
+ case 0x27:
+ if (nPart==0)
+ newline--;
+ else if ((nPart==1) &&
+ ((nVariation == 2) || (nVariation == 1)))
+ newline--;
+ APPEND(rRet,"} ");
+ nPart++;
+ break;
+ case 0x28:
+ APPEND(rRet,"} ");
+ if (nVariation == 0)
+ {
+ if (nPart == 0)
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ }
+ else
+ {
+ sPush += rRet;
+ rRet = sPush;
+ APPEND(rRet," over ");
+ rRet += sMainTerm;
+ }
+ }
+ if (nPart == 0)
+ newline--;
+ nPart++;
+ break;
+ case 0x29:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ newline--;
+ switch (nVariation)
+ {
+ case 1:
+ APPEND(rRet,"slash");
+ break;
+ default:
+ APPEND(rRet,"wideslash");
+ break;
+ }
+ }
+ nPart++;
+ break;
+ case 0x1d:
+ case 0x1e:
+ case 0x1f:
+ case 0x20:
+ case 0x21:
+ case 0x22:
+ case 0x23:
+ case 0x24:
+ case 0x25:
+ case 0x26:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ if (nVariation != 2)
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ }
+ newline--;
+ }
+ else if ((nPart == 1) && (nVariation == 0))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ else if ((nPart == 1) && (nVariation == 1))
+ newline--;
+ else if ((nPart == 2) && (nVariation == 1))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ nPart++;
+ break;
+ case 0x15:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ if ((nVariation != 0) && (nVariation != 3))
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ }
+ newline--;
+ }
+ else if ((nPart == 1) &&
+ ((nVariation == 1) || (nVariation==4)))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ else if ((nPart == 1) && (nVariation == 2))
+ newline--;
+ else if ((nPart == 2) && (nVariation == 2))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ nPart++;
+ break;
+ case 0x16:
+ case 0x17:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ if ((nVariation != 0) && (nVariation != 2))
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ }
+ newline--;
+ }
+ else if ((nPart == 1) &&
+ ((nVariation == 1) || (nVariation==3)))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ nPart++;
+ break;
+ case 0x18:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ newline--;
+ }
+ else if ((nPart == 1) &&
+ ((nVariation == 1) || (nVariation==2)))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ else if ((nPart == 1) && (nVariation == 0))
+ newline--;
+ else if ((nPart == 2) && (nVariation == 0))
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ nPart++;
+ break;
+ case 0x19:
+ case 0x1a:
+ APPEND(rRet,"} ");
+ if (nPart == 0)
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ newline--;
+ }
+ else if (nPart == 1)
+ {
+ sPush += rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ newline--;
+ }
+ nPart++;
+ break;
+ case 0x2a:
+ case 0x2b:
+ APPEND(rRet,"} ");
+
+ if ((nPart == 0) &&
+ ((nVariation == 0) || (nVariation == 1)))
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ newline--;
+ }
+ else if ((nPart == 0) && (nVariation == 2))
+ newline--;
+ else if ((nPart == 1) && (nVariation == 2))
+ {
+ sMainTerm = rRet;
+ rRet.Erase();
+ newline--;
+ }
+ else if ((nPart == 2) || (((nPart == 1) &&
+ (nVariation == 0) || (nVariation == 1))))
+ {
+ sPush+=rRet;
+ rRet = sPush;
+ rRet += sMainTerm;
+ }
+ nPart++;
+ break;
+ case 0x2d:
+ if (nVariation==0)
+ {
+ if (nPart == 0)
+ {
+ newline--; //there is another term to arrive
+ APPEND(rRet," mline ");
+ }
+ else
+ APPEND(rRet," rangle ");
+ }
+ else if (nVariation==1)
+ APPEND(rRet," \\lline ");
+ else if (nVariation==2)
+ APPEND(rRet," \\rangle ");
+ nPart++;
+ break;
+ default:
+ break;
+ }
+ bSilent = TRUE; //Skip the optional brackets and/or
+ //symbols that follow some of these
+ //records. Foo Data.
+
+ /*In matrices and piles we cannot seperate equation
+ *lines with the newline keyword*/
+ if (nMatrixCols==0)
+ newline++;
+ }
+ }
+ break;
+ case CHAR:
+ nRet = HandleChar(nTextStart,nSetSize,nLevel,nTag,nSelector,
+ nVariation,bSilent);
+ break;
+ case TMPL:
+ nRet = HandleTemplate(nLevel,nSelector,nVariation);
+ break;
+ case PILE:
+ nRet = HandlePile(nSetAlign,nLevel,nSelector,nVariation);
+ HandleMatrixSeperator(nMatrixRows,nMatrixCols,nCurCol,nCurRow);
+ break;
+ case MATRIX:
+ nRet = HandleMatrix(nLevel,nSelector,nVariation);
+ HandleMatrixSeperator(nMatrixRows,nMatrixCols,nCurCol,nCurRow);
+ break;
+ case EMBEL:
+ HandleEmblishments();
+ break;
+ case RULER:
+ *pS >> nTabStops;
+ for (i=0;i<nTabStops;i++)
+ {
+ *pS >> nTabType;
+ *pS >> nTabOffset;
+ }
+ DBG_ASSERT(FALSE,"Not seen in the wild Equation Ruler Field")
+ break;
+ case FONT:
+ *pS >> nTface;
+ *pS >> nStyle;
+ sFontName.Erase();
+ do
+ {
+ *pS >> nChar8;
+ sFontName.Append(ByteString::ConvertToUnicode(
+ nChar8,RTL_TEXTENCODING_MS_1252));
+ }
+ while(nChar8);
+ break;
+ case SIZE:
+ HandleSetSize();
+ break;
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ nLSize=nRecord-10;
+ break;
+ case END:
+ default:
+ break;
+ }
+ }
+ while (nRecord != END);
+ while (nSetSize)
+ {
+ rRet += '}';
+ nSetSize--;
+ }
+ return nRet;
+}
+
+/*Simply determine if we are at the end of a record or the end of a line,
+ *with fiddley logic to see if we are in a matrix or a pile or neither
+
+ Note we cannot tell until after the event that this is the last entry
+ of a pile, so we must strip the last seperator of a pile after this
+ is detected in the PILE handler
+ */
+void MathType::HandleMatrixSeperator(int nMatrixRows,int nMatrixCols,
+ int &rCurCol,int &rCurRow)
+{
+ if (nMatrixRows!=0)
+ {
+ if (rCurCol == nMatrixCols-1)
+ {
+ if (rCurRow != nMatrixRows-1)
+ APPEND(rRet," {} ##\n");
+ if (nMatrixRows!=-1)
+ {
+ rCurCol=0;
+ rCurRow++;
+ }
+ }
+ else
+ {
+ APPEND(rRet," {} # ");
+ if (nMatrixRows!=-1)
+ rCurCol++;
+ else
+ rRet += '\n';
+ }
+ }
+}
+
+/* set the alignment of the following term, but starmath currently
+ * cannot handle vertical alignment */
+void MathType::HandleAlign(BYTE nHAlign,BYTE nVAlign,int &rSetAlign)
+{
+ switch(nHAlign)
+ {
+ case 1:
+ default:
+ APPEND(rRet,"alignl {");
+ break;
+ case 2:
+ APPEND(rRet,"alignc {");
+ break;
+ case 3:
+ APPEND(rRet,"alignr {");
+ break;
+ }
+#if 0
+ switch(nVAlign)
+ {
+ }
+ rSetAlign+=2;
+#endif
+ rSetAlign++;
+}
+
+/* set size of text, complexity due to overuse of signedness as a flag
+ * indicator by mathtype file format*/
+BOOL MathType::HandleSize(INT16 nLSize,INT16 nDSize, int &rSetSize)
+{
+ BOOL bRet=FALSE;
+ if (nLSize < 0)
+ {
+ if ((-nLSize/32 != nDefaultSize) && (-nLSize/32 != nCurSize))
+ {
+ if (rSetSize)
+ {
+ rSetSize--;
+ rRet += '}';
+ bRet=TRUE;
+ }
+ if (-nLSize/32 != nLastSize)
+ {
+ nLastSize = nCurSize;
+ APPEND(rRet," size ");
+ rRet += String::CreateFromInt32(-nLSize/32);
+ rRet += '{';
+ bRet=TRUE;
+ rSetSize++;
+ }
+ nCurSize = -nLSize/32;
+ }
+ }
+ else
+ {
+ /*sizetable should theoreticaly be filled with the default sizes
+ *of the various font groupings matching starmaths equivalents
+ in aTypeFaces, and a test would be done to see if the new font
+ size would be the same as what starmath would have chosen for
+ itself anyway in which case the size setting could be ignored*/
+ nLSize = aSizeTable[nLSize];
+ nLSize += nDSize;
+ //if (nLSize != nDefaultSize)
+ if (nLSize != nCurSize)
+ {
+ if (rSetSize)
+ {
+ rSetSize--;
+ rRet += '}';
+ bRet=TRUE;
+ }
+ if (nLSize != nLastSize)
+ {
+ nLastSize = nCurSize;
+ APPEND(rRet," size ");
+ rRet += String::CreateFromInt32(nLSize);
+ rRet += '{';
+ bRet=TRUE;
+ rSetSize++;
+ }
+ nCurSize = nLSize;
+ }
+ }
+ return bRet;
+}
+
+int MathType::ConvertFromStarMath(SvStorage *pStor)
+{
+ if (!pTree)
+ return 0;
+
+ SvGlobalName aGName(0x0002ce02L, 0x0000, 0x0000,0xc0,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x46 );
+ pStor->SetClass( aGName, 0, C2S("Microsoft Equation 3.0"));
+
+ static BYTE __READONLY_DATA aCompObj[] = {
+ 0x01, 0x00, 0xFE, 0xFF, 0x03, 0x0A, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0xCE, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x46, 0x17, 0x00, 0x00, 0x00,
+ 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66,
+ 0x74, 0x20, 0x45, 0x71, 0x75, 0x61, 0x74, 0x69,
+ 0x6F, 0x6E, 0x20, 0x33, 0x2E, 0x30, 0x00, 0x0C,
+ 0x00, 0x00, 0x00, 0x44, 0x53, 0x20, 0x45, 0x71,
+ 0x75, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x0B,
+ 0x00, 0x00, 0x00, 0x45, 0x71, 0x75, 0x61, 0x74,
+ 0x69, 0x6F, 0x6E, 0x2E, 0x33, 0x00, 0xF4, 0x39,
+ 0xB2, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+ SvStorageStreamRef xStor( pStor->OpenStream( C2S("\1CompObj")));
+ xStor->Write(aCompObj,sizeof(aCompObj));
+
+ static BYTE __READONLY_DATA aOle[] = {
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00
+ };
+ SvStorageStreamRef xStor2( pStor->OpenStream( C2S("\1Ole")));
+ xStor2->Write(aOle,sizeof(aOle));
+ xStor.Clear();
+ xStor2.Clear();
+
+ SvStorageStreamRef xSrc = pStor->OpenStream(C2S("Equation Native"));
+ if ( (!xSrc.Is()) || (SVSTREAM_OK != xSrc->GetError()))
+ return NULL;
+
+ pS = &xSrc;
+ pS->SetNumberFormatInt( NUMBERFORMAT_INT_LITTLEENDIAN );
+
+ pS->SeekRel(EQNOLEFILEHDR_SIZE); //Skip 28byte Header and fill it in later
+ *pS << BYTE(0x03);
+ *pS << BYTE(0x01);
+ *pS << BYTE(0x01);
+ *pS << BYTE(0x03);
+ *pS << BYTE(0x00);
+ UINT32 nSize = pS->Tell();
+ nPendingAttributes=0;
+
+ HandleNodes(pTree);
+ *pS << BYTE(END);
+
+ nSize = pS->Tell()-nSize;
+ pS->Seek(0);
+ EQNOLEFILEHDR aHdr(nSize+4+1);
+ aHdr.Write(pS);
+ return 1;
+}
+
+
+BYTE MathType::HandleNodes(SmNode *pNode,int nLevel)
+{
+ BOOL bRet=FALSE;
+ switch(pNode->GetType())
+ {
+ case NATTRIBUT:
+ HandleAttributes(pNode,nLevel);
+ break;
+ case NTEXT:
+ HandleText(pNode,nLevel);
+ break;
+ case NVERTICAL_BRACE:
+ HandleVerticalBrace(pNode,nLevel);
+ break;
+ case NBRACE:
+ HandleBrace(pNode,nLevel);
+ break;
+ case NOPER:
+ HandleOperator(pNode,nLevel);
+ break;
+ case NBINVER:
+ HandleFractions(pNode,nLevel);
+ break;
+ case NROOT:
+ HandleRoot(pNode,nLevel);
+ break;
+ case NSPECIAL:
+ {
+ SmTextNode *pText=(SmTextNode *)pNode;
+ //if the token str and the result text are the same then this
+ //is to be seen as text, else assume its a mathchar
+ if (pText->GetText() == pText->GetToken().aText)
+ HandleText(pText,nLevel);
+ else
+ HandleMath(pText,nLevel);
+ }
+ break;
+ case NMATH:
+ HandleMath(pNode,nLevel);
+ break;
+ case NSUBSUP:
+ HandleSubSupScript(pNode,nLevel);
+ break;
+ case NEXPRESSION:
+ {
+ USHORT nSize = pNode->GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (SmNode *pTemp = pNode->GetSubNode(i))
+ HandleNodes(pTemp,nLevel+1);
+ }
+ break;
+ case NTABLE:
+ //Root Node, PILE equivalent, i.e. vertical stack
+ HandleTable(pNode,nLevel);
+ break;
+ case NMATRIX:
+ HandleSmMatrix((SmMatrixNode *)pNode,nLevel);
+ break;
+ case NLINE:
+ {
+ *pS << BYTE(0x0a);
+ *pS << BYTE(LINE);
+ USHORT nSize = pNode->GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (SmNode *pTemp = pNode->GetSubNode(i))
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+ }
+ break;
+ case NALIGN:
+ HandleMAlign(pNode,nLevel);
+ break;
+ case NBLANK:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x98);
+ if (pNode->GetToken().eType == TSBLANK)
+ *pS << USHORT(0xEB04);
+ else
+ *pS << USHORT(0xEB05);
+ break;
+
+ break;
+ default:
+ {
+ USHORT nSize = pNode->GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (SmNode *pTemp = pNode->GetSubNode(i))
+ HandleNodes(pTemp,nLevel+1);
+ }
+ break;
+ }
+ return bRet;
+}
+
+
+int MathType::StartTemplate(UINT16 nSelector,UINT16 nVariation)
+{
+ int nOldPending=nPendingAttributes;
+ *pS << BYTE(TMPL); //Template
+ *pS << BYTE(nSelector); //selector
+ *pS << BYTE(nVariation); //variation
+ *pS << BYTE(0x00); //options
+ *pS << BYTE(LINE);
+ //theres just no way we can now handle any character
+ //attributes (from mathtypes perspective) centered
+ //over an expression but above template attribute
+ //such as widevec and similiar constructs
+ //we have to drop them
+ nPendingAttributes=0;
+ return nOldPending;
+}
+
+void MathType::EndTemplate(int nOldPendingAttributes)
+{
+ *pS << BYTE(END); //end line
+ *pS << BYTE(END); //end template
+ nPendingAttributes=nOldPendingAttributes;
+}
+
+
+void MathType::HandleSmMatrix(SmMatrixNode *pMatrix,int nLevel)
+{
+ *pS << BYTE(MATRIX);
+ *pS << BYTE(0x00); //vAlign ?
+ *pS << BYTE(0x00); //h_just
+ *pS << BYTE(0x00); //v_just
+ *pS << BYTE(pMatrix->GetNumRows()); //v_just
+ *pS << BYTE(pMatrix->GetNumCols()); //v_just
+ int nBytes=(pMatrix->GetNumRows()+1)*2/8;
+ if (((pMatrix->GetNumRows()+1)*2)%8)
+ nBytes++;
+ for (USHORT j = 0; j < nBytes; j++)
+ *pS << BYTE(0x00); //row_parts
+ nBytes=(pMatrix->GetNumCols()+1)*2/8;
+ if (((pMatrix->GetNumCols()+1)*2)%8)
+ nBytes++;
+ for (USHORT k = 0; k < nBytes; k++)
+ *pS << BYTE(0x00); //col_parts
+ USHORT nSize = pMatrix->GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (SmNode *pTemp = pMatrix->GetSubNode(i))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //end line
+ }
+ *pS << BYTE(END);
+}
+
+
+//Root Node, PILE equivalent, i.e. vertical stack
+void MathType::HandleTable(SmNode *pNode,int nLevel)
+{
+ USHORT nSize = pNode->GetNumSubNodes();
+ //The root of the starmath is a table, if
+ //we convert this them each iteration of
+ //conversion from starmath to mathtype will
+ //add an extra unnecessary level to the
+ //mathtype output stack which would grow
+ //without bound in a multi step conversion
+
+ if (nLevel == 0)
+ *pS << BYTE(0x0A); //initial size
+
+ if ( nLevel || (nSize >1))
+ {
+ *pS << BYTE(PILE);
+ *pS << BYTE(nHAlign); //vAlign ?
+ *pS << BYTE(0x01); //hAlign
+ }
+
+ for (USHORT i = 0; i < nSize; i++)
+ if (SmNode *pTemp = pNode->GetSubNode(i))
+ {
+ *pS << BYTE(LINE);
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+ }
+ if (nLevel || (nSize>1))
+ *pS << BYTE(END);
+}
+
+
+void MathType::HandleRoot(SmNode *pNode,int nLevel)
+{
+ USHORT nSize = pNode->GetNumSubNodes();
+ SmNode *pTemp;
+ *pS << BYTE(TMPL); //Template
+ *pS << BYTE(0x0D); //selector
+ if (pNode->GetSubNode(0))
+ *pS << BYTE(0x01); //variation
+ else
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+
+ /*
+ if (pTemp = pNode->GetSubNode(1))
+ HandleNodes(pTemp,nLevel+1);
+ */
+ if (pTemp = pNode->GetSubNode(2))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+ }
+
+ if (pTemp = pNode->GetSubNode(0))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+ }
+ else
+ *pS << BYTE(LINE|0x10); //dummy line
+
+
+
+ *pS << BYTE(END);
+}
+
+BYTE MathType::HandleCScript(SmNode *pNode,SmNode *pContent,int nLevel,ULONG *pPos,BOOL bTest)
+{
+ BYTE nVariation2=0xff;
+
+ if (bTest && pNode->GetSubNode(CSUP+1))
+ {
+ nVariation2=0;
+ if (pNode->GetSubNode(CSUB+1))
+ nVariation2=2;
+ }
+ else if (pNode->GetSubNode(CSUB+1))
+ nVariation2=1;
+
+ if (nVariation2!=0xff)
+ {
+ if (pPos)
+ *pPos = pS->Tell();
+ *pS << BYTE(TMPL); //Template
+ *pS << BYTE(0x2B); //selector
+ *pS << nVariation2;
+ *pS << BYTE(0x00); //options
+
+ if (pContent)
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pContent,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+
+ *pS << BYTE(0x0B);
+
+ SmNode *pTemp;
+ if (pTemp = pNode->GetSubNode(CSUB+1))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+ if (bTest && (pTemp = pNode->GetSubNode(CSUP+1)))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+ }
+ return nVariation2;
+}
+
+
+
+/*
+ Sub and Sup scripts and another problem area, StarMath
+ can have all possible options used at the same time, whereas
+ Mathtype cannot. The ordering of the nodes for each system
+ is quite different as well leading to some complexity
+ */
+void MathType::HandleSubSupScript(SmNode *pNode,int nLevel)
+{
+ USHORT nSize = pNode->GetNumSubNodes();
+ ULONG nRSUpos=0,nCSUpos=0;
+ SmNode *pTemp;
+
+
+ BYTE nVariation=0xff;
+ if (pNode->GetSubNode(LSUP+1))
+ {
+ nVariation=0;
+ if (pNode->GetSubNode(LSUB+1))
+ nVariation=2;
+ }
+ else if (pTemp = pNode->GetSubNode(LSUB+1))
+ nVariation=1;
+
+ if (nVariation!=0xff)
+ {
+ *pS << BYTE(TMPL); //Template
+ *pS << BYTE(0x2c); //selector
+ *pS << nVariation;
+ *pS << BYTE(0x00); //options
+ *pS << BYTE(0x0B);
+
+ if (pTemp = pNode->GetSubNode(LSUB+1))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+ if (pTemp = pNode->GetSubNode(LSUP+1))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+ *pS << BYTE(END);
+ nVariation=0xff;
+ }
+
+
+ BYTE nVariation2=HandleCScript(pNode,NULL,nLevel);
+
+ if (pTemp = pNode->GetSubNode(0))
+ {
+ *pS << BYTE(0x0A);
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+ }
+
+ if (nVariation2 != 0xff)
+ *pS << BYTE(END);
+
+ if (pNode->GetSubNode(RSUP+1))
+ {
+ nVariation=0;
+ if (pNode->GetSubNode(RSUB+1))
+ nVariation=2;
+ }
+ else if (pTemp = pNode->GetSubNode(RSUB+1))
+ nVariation=1;
+
+ if (nVariation!=0xff)
+ {
+ *pS << BYTE(TMPL); //Template
+ *pS << BYTE(0x0F); //selector
+ *pS << nVariation;
+ *pS << BYTE(0x00); //options
+ *pS << BYTE(0x0B);
+
+ if (pTemp = pNode->GetSubNode(RSUB+1))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+ if (pTemp = pNode->GetSubNode(RSUP+1))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //line
+ }
+ else
+ *pS << BYTE(LINE|0x10);
+ *pS << BYTE(END); //line
+ }
+
+ //After subscript mathtype will keep the size of
+ //normal text at the subscript size, sigh.
+ *pS << BYTE(0x0A);
+}
+
+
+void MathType::HandleFractions(SmNode *pNode,int nLevel)
+{
+ USHORT nSize = pNode->GetNumSubNodes();
+ SmNode *pTemp;
+ *pS << BYTE(TMPL); //Template
+ *pS << BYTE(0x0E); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+
+ *pS << BYTE(0x0A);
+ *pS << BYTE(LINE); //line
+ if (pTemp = pNode->GetSubNode(0))
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+
+ *pS << BYTE(0x0A);
+ *pS << BYTE(LINE); //line
+ if (pTemp = pNode->GetSubNode(2))
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END);
+
+ *pS << BYTE(END);
+}
+
+
+void MathType::HandleBrace(SmNode *pNode,int nLevel)
+{
+ USHORT nSize = pNode->GetNumSubNodes();
+ SmNode *pTemp;
+ SmNode *pLeft=pNode->GetSubNode(0);
+ SmNode *pRight=pNode->GetSubNode(2);
+
+ *pS << BYTE(TMPL); //Template
+ bReInterpBrace=0;
+ BYTE nBSpec=0x10;
+ ULONG nLoc = pS->Tell();
+ if (pLeft)
+ {
+ switch (pLeft->GetToken().eType)
+ {
+ case TLANGLE:
+ *pS << BYTE(tmANGLE); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+ break;
+ case TLBRACE:
+ *pS << BYTE(tmBRACE); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+ nBSpec+=3;
+ break;
+ case TLBRACKET:
+ *pS << BYTE(tmBRACK); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+ nBSpec+=3;
+ break;
+ case TLLINE:
+ *pS << BYTE(tmBAR); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+ nBSpec+=3;
+ break;
+ case TLDLINE:
+ *pS << BYTE(tmDBAR); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+ break;
+ default:
+ *pS << BYTE(tmPAREN); //selector
+ *pS << BYTE(0x00); //variation
+ *pS << BYTE(0x00); //options
+ nBSpec+=3;
+ break;
+ }
+ }
+
+ if (pTemp = pNode->GetSubNode(1))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //options
+ }
+ nSpec=nBSpec;
+ if (pLeft)
+ HandleNodes(pLeft,nLevel+1);
+ if (bReInterpBrace)
+ {
+ ULONG nLoc2 = pS->Tell();
+ pS->Seek(nLoc);
+ *pS << BYTE(0x2D);
+ pS->Seek(nLoc2);
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x96);
+ *pS << USHORT(0xEC07);
+ bReInterpBrace=0;
+ }
+ if (pRight)
+ HandleNodes(pRight,nLevel+1);
+ nSpec=0x0;
+ *pS << BYTE(END);
+}
+
+
+void MathType::HandleVerticalBrace(SmNode *pNode,int nLevel)
+{
+ SmNode *pTemp;
+ *pS << BYTE(TMPL); //Template
+ if (pNode->GetToken().eType == TUNDERBRACE)
+ *pS << BYTE(tmLHBRACE); //selector
+ else
+ *pS << BYTE(tmUHBRACE); //selector
+ *pS << BYTE(0x01); //variation
+ *pS << BYTE(0x00); //options
+
+ if (pTemp = pNode->GetSubNode(0))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //options
+ }
+
+ if (pTemp = pNode->GetSubNode(2))
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pTemp,nLevel+1);
+ *pS << BYTE(END); //options
+ }
+ *pS << BYTE(END);
+}
+
+void MathType::HandleOperator(SmNode *pNode,int nLevel)
+{
+ USHORT nSize = pNode->GetNumSubNodes();
+
+ if (HandleLim(pNode,nLevel))
+ return;
+
+ ULONG nPos;
+ BYTE nVariation;
+
+ switch (pNode->GetToken().eType)
+ {
+ case TIINT:
+ case TIIINT:
+ case TLINT:
+ case TLLINT:
+ case TLLLINT:
+ nVariation=HandleCScript(pNode->GetSubNode(0),
+ pNode->GetSubNode(1),nLevel,&nPos,0);
+ break;
+ default:
+ nVariation=HandleCScript(pNode->GetSubNode(0),
+ pNode->GetSubNode(1),nLevel,&nPos);
+ break;
+ }
+
+ BYTE nOldVariation=nVariation;
+ BYTE nIntVariation=nVariation;
+
+ ULONG nPos2=0;
+ if (nVariation != 0xff)
+ {
+ nPos2 = pS->Tell();
+ pS->Seek(nPos);
+ if (nVariation == 2)
+ {
+ nIntVariation=0;
+ nVariation = 1;
+ }
+ else if (nVariation == 0)
+ nVariation = 1;
+ else if (nVariation == 1)
+ nVariation = 0;
+ }
+ else
+ {
+ nVariation = 2;
+ nIntVariation=0;
+ }
+ *pS << BYTE(TMPL);
+ switch(pNode->GetToken().eType)
+ {
+ case TINT:
+ if (nOldVariation != 0xff)
+ *pS << BYTE(0x18); //selector
+ else
+ *pS << BYTE(0x15); //selector
+ *pS << nIntVariation; //variation
+ break;
+ case TIINT:
+ if (nOldVariation != 0xff)
+ {
+ *pS << BYTE(0x19);
+ *pS << BYTE(0x01);
+ }
+ else
+ {
+ *pS << BYTE(0x16);
+ *pS << BYTE(0x00);
+ }
+ break;
+ case TIIINT:
+ if (nOldVariation != 0xff)
+ {
+ *pS << BYTE(0x1a);
+ *pS << BYTE(0x01);
+ }
+ else
+ {
+ *pS << BYTE(0x17);
+ *pS << BYTE(0x00);
+ }
+ break;
+ case TLINT:
+ if (nOldVariation != 0xff)
+ {
+ *pS << BYTE(0x18);
+ *pS << BYTE(0x02);
+ }
+ else
+ {
+ *pS << BYTE(0x15);
+ *pS << BYTE(0x03);
+ }
+ break;
+ case TLLINT:
+ if (nOldVariation != 0xff)
+ {
+ *pS << BYTE(0x19);
+ *pS << BYTE(0x00);
+ }
+ else
+ {
+ *pS << BYTE(0x16);
+ *pS << BYTE(0x02);
+ }
+ break;
+ case TLLLINT:
+ if (nOldVariation != 0xff)
+ {
+ *pS << BYTE(0x1a);
+ *pS << BYTE(0x00);
+ }
+ else
+ {
+ *pS << BYTE(0x17);
+ *pS << BYTE(0x02);
+ }
+ break;
+ case TSUM:
+ default:
+ *pS << BYTE(0x1d);
+ *pS << nVariation;
+ break;
+ case TPROD:
+ *pS << BYTE(0x1f);
+ *pS << nVariation;
+ break;
+ case TCOPROD:
+ *pS << BYTE(0x21);
+ *pS << nVariation;
+ break;
+ }
+ *pS << BYTE(0x00); //options
+
+ if (nPos2)
+ pS->Seek(nPos2);
+ else
+ {
+ *pS << BYTE(LINE); //line
+ HandleNodes(pNode->GetSubNode(1),nLevel+1);
+ *pS << BYTE(END); //line
+ *pS << BYTE(LINE|0x10);
+ *pS << BYTE(LINE|0x10);
+ }
+
+
+ *pS << BYTE(0x0D);
+ switch(pNode->GetToken().eType)
+ {
+ case TSUM:
+ default:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x86);
+ *pS << USHORT(0x2211);
+ break;
+ case TPROD:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x86);
+ *pS << USHORT(0x220F);
+ break;
+ case TCOPROD:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x8B);
+ *pS << USHORT(0x2210);
+ break;
+ case TIIINT:
+ case TLLLINT:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x86);
+ *pS << USHORT(0x222B);
+ case TIINT:
+ case TLLINT:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x86);
+ *pS << USHORT(0x222B);
+ case TINT:
+ case TLINT:
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x86);
+ *pS << USHORT(0x222B);
+ break;
+ }
+ *pS << BYTE(END);
+ *pS << BYTE(0x0A);
+}
+
+
+int MathType::HandlePile(int &rSetAlign,int nLevel,BYTE nSelector,
+ BYTE nVariation)
+{
+ //if (xfLMOVE(nTag))
+ *pS >> nHAlign;
+ *pS >> nVAlign;
+
+ HandleAlign(nHAlign,nVAlign,rSetAlign);
+
+ APPEND(rRet," stack {\n");
+ int nRet = HandleRecords(nLevel+1,nSelector,nVariation,-1,-1);
+ rRet.Erase(rRet.Len()-3,2);
+ APPEND(rRet,"} ");
+
+ while (rSetAlign)
+ {
+ APPEND(rRet,"} ");
+ rSetAlign--;
+ }
+ return nRet;
+}
+
+int MathType::HandleMatrix(int nLevel,BYTE nSelector,
+ BYTE nVariation)
+{
+ BYTE nH_just,nV_just;
+ int nRows,nCols;
+ //if (xfLMOVE(nTag))
+ *pS >> nVAlign;
+ *pS >> nH_just;
+ *pS >> nV_just;
+ *pS >> nRows;
+ *pS >> nCols;
+ int nBytes = ((nRows+1)*2)/8;
+ if (((nRows+1)*2)%8)
+ nBytes++;
+ pS->SeekRel(nBytes);
+ nBytes = ((nCols+1)*2)/8;
+ if (((nCols+1)*2)%8)
+ nBytes++;
+ pS->SeekRel(nBytes);
+ APPEND(rRet," matrix {\n");
+ int nRet = HandleRecords(nLevel+1,nSelector,nVariation,nRows,nCols);
+ APPEND(rRet,"\n} ");
+ return nRet;
+}
+
+int MathType::HandleTemplate(int nLevel,BYTE &rSelector,BYTE &rVariation)
+{
+ BYTE nOption; //This appears utterly unused
+ //if (xfLMOVE(nTag))
+ *pS >> rSelector;
+ *pS >> rVariation;
+ *pS >> nOption;
+ DBG_ASSERT(rSelector < 48,"Selector out of range")
+ if ((rSelector >= 21) && (rSelector <=26))
+ {
+ DBG_ASSERT(nOption < 2,"Option out of range");
+ }
+ else if ((rSelector >= 0) && (rSelector <=12))
+ {
+ DBG_ASSERT(nOption < 3,"Option out of range");
+ }
+ //suborderlist
+ int nRet = HandleRecords(nLevel+1,rSelector,rVariation);
+ rSelector = -1;
+ return nRet;
+}
+
+void MathType::HandleEmblishments()
+{
+ BYTE nEmbel;
+ //if (xfLMOVE(nTag))
+ do
+ {
+ *pS >> nEmbel;
+ switch (nEmbel)
+ {
+ case 0x02:
+ APPEND(rRet," dot ");
+ break;
+ case 0x03:
+ APPEND(rRet," ddot ");
+ break;
+ case 0x04:
+ APPEND(rRet," dddot ");
+ break;
+ case 0x05:
+ if (nPostSup == 0)
+ {
+ APPEND(sPost," sup {}");
+ nPostSup = sPost.Len();
+ }
+ sPost.InsertAscii(" ' ",nPostSup-1);
+ nPostSup += 3;
+ break;
+ case 0x06:
+ if (nPostSup == 0)
+ {
+ APPEND(sPost," sup {}");
+ nPostSup = sPost.Len();
+ }
+ sPost.InsertAscii(" '' ",nPostSup-1);
+ nPostSup += 4;
+ break;
+ case 0x07:
+ if (nPostlSup == 0)
+ {
+ APPEND(sPost," lsup {}");
+ nPostlSup = sPost.Len();
+ }
+ sPost.InsertAscii(" ' ",nPostlSup-1);
+ nPostlSup += 3;
+ break;
+ case 0x08:
+ APPEND(rRet," tilde ");
+ break;
+ case 0x09:
+ APPEND(rRet," hat ");
+ break;
+ case 0x0b:
+ APPEND(rRet," vec ");
+ break;
+ case 0x10:
+ APPEND(rRet," overstrike ");
+ break;
+ case 0x11:
+ APPEND(rRet," bar ");
+ break;
+ case 0x12:
+ if (nPostSup == 0)
+ {
+ APPEND(sPost," sup {}");
+ nPostSup = sPost.Len();
+ }
+ sPost.InsertAscii(" ''' ",nPostSup-1);
+ nPostSup += 5;
+ break;
+ case 0x14:
+ APPEND(rRet," breve ");
+ break;
+ default:
+ DBG_ASSERT(nEmbel < 21,"Embel out of range")
+ break;
+ }
+ }while (nEmbel);
+}
+
+void MathType::HandleSetSize()
+{
+ BYTE nTemp;
+ *pS >> nTemp;
+ switch (nTemp)
+ {
+ case 101:
+ *pS >> nLSize;
+ nLSize = -nLSize;
+ break;
+ case 100:
+ *pS >> nTemp;
+ nLSize = nTemp;
+ *pS >> nDSize;
+ break;
+ default:
+ nLSize = nTemp;
+ *pS >> nTemp;
+ nDSize = nTemp-128;
+ break;
+ }
+}
+
+int MathType::HandleChar(xub_StrLen &rTextStart,int &rSetSize,int nLevel,
+ BYTE nTag,BYTE nSelector,BYTE nVariation, BOOL bSilent)
+{
+ sal_Unicode nChar;
+ int nRet=1;
+
+ if (xfAUTO(nTag))
+ {
+ //This is a candidate for function recognition, whatever
+ //that is!
+ }
+ //if (xfLMODE(nTag))
+
+ *pS >> nTypeFace;
+ if (nVersion < 3)
+ {
+ BYTE nChar8;
+ *pS >> nChar8;
+ nChar = nChar8;
+ }
+ else
+ *pS >> nChar;
+
+ if (xfEMBELL(nTag))
+ {
+ //A bit tricky, the character emblishments for
+ //mathtype can all be listed after eachother, in
+ //starmath some must go before the character and some
+ //must go after. In addition some of the emblishments
+ //may repeated and in starmath some of these groups
+ //must be gathered together. sPost is the portion that
+ //follows the char and nPostSup and nPostlSup are the
+ //indexes at which this class of emblishment is
+ //collated together
+ sPost.Erase();
+ nPostSup = nPostlSup = 0;
+ int nOriglen=rRet.Len()-rTextStart;
+ if ((!bSilent) && ((nOriglen) > 1))
+ rRet += '\"';
+ nRet = HandleRecords(nLevel+1,nSelector,nVariation);
+ if (!bSilent)
+ {
+ if (nOriglen > 1)
+ {
+ rRet.InsertAscii(" ital \"",rTextStart);
+ APPEND(rRet," ital {");
+ }
+ else
+ APPEND(rRet," {");
+ }
+ }
+
+ if (!bSilent)
+ {
+ int nOldLen = rRet.Len();
+ //nLastSize = nCurSize;
+ if (HandleSize(nLSize,nDSize,rSetSize))
+ {
+ if ((nOldLen - rTextStart) > 1)
+ {
+ rRet.InsertAscii("\"",nOldLen);
+ rRet.InsertAscii(" ital \"",rTextStart);
+ }
+ rTextStart = rRet.Len();
+ }
+ nOldLen = rRet.Len();
+ if (!LookupChar(nChar))
+ {
+ if (nOldLen - rTextStart > 1)
+ {
+ rRet.InsertAscii("\"",nOldLen);
+ rRet.InsertAscii(" ital \"",rTextStart);
+ }
+ rTextStart = rRet.Len();
+ }
+ }
+
+ if ((xfEMBELL(nTag)) && (!bSilent))
+ {
+ rRet += '}';
+ rRet += sPost;
+ rTextStart = rRet.Len();
+ }
+ return nRet;
+}
+
+BOOL MathType::HandleLim(SmNode *pNode,int nLevel)
+{
+ BOOL bRet=0;
+ //Special case for the "lim" option in StarMath
+ if ((pNode->GetToken().eType == TLIM)
+ || (pNode->GetToken().eType == TLIMSUP)
+ || (pNode->GetToken().eType == TLIMINF)
+ )
+ {
+ if (pNode->GetSubNode(1))
+ {
+ BYTE nVariation2=HandleCScript(pNode->GetSubNode(0),NULL,nLevel);
+
+ *pS << BYTE(0x0A);
+ *pS << BYTE(LINE); //line
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('l');
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('i');
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('m');
+
+ if (pNode->GetToken().eType == TLIMSUP)
+ {
+ *pS << BYTE(CHAR); //some space
+ *pS << BYTE(0x98);
+ *pS << USHORT(0xEB04);
+
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('s');
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('u');
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('p');
+ }
+ else if (pNode->GetToken().eType == TLIMINF)
+ {
+ *pS << BYTE(CHAR); //some space
+ *pS << BYTE(0x98);
+ *pS << USHORT(0xEB04);
+
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('i');
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('n');
+ *pS << BYTE(CHAR|0x10);
+ *pS << BYTE(0x82);
+ *pS << USHORT('f');
+ }
+
+
+ *pS << BYTE(CHAR); //some space
+ *pS << BYTE(0x98);
+ *pS << USHORT(0xEB04);
+
+ if (nVariation2 != 0xff)
+ {
+ *pS << BYTE(END);
+ *pS << BYTE(END);
+ }
+ HandleNodes(pNode->GetSubNode(1),nLevel+1);
+ //*pS << BYTE(END); //options
+ bRet = 1;
+ }
+ }
+ return bRet;
+}
+
+void MathType::HandleMAlign(SmNode *pNode,int nLevel)
+{
+ BYTE nPushedHAlign=nHAlign;
+ switch(pNode->GetToken().eType)
+ {
+ case TALIGNC:
+ nHAlign=2;
+ break;
+ case TALIGNR:
+ nHAlign=3;
+ break;
+ default:
+ nHAlign=1;
+ break;
+ }
+ USHORT nSize = pNode->GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (SmNode *pTemp = pNode->GetSubNode(i))
+ HandleNodes(pTemp,nLevel+1);
+ nHAlign=nPushedHAlign;
+}
+
+void MathType::HandleMath(SmNode *pNode,int nLevel)
+{
+ if (pNode->GetToken().eType == TMLINE)
+ {
+ *pS << BYTE(END);
+ *pS << BYTE(LINE);
+ bReInterpBrace=1;
+ return;
+ }
+ SmMathSymbolNode *pTemp=(SmMathSymbolNode *)pNode;
+ for(int i=0;i<pTemp->GetText().Len();i++)
+ {
+ //Convert StarMath to Unicode. Provisional Table
+ //until unicode font designers come back with
+ //something complete
+
+ USHORT nArse = aMathTypeTable[pTemp->GetText().GetChar(i)&0x00FF];
+ if ((nArse == 0x2224) || (nArse == 0x2288) || (nArse == 0x2285) || (nArse == 0x2289))
+ *pS << BYTE(CHAR|0x20);
+ else
+ *pS << BYTE(CHAR); //char without formula recognition
+ //The typeface seems to be MTEXTRA for unicode characters,
+ //though how to determine when mathtype chooses one over
+ //the other is unknown. This should do the trick
+ //nevertheless.
+ BYTE nBias;
+ if ( (nArse == 0x2213) || (nArse == 0x2218) ||
+ (nArse == 0x210F) || (
+ (nArse >= 0x22EE) && (nArse <= 0x22FF)
+ ))
+ {
+ nBias = 0xB; //typeface
+ }
+ else if ((nArse > 0x2000) || (nArse == 0x00D7))
+ nBias = 0x6; //typeface
+ else if (nArse == 0x3d1)
+ nBias = 0x4;
+ else if ((nArse > 0xFF) && ((nArse < 0x393) || (nArse > 0x3c9)))
+ nBias = 0xB; //typeface
+ else if ((nArse == 0x2F) || (nArse == 0x2225))
+ nBias = 0x2; //typeface
+ else
+ nBias = 0x3; //typeface
+
+ *pS << BYTE(nSpec+nBias+128); //typeface
+
+ if (nArse == 0x2224)
+ {
+ *pS << USHORT(0x7C);
+ *pS << BYTE(EMBEL);
+ *pS << BYTE(0x0A);
+ *pS << BYTE(END); //end embel
+ *pS << BYTE(END); //end embel
+ }
+ else if (nArse == 0x2225)
+ *pS << USHORT(0xEC09);
+ else if (nArse == 0x226A)
+ {
+ *pS << USHORT(0x3C);
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x98);
+ *pS << USHORT(0xEB01);
+ *pS << BYTE(CHAR);
+ *pS << BYTE(0x86);
+ *pS << USHORT(0x3c);
+ }
+ else if (nArse == 0x2288)
+ {
+ *pS << USHORT(0x2286);
+ *pS << BYTE(EMBEL);
+ *pS << BYTE(0x0A);
+ *pS << BYTE(END); //end embel
+ *pS << BYTE(END); //end embel
+ }
+ else if (nArse == 0x2289)
+ {
+ *pS << USHORT(0x2287);
+ *pS << BYTE(EMBEL);
+ *pS << BYTE(0x0A);
+ *pS << BYTE(END); //end embel
+ *pS << BYTE(END); //end embel
+ }
+ else if (nArse == 0x2285)
+ {
+ *pS << USHORT(0x2283);
+ *pS << BYTE(EMBEL);
+ *pS << BYTE(0x0A);
+ *pS << BYTE(END); //end embel
+ *pS << BYTE(END); //end embel
+ }
+ else
+ {
+ //Convert StarMath to Unicode. Provisional Table
+ //until unicode font designers come back with
+ //something complete
+ *pS << nArse;
+ }
+
+ }
+}
+
+void MathType::HandleAttributes(SmNode *pNode,int nLevel)
+{
+ int nOldPending;
+ USHORT nSize = pNode->GetNumSubNodes();
+ SmNode *pTemp;
+ SmTextNode *pIsText;
+
+ //SmTextNode *pTemp=(SmTextNode *)pNode;
+ //for(int i=0;i<pTemp->GetText().Len();i++)
+
+ if (pTemp = pNode->GetSubNode(0))
+ {
+ pIsText = (SmTextNode *)pNode->GetSubNode(1);
+
+ switch (pTemp->GetToken().eType)
+ {
+ case TWIDEVEC:
+ //theres just no way we can now handle any character
+ //attributes (from mathtypes perspective) centered
+ //over an expression but above template attributes
+ //such as widevec and similiar constructs
+ //we have to drop them
+ nOldPending = StartTemplate(0x2f,0x01);
+ break;
+ case TCHECK: //Not Exportable
+ case TACUTE: //Not Exportable
+ case TGRAVE: //Not Exportable
+ case TCIRCLE: //Not Exportable
+ case TWIDETILDE: //Not Exportable
+ case TWIDEHAT: //Not Exportable
+ break;
+ case TUNDERLINE:
+ nOldPending = StartTemplate(0x10);
+ break;
+ case TOVERLINE: //If the next node is not text
+ //or text with more than one char
+ if ((pIsText->GetToken().eType != NTEXT) ||
+ (pIsText->GetText().Len() > 1))
+ nOldPending = StartTemplate(0x11);
+ break;
+ default:
+ nPendingAttributes++;
+ break;
+ }
+ }
+
+ if (pIsText)
+ HandleNodes(pIsText,nLevel+1);
+
+ switch (pTemp->GetToken().eType)
+ {
+ case TWIDEVEC:
+ case TUNDERLINE:
+ EndTemplate(nOldPending);
+ break;
+ case TOVERLINE:
+ if ((pIsText->GetToken().eType != NTEXT) ||
+ (pIsText->GetText().Len() > 1))
+ EndTemplate(nOldPending);
+ break;
+ default:
+ break;
+ }
+
+ //if there was no suitable place to put the attribute,
+ //then we have to just give up on it
+ if (nPendingAttributes)
+ nPendingAttributes--;
+ else
+ {
+ if ((nInsertion != 0) && (pTemp = pNode->GetSubNode(0)))
+ {
+ ULONG nPos = pS->Tell();
+ nInsertion--;
+ pS->Seek(nInsertion);
+ switch(pTemp->GetToken().eType)
+ {
+ case TACUTE: //Not Exportable
+ case TGRAVE: //Not Exportable
+ case TCIRCLE: //Not Exportable
+ break;
+ case TCDOT:
+ *pS << BYTE(2);
+ break;
+ case TDDOT:
+ *pS << BYTE(3);
+ break;
+ case TDDDOT:
+ *pS << BYTE(4);
+ break;
+ case TTILDE:
+ *pS << BYTE(8);
+ break;
+ case THAT:
+ *pS << BYTE(9);
+ break;
+ case TVEC:
+ *pS << BYTE(11);
+ break;
+ case TOVERSTRIKE:
+ *pS << BYTE(16);
+ break;
+ case TOVERLINE:
+ if ((pIsText->GetToken().eType == NTEXT) &&
+ (pIsText->GetText().Len() == 1))
+ *pS << BYTE(17);
+ break;
+ case TBREVE:
+ *pS << BYTE(20);
+ break;
+ case TWIDEVEC:
+ case TUNDERLINE:
+ case TWIDETILDE:
+ case TWIDEHAT:
+ break;
+ case TBAR:
+ *pS << BYTE(17);
+ break;
+ default:
+ *pS << BYTE(0x2);
+ break;
+ }
+ pS->Seek(nPos);
+ }
+ }
+}
+
+void MathType::HandleText(SmNode *pNode,int nLevel)
+{
+ SmTextNode *pTemp=(SmTextNode *)pNode;
+ for(int i=0;i<pTemp->GetText().Len();i++)
+ {
+ if ((nPendingAttributes) &&
+ (i == ((pTemp->GetText().Len()+1)/2)-1))
+ {
+ *pS << BYTE(0x22); //char, with attributes right
+ //after the character
+ }
+ else
+ *pS << BYTE(CHAR);
+ //*pS << BYTE(CHAR|0x10); //char with formula recognition
+
+ if ((pTemp->GetText().GetChar(i) >= '0') &&
+ (pTemp->GetText().GetChar(i) <= '9'))
+ *pS << BYTE(0x8+128); //typeface
+ else
+ *pS << BYTE(0x3+128); //typeface
+ *pS << USHORT(pTemp->GetText().GetChar(i));
+
+ //Mathtype can only have these sort of character
+ //attributes on a single character, starmath can put them
+ //anywhere, when the entity involved is a text run this is
+ //a large effort to place the character attribute on the
+ //central mathtype character so that it does pretty much
+ //what the user probably has in mind. The attributes
+ //filled in here are dummy ones which are replaced in the
+ //ATTRIBUT handler if a suitable location for the
+ //attributes was found here. Unfortunately it is
+ //possible for starmath to place character attributes on
+ //entities which cannot occur in mathtype e.g. a Summation
+ //symbol so these attributes may be lost
+ if ((nPendingAttributes) &&
+ (i == ((pTemp->GetText().Len()+1)/2)-1))
+ {
+ *pS << BYTE(EMBEL);
+ while (nPendingAttributes)
+ {
+ *pS << BYTE(2);
+ //wedge the attributes in here and clear
+ //the pending stack
+ nPendingAttributes--;
+ }
+ nInsertion=pS->Tell();
+ *pS << BYTE(END); //end embel
+ *pS << BYTE(END); //end embel
+ }
+ }
+}
+
diff --git a/starmath/source/mathtype.hxx b/starmath/source/mathtype.hxx
new file mode 100644
index 000000000000..a7cf86b1fdb2
--- /dev/null
+++ b/starmath/source/mathtype.hxx
@@ -0,0 +1,203 @@
+/*************************************************************************
+ *
+ * $RCSfile: mathtype.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef MATHTYPE_HXX
+#define MATHTYPE_HXX
+
+#ifndef NODE_HXX
+#include "node.hxx"
+#endif
+
+#ifndef _SVSTOR_HXX
+#include <so3/svstor.hxx>
+#endif
+
+#define EQNOLEFILEHDR_SIZE 28
+class EQNOLEFILEHDR
+{
+public:
+ EQNOLEFILEHDR() {}
+ EQNOLEFILEHDR(UINT32 nLenMTEF): nCBHdr(0x1c), nVersion(0x20000),
+ nCf(0xc1c6), nCBObject(nLenMTEF), nReserved1(0), nReserved2(0x0014F690),
+ nReserved3(0x0014EBB4), nReserved4(0) {}
+ UINT16 nCBHdr; // length of header, sizeof(EQNOLEFILEHDR) = 28 bytes
+ UINT32 nVersion; // hiword = 2, loword = 0
+ UINT16 nCf; // clipboard format ("MathType EF")
+ UINT32 nCBObject; // length of MTEF data following this header in bytes
+ UINT32 nReserved1; // not used
+ UINT32 nReserved2; // not used
+ UINT32 nReserved3; // not used
+ UINT32 nReserved4; // not used
+
+ void Read(SvStorageStream *pS);
+ void Write(SvStorageStream *pS);
+};
+
+class MathType
+{
+public:
+ MathType(String &rIn) : bSilent(FALSE),nDefaultSize(12),
+ nLSize(0),nDSize(0),nCurSize(0),nLastSize(0),nVAlign(0),nHAlign(0),rRet(rIn)
+ {
+ aSizeTable[0]=12;
+ aSizeTable[1]=8;
+ aSizeTable[2]=6;
+ aSizeTable[3]=24;
+ aSizeTable[4]=10;
+ aSizeTable[5]=12;
+ aSizeTable[6]=12;
+ }
+ MathType(String &rIn,SmNode *pIn) : bSilent(FALSE),nDefaultSize(12),
+ nLSize(0),nDSize(0),nCurSize(0),nLastSize(0),nVAlign(0),nHAlign(2),pTree(pIn),
+ rRet(rIn),nInsertion(0),nSpec(0)
+ {
+ aSizeTable[0]=12;
+ aSizeTable[1]=8;
+ aSizeTable[2]=6;
+ aSizeTable[3]=24;
+ aSizeTable[4]=10;
+ aSizeTable[5]=12;
+ aSizeTable[6]=12;
+ }
+ int Parse(SvStorage *pS);
+ int ConvertFromStarMath(SvStorage *pStor);
+private:
+/*Ver 2 Header*/
+ BYTE nVersion;
+ BYTE nPlatform;
+ BYTE nProduct;
+ BYTE nProdVersion;
+ BYTE nProdSubVersion;
+
+ SvStorageStream *pS;
+
+ int HandleRecords(int nLevel=0,BYTE nSelector=-1,
+ BYTE nVariation=-1,int nRows=0,int nCols=0);
+ BOOL LookupChar(sal_Unicode nChar);
+ BOOL HandleSize(INT16 nLSize,INT16 nDSize, int &rSetSize);
+ void HandleAlign(BYTE nHAlign,BYTE nVAlign, int &rSetAlign);
+ int HandlePile(int &rSetAlign,int nLevel,BYTE nSelector,BYTE nVariation);
+ int HandleMatrix(int nLevel,BYTE nSelector,BYTE nVariarion);
+ void HandleMatrixSeperator(int nMatrixRows,int nMatrixCols,
+ int &rCurCol,int &rCurRow);
+ int HandleTemplate(int nLevel,BYTE &rSelector,BYTE &rVariation);
+ void HandleEmblishments();
+ void HandleSetSize();
+ int HandleChar(xub_StrLen &rTextStart,int &rSetSize,int nLevel,BYTE nTag,
+ BYTE nSelector,BYTE nVariation,BOOL bSilent);
+ int xfLMOVE(BYTE nTest) {return nTest&0x80;}
+ int xfAUTO(BYTE nTest) {return nTest&0x10;}
+ int xfEMBELL(BYTE nTest) {return nTest&0x20;}
+ int xfNULL(BYTE nTest) {return nTest&0x10;}
+ int xfLSPACE(BYTE nTest) {return nTest&0x40;}
+ int xfRULER(BYTE nTest) {return nTest&0x20;}
+
+ BYTE HandleNodes(SmNode *pNode,int nLevel=0);
+ int StartTemplate(UINT16 nSelector,UINT16 nVariation=0);
+ void EndTemplate(int nOldPendingAttributes);
+ void HandleSmMatrix(SmMatrixNode *pMatrix,int nLevel);
+ void HandleTable(SmNode *pNode,int nLevel);
+ void HandleRoot(SmNode *pNode,int nLevel);
+ void HandleSubSupScript(SmNode *pNode,int nLevel);
+ BYTE HandleCScript(SmNode *pNode,SmNode *pContent,int nLevel,ULONG *pPos=NULL,BOOL bTest=TRUE);
+ void HandleFractions(SmNode *pNode,int nLevel);
+ void HandleBrace(SmNode *pNode,int nLevel);
+ void HandleVerticalBrace(SmNode *pNode,int nLevel);
+ void HandleOperator(SmNode *pNode,int nLevel);
+ BOOL HandleLim(SmNode *pNode,int nLevel);
+ void HandleMAlign(SmNode *pNode,int nLevel);
+ void HandleMath(SmNode *pNode,int nLevel);
+ void HandleText(SmNode *pNode,int nLevel);
+ void HandleAttributes(SmNode *pNode,int nLevel);
+
+ String &rRet;
+ SmNode *pTree;
+
+ BYTE nHAlign;
+ BYTE nVAlign;
+
+ int nPendingAttributes;
+ ULONG nInsertion;
+
+ INT16 aSizeTable[7];
+ INT16 nDefaultSize;
+ INT16 nLSize;
+ INT16 nDSize;
+ INT16 nCurSize;
+ INT16 nLastSize;
+ BYTE nSpec;
+ BOOL bSilent,bReInterpBrace;
+ String sPost;
+ xub_StrLen nPostSup;
+ xub_StrLen nPostlSup;
+ BYTE nTypeFace;
+
+ enum MTOKENS {END,LINE,CHAR,TMPL,PILE,MATRIX,EMBEL,RULER,FONT,SIZE};
+ enum MTEMPLATES
+ {
+ tmANGLE,tmPAREN,tmBRACE,tmBRACK,tmBAR,tmDBAR,tmFLOOR,tmCEILING,
+ tmLBLB,tmRBRB,tmRBLB,tmLBRP,tmLPRB,tmROOT,tmFRACT,tmSCRIPT,tmUBAR,
+ tmOBAR,tmLARROW,tmRARROW,tmBARROW,tmSINT,tmDINT,tmTINT,tmSSINT,
+ tmDSINT,tmTSINT,tmUHBRACE,tmLHBRACE,tmSUM
+ };
+};
+
+
+#endif
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
new file mode 100644
index 000000000000..3680c6883500
--- /dev/null
+++ b/starmath/source/node.cxx
@@ -0,0 +1,2490 @@
+/*************************************************************************
+ *
+ * $RCSfile: node.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _SV_GEN_HXX //autogen
+#include <tools/gen.hxx>
+#endif
+#ifndef _FRACT_HXX //autogen
+#include <tools/fract.hxx>
+#endif
+#ifndef _SV_COLOR_HXX //autogen
+#include <vcl/color.hxx>
+#endif
+#ifndef _SV_METRIC_HXX //autogen
+#include <vcl/metric.hxx>
+#endif
+#ifndef _SV_LINEINFO_HXX
+#include <vcl/lineinfo.hxx>
+#endif
+#ifndef _SV_OUTDEV_HXX //autogen
+#include <vcl/outdev.hxx>
+#endif
+#ifndef _SFXMODULE_HXX //autogen
+#include <sfx2/module.hxx>
+#endif
+
+#ifdef USE_POLYGON
+
+#ifndef _SV_POLY_HXX //autogen
+#include <vcl/poly.hxx>
+#endif
+#ifndef _XPOLY_HXX //autogen
+#include <svx/xpoly.hxx>
+#endif
+#ifndef _XOUTX_HXX //autogen
+#include <svx/xoutx.hxx>
+#endif
+
+#ifndef XCHAR_HXX
+#include "xchar.hxx"
+#endif
+
+#endif //USE_POLYGON
+
+
+#ifndef NODE_HXX
+#include "node.hxx"
+#endif
+#ifndef SYMBOL_HXX
+#include "symbol.hxx"
+#endif
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+
+#include <math.h>
+#include <float.h>
+
+// define this to draw rectangles for debugging
+//#define SM_RECT_DEBUG
+
+////////////////////////////////////////
+// SmTmpDevice
+// A little class that behaves like a "const OutputDevice &" object but
+// allows for font changes. The original font will be restored in the
+// destructor! (Thus logically it's "const".)
+// It's main purpose is to allow for the "const" in the 'OutputDevice'
+// argument in the 'Arrange' functions.
+// In fact we need to change the font in the 'OutputDevice' to the one
+// of the node to calculate sizes (rectangles) for text.
+//
+
+class SmTmpDevice
+{
+ OutputDevice &rOutDev;
+
+ // disallow use of copy-constructor and assignment-operator
+ SmTmpDevice(const SmTmpDevice &rTmpDev);
+ SmTmpDevice & operator = (const SmTmpDevice &rTmpDev);
+
+public:
+ SmTmpDevice(OutputDevice &rTheDev);
+ ~SmTmpDevice() { rOutDev.Pop(); }
+
+ void SetFont(const Font &rNewFont) { rOutDev.SetFont(rNewFont); }
+
+ // conversion operator that allows only const member-functions from
+ // 'OutputDevice' to be called. (Thus only the font can be changed
+ // via the above 'SetFont')
+ operator const OutputDevice & () const { return rOutDev; }
+};
+
+
+SmTmpDevice::SmTmpDevice(OutputDevice &rTheDev) :
+ rOutDev(rTheDev)
+{
+ rOutDev.Push( PUSH_FONT | PUSH_MAPMODE );
+ rOutDev.SetMapMode( MAP_100TH_MM ); //Immer fuer 100% fomatieren
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+SmNode::SmNode(SmNodeType eNodeType, const SmToken &rNodeToken)
+{
+ eType = eNodeType;
+ eScaleMode = SCALE_NONE;
+ aNodeToken = rNodeToken;
+}
+
+
+SmNode::~SmNode()
+{
+}
+
+
+SmNode * SmNode::GetLeftMost()
+ // returns leftmost node of current subtree.
+ //! (this assumes the one with index 0 is always the leftmost subnode
+ //! for the current node).
+{
+ SmNode *pNode = GetNumSubNodes() > 0 ?
+ GetSubNode(0) : NULL;
+
+ return pNode ? pNode->GetLeftMost() : this;
+}
+
+
+void SmNode::SetPhantom(BOOL bIsPhantomP)
+{
+ if (! (Flags() & FLG_VISIBLE))
+ bIsPhantom = bIsPhantomP;
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetPhantom(bIsPhantom);
+}
+
+
+void SmNode::SetColor(const Color& rColor)
+{
+ if (! (Flags() & FLG_COLOR))
+ GetFont().SetColor(rColor);
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetColor(rColor);
+}
+
+
+void SmNode::SetAttribut(USHORT nAttrib)
+{
+ if ( nAttrib == ATTR_BOLD && !(Flags() & FLG_BOLD)
+ || nAttrib == ATTR_ITALIC && !(Flags() & FLG_ITALIC))
+ nAttributes |= nAttrib;
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetAttribut(nAttrib);
+}
+
+
+void SmNode::ClearAttribut(USHORT nAttrib)
+{
+ if ( nAttrib == ATTR_BOLD && !(Flags() & FLG_BOLD)
+ || nAttrib == ATTR_ITALIC && !(Flags() & FLG_ITALIC))
+ nAttributes &= ~nAttrib;
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->ClearAttribut(nAttrib);
+}
+
+
+void SmNode::SetFont(const SmFace &rFace)
+{
+ if (!(Flags() & FLG_FONT))
+ GetFont() = rFace;
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetFont(rFace);
+}
+
+
+void SmNode::SetFontSize(const Fraction &rSize, USHORT nType)
+ //! 'rSize' is in units of pts
+{
+ Size aSize;
+
+ if (!(Flags() & FLG_SIZE))
+ {
+ Fraction aVal (SmPtsTo100th_mm(rSize.GetNumerator()),
+ rSize.GetDenominator());
+ long nHeight = (long) aVal;
+
+ aSize = GetFont().GetSize();
+ aSize.Width() = 0;
+ switch(nType)
+ {
+ case FNTSIZ_ABSOLUT:
+ aSize.Height() = nHeight;
+ break;
+
+ case FNTSIZ_PLUS:
+ aSize.Height() += nHeight;
+ break;
+
+ case FNTSIZ_MINUS:
+ aSize.Height() -= nHeight;
+ break;
+
+ case FNTSIZ_MULTIPLY:
+ aSize.Height() = (long) (Fraction(aSize.Height()) * rSize);
+ break;
+
+ case FNTSIZ_DIVIDE:
+ if (rSize != Fraction(0L))
+ aSize.Height() = (long) (Fraction(aSize.Height()) / rSize);
+ break;
+ }
+
+ // check the requested size against maximum value
+ static int __READONLY_DATA nMaxVal = SmPtsTo100th_mm(128);
+ if (aSize.Height() > nMaxVal)
+ aSize.Height() = nMaxVal;
+
+ GetFont().SetSize(aSize);
+ }
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetFontSize(rSize, nType);
+}
+
+
+void SmNode::SetSize(const Fraction &rSize)
+{
+ GetFont() *= rSize;
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetSize(rSize);
+}
+
+
+void SmNode::SetRectHorAlign(RectHorAlign eHorAlign)
+{
+ if (!(Flags() & FLG_HORALIGN))
+ eRectHorAlign = eHorAlign;
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->SetRectHorAlign(eHorAlign);
+}
+
+
+void SmNode::PrepareAttributes()
+{
+ GetFont().SetWeight((Attributes() & ATTR_BOLD) ? WEIGHT_BOLD : WEIGHT_NORMAL);
+ GetFont().SetItalic((Attributes() & ATTR_ITALIC) ? ITALIC_NORMAL : ITALIC_NONE);
+}
+
+
+void SmNode::Prepare(const SmFormat &rFormat)
+{
+#ifdef DEBUG
+ bIsDebug = TRUE;
+#else
+ bIsDebug = FALSE;
+#endif
+ bIsPhantom = FALSE;
+ nFlags = 0;
+ nAttributes = 0;
+
+ switch (rFormat.GetHorAlign())
+ { case AlignLeft: eRectHorAlign = RHA_LEFT; break;
+ case AlignCenter: eRectHorAlign = RHA_CENTER; break;
+ case AlignRight: eRectHorAlign = RHA_RIGHT; break;
+ }
+
+ GetFont() = rFormat.GetFont(FNT_MATH);
+ GetFont().SetCharSet(RTL_TEXTENCODING_SYMBOL);
+ GetFont().SetWeight(WEIGHT_NORMAL);
+ GetFont().SetItalic(ITALIC_NONE);
+
+ SmNode *pNode;
+ int nSize = GetNumSubNodes();
+ for (int i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->Prepare(rFormat);
+}
+
+
+void SmNode::ToggleDebug() const
+ // toggle 'bIsDebug' in current subtree
+{
+#ifdef DEBUG
+ SmNode *pThis = (SmNode *) this;
+
+ pThis->bIsDebug = bIsDebug ? FALSE : TRUE;
+
+ SmNode *pNode;
+ int nSize = GetNumSubNodes();
+ for (int i = 0; i < nSize; i++)
+ if (pNode = pThis->GetSubNode(i))
+ pNode->ToggleDebug();
+#endif
+}
+
+
+#ifdef MAC
+#pragma segment FrmNode_02
+
+#else
+
+#endif
+
+
+void SmNode::Move(const Point& rPosition)
+{
+ if (rPosition.X() == 0 && rPosition.Y() == 0)
+ return;
+
+ SmRect::Move(rPosition);
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->Move(rPosition);
+}
+
+
+void SmNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->Arrange(rDev, rFormat);
+}
+
+
+void SmNode::Draw(OutputDevice &rDev, const Point &rPosition) const
+{
+ if (IsPhantom())
+ return;
+
+ const SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ for (USHORT i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ { Point aOffset (pNode->GetTopLeft() - GetTopLeft());
+ pNode->Draw(rDev, rPosition + aOffset);
+ }
+
+#ifdef SM_RECT_DEBUG
+ if (!IsDebug())
+ return;
+
+ int nRFlags = SM_RECT_CORE | SM_RECT_ITALIC | SM_RECT_LINES | SM_RECT_MID;
+ SmRect::Draw(rDev, rPosition, nRFlags);
+#endif
+}
+
+const SmNode * SmNode::FindTokenAt(USHORT nRow, USHORT nCol) const
+ // returns (first) ** visible ** (sub)node with the tokens text at
+ // position 'nRow', 'nCol'.
+ //! (there should be exactly one such node if any)
+{
+ if ( IsVisible()
+ && nRow == GetToken().nRow
+ && nCol >= GetToken().nCol && nCol < GetToken().nCol + GetToken().aText.Len())
+ return this;
+ else
+ {
+ USHORT nNumSubNodes = GetNumSubNodes();
+ for (USHORT i = 0; i < nNumSubNodes; i++)
+ { const SmNode *pNode = GetSubNode(i);
+
+ if (!pNode)
+ continue;
+
+ const SmNode *pResult = pNode->FindTokenAt(nRow, nCol);
+ if (pResult)
+ return pResult;
+ }
+ }
+
+ return 0;
+}
+
+
+const SmNode * SmNode::FindRectClosestTo(const Point &rPoint) const
+{
+ long nDist = LONG_MAX;
+ const SmNode *pResult = 0;
+
+ if (IsVisible())
+ pResult = this;
+ else
+ {
+ USHORT nNumSubNodes = GetNumSubNodes();
+ for (USHORT i = 0; i < nNumSubNodes; i++)
+ { const SmNode *pNode = GetSubNode(i);
+
+ if (!pNode)
+ continue;
+
+ long nTmp;
+ const SmNode *pFound = pNode->FindRectClosestTo(rPoint);
+ if (pFound && (nTmp = pFound->OrientedDist(rPoint)) < nDist)
+ { nDist = nTmp;
+ pResult = pFound;
+
+ // quit immediately if 'rPoint' is inside the *should not
+ // overlap with other rectangles* part.
+ // This (partly) serves for getting the attributes in eg
+ // "bar overstrike a".
+ // ('nDist < 0' is used as *quick shot* to avoid evaluation of
+ // the following expression, where the result is already determined)
+ if (nDist < 0 && pFound->IsInsideRect(rPoint))
+ break;
+ }
+ }
+ }
+
+ return pResult;
+}
+
+
+/**************************************************************************/
+
+
+SmStructureNode::~SmStructureNode()
+{
+ SmNode *pNode;
+
+ for (USHORT i = 0; i < GetNumSubNodes(); i++)
+ if (pNode = GetSubNode(i))
+ delete pNode;
+}
+
+
+void SmStructureNode::SetSubNodes(SmNode *pFirst, SmNode *pSecond, SmNode *pThird)
+{
+ if (pFirst)
+ aSubNodes.Put(0, pFirst);
+ if (pSecond)
+ aSubNodes.Put(1, pSecond);
+ if (pThird)
+ aSubNodes.Put(2, pThird);
+}
+
+
+void SmStructureNode::SetSubNodes(const SmNodeArray &rNodeArray)
+{
+ aSubNodes = rNodeArray;
+}
+
+
+/**************************************************************************/
+
+
+void SmTableNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+ // arranges all subnodes in one column
+{
+ Point rPosition;
+
+ USHORT nWidth = 0;
+ USHORT nHeight = 0;
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+
+ // make distance depend on font size
+ long nDist = +(rFormat.GetDistance(DIS_VERTICAL)
+ * GetFont().GetSize().Height()) / 100L;
+
+ if (nSize < 1)
+ return;
+
+ // arrange subnodes and get maximum width of them
+ long nMaxWidth = 0,
+ nTmp;
+ USHORT i;
+ for (i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ { pNode->Arrange(rDev, rFormat);
+ if ((nTmp = pNode->GetItalicWidth()) > nMaxWidth)
+ nMaxWidth = nTmp;
+ }
+
+ Point aPos;
+ SmRect::operator = (SmRect(nMaxWidth, 0));
+ for (i = 0; i < nSize; i++)
+ { if (pNode = GetSubNode(i))
+ { const SmRect &rNodeRect = pNode->GetRect();
+ const SmNode *pCoNode = pNode->GetLeftMost();
+ SmTokenType eType = pCoNode->GetToken().eType;
+ RectHorAlign eHorAlign = eType == TTEXT ?
+ RHA_LEFT : pCoNode->GetRectHorAlign();
+
+ aPos = rNodeRect.AlignTo(*this, RP_BOTTOM,
+ eHorAlign, RVA_BASELINE);
+ if (i)
+ aPos.Y() += nDist;
+ pNode->MoveTo(aPos);
+ ExtendBy(rNodeRect, nSize > 1 ? RCP_NONE : RCP_ARG);
+ }
+ }
+}
+
+
+/**************************************************************************/
+
+
+void SmLineNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ //! wir verwenden hier den 'FNT_VARIABLE' Font, da er vom Ascent und Descent
+ //! ia besser zum Rest der Formel passt als der 'FNT_MATH' Font.
+ GetFont() = rFormat.GetFont(FNT_VARIABLE);
+ Flags() |= FLG_FONT;
+}
+
+
+/**************************************************************************/
+
+
+void SmLineNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+ // arranges all subnodes in one row with some extra space between
+{
+ SmRect::operator = (SmRect());
+
+ SmNode *pNode;
+ USHORT nSize = GetNumSubNodes();
+ USHORT i;
+ for (i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ pNode->Arrange(rDev, rFormat);
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ // provide an empty rectangle with alignment parameters for the "current"
+ // font (in order to make "a^1 {}_2^3 a_4" work correct, that is, have the
+ // same sub-/supscript positions.)
+ //! be sure to use a character that has explicitly defined HiAttribut
+ //! line in rect.cxx such as 'a' in order to make 'vec a' look same to
+ //! 'vec {a}'.
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, C2S("a"),
+ GetFont().GetBorderWidth()));
+ // make sure that the rectangle occupies (almost) no space
+ SetWidth(1);
+ SetItalicSpaces(0, 0);
+
+ if (nSize < 1)
+ return;
+
+ // make distance depend on font size
+ long nDist = +(rFormat.GetDistance(DIS_HORIZONTAL)
+ * GetFont().GetSize().Height()) / 100L;
+
+ Point aPos;
+ for (i = 0; i < nSize; i++)
+ if (pNode = GetSubNode(i))
+ {
+ aPos = pNode->AlignTo(*this, RP_RIGHT, RHA_CENTER, RVA_BASELINE);
+
+ // no horizontal space before first node
+ if (i)
+ aPos.X() += nDist;
+
+ pNode->MoveTo(aPos);
+ ExtendBy(*pNode, i ? RCP_XOR : RCP_ARG);
+ }
+}
+
+
+/**************************************************************************/
+
+
+void SmExpressionNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+ // as 'SmLineNode::Arrange' but keeps alignment of leftmost subnode
+{
+ DBG_ASSERT(GetNumSubNodes() > 0, "Sm: keine subnodes");
+
+ SmLineNode::Arrange(rDev, rFormat);
+
+ // copy alignment of leftmost subnode if any
+ //! (this assumes its the one with index 0)
+ SmNode *pNode = GetSubNode(0);
+ if (pNode)
+ SetRectHorAlign(pNode->GetRectHorAlign());
+}
+
+
+/**************************************************************************/
+
+
+void SmUnHorNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ BOOL bIsPostfix = GetToken().eType == TFACT;
+
+ SmNode *pOper = GetSubNode(bIsPostfix ? 1 : 0),
+ *pBody = GetSubNode(bIsPostfix ? 0 : 1);
+ DBG_ASSERT(pOper, "Sm: NULL pointer");
+ DBG_ASSERT(pBody, "Sm: NULL pointer");
+
+ pOper->SetSize(Fraction (rFormat.GetRelSize(SIZ_OPERATOR), 100));
+ pOper->Arrange(rDev, rFormat);
+ pBody->Arrange(rDev, rFormat);
+
+ Point aPos = pOper->AlignTo(*pBody, bIsPostfix ? RP_RIGHT : RP_LEFT,
+ RHA_CENTER, RVA_BASELINE);
+ // add a bit space between operator and argument
+ // (worst case -{1 over 2} where - and over have almost no space inbetween)
+ long nDelta = pOper->GetFont().GetSize().Height() / 20;
+ if (bIsPostfix)
+ aPos.X() += nDelta;
+ else
+ aPos.X() -= nDelta;
+ pOper->MoveTo(aPos);
+
+ SmRect::operator = (*pBody);
+ long nOldBot = GetBottom();
+
+ ExtendBy(*pOper, RCP_XOR);
+
+ // workaround for Bug 50865: "a^2 a^+2" have different baselines
+ // for exponents (if size of exponent is large enough)
+ SetBottom(nOldBot);
+}
+
+
+/**************************************************************************/
+
+
+void SmRootNode::GetHeightVerOffset(const SmRect &rRect,
+ long &rHeight, long &rVerOffset) const
+ // calculate height and vertical offset of root sign suitable for 'rRect'
+{
+ rVerOffset = (rRect.GetBottom() - rRect.GetAlignB()) / 2;
+ rHeight = rRect.GetHeight() - rVerOffset;
+
+ DBG_ASSERT(rHeight >= 0, "Sm : Ooops...");
+ DBG_ASSERT(rVerOffset >= 0, "Sm : Ooops...");
+}
+
+
+Point SmRootNode::GetExtraPos(const SmRect &rRootSymbol,
+ const SmRect &rExtra) const
+{
+ const Size &rSymSize = rRootSymbol.GetSize();
+
+ Point aPos = rRootSymbol.GetTopLeft()
+ + Point((rSymSize.Width() * 70) / 100,
+ (rSymSize.Height() * 52) / 100);
+
+ // from this calculate topleft edge of 'rExtra'
+ aPos.X() -= rExtra.GetWidth() + rExtra.GetItalicRightSpace();
+ aPos.Y() -= rExtra.GetHeight();
+ // if there's enough space move a bit less to the right
+ // examples: "nroot i a", "nroot j a"
+ // (it looks better if we don't use italic-spaces here)
+ long nX = rRootSymbol.GetLeft() + (rSymSize.Width() * 30) / 100;
+ if (aPos.X() > nX)
+ aPos.X() = nX;
+
+ return aPos;
+}
+
+
+void SmRootNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ //! pExtra needs to have the smaller index than pRootSym in order to
+ //! not to get the root symbol but the pExtra when clicking on it in the
+ //! GraphicWindow. (That is because of the simplicity of the algorithm
+ //! that finds the node corresponding to a mouseclick in the window.)
+ SmNode *pExtra = GetSubNode(0),
+ *pRootSym = GetSubNode(1),
+ *pBody = GetSubNode(2);
+ DBG_ASSERT(pRootSym, "Sm: NULL pointer");
+ DBG_ASSERT(pBody, "Sm: NULL pointer");
+
+ pBody->Arrange(rDev, rFormat);
+
+ long nHeight,
+ nVerOffset;
+ GetHeightVerOffset(*pBody, nHeight, nVerOffset);
+ nHeight += rFormat.GetDistance(DIS_ROOT)
+ * GetFont().GetSize().Height() / 100L;
+
+ pRootSym->AdaptToX(rDev, pBody->GetItalicWidth());
+ pRootSym->AdaptToY(rDev, nHeight);
+
+ pRootSym->Arrange(rDev, rFormat);
+
+ Point aPos = pRootSym->AlignTo(*pBody, RP_LEFT, RHA_CENTER, RVA_BASELINE);
+ //! overrride calulated vertical position
+ aPos.Y() = pRootSym->GetTop() + pBody->GetBottom() - pRootSym->GetBottom();
+ aPos.Y() -= nVerOffset;
+ pRootSym->MoveTo(aPos);
+
+ if (pExtra)
+ { pExtra->SetSize(Fraction(rFormat.GetRelSize(SIZ_INDEX), 100));
+ pExtra->Arrange(rDev, rFormat);
+
+ aPos = GetExtraPos(*pRootSym, *pExtra);
+ pExtra->MoveTo(aPos);
+ }
+
+ SmRect::operator = (*pBody);
+ ExtendBy(*pRootSym, RCP_THIS);
+ if (pExtra)
+ ExtendBy(*pExtra, RCP_THIS, (BOOL) TRUE);
+}
+
+
+/**************************************************************************/
+
+
+void SmBinHorNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pLeft = GetSubNode(0),
+ *pOper = GetSubNode(1),
+ *pRight = GetSubNode(2);
+ DBG_ASSERT(pLeft != NULL, "Sm: NULL pointer");
+ DBG_ASSERT(pOper != NULL, "Sm: NULL pointer");
+ DBG_ASSERT(pRight != NULL, "Sm: NULL pointer");
+
+ pOper->SetSize(Fraction (rFormat.GetRelSize(SIZ_OPERATOR), 100));
+
+ pLeft ->Arrange(rDev, rFormat);
+ pOper ->Arrange(rDev, rFormat);
+ pRight->Arrange(rDev, rFormat);
+
+ const SmRect &rOpRect = pOper->GetRect();
+
+ long nDist = (rOpRect.GetWidth() *
+ rFormat.GetDistance(DIS_HORIZONTAL)) / 100L;
+
+ SmRect::operator = (*pLeft);
+
+ Point aPos;
+ aPos = pOper->AlignTo(*this, RP_RIGHT, RHA_CENTER, RVA_BASELINE);
+ aPos.X() += nDist;
+ pOper->MoveTo(aPos);
+ ExtendBy(*pOper, RCP_XOR);
+
+ aPos = pRight->AlignTo(*this, RP_RIGHT, RHA_CENTER, RVA_BASELINE);
+ aPos.X() += nDist;
+
+ pRight->MoveTo(aPos);
+ ExtendBy(*pRight, RCP_XOR);
+}
+
+
+/**************************************************************************/
+
+
+void SmBinVerNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pNum = GetSubNode(0),
+ *pLine = GetSubNode(1),
+ *pDenom = GetSubNode(2);
+ DBG_ASSERT(pNum, "Sm : NULL pointer");
+ DBG_ASSERT(pLine, "Sm : NULL pointer");
+ DBG_ASSERT(pDenom, "Sm : NULL pointer");
+
+ BOOL bIsTextmode = rFormat.IsTextmode();
+ if (bIsTextmode)
+ {
+ Fraction aFraction(rFormat.GetRelSize(SIZ_INDEX), 100);
+ pNum ->SetSize(aFraction);
+ pLine ->SetSize(aFraction);
+ pDenom->SetSize(aFraction);
+ }
+
+ pNum ->Arrange(rDev, rFormat);
+ pDenom->Arrange(rDev, rFormat);
+
+ long nFontHeight = GetFont().GetSize().Height(),
+ nExtLen = nFontHeight * rFormat.GetDistance(DIS_FRACTION) / 100L,
+ nThick = nFontHeight * rFormat.GetDistance(DIS_STROKEWIDTH) / 100L,
+ nWidth = Max(pNum->GetItalicWidth(), pDenom->GetItalicWidth()),
+ nNumDist = bIsTextmode ? 0 :
+ nFontHeight * rFormat.GetDistance(DIS_NUMERATOR) / 100L,
+ nDenomDist = bIsTextmode ? 0 :
+ nFontHeight * rFormat.GetDistance(DIS_DENOMINATOR) / 100L;
+
+ pLine->AdaptToX(rDev, nWidth + 2 * nExtLen);
+ pLine->AdaptToY(rDev, nThick);
+ pLine->Arrange(rDev, rFormat);
+
+ // get horizontal alignment for numerator
+ const SmNode *pLM = pNum->GetLeftMost();
+ RectHorAlign eHorAlign = pLM->GetToken().eType == TTEXT ?
+ RHA_LEFT : pLM->GetRectHorAlign();
+
+ // move numerator to its position
+ Point aPos = pNum->AlignTo(*pLine, RP_TOP, eHorAlign, RVA_BASELINE);
+ aPos.Y() -= nNumDist;
+ pNum->MoveTo(aPos);
+
+ // get horizontal alignment for denominator
+ pLM = pDenom->GetLeftMost();
+ eHorAlign = pLM->GetToken().eType == TTEXT ?
+ RHA_LEFT : pLM->GetRectHorAlign();
+
+ // move denominator to its position
+ aPos = pDenom->AlignTo(*pLine, RP_BOTTOM, eHorAlign, RVA_BASELINE);
+ aPos.Y() += nDenomDist;
+ pDenom->MoveTo(aPos);
+
+ SmRect::operator = (*pNum);
+ ExtendBy(*pDenom, RCP_NONE).ExtendBy(*pLine, RCP_NONE, pLine->GetCenterY());
+}
+
+
+/**************************************************************************/
+
+
+double Det(const Point &rHeading1, const Point &rHeading2)
+ // gibt den Wert der durch die beiden Punkte gebildeten Determinante
+ // zurück
+{
+ return rHeading1.X() * rHeading2.Y() - rHeading1.Y() * rHeading2.X();
+}
+
+
+BOOL IsPointInLine(const Point &rPoint1,
+ const Point &rPoint2, const Point &rHeading2)
+ // ergibt TRUE genau dann, wenn der Punkt 'rPoint1' zu der Gerade gehört die
+ // durch den Punkt 'rPoint2' geht und den Richtungsvektor 'rHeading2' hat
+{
+ DBG_ASSERT(rHeading2 != Point(), "Sm : 0 vector");
+
+ BOOL bRes = FALSE;
+ const double eps = 5.0 * DBL_EPSILON;
+
+ double fLambda;
+ if (labs(rHeading2.X()) > labs(rHeading2.Y()))
+ {
+ fLambda = (rPoint1.X() - rPoint2.X()) / (double) rHeading2.X();
+ bRes = fabs(rPoint1.Y() - (rPoint2.Y() + fLambda * rHeading2.Y())) < eps;
+ }
+ else
+ {
+ fLambda = (rPoint1.Y() - rPoint2.Y()) / (double) rHeading2.Y();
+ bRes = fabs(rPoint1.X() - (rPoint2.X() + fLambda * rHeading2.X())) < eps;
+ }
+
+ return bRes;
+}
+
+
+USHORT GetLineIntersectionPoint(Point &rResult,
+ const Point& rPoint1, const Point &rHeading1,
+ const Point& rPoint2, const Point &rHeading2)
+{
+ DBG_ASSERT(rHeading1 != Point(), "Sm : 0 vector");
+ DBG_ASSERT(rHeading2 != Point(), "Sm : 0 vector");
+
+ USHORT nRes = 1;
+ const double eps = 5.0 * DBL_EPSILON;
+
+ // sind die Richtumgsvektoren linear abhängig ?
+ double fDet = Det(rHeading1, rHeading2);
+ if (fabs(fDet) < eps)
+ {
+ nRes = IsPointInLine(rPoint1, rPoint2, rHeading2) ? USHRT_MAX : 0;
+ rResult = nRes ? rPoint1 : Point();
+ }
+ else
+ {
+ // hier achten wir nicht auf Rechengenauigkeit
+ // (das würde aufwendiger und lohnt sich hier kaum)
+ double fLambda = ( (rPoint1.Y() - rPoint2.Y()) * rHeading2.X()
+ - (rPoint1.X() - rPoint2.X()) * rHeading2.Y())
+ / fDet;
+ rResult = Point(rPoint1.X() + fLambda * rHeading1.X(),
+ rPoint1.Y() + fLambda * rHeading1.Y());
+ }
+
+ return nRes;
+}
+
+
+
+SmBinDiagonalNode::SmBinDiagonalNode(const SmToken &rNodeToken)
+: SmStructureNode(NBINDIAGONAL, rNodeToken)
+{
+ bAscending = FALSE;
+ SetNumSubNodes(3);
+}
+
+
+void SmBinDiagonalNode::GetOperPosSize(Point &rPos, Size &rSize,
+ const Point &rDiagPoint, double fAngleDeg) const
+ // gibt die Position und Größe für den Diagonalstrich zurück.
+ // Vor.: das SmRect des Nodes gibt die Begrenzung vor(!), muß also selbst
+ // bereits bekannt sein.
+
+{
+ const double fPi = 3.1415926535897932384626433;
+ double fAngleRad = fAngleDeg / 180.0 * fPi;
+ long nRectLeft = GetItalicLeft(),
+ nRectRight = GetItalicRight(),
+ nRectTop = GetTop(),
+ nRectBottom = GetBottom();
+ Point aRightHdg (100, 0),
+ aDownHdg (0, 100),
+ aDiagHdg (100.0 * cos(fAngleRad), -100.0 * sin(fAngleRad));
+
+ long nLeft, nRight, nTop, nBottom; // Ränder des Rechtecks für die
+ // Diagonale
+ Point aPoint;
+ if (IsAscending())
+ {
+ //
+ // obere rechte Ecke bestimmen
+ //
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectLeft, nRectTop), aRightHdg,
+ rDiagPoint, aDiagHdg);
+ //
+ // gibt es einen Schnittpunkt mit dem oberen Rand ?
+ if (aPoint.X() <= nRectRight)
+ {
+ nRight = aPoint.X();
+ nTop = nRectTop;
+ }
+ else
+ {
+ // es muß einen Schnittpunkt mit dem rechten Rand geben!
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectRight, nRectTop), aDownHdg,
+ rDiagPoint, aDiagHdg);
+
+ nRight = nRectRight;
+ nTop = aPoint.Y();
+ }
+
+ //
+ // untere linke Ecke bestimmen
+ //
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectLeft, nRectBottom), aRightHdg,
+ rDiagPoint, aDiagHdg);
+ //
+ // gibt es einen Schnittpunkt mit dem unteren Rand ?
+ if (aPoint.X() >= nRectLeft)
+ {
+ nLeft = aPoint.X();
+ nBottom = nRectBottom;
+ }
+ else
+ {
+ // es muß einen Schnittpunkt mit dem linken Rand geben!
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectLeft, nRectTop), aDownHdg,
+ rDiagPoint, aDiagHdg);
+
+ nLeft = nRectLeft;
+ nBottom = aPoint.Y();
+ }
+ }
+ else
+ {
+ //
+ // obere linke Ecke bestimmen
+ //
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectLeft, nRectTop), aRightHdg,
+ rDiagPoint, aDiagHdg);
+ //
+ // gibt es einen Schnittpunkt mit dem oberen Rand ?
+ if (aPoint.X() >= nRectLeft)
+ {
+ nLeft = aPoint.X();
+ nTop = nRectTop;
+ }
+ else
+ {
+ // es muß einen Schnittpunkt mit dem linken Rand geben!
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectLeft, nRectTop), aDownHdg,
+ rDiagPoint, aDiagHdg);
+
+ nLeft = nRectLeft;
+ nTop = aPoint.Y();
+ }
+
+ //
+ // untere rechte Ecke bestimmen
+ //
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectLeft, nRectBottom), aRightHdg,
+ rDiagPoint, aDiagHdg);
+ //
+ // gibt es einen Schnittpunkt mit dem unteren Rand ?
+ if (aPoint.X() <= nRectRight)
+ {
+ nRight = aPoint.X();
+ nBottom = nRectBottom;
+ }
+ else
+ {
+ // es muß einen Schnittpunkt mit dem rechten Rand geben!
+ GetLineIntersectionPoint(aPoint,
+ Point(nRectRight, nRectTop), aDownHdg,
+ rDiagPoint, aDiagHdg);
+
+ nRight = nRectRight;
+ nBottom = aPoint.Y();
+ }
+ }
+
+ rSize = Size(nRight - nLeft + 1, nBottom - nTop + 1);
+ rPos.X() = nLeft;
+ rPos.Y() = nTop;
+}
+
+
+void SmBinDiagonalNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ //! die beiden Argumente müssen in den Subnodes vor dem Operator kommen,
+ //! damit das anklicken im GraphicWindow den FormulaCursor richtig setzt
+ //! (vgl SmRootNode)
+ SmNode *pLeft = GetSubNode(0),
+ *pRight = GetSubNode(1);
+ DBG_ASSERT(pLeft, "Sm : NULL pointer");
+ DBG_ASSERT(pRight, "Sm : NULL pointer");
+
+ DBG_ASSERT(GetSubNode(2)->GetType() == NPOLYLINE, "Sm : falscher Nodetyp");
+ SmPolyLineNode *pOper = (SmPolyLineNode *) GetSubNode(2);
+ DBG_ASSERT(pOper, "Sm : NULL pointer");
+
+ //! some routines being called extract some info from the OutputDevice's
+ //! font (eg the space to be used for borders OR the font name(!!)).
+ //! Thus the font should reflect the needs and has to be set!
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ pLeft->Arrange(aTmpDev, rFormat);
+ pRight->Arrange(aTmpDev, rFormat);
+
+ // implizit die Weite (incl Rand) des Diagonalstrichs ermitteln
+ pOper->Arrange(aTmpDev, rFormat);
+
+ long nDelta = pOper->GetWidth() * 8 / 10;
+
+ // TopLeft Position vom rechten Argument ermitteln
+ Point aPos;
+ aPos.X() = pLeft->GetItalicRight() + nDelta + pRight->GetItalicLeftSpace();
+ if (IsAscending())
+ aPos.Y() = pLeft->GetBottom() + nDelta;
+ else
+ aPos.Y() = pLeft->GetTop() - nDelta - pRight->GetHeight();
+
+ pRight->MoveTo(aPos);
+
+ // neue Baseline bestimmen
+ long nBaseline = IsAscending() ? (pLeft->GetBottom() + pRight->GetTop()) / 2
+ : (pLeft->GetTop() + pRight->GetBottom()) / 2;
+ Point aLogCenter ((pLeft->GetItalicRight() + pRight->GetItalicLeft()) / 2,
+ nBaseline);
+
+ SmRect::operator = (*pLeft);
+ ExtendBy(*pRight, RCP_NONE);
+
+
+ // Position und Größe des Diagonalstrich ermitteln
+ Size aSize;
+ GetOperPosSize(aPos, aSize, aLogCenter, IsAscending() ? 60.0 : -60.0);
+
+ // die Größe setzen
+ pOper->AdaptToX(rDev, aSize.Width());
+ pOper->AdaptToY(rDev, aSize.Height());
+ // und diese wirksam machen
+ pOper->Arrange(aTmpDev, rFormat);
+
+ pOper->MoveTo(aPos);
+
+ ExtendBy(*pOper, RCP_NONE, nBaseline);
+}
+
+
+/**************************************************************************/
+
+
+void SmSubSupNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ DBG_ASSERT(GetNumSubNodes() == 1 + SUBSUP_NUM_ENTRIES,
+ "Sm: falsche Anzahl von subnodes");
+
+ SmNode *pBody = GetBody();
+ DBG_ASSERT(pBody, "Sm: NULL pointer");
+
+ long nOrigHeight = pBody->GetFont().GetSize().Height();
+
+ pBody->Arrange(rDev, rFormat);
+
+ const SmRect &rBodyRect = pBody->GetRect();
+ SmRect::operator = (rBodyRect);
+
+ // line that separates sub- and supscript rectangles
+ long nDelimLine = SmFromTo(GetAlignB(), GetAlignT(), 0.4);
+
+ Point aPos;
+ long nDelta, nDist;
+
+ // iterate over all possible sub-/supscripts
+ SmRect aTmpRect (rBodyRect);
+ for (int i = 0; i < SUBSUP_NUM_ENTRIES; i++)
+ { SmSubSup eSubSup = (SmSubSup) i; // cast
+ SmNode *pSubSup = GetSubSup(eSubSup);
+
+ if (!pSubSup)
+ continue;
+
+ // switch position of limits if we are in textmode
+ if (rFormat.IsTextmode() && (GetToken().nGroup & TGLIMIT))
+ switch (eSubSup)
+ { case CSUB: eSubSup = RSUB; break;
+ case CSUP: eSubSup = RSUP; break;
+ }
+
+ // prevent sub-/supscripts from diminishing in size
+ // (as would be in "a_{1_{2_{3_4}}}")
+ if (GetFont().GetSize().Height() > rFormat.GetBaseSize().Height() / 3)
+ {
+ USHORT nIndex = (eSubSup == CSUB || eSubSup == CSUP) ?
+ SIZ_LIMITS : SIZ_INDEX;
+ Fraction aFraction ( rFormat.GetRelSize(nIndex), 100 );
+ pSubSup->SetSize(aFraction);
+ }
+
+ pSubSup->Arrange(rDev, rFormat);
+
+ BOOL bIsTextmode = rFormat.IsTextmode();
+ nDist = 0;
+
+ //! be sure that CSUB, CSUP are handled before the other cases!
+ switch (eSubSup)
+ { case RSUB :
+ case LSUB :
+ if (!bIsTextmode)
+ nDist = nOrigHeight
+ * rFormat.GetDistance(DIS_SUBSCRIPT) / 100L;
+ aPos = pSubSup->GetRect().AlignTo(aTmpRect,
+ eSubSup == LSUB ? RP_LEFT : RP_RIGHT,
+ RHA_CENTER, RVA_BOTTOM);
+ aPos.Y() += nDist;
+ nDelta = nDelimLine - aPos.Y();
+ if (nDelta > 0)
+ aPos.Y() += nDelta;
+ break;
+ case RSUP :
+ case LSUP :
+ if (!bIsTextmode)
+ nDist = nOrigHeight
+ * rFormat.GetDistance(DIS_SUPERSCRIPT) / 100L;
+ aPos = pSubSup->GetRect().AlignTo(aTmpRect,
+ eSubSup == LSUP ? RP_LEFT : RP_RIGHT,
+ RHA_CENTER, RVA_TOP);
+ aPos.Y() -= nDist;
+ nDelta = aPos.Y() + pSubSup->GetHeight() - nDelimLine;
+ if (nDelta > 0)
+ aPos.Y() -= nDelta;
+ break;
+ case CSUB :
+ if (!bIsTextmode)
+ nDist = nOrigHeight
+ * rFormat.GetDistance(DIS_LOWERLIMIT) / 100L;
+ aPos = pSubSup->GetRect().AlignTo(rBodyRect, RP_BOTTOM,
+ RHA_CENTER, RVA_BASELINE);
+ aPos.Y() += nDist;
+ break;
+ case CSUP :
+ if (!bIsTextmode)
+ nDist = nOrigHeight
+ * rFormat.GetDistance(DIS_UPPERLIMIT) / 100L;
+ aPos = pSubSup->GetRect().AlignTo(rBodyRect, RP_TOP,
+ RHA_CENTER, RVA_BASELINE);
+ aPos.Y() -= nDist;
+ break;
+ default :
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+
+ pSubSup->MoveTo(aPos);
+ ExtendBy(*pSubSup, RCP_THIS, (BOOL) TRUE);
+
+ // update rectangle to which RSUB, RSUP, LSUB, LSUP
+ // will be aligned to
+ if (eSubSup == CSUB || eSubSup == CSUP)
+ aTmpRect = *this;
+ }
+}
+
+
+/**************************************************************************/
+
+
+void SmBraceNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pLeft = GetSubNode(0),
+ *pBody = GetSubNode(1),
+ *pRight = GetSubNode(2);
+ DBG_ASSERT(pLeft, "Sm: NULL pointer");
+ DBG_ASSERT(pBody, "Sm: NULL pointer");
+ DBG_ASSERT(pRight, "Sm: NULL pointer");
+
+ pBody->Arrange(rDev, rFormat);
+
+ BOOL bIsScaleNormal = rFormat.IsScaleNormalBrackets(),
+ bScale = pBody->GetHeight() > 0 &&
+ (GetScaleMode() == SCALE_HEIGHT || bIsScaleNormal),
+ bIsABS = GetToken().eType == TABS;
+
+ long nFaceHeight = GetFont().GetSize().Height();
+
+ // Übergröße in % ermitteln
+ USHORT nPerc = 0;
+ if (!bIsABS && bScale)
+ { // im Fall von Klammern mit Übergröße...
+ int nIndex = GetScaleMode() == SCALE_HEIGHT ?
+ DIS_BRACKETSIZE : DIS_NORMALBRACKETSIZE;
+ nPerc = rFormat.GetDistance(nIndex);
+ }
+
+ // ermitteln der Höhe für die Klammern
+ long nBraceHeight;
+ if (bScale)
+ {
+ nBraceHeight = pBody->GetType() == NBRACEBODY ?
+ ((SmBracebodyNode *) pBody)->GetBodyHeight()
+ : pBody->GetHeight();
+ nBraceHeight += 2 * (nBraceHeight * nPerc / 100L);
+ }
+ else
+ nBraceHeight = nFaceHeight;
+
+ // Abstand zum Argument
+ nPerc = bIsABS ? 0 : rFormat.GetDistance(DIS_BRACKETSPACE);
+ long nDist = nFaceHeight * nPerc / 100L;
+
+ // sofern erwünscht skalieren der Klammern auf die gewünschte Größe
+ if (bScale)
+ {
+ Size aSize (pLeft->GetFont().GetSize());
+ DBG_ASSERT(pRight->GetFont().GetSize() == aSize,
+ "Sm : unterschiedliche Fontgrößen");
+ aSize.Width() = Min((long) nBraceHeight * 60L / 100L,
+ rFormat.GetBaseSize().Height() * 3L / 2L);
+
+ xub_Unicode cChar = pLeft->GetToken().cMathChar;
+ if (cChar != MS_LINE && cChar != MS_DLINE)
+ pLeft ->GetFont().SetSize(aSize);
+
+ cChar = pRight->GetToken().cMathChar;
+ if (cChar != MS_LINE && cChar != MS_DLINE)
+ pRight->GetFont().SetSize(aSize);
+
+ pLeft ->AdaptToY(rDev, nBraceHeight);
+ pRight->AdaptToY(rDev, nBraceHeight);
+ }
+
+ pLeft ->Arrange(rDev, rFormat);
+ pRight->Arrange(rDev, rFormat);
+
+ // damit auch "\(a\) - (a) - left ( a right )" vernünftig aussieht
+ RectVerAlign eVerAlign = bScale ? RVA_CENTERY : RVA_BASELINE;
+
+ Point aPos;
+ aPos = pLeft->AlignTo(*pBody, RP_LEFT, RHA_CENTER, eVerAlign);
+ aPos.X() -= nDist;
+ pLeft->MoveTo(aPos);
+
+ aPos = pRight->AlignTo(*pBody, RP_RIGHT, RHA_CENTER, eVerAlign);
+ aPos.X() += nDist;
+ pRight->MoveTo(aPos);
+
+ SmRect::operator = (*pBody);
+ ExtendBy(*pLeft, RCP_THIS).ExtendBy(*pRight, RCP_THIS);
+}
+
+
+/**************************************************************************/
+
+
+void SmBracebodyNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ USHORT nNumSubNodes = GetNumSubNodes();
+ if (nNumSubNodes == 0)
+ return;
+
+ // arrange arguments
+ USHORT i;
+ for (i = 0; i < nNumSubNodes; i += 2)
+ GetSubNode(i)->Arrange(rDev, rFormat);
+
+ // build reference rectangle with necessary info for vertical alignment
+ SmRect aRefRect (*GetSubNode(0));
+ for (i = 0; i < nNumSubNodes; i += 2)
+ {
+ SmRect aTmpRect (*GetSubNode(i));
+ Point aPos = aTmpRect.AlignTo(aRefRect, RP_RIGHT, RHA_CENTER, RVA_BASELINE);
+ aTmpRect.MoveTo(aPos);
+ aRefRect.ExtendBy(aTmpRect, RCP_XOR);
+ }
+
+ nBodyHeight = aRefRect.GetHeight();
+
+ // scale separators to required height and arrange them
+ BOOL bScale = GetScaleMode() == SCALE_HEIGHT || rFormat.IsScaleNormalBrackets();
+ long nHeight = bScale ? aRefRect.GetHeight() : GetFont().GetSize().Height();
+ int nIndex = GetScaleMode() == SCALE_HEIGHT ?
+ DIS_BRACKETSIZE : DIS_NORMALBRACKETSIZE;
+ USHORT nPerc = rFormat.GetDistance(nIndex);
+ if (bScale)
+ nHeight += 2 * (nHeight * nPerc / 100L);
+ for (i = 1; i < nNumSubNodes; i += 2)
+ {
+ SmNode *pNode = GetSubNode(i);
+ pNode->AdaptToY(rDev, nHeight);
+ pNode->Arrange(rDev, rFormat);
+ }
+
+ // horizontal distance between argument and brackets or separators
+ long nDist = GetFont().GetSize().Height()
+ * rFormat.GetDistance(DIS_BRACKETSPACE) / 100L;
+
+ SmNode *pLeft = GetSubNode(0);
+ SmRect::operator = (*pLeft);
+ for (i = 1; i < nNumSubNodes; i++)
+ {
+ BOOL bIsSeparator = i % 2 != 0;
+ RectVerAlign eVerAlign = bIsSeparator ? RVA_CENTERY : RVA_BASELINE;
+
+ SmNode *pRight = GetSubNode(i);
+ Point aPosX = pRight->AlignTo(*pLeft, RP_RIGHT, RHA_CENTER, eVerAlign),
+ aPosY = pRight->AlignTo(aRefRect, RP_RIGHT, RHA_CENTER, eVerAlign);
+ aPosX.X() += nDist;
+
+ pRight->MoveTo(Point(aPosX.X(), aPosY.Y()));
+ ExtendBy(*pRight, bIsSeparator ? RCP_THIS : RCP_XOR);
+
+ pLeft = pRight;
+ }
+}
+
+
+/**************************************************************************/
+
+
+void SmVerticalBraceNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pBody = GetSubNode(0),
+ *pBrace = GetSubNode(1),
+ *pScript = GetSubNode(2);
+ DBG_ASSERT(pBody, "Sm: NULL pointer!");
+ DBG_ASSERT(pBrace, "Sm: NULL pointer!");
+ DBG_ASSERT(pScript, "Sm: NULL pointer!");
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ pBody->Arrange(aTmpDev, rFormat);
+
+ // Groesse wie bei Grenzen fuer diesen Teil
+ pScript->SetSize( Fraction( rFormat.GetRelSize(SIZ_LIMITS), 100 ) );
+ // etwas hoehere Klammern als normal
+ pBrace ->SetSize( Fraction(3, 2) );
+
+ long nItalicWidth = pBody->GetItalicWidth();
+ if (nItalicWidth > 0)
+ pBrace->AdaptToX(aTmpDev, nItalicWidth);
+
+ pBrace ->Arrange(aTmpDev, rFormat);
+ pScript->Arrange(aTmpDev, rFormat);
+
+ // die relativen Position und die Abstaende zueinander bestimmen
+ RectPos eRectPos;
+ long nFontHeight = pBody->GetFont().GetSize().Height();
+ long nDistBody = nFontHeight * rFormat.GetDistance(DIS_ORNAMENTSIZE),
+ nDistScript = nFontHeight;
+ if (GetToken().eType == TOVERBRACE)
+ {
+ eRectPos = RP_TOP;
+ nDistBody = - nDistBody;
+ nDistScript *= - rFormat.GetDistance(DIS_UPPERLIMIT);
+ }
+ else // TUNDERBRACE
+ {
+ eRectPos = RP_BOTTOM;
+ nDistScript *= + rFormat.GetDistance(DIS_LOWERLIMIT);
+ }
+ nDistBody /= 100L;
+ nDistScript /= 100L;
+
+ Point aPos = pBrace->AlignTo(*pBody, eRectPos, RHA_CENTER, RVA_BASELINE);
+ aPos.Y() += nDistBody;
+ pBrace->MoveTo(aPos);
+
+ aPos = pScript->AlignTo(*pBrace, eRectPos, RHA_CENTER, RVA_BASELINE);
+ aPos.Y() += nDistScript;
+ pScript->MoveTo(aPos);
+
+ SmRect::operator = (*pBody);
+ ExtendBy(*pBrace, RCP_THIS).ExtendBy(*pScript, RCP_THIS);
+}
+
+
+/**************************************************************************/
+
+#ifdef MAC
+#pragma segment FrmNode_03
+#endif
+
+
+SmNode * SmOperNode::GetSymbol()
+{
+ SmNode *pNode = GetSubNode(0);
+ DBG_ASSERT(pNode, "Sm: NULL pointer!");
+
+ if (pNode->GetType() == NSUBSUP)
+ pNode = ((SmSubSupNode *) pNode)->GetBody();
+
+ DBG_ASSERT(pNode, "Sm: NULL pointer!");
+ return pNode;
+}
+
+
+long SmOperNode::CalcSymbolHeight(const SmNode &rSymbol,
+ const SmFormat &rFormat) const
+ // returns the font height to be used for operator-symbol
+{
+ long nHeight = GetFont().GetSize().Height();
+
+ SmTokenType eType = GetToken().eType;
+ if (eType == TLIM || eType == TLIMINF || eType == TLIMSUP)
+ return nHeight;
+
+ if (!rFormat.IsTextmode())
+ {
+ // set minimum size ()
+ nHeight += (nHeight * 20L) / 100L;
+
+ nHeight += nHeight
+ * rFormat.GetDistance(DIS_OPERATORSIZE) / 100L;
+ nHeight = nHeight * 686L / 845L;
+ }
+
+ // correct user-defined symbols to match height of sum from StarMath
+ // font
+ if (rSymbol.GetToken().eType == TSPECIAL)
+ nHeight = nHeight * 845L / 686L;
+
+ return nHeight;
+}
+
+
+void SmOperNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pOper = GetSubNode(0);
+ SmNode *pBody = GetSubNode(1);
+
+ DBG_ASSERT(pOper, "Sm: Subnode fehlt");
+ DBG_ASSERT(pBody, "Sm: Subnode fehlt");
+
+ SmNode *pSymbol = GetSymbol();
+ pSymbol->SetSize(Fraction(CalcSymbolHeight(*pSymbol, rFormat),
+ pSymbol->GetFont().GetSize().Height()));
+
+ pBody->Arrange(rDev, rFormat);
+ pOper->Arrange(rDev, rFormat);
+
+ long nOrigHeight = GetFont().GetSize().Height(),
+ nDist = nOrigHeight
+ * rFormat.GetDistance(DIS_OPERATORSPACE) / 100L;
+
+ Point aPos = pOper->AlignTo(*pBody, RP_LEFT, RHA_CENTER, /*RVA_CENTERY*/RVA_MID);
+ aPos.X() -= nDist;
+ pOper->MoveTo(aPos);
+
+ SmRect::operator = (*pBody);
+ ExtendBy(*pOper, RCP_THIS);
+}
+
+
+/**************************************************************************/
+
+
+void SmAlignNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+ // setzt im ganzen subtree (incl aktuellem node) das alignment
+{
+ DBG_ASSERT(GetNumSubNodes() > 0, "Sm: SubNode fehlt");
+
+ SmNode *pNode = GetSubNode(0);
+
+ RectHorAlign eHorAlign;
+ switch (GetToken().eType)
+ {
+ case TALIGNL: eHorAlign = RHA_LEFT; break;
+ case TALIGNC: eHorAlign = RHA_CENTER; break;
+ case TALIGNR: eHorAlign = RHA_RIGHT; break;
+ }
+ SetRectHorAlign(eHorAlign);
+
+ pNode->Arrange(rDev, rFormat);
+
+ SmRect::operator = (pNode->GetRect());
+}
+
+
+/**************************************************************************/
+
+
+void SmAttributNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pAttr = GetSubNode(0),
+ *pBody = GetSubNode(1);
+ DBG_ASSERT(pBody, "Sm: Body fehlt");
+ DBG_ASSERT(pAttr, "Sm: Attribut fehlt");
+
+ pBody->Arrange(rDev, rFormat);
+
+ if (GetScaleMode() == SCALE_WIDTH)
+ pAttr->AdaptToX(rDev, pBody->GetItalicWidth());
+ pAttr->Arrange(rDev, rFormat);
+
+ // get relative position of attribut
+ RectVerAlign eVerAlign;
+ long nDist = 0;
+ switch (GetToken().eType)
+ { case TUNDERLINE :
+ eVerAlign = RVA_ATTRIBUT_LO;
+ break;
+ case TOVERSTRIKE :
+ eVerAlign = RVA_ATTRIBUT_MID;
+ break;
+ default :
+ eVerAlign = RVA_ATTRIBUT_HI;
+ if (pBody->GetType() == NATTRIBUT)
+ nDist = GetFont().GetSize().Height()
+ * rFormat.GetDistance(DIS_ORNAMENTSPACE) / 100L;
+ }
+ Point aPos = pAttr->AlignTo(*pBody, RP_ATTRIBUT, RHA_CENTER, eVerAlign);
+ aPos.Y() -= nDist;
+ pAttr->MoveTo(aPos);
+
+ SmRect::operator = (*pBody);
+ ExtendBy(*pAttr, RCP_THIS, (BOOL) TRUE);
+}
+
+
+/**************************************************************************/
+
+
+void SmFontNode::Prepare(const SmFormat &rFormat)
+{
+ //! prepare subnodes first
+ SmNode::Prepare(rFormat);
+
+ int nFnt = -1;
+ switch (GetToken().eType)
+ {
+ case TFIXED: nFnt = FNT_FIXED; break;
+ case TSANS: nFnt = FNT_SANS; break;
+ case TSERIF: nFnt = FNT_SERIF; break;
+ }
+ if (nFnt != -1)
+ { GetFont() = rFormat.GetFont(nFnt);
+ SetFont(GetFont());
+ }
+
+ //! prevent overwrites of this font by 'Arrange' or 'SetFont' calls of
+ //! other font nodes (those with lower depth in the tree)
+ Flags() |= FLG_FONT;
+}
+
+
+void SmFontNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmNode *pNode = GetSubNode(1);
+ DBG_ASSERT(pNode, "Sm: SubNode fehlt");
+
+ switch (GetToken().eType)
+ { case TSIZE :
+ pNode->SetFontSize(aFontSize, nSizeType);
+ break;
+ case TSANS :
+ case TSERIF :
+ case TFIXED :
+ pNode->SetFont(GetFont());
+ break;
+ case TUNKNOWN : break; // no assertion on "font <?> <?>"
+
+ case TPHANTOM : SetPhantom(TRUE); break;
+ case TBOLD : SetAttribut(ATTR_BOLD); break;
+ case TITALIC : SetAttribut(ATTR_ITALIC); break;
+ case TNBOLD : ClearAttribut(ATTR_BOLD); break;
+ case TNITALIC : ClearAttribut(ATTR_ITALIC); break;
+
+ case TBLACK : SetColor(Color(COL_BLACK)); break;
+ case TWHITE : SetColor(Color(COL_WHITE)); break;
+ case TRED : SetColor(Color(COL_RED)); break;
+ case TGREEN : SetColor(Color(COL_GREEN)); break;
+ case TBLUE : SetColor(Color(COL_BLUE)); break;
+ case TCYAN : SetColor(Color(COL_CYAN)); break;
+ case TMAGENTA : SetColor(Color(COL_MAGENTA)); break;
+ case TYELLOW : SetColor(Color(COL_YELLOW)); break;
+
+ default:
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+
+ pNode->Arrange(rDev, rFormat);
+
+ SmRect::operator = (pNode->GetRect());
+}
+
+
+void SmFontNode::SetSizeParameter(const Fraction& rValue, USHORT Type)
+{
+ nSizeType = Type;
+ aFontSize = rValue;
+}
+
+
+/**************************************************************************/
+
+
+SmPolyLineNode::SmPolyLineNode(const SmToken &rNodeToken)
+: SmGraphicNode(NPOLYLINE, rNodeToken)
+{
+ aPoly.SetSize(2);
+ nWidth = 0;
+}
+
+
+void SmPolyLineNode::AdaptToX(const OutputDevice &rDev, ULONG nWidth)
+{
+ aToSize.Width() = nWidth;
+}
+
+
+void SmPolyLineNode::AdaptToY(const OutputDevice &rDev, ULONG nHeight)
+{
+ GetFont().FreezeBorderWidth();
+ aToSize.Height() = nHeight;
+}
+
+
+void SmPolyLineNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ //! some routines being called extract some info from the OutputDevice's
+ //! font (eg the space to be used for borders OR the font name(!!)).
+ //! Thus the font should reflect the needs and has to be set!
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ long nBorderwidth = GetFont().GetBorderWidth();
+
+ //
+ // Das Polygon mit den beiden Endpunkten bilden
+ //
+ DBG_ASSERT(aPoly.GetSize() == 2, "Sm : falsche Anzahl von Punkten");
+ Point aPointA, aPointB;
+ if (GetToken().eType == TWIDESLASH)
+ {
+ aPointA.X() = nBorderwidth;
+ aPointA.Y() = aToSize.Height() - nBorderwidth;
+ aPointB.X() = aToSize.Width() - nBorderwidth;
+ aPointB.Y() = nBorderwidth;
+ }
+ else
+ {
+ DBG_ASSERT(GetToken().eType == TWIDEBACKSLASH, "Sm : unerwartetes Token");
+ aPointA.X() =
+ aPointA.Y() = nBorderwidth;
+ aPointB.X() = aToSize.Width() - nBorderwidth;
+ aPointB.Y() = aToSize.Height() - nBorderwidth;
+ }
+ aPoly.SetPoint(aPointA, 0);
+ aPoly.SetPoint(aPointB, 1);
+
+ long nThick = GetFont().GetSize().Height()
+ * rFormat.GetDistance(DIS_STROKEWIDTH) / 100L;
+ nWidth = nThick + 2 * nBorderwidth;
+
+ SmRect::operator = (SmRect(aToSize.Width(), aToSize.Height()));
+}
+
+
+void SmPolyLineNode::Draw(OutputDevice &rDev, const Point &rPosition) const
+{
+ if (IsPhantom())
+ return;
+
+ long nBorderwidth = GetFont().GetBorderWidth();
+
+ LineInfo aInfo;
+ aInfo.SetWidth(nWidth - 2 * nBorderwidth);
+
+ Point aOffset (Point() - aPoly.GetBoundRect().TopLeft()
+ + Point(nBorderwidth, nBorderwidth)),
+ aPos (rPosition + aOffset);
+ ((Polygon &) aPoly).Move(aPos.X(), aPos.Y());
+
+ Color aOldCol (rDev.GetLineColor());
+ rDev.SetLineColor( GetFont().GetColor() );
+
+ rDev.DrawPolyLine(aPoly, aInfo);
+
+ rDev.SetLineColor( aOldCol );
+
+#ifdef SM_RECT_DEBUG
+ if (!IsDebug())
+ return;
+
+ int nRFlags = SM_RECT_CORE | SM_RECT_ITALIC | SM_RECT_LINES | SM_RECT_MID;
+ SmRect::Draw(rDev, rPosition, nRFlags);
+#endif
+}
+
+
+/**************************************************************************/
+
+
+void SmPolygonNode::AdaptToX(const OutputDevice &rDev, ULONG nWidth)
+{
+ aToSize.Width() = nWidth;
+}
+
+
+void SmPolygonNode::AdaptToY(const OutputDevice &rDev, ULONG nHeight)
+{
+ GetFont().FreezeBorderWidth();
+ aToSize.Height() = nHeight;
+}
+
+
+void SmPolygonNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ //! some routines being called extract some info from the OutputDevice's
+ //! font (eg the space to be used for borders OR the font name(!!)).
+ //! Thus the font should reflect the needs and has to be set!
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ long nBorderWidth = GetFont().GetBorderWidth();
+
+ // das Polygon der gewaehlten FontSize anpassen
+ Size aSize (rDev.GetFont().GetSize()),
+ aOrigSize (aPolygon.GetOrigFontSize());
+ double fScaleY = (double) aSize.Height() / aOrigSize.Height(),
+ fScaleX = aSize.Width() ?
+ (double) aSize.Width() / aOrigSize.Width() : fScaleY;
+ aPolygon.ScaleBy(fScaleX / aPolygon.GetScaleX(), fScaleY / aPolygon.GetScaleY());
+
+ long nTmp;
+ if ((nTmp = aToSize.Width()) > 0)
+ // Breite anpassen und dabei Platz für Rand links und rechts lassen
+ // (das resultierende SmRect soll den Rand beinhalten und trotzdem
+ // nicht breiter als gewünscht sein)
+ aPolygon.AdaptToX(aTmpDev, Max(nTmp - 2L * nBorderWidth, 10L));
+ if ((nTmp = aToSize.Height()) > 0)
+ // wie oben jedoch mit oberen und unterem Rand
+ aPolygon.AdaptToY(aTmpDev, Max(nTmp - 2L * nBorderWidth, 10L));
+
+ if (aPolygon.GetChar() == xub_Unicode('\0'))
+ SmRect::operator = (SmRect());
+ else
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, aPolygon, nBorderWidth));
+}
+
+
+void SmPolygonNode::Draw(OutputDevice &rDev, const Point &rPosition) const
+{
+ if (IsPhantom())
+ return;
+
+ rDev.Push(PUSH_FILLCOLOR | PUSH_LINECOLOR);
+ rDev.SetFillColor(GetFont().GetColor());
+ rDev.SetLineColor();
+
+ // calculate offset to position the polygon centered within the
+ // surrounding rectangle of the node
+ // (the root sign will be positioned right within the rectangle in order
+ // to attach the horizontal bar easily)
+ Size aPolySize (aPolygon.GetBoundRect(rDev).GetSize()),
+ aRectSize (GetRect().GetSize());
+ Point aOffset ((aRectSize.Width() - aPolySize.Width()) /
+ (aPolygon.GetChar() == MS_SQRT ? 1 : 2),
+ (aRectSize.Height() - aPolySize.Height()) / 2);
+
+ aPolygon.Draw(rDev, rPosition + aOffset);
+
+ rDev.Pop();
+
+#ifdef SM_RECT_DEBUG
+ if (!IsDebug())
+ return;
+
+ int nRFlags = SM_RECT_CORE | SM_RECT_ITALIC | SM_RECT_LINES | SM_RECT_MID;
+ SmRect::Draw(rDev, rPosition, nRFlags);
+#endif
+}
+
+
+/**************************************************************************/
+
+
+void SmRootSymbolNode::DrawBar(OutputDevice &rDev, const Point &rPosition) const
+{
+ // get polygon and rectangle
+ SmPolygon aBarPoly = SmPolygon(MS_BAR);
+
+ // extra length to close small (wedge formed) gap between root-sign and
+ // horizontal bar
+ long nExtraLen = aBarPoly.GetBoundRect(rDev).GetSize().Height() / 2;
+
+ aBarPoly.AdaptToX((OutputDevice &) rDev, nBodyWidth + nExtraLen);
+ aBarPoly.ScaleBy( 1.0, (double) GetFont().GetSize().Height()
+ / aBarPoly.GetOrigFontSize().Height());
+
+ Point aDrawPos (rPosition);
+ aDrawPos.X() -= nExtraLen;
+ aDrawPos = rDev.PixelToLogic(rDev.LogicToPixel(aDrawPos));
+
+ rDev.Push(PUSH_FILLCOLOR | PUSH_LINECOLOR);
+ rDev.SetFillColor(GetFont().GetColor());
+ rDev.SetLineColor();
+
+ aBarPoly.Draw(rDev, aDrawPos);
+
+ rDev.Pop();
+}
+
+
+void SmRootSymbolNode::AdaptToY(const OutputDevice &rDev, ULONG nHeight)
+{
+ // etwas extra Länge damit der horizontale Balken später über dem
+ // Argument positioniert ist
+ SmPolygonNode::AdaptToY(rDev, nHeight + nHeight / 10L);
+}
+
+
+void SmRootSymbolNode::Draw(OutputDevice &rDev, const Point &rPosition) const
+{
+ if (IsPhantom())
+ return;
+
+ // draw root-sign itself
+ SmPolygonNode::Draw(rDev, rPosition);
+
+ // get offset for horizontal bar
+ long nPolyHeight = GetPolygon().GetBoundRect(rDev).GetSize().Height();
+ Point aBarOffset (GetWidth(), (GetHeight() - nPolyHeight) / 2);
+
+ DrawBar(rDev, rPosition + aBarOffset);
+
+#ifdef SM_RECT_DEBUG
+ if (!IsDebug())
+ return;
+
+ int nRFlags = SM_RECT_CORE | SM_RECT_ITALIC | SM_RECT_LINES | SM_RECT_MID;
+ SmRect::Draw(rDev, rPosition, nRFlags);
+#endif
+}
+
+
+/**************************************************************************/
+
+
+void SmRectangleNode::AdaptToX(const OutputDevice &rDev, ULONG nWidth)
+{
+ aToSize.Width() = nWidth;
+}
+
+
+void SmRectangleNode::AdaptToY(const OutputDevice &rDev, ULONG nHeight)
+{
+ GetFont().FreezeBorderWidth();
+ aToSize.Height() = nHeight;
+}
+
+
+void SmRectangleNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ long nFontHeight = GetFont().GetSize().Height();
+ long nWidth = aToSize.Width(),
+ nHeight = aToSize.Height();
+ if (nHeight == 0)
+ nHeight = nFontHeight / 30;
+ if (nWidth == 0)
+ nWidth = nFontHeight / 3;
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ // add some borderspace
+ ULONG nBorderWidth = GetFont().GetBorderWidth();
+ //nWidth += nBorderWidth;
+ nHeight += 2 * nBorderWidth;
+
+ //! use this method in order to have 'SmRect::HasAlignInfo() == TRUE'
+ //! and thus having the attribut-fences updated in 'SmRect::ExtendBy'
+ SmRect::operator = (SmRect(nWidth, nHeight));
+}
+
+
+void SmRectangleNode::Draw(OutputDevice &rDev, const Point &rPosition) const
+{
+ if (IsPhantom())
+ return;
+
+ rDev.Push(PUSH_FILLCOLOR | PUSH_LINECOLOR | PUSH_FONT);
+ rDev.SetFillColor(GetFont().GetColor());
+ rDev.SetLineColor();
+
+ rDev.SetFont(GetFont());
+ ULONG nBorderWidth = GetFont().GetBorderWidth();
+
+ // get rectangle and remove borderspace
+ Rectangle aTmp (AsRectangle() + rPosition - GetTopLeft());
+ aTmp.Left() += nBorderWidth;
+ aTmp.Right() -= nBorderWidth;
+ aTmp.Top() += nBorderWidth;
+ aTmp.Bottom() -= nBorderWidth;
+
+ DBG_ASSERT(aTmp.GetHeight() > 0 && aTmp.GetWidth() > 0,
+ "Sm: leeres Rechteck");
+
+ //! avoid GROWING AND SHRINKING of drawn rectangle when constantly
+ //! increasing zoomfactor.
+ // This is done by shifting it's output-position to a point that
+ // corresponds exactly to a pixel on the output device.
+ Point aPos (rDev.PixelToLogic(rDev.LogicToPixel(aTmp.TopLeft())));
+ aTmp.SetPos(aPos);
+
+ rDev.DrawRect(aTmp);
+
+ rDev.Pop();
+
+#ifdef SM_RECT_DEBUG
+ if (!IsDebug())
+ return;
+
+ int nRFlags = SM_RECT_CORE | SM_RECT_ITALIC | SM_RECT_LINES | SM_RECT_MID;
+ SmRect::Draw(rDev, rPosition, nRFlags);
+#endif
+}
+
+
+/**************************************************************************/
+
+
+void SmTextNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ aText = GetToken().aText;
+ GetFont() = rFormat.GetFont(GetFontDesc());
+
+ if (GetFont().GetItalic() == ITALIC_NORMAL)
+ Attributes() |= ATTR_ITALIC;
+ if (GetFont().GetWeight() == WEIGHT_BOLD)
+ Attributes() |= ATTR_BOLD;
+
+};
+
+
+void SmTextNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ PrepareAttributes();
+
+ USHORT nSizeDesc = GetFontDesc() == FNT_FUNCTION ?
+ SIZ_FUNCTION : SIZ_TEXT;
+ GetFont() *= Fraction (rFormat.GetRelSize(nSizeDesc), 100);
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, aText, GetFont().GetBorderWidth()));
+}
+
+
+void SmTextNode::Draw(OutputDevice &rDev, const Point& rPosition) const
+{
+ if (IsPhantom() || aText.Len() == 0 || aText.GetChar(0) == xub_Unicode('\0'))
+ return;
+
+ rDev.Push(PUSH_FONT);
+ rDev.SetFont(GetFont());
+
+ Point aPos (rPosition);
+ aPos.Y() += GetBaselineOffset();
+ // auf Pixelkoordinaten runden
+ aPos = rDev.PixelToLogic( rDev.LogicToPixel(aPos) );
+
+ rDev.DrawStretchText(aPos, GetWidth(), aText);
+
+ rDev.Pop();
+
+#ifdef SM_RECT_DEBUG
+ if (!IsDebug())
+ return;
+
+ int nRFlags = SM_RECT_CORE | SM_RECT_ITALIC | SM_RECT_LINES | SM_RECT_MID;
+ SmRect::Draw(rDev, rPosition, nRFlags);
+#endif
+}
+
+
+/**************************************************************************/
+
+
+void SmMatrixNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ Point aPosition,
+ aOffset;
+ SmNode *pNode;
+ int i, j;
+
+ // initialize array that is to hold the maximum widhts of all
+ // elements (subnodes) in that column.
+ long *pColWidth = new long[nNumCols];
+ for (j = 0; j < nNumCols; j++)
+ pColWidth[j] = 0;
+
+ // arrange subnodes and calculate the aboves arrays contents
+ for (i = GetNumSubNodes() - 1; i >= 0; i--)
+ if (pNode = GetSubNode(i))
+ { pNode->Arrange(rDev, rFormat);
+
+ int nCol = i % nNumCols;
+ pColWidth[nCol]
+ = Max(pColWidth[nCol], pNode->GetItalicWidth());
+ }
+
+ // norm distance from which the following two are calcutated
+ const int nNormDist = 3 * GetFont().GetSize().Height();
+
+ // define horizontal and vertical minimal distances that seperate
+ // the elements
+ long nHorDist = nNormDist * rFormat.GetDistance(DIS_MATRIXCOL) / 100L,
+ nVerDist = nNormDist * rFormat.GetDistance(DIS_MATRIXROW) / 100L;
+
+ // build array that holds the leftmost position for each column
+ long *pColLeft = new long[nNumCols];
+ long nX = 0;
+ for (j = 0; j < nNumCols; j++)
+ { pColLeft[j] = nX;
+ nX += pColWidth[j] + nHorDist;
+ }
+
+ Point aPos, aDelta;
+ SmRect aLineRect;
+ SmRect::operator = (SmRect());
+ for (i = 0; i < nNumRows; i++)
+ { aLineRect = SmRect();
+ for (j = 0; j < nNumCols; j++)
+ { SmNode *pNode = GetSubNode(i * nNumCols + j);
+ DBG_ASSERT(pNode, "Sm: NULL pointer");
+
+ const SmRect &rNodeRect = pNode->GetRect();
+
+ // align all baselines in that row if possible
+ aPos = rNodeRect.AlignTo(aLineRect, RP_RIGHT, RHA_CENTER, RVA_BASELINE);
+ aPos.X() += nHorDist;
+
+ // get horizontal alignment
+ const SmNode *pCoNode = pNode->GetLeftMost();
+ SmTokenType eType = pCoNode->GetToken().eType;
+ RectHorAlign eHorAlign = eType == TTEXT ?
+ RHA_LEFT : pCoNode->GetRectHorAlign();
+
+ // caculate horizontal position of element depending on column
+ // and horizontal alignment
+ switch (eHorAlign)
+ { case RHA_LEFT:
+ aPos.X() = rNodeRect.GetLeft() + pColLeft[j];
+ break;
+ case RHA_CENTER:
+ aPos.X() = rNodeRect.GetLeft() + pColLeft[j]
+ + pColWidth[j] / 2
+ - rNodeRect.GetItalicCenterX();
+ break;
+ case RHA_RIGHT:
+ aPos.X() = rNodeRect.GetLeft() + pColLeft[j]
+ + pColWidth[j] - rNodeRect.GetItalicWidth();
+ break;
+ }
+
+ pNode->MoveTo(aPos);
+ aLineRect.ExtendBy(rNodeRect, RCP_XOR);
+ }
+
+ aPos = aLineRect.AlignTo(*this, RP_BOTTOM, RHA_CENTER, RVA_BASELINE);
+ aPos.Y() += nVerDist;
+
+ // move 'aLineRect' and rectangles in that line to final position
+ aDelta.X() = 0; // since horizontal alignment is already done
+ aDelta.Y() = aPos.Y() - aLineRect.GetTop();
+ aLineRect.Move(aDelta);
+ for (j = 0; j < nNumCols; j++)
+ if (pNode = GetSubNode(i * nNumCols + j))
+ pNode->Move(aDelta);
+
+ ExtendBy(aLineRect, RCP_NONE);
+ }
+
+ delete [] pColLeft;
+ delete [] pColWidth;
+}
+
+
+void SmMatrixNode::SetRowCol(USHORT nMatrixRows, USHORT nMatrixCols)
+{
+ nNumRows = nMatrixRows;
+ nNumCols = nMatrixCols;
+}
+
+
+/**************************************************************************/
+
+
+SmMathSymbolNode::SmMathSymbolNode(const SmToken &rNodeToken)
+: SmSpecialNode(NMATH, rNodeToken, FNT_MATH)
+{
+ xub_Unicode cChar = GetToken().cMathChar;
+ if ((xub_Unicode) '\0' != cChar)
+ SetText( cChar );
+}
+
+
+void SmMathSymbolNode::AdaptToX(const OutputDevice &rDev, ULONG nWidth)
+ // Scale charwidth to mach 'nWidth' while keeping the height
+ // (that is: actually the font width will be scaled)
+{
+ // Since there is no function to do this, we try to approximate
+ // it:
+ //
+ Font &rFace = GetFont();
+ Size aFntSize (rFace.GetSize());
+
+ //! however the result is a bit better with 'nWidth' as initial
+ //! font width
+ aFntSize.Width() = nWidth;
+ rFace.SetSize(aFntSize);
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(rFace);
+
+ // get denominator of error factor for width
+ long nDenom = SmRect(aTmpDev, NULL, GetText(),
+ GetFont().GetBorderWidth()).GetItalicWidth();
+
+ // scale fontwidth with this error factor
+ aFntSize.Width() *= nWidth;
+ aFntSize.Width() /= nDenom ? nDenom : 1;
+
+ GetFont().SetSize(aFntSize);
+}
+
+
+void SmMathSymbolNode::AdaptToY(const OutputDevice &rDev, ULONG nHeight)
+{
+ GetFont().FreezeBorderWidth();
+
+ Font &rFace = GetFont();
+ Size aFntSize (rFace.GetSize());
+
+ // da wir nur die Höhe skalieren wollen müsen wir hier ggf die Fontweite
+ // ermitteln um diese beizubehalten.
+ if (aFntSize.Width() == 0)
+ {
+ OutputDevice &rDevNC = (OutputDevice &) rDev;
+ rDevNC.Push(PUSH_FONT);
+ rDevNC.SetFont(rFace);
+ aFntSize.Width() = rDev.GetFontMetric().GetSize().Width();
+ rDevNC.Pop();
+ }
+ DBG_ASSERT(aFntSize.Width() != 0, "Sm: ");
+
+ //! however the result is a bit better with 'nHeight' as initial
+ //! font height
+ aFntSize.Height() = nHeight;
+ rFace.SetSize(aFntSize);
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(rFace);
+
+ // get denominator of error factor for height
+ long nDenom = SmRect(aTmpDev, NULL, GetText(),
+ GetFont().GetBorderWidth()).GetHeight();
+
+ // scale fontwidth with this error factor
+ aFntSize.Height() *= nHeight;
+ aFntSize.Height() /= nDenom ? nDenom : 1;
+
+ GetFont().SetSize(aFntSize);
+}
+
+
+void SmMathSymbolNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ DBG_ASSERT(GetFont().GetCharSet() == RTL_TEXTENCODING_SYMBOL,
+ "Sm : falsches CHARSET für Zeichen aus dem StarMath Font");
+
+ Flags() |= FLG_FONT | FLG_ITALIC;
+};
+
+
+void SmMathSymbolNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ const XubString &rText = GetText();
+
+ if (rText.Len() == 0 || rText.GetChar(0) == xub_Unicode('\0'))
+ { SmRect::operator = (SmRect());
+ return;
+ }
+
+ PrepareAttributes();
+
+ GetFont() *= Fraction (rFormat.GetRelSize(SIZ_TEXT), 100);
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, rText, GetFont().GetBorderWidth()));
+}
+
+
+/**************************************************************************/
+
+
+void SmSpecialNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ SmSym *pSym;
+ SmModule *pp = SM_MOD1();
+
+ Size aOldSize = GetFont().GetSize();
+ if (pSym = pp->GetSymSetManager()->GetSymbol(GetToken().aText))
+ { SetText( pSym->GetCharacter() );
+ GetFont() = pSym->GetFace();
+
+ if (GetFont().GetName().EqualsIgnoreCaseAscii("StarMath"))
+ GetFont().SetCharSet(RTL_TEXTENCODING_SYMBOL);
+ }
+ else
+ { SetText( GetToken().aText );
+ GetFont() = rFormat.GetFont(FNT_VARIABLE);
+ }
+ GetFont().SetSize(aOldSize);
+
+ //! eigentlich sollten nur WEIGHT_NORMAL und WEIGHT_BOLD vorkommen...
+ //! In der sms-Datei gibt es jedoch zB auch 'WEIGHT_ULTRALIGHT'
+ //! daher vergleichen wir hier mit > statt mit != .
+ //! (Langfristig sollte die Notwendigkeit für 'PrepareAttribut', und damit
+ //! für dieses hier, mal entfallen.)
+ if (GetFont().GetWeight() > WEIGHT_NORMAL)
+ SetAttribut(ATTR_BOLD);
+ if (GetFont().GetItalic() != ITALIC_NONE)
+ SetAttribut(ATTR_ITALIC);
+
+ Flags() |= FLG_FONT;
+};
+
+
+void SmSpecialNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ PrepareAttributes();
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, GetText(), GetFont().GetBorderWidth()));
+}
+
+
+void SmSpecialNode::Draw(OutputDevice &rDev, const Point& rPosition) const
+{
+ //! since this chars might come from any font, that we may not have
+ //! set to ALIGN_BASELINE yet, we do it now.
+ ((SmSpecialNode *)this)->GetFont().SetAlign(ALIGN_BASELINE);
+
+ SmTextNode::Draw(rDev, rPosition);
+}
+
+
+/**************************************************************************/
+
+
+void SmGlyphSpecialNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ PrepareAttributes();
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, GetText(),
+ GetFont().GetBorderWidth()).AsGlyphRect());
+}
+
+
+/**************************************************************************/
+
+
+void SmPlaceNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ GetFont().SetColor(COL_GRAY);
+ Flags() |= FLG_COLOR | FLG_FONT | FLG_ITALIC;
+};
+
+
+void SmPlaceNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ PrepareAttributes();
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, GetText(), GetFont().GetBorderWidth()));
+}
+
+
+/**************************************************************************/
+
+
+void SmErrorNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ GetFont().SetColor(COL_RED);
+ Flags() |= FLG_VISIBLE | FLG_BOLD | FLG_ITALIC
+ | FLG_COLOR | FLG_FONT | FLG_SIZE;
+}
+
+
+void SmErrorNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ PrepareAttributes();
+
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ const XubString &rText = GetText();
+ DBG_ASSERT(rText.Len() == 1 && rText.GetChar(0) == (xub_Unicode) MS_ERROR,
+ "Sm : Text ist kein ERROR Symbol");
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, rText, GetFont().GetBorderWidth()));
+}
+
+
+/**************************************************************************/
+
+
+void SmBlankNode::IncreaseBy(const SmToken &rToken)
+{
+ switch(rToken.eType)
+ {
+ case TBLANK: nNum += 4; break;
+ case TSBLANK: nNum += 1; break;
+ }
+}
+
+
+void SmBlankNode::Prepare(const SmFormat &rFormat)
+{
+ SmNode::Prepare(rFormat);
+
+ //! hier muß/sollte es lediglich nicht der StarMath Font sein,
+ //! damit für das in Arrange verwendete Zeichen ein "normales"
+ //! (ungecliptes) Rechteck erzeugt wird.
+ GetFont() = rFormat.GetFont(FNT_VARIABLE);
+
+ Flags() |= FLG_FONT | FLG_BOLD | FLG_ITALIC;
+}
+
+
+void SmBlankNode::Arrange(const OutputDevice &rDev, const SmFormat &rFormat)
+{
+ SmTmpDevice aTmpDev ((OutputDevice &) rDev);
+ aTmpDev.SetFont(GetFont());
+
+ // Abstand von der Fonthöhe abhängig machen
+ // (damit er beim skalieren (zB size *2 {a ~ b}) mitwächst)
+ long nDist = GetFont().GetSize().Height() / 10L,
+ nSpace = nNum * nDist;
+
+ // ein SmRect mit Baseline und allem drum und dran besorgen
+ SmRect::operator = (SmRect(aTmpDev, &rFormat, XubString(xub_Unicode(' ')),
+ GetFont().GetBorderWidth()));
+
+ // und dieses auf die gewünschte Breite bringen
+ SetItalicSpaces(0, 0);
+ SetWidth(nSpace);
+}
+
+
+
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
new file mode 100644
index 000000000000..f10d685d864f
--- /dev/null
+++ b/starmath/source/parse.cxx
@@ -0,0 +1,2087 @@
+/*************************************************************************
+ *
+ * $RCSfile: parse.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#include <stdio.h>
+
+#define SMDLL 1
+
+#ifndef PARSE_HXX
+#include "parse.hxx"
+#endif
+#ifndef XCHAR_HXX
+#include "xchar.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+#ifndef _SMDLL_HXX
+#include "smdll.hxx"
+#endif
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+#ifndef CONFIG_HXX
+#include "config.hxx"
+#endif
+
+#include "node.hxx"
+
+
+static inline BOOL strnccmp(const String &u1, xub_StrLen nIdx,
+ const sal_Char *s2, xub_StrLen nLen)
+{
+ return u1.EqualsIgnoreCaseAscii( s2, nIdx, nLen );
+}
+
+static const xub_Unicode aDelimiterTable[] =
+{
+ ' ', '\t', '\n', '\r', '+', '-', '*', '/', '=', '#',
+ '%', '\\', '"', '~', '`', '>', '<', '&', '|', '(',
+ ')', '{', '}', '[', ']', '^', '_',
+ '\0' // end of list symbol
+};
+
+
+///////////////////////////////////////////////////////////////////////////
+
+SmToken::SmToken() :
+ eType (TUNKNOWN),
+ cMathChar ('\0')
+{
+ nGroup = nLevel = nRow = nCol = 0;
+}
+
+///////////////////////////////////////////////////////////////////////////
+
+struct SmTokenTableEntry
+{
+ const sal_Char* pIdent;
+ SmTokenType eType;
+ xub_Unicode cMathChar;
+ ULONG nGroup;
+ USHORT nLevel;
+};
+
+static const SmTokenTableEntry aTokenTable[] =
+{
+ { "#", TPOUND, '\0', 0, 0 },
+ { "##", TDPOUND, '\0', 0, 0 },
+ { "&", TAND, MS_AND, TGPRODUCT, 0 },
+ { "(", TLPARENT, MS_LPARENT, TGLBRACES, 5 }, //! 5 to continue expression
+ { ")", TRPARENT, MS_RPARENT, TGRBRACES, 0 }, //! 0 to terminate expression
+ { "*", TMULTIPLY, MS_MULTIPLY, TGPRODUCT, 0 },
+ { "+", TPLUS, MS_PLUS, TGUNOPER | TGSUM, 5 },
+ { "+-", TPLUSMINUS, MS_PLUSMINUS, TGUNOPER | TGSUM, 5 },
+ { "-", TMINUS, MS_MINUS, TGUNOPER | TGSUM, 5 },
+ { "-+", TMINUSPLUS, MS_MINUSPLUS, TGUNOPER | TGSUM, 5 },
+ { ".", TPOINT, '\0', 0, 0 },
+ { "/", TDIVIDEBY, MS_SLASH, TGPRODUCT, 0 },
+ { "<", TLT, MS_LT, TGRELATION, 0 },
+ { "<<", TLL, MS_LL, TGRELATION, 0 },
+ { "<=", TLE, MS_LE, TGRELATION, 0 },
+ { "<>", TNEQ, MS_NEQ, TGRELATION, 0},
+ { "<?>", TPLACE, MS_PLACE, 0, 5 },
+ { "=", TASSIGN, MS_ASSIGN, TGRELATION, 0},
+ { ">", TGT, MS_GT, TGRELATION, 0 },
+ { ">=", TGE, MS_GE, TGRELATION, 0 },
+ { ">>", TGG, MS_GG, TGRELATION, 0 },
+ { "Im" , TIM, MS_IM, TGSTANDALONE, 5 },
+ { "MZ23", TDEBUG, '\0', TGATTRIBUT, 0 },
+ { "Re" , TRE, MS_RE, TGSTANDALONE, 5 },
+ { "abs", TABS, '\0', TGUNOPER, 13 },
+ { "arcosh", TACOSH, '\0', TGFUNCTION, 5 },
+ { "arcoth", TACOTH, '\0', TGFUNCTION, 5 },
+ { "acute", TACUTE, MS_ACUTE, TGATTRIBUT, 5 },
+ { "aleph" , TALEPH, MS_ALEPH, TGSTANDALONE, 5 },
+ { "alignb", TALIGNC, '\0', TGALIGN | TGDISCARDED, 0},
+ { "alignc", TALIGNC, '\0', TGALIGN, 0},
+ { "alignl", TALIGNL, '\0', TGALIGN, 0},
+ { "alignm", TALIGNC, '\0', TGALIGN | TGDISCARDED, 0},
+ { "alignr", TALIGNR, '\0', TGALIGN, 0},
+ { "alignt", TALIGNC, '\0', TGALIGN | TGDISCARDED, 0},
+ { "and", TAND, MS_AND, TGPRODUCT, 0},
+ { "approx", TAPPROX, MS_APPROX, TGRELATION, 0},
+ { "arccos", TACOS, '\0', TGFUNCTION, 5},
+ { "arccot", TACOT, '\0', TGFUNCTION, 5},
+ { "arcsin", TASIN, '\0', TGFUNCTION, 5},
+ { "arctan", TATAN, '\0', TGFUNCTION, 5},
+ { "arsinh", TASINH, '\0', TGFUNCTION, 5},
+ { "artanh", TATANH, '\0', TGFUNCTION, 5},
+ { "backepsilon" , TBACKEPSILON, MS_BACKEPSILON, TGSTANDALONE, 5},
+ { "bar", TBAR, MS_BAR, TGATTRIBUT, 5},
+ { "binom", TBINOM, '\0', 0, 5 },
+ { "black", TBLACK, '\0', TGCOLOR, 0},
+ { "blue", TBLUE, '\0', TGCOLOR, 0},
+ { "bold", TBOLD, '\0', TGFONTATTR, 5},
+ { "boper", TBOPER, '\0', TGPRODUCT, 0},
+ { "breve", TBREVE, MS_BREVE, TGATTRIBUT, 5},
+ { "bslash", TBACKSLASH, MS_BACKSLASH, TGPRODUCT, 0 },
+ { "cdot", TCDOT, MS_CDOT, TGPRODUCT, 0},
+ { "check", TCHECK, MS_CHECK, TGATTRIBUT, 5},
+ { "circ" , TCIRC, MS_CIRC, TGSTANDALONE, 5},
+ { "circle", TCIRCLE, MS_CIRCLE, TGATTRIBUT, 5},
+ { "color", TCOLOR, '\0', TGFONTATTR, 5},
+ { "coprod", TCOPROD, MS_COPROD, TGOPER, 5},
+ { "cos", TCOS, '\0', TGFUNCTION, 5},
+ { "cosh", TCOSH, '\0', TGFUNCTION, 5},
+ { "cot", TCOT, '\0', TGFUNCTION, 5},
+ { "coth", TCOTH, '\0', TGFUNCTION, 5},
+ { "csub", TCSUB, '\0', TGPOWER, 0},
+ { "csup", TCSUP, '\0', TGPOWER, 0},
+ { "cyan", TCYAN, '\0', TGCOLOR, 0},
+ { "dddot", TDDDOT, MS_DDDOT, TGATTRIBUT, 5},
+ { "ddot", TDDOT, MS_DDOT, TGATTRIBUT, 5},
+ { "def", TDEF, MS_DEF, TGRELATION, 0},
+ { "div", TDIV, MS_DIV, TGPRODUCT, 0},
+ { "divides", TDIVIDES, MS_LINE, TGRELATION, 0},
+ { "dlarrow" , TDLARROW, MS_DLARROW, TGSTANDALONE, 5},
+ { "dlrarrow" , TDLRARROW, MS_DLRARROW, TGSTANDALONE, 5},
+ { "dot", TDOT, MS_DOT, TGATTRIBUT, 5},
+ { "dotsaxis", TDOTSAXIS, MS_DOTSAXIS, TGSTANDALONE, 5}, // 5 to continue expression
+ { "dotsdiag", TDOTSDIAG, MS_DOTSUP, TGSTANDALONE, 5}, //
+ { "dotsdown", TDOTSDOWN, MS_DOTSDOWN, TGSTANDALONE, 5}, //
+ { "dotslow", TDOTSLOW, MS_DOTSLOW, TGSTANDALONE, 5}, //
+ { "dotsup", TDOTSUP, MS_DOTSUP, TGSTANDALONE, 5}, //
+ { "dotsvert", TDOTSVERT, MS_DOTSVERT, TGSTANDALONE, 5}, //
+ { "downarrow" , TDOWNARROW, MS_DOWNARROW, TGSTANDALONE, 5},
+ { "drarrow" , TDRARROW, MS_DRARROW, TGSTANDALONE, 5},
+ { "emptyset" , TEMPTYSET, MS_EMPTYSET, TGSTANDALONE, 5},
+ { "equiv", TEQUIV, MS_EQUIV, TGRELATION, 0},
+ { "exists", TEXISTS, MS_EXISTS, TGSTANDALONE, 5},
+ { "exp", TEXP, '\0', TGFUNCTION, 5},
+ { "fact", TFACT, MS_FACT, TGUNOPER, 5},
+ { "fixed", TFIXED, '\0', TGFONT, 0},
+ { "font", TFONT, '\0', TGFONTATTR, 5},
+ { "forall", TFORALL, MS_FORALL, TGSTANDALONE, 5},
+ { "from", TFROM, '\0', TGLIMIT, 0},
+ { "func", TFUNC, '\0', TGFUNCTION, 5},
+ { "ge", TGE, MS_GE, TGRELATION, 0},
+ { "geslant", TGESLANT, MS_GESLANT, TGRELATION, 0 },
+ { "gg", TGG, MS_GG, TGRELATION, 0},
+ { "grave", TGRAVE, MS_GRAVE, TGATTRIBUT, 5},
+ { "green", TGREEN, '\0', TGCOLOR, 0},
+ { "gt", TGT, MS_GT, TGRELATION, 0},
+ { "hat", THAT, MS_HAT, TGATTRIBUT, 5},
+ { "hbar" , THBAR, MS_HBAR, TGSTANDALONE, 5},
+ { "iiint", TIIINT, MS_IIINT, TGOPER, 5},
+ { "iint", TIINT, MS_IINT, TGOPER, 5},
+ { "in", TIN, MS_IN, TGRELATION, 0},
+ { "infinity" , TINFINITY, MS_INFINITY, TGSTANDALONE, 5},
+ { "infty" , TINFINITY, MS_INFINITY, TGSTANDALONE, 5},
+ { "int", TINT, MS_INT, TGOPER, 5},
+ { "intersection", TINTERSECT, MS_INTERSECT, TGPRODUCT, 0},
+ { "ital", TITALIC, '\0', TGFONTATTR, 5},
+ { "italic", TITALIC, '\0', TGFONTATTR, 5},
+ { "lambdabar" , TLAMBDABAR, MS_LAMBDABAR, TGSTANDALONE, 5},
+ { "langle", TLANGLE, MS_LANGLE, TGLBRACES, 5},
+ { "lbrace", TLBRACE, MS_LBRACE, TGLBRACES, 5},
+ { "lceil", TLCEIL, MS_LCEIL, TGLBRACES, 5},
+ { "ldbracket", TLDBRACKET, MS_LDBRACKET, TGLBRACES, 5},
+ { "ldline", TLDLINE, MS_DLINE, TGLBRACES, 5},
+ { "le", TLE, MS_LE, TGRELATION, 0},
+ { "left", TLEFT, '\0', 0, 5},
+ { "leftarrow" , TLEFTARROW, MS_LEFTARROW, TGSTANDALONE, 5},
+ { "leslant", TLESLANT, MS_LESLANT, TGRELATION, 0 },
+ { "lfloor", TLFLOOR, MS_LFLOOR, TGLBRACES, 5},
+ { "lim", TLIM, '\0', TGOPER, 5},
+ { "liminf", TLIMINF, '\0', TGOPER, 5},
+ { "limsup", TLIMSUP, '\0', TGOPER, 5},
+ { "lint", TLINT, MS_LINT, TGOPER, 5},
+ { "ll", TLL, MS_LL, TGRELATION, 0},
+ { "lline", TLLINE, MS_LINE, TGLBRACES, 5},
+ { "llint", TLLINT, MS_LLINT, TGOPER, 5},
+ { "lllint", TLLLINT, MS_LLLINT, TGOPER, 5},
+ { "ln", TLN, '\0', TGFUNCTION, 5},
+ { "log", TLOG, '\0', TGFUNCTION, 5},
+ { "lsub", TLSUB, '\0', TGPOWER, 0},
+ { "lsup", TLSUP, '\0', TGPOWER, 0},
+ { "lt", TLT, MS_LT, TGRELATION, 0},
+ { "magenta", TMAGENTA, '\0', TGCOLOR, 0},
+ { "matrix", TMATRIX, '\0', 0, 5},
+ { "minusplus", TMINUSPLUS, MS_MINUSPLUS, TGUNOPER | TGSUM, 5},
+ { "mline", TMLINE, MS_LINE, 0, 0}, //! nicht in TGRBRACES, Level 0
+ { "nabla", TNABLA, MS_NABLA, TGSTANDALONE, 5},
+ { "nbold", TNBOLD, '\0', TGFONTATTR, 5},
+ { "ndivides", TNDIVIDES, MS_NDIVIDES, TGRELATION, 0},
+ { "neg", TNEG, MS_NEG, TGUNOPER, 5 },
+ { "neq", TNEQ, MS_NEQ, TGRELATION, 0},
+ { "newline", TNEWLINE, '\0', 0, 0},
+ { "ni", TNI, MS_NI, TGRELATION, 0},
+ { "nitalic", TNITALIC, '\0', TGFONTATTR, 5},
+ { "none", TNONE, '\0', TGLBRACES | TGRBRACES, 0},
+ { "notin", TNOTIN, MS_NOTIN, TGRELATION, 0},
+ { "nsubset", TNSUBSET, MS_NSUBSET, TGRELATION, 0 },
+ { "nsupset", TNSUPSET, MS_NSUPSET, TGRELATION, 0 },
+ { "nsubseteq", TNSUBSETEQ, MS_NSUBSETEQ, TGRELATION, 0 },
+ { "nsupseteq", TNSUPSETEQ, MS_NSUPSETEQ, TGRELATION, 0 },
+ { "nroot", TNROOT, MS_SQRT, TGUNOPER, 5},
+ { "odivide", TODIVIDE, MS_ODIVIDE, TGPRODUCT, 0},
+ { "odot", TODOT, MS_ODOT, TGPRODUCT, 0},
+ { "ominus", TOMINUS, MS_OMINUS, TGSUM, 0},
+ { "oper", TOPER, '\0', TGOPER, 5},
+ { "oplus", TOPLUS, MS_OPLUS, TGSUM, 0},
+ { "or", TOR, MS_OR, TGSUM, 0},
+ { "ortho", TORTHO, MS_ORTHO, TGRELATION, 0},
+ { "otimes", TOTIMES, MS_OTIMES, TGPRODUCT, 0},
+ { "over", TOVER, '\0', TGPRODUCT, 0},
+ { "overbrace", TOVERBRACE, MS_OVERBRACE, TGPRODUCT, 5},
+ { "overline", TOVERLINE, '\0', TGATTRIBUT, 5},
+ { "overstrike", TOVERSTRIKE, '\0', TGATTRIBUT, 5},
+ { "owns", TNI, MS_NI, TGRELATION, 0},
+ { "parallel", TPARALLEL, MS_DLINE, TGRELATION, 0},
+ { "partial", TPARTIAL, MS_PARTIAL, TGSTANDALONE, 5 },
+ { "phantom", TPHANTOM, '\0', TGFONTATTR, 5},
+ { "plusminus", TPLUSMINUS, MS_PLUSMINUS, TGUNOPER | TGSUM, 5},
+ { "prod", TPROD, MS_PROD, TGOPER, 5},
+ { "prop", TPROP, MS_PROP, TGRELATION, 0},
+ { "rangle", TRANGLE, MS_RANGLE, TGRBRACES, 0}, //! 0 to terminate expression
+ { "rbrace", TRBRACE, MS_RBRACE, TGRBRACES, 0}, //
+ { "rceil", TRCEIL, MS_RCEIL, TGRBRACES, 0}, //
+ { "rdbracket", TRDBRACKET, MS_RDBRACKET, TGRBRACES, 0}, //
+ { "rdline", TRDLINE, MS_DLINE, TGRBRACES, 0}, //
+ { "red", TRED, '\0', TGCOLOR, 0},
+ { "rfloor", TRFLOOR, MS_RFLOOR, TGRBRACES, 0}, //! 0 to terminate expression
+ { "right", TRIGHT, '\0', 0, 0},
+ { "rightarrow" , TRIGHTARROW, MS_RIGHTARROW, TGSTANDALONE, 5},
+ { "rline", TRLINE, MS_LINE, TGRBRACES, 0}, //! 0 to terminate expression
+ { "rsub", TRSUB, '\0', TGPOWER, 0},
+ { "rsup", TRSUP, '\0', TGPOWER, 0},
+ { "sans", TSANS, '\0', TGFONT, 0},
+ { "serif", TSERIF, '\0', TGFONT, 0},
+ { "setC" , TSETC, MS_SETC, TGSTANDALONE, 5},
+ { "setN" , TSETN, MS_SETN, TGSTANDALONE, 5},
+ { "setQ" , TSETQ, MS_SETQ, TGSTANDALONE, 5},
+ { "setR" , TSETR, MS_SETR, TGSTANDALONE, 5},
+ { "setZ" , TSETZ, MS_SETZ, TGSTANDALONE, 5},
+ { "setminus", TBACKSLASH, MS_BACKSLASH, TGPRODUCT, 0 },
+ { "sim", TSIM, MS_SIM, TGRELATION, 0},
+ { "simeq", TSIMEQ, MS_SIMEQ, TGRELATION, 0},
+ { "sin", TSIN, '\0', TGFUNCTION, 5},
+ { "sinh", TSINH, '\0', TGFUNCTION, 5},
+ { "size", TSIZE, '\0', TGFONTATTR, 5},
+ { "slash", TSLASH, MS_SLASH, TGPRODUCT, 0 },
+ { "sqrt", TSQRT, MS_SQRT, TGUNOPER, 5},
+ { "stack", TSTACK, '\0', 0, 5},
+ { "sub", TRSUB, '\0', TGPOWER, 0},
+ { "subset", TSUBSET, MS_SUBSET, TGRELATION, 0},
+ { "subseteq", TSUBSETEQ, MS_SUBSETEQ, TGRELATION, 0},
+ { "sum", TSUM, MS_SUM, TGOPER, 5},
+ { "sup", TRSUP, '\0', TGPOWER, 0},
+ { "supset", TSUPSET, MS_SUPSET, TGRELATION, 0},
+ { "supseteq", TSUPSETEQ, MS_SUPSETEQ, TGRELATION, 0},
+ { "tan", TTAN, '\0', TGFUNCTION, 5},
+ { "tanh", TTANH, '\0', TGFUNCTION, 5},
+ { "tilde", TTILDE, MS_TILDE, TGATTRIBUT, 5},
+ { "times", TTIMES, MS_TIMES, TGPRODUCT, 0},
+ { "to", TTO, '\0', TGLIMIT, 0},
+ { "toward", TTOWARD, MS_RIGHTARROW, TGRELATION, 0},
+ { "transl", TTRANSL, MS_TRANSL, TGRELATION, 0},
+ { "transr", TTRANSR, MS_TRANSR, TGRELATION, 0},
+ { "underbrace", TUNDERBRACE, MS_UNDERBRACE, TGPRODUCT, 5},
+ { "underline", TUNDERLINE, '\0', TGATTRIBUT, 5},
+ { "union", TUNION, MS_UNION, TGSUM, 0},
+ { "uoper", TUOPER, '\0', TGUNOPER, 5},
+ { "uparrow" , TUPARROW, MS_UPARROW, TGSTANDALONE, 5},
+ { "vec", TVEC, MS_VEC, TGATTRIBUT, 5},
+ { "white", TWHITE, '\0', TGCOLOR, 0},
+ { "widebslash", TWIDEBACKSLASH, MS_BACKSLASH, TGPRODUCT, 0 },
+ { "widehat", TWIDEHAT, MS_HAT, TGATTRIBUT, 5},
+ { "widetilde", TWIDETILDE, MS_TILDE, TGATTRIBUT, 5},
+ { "wideslash", TWIDESLASH, MS_SLASH, TGPRODUCT, 0 },
+ { "widevec", TWIDEVEC, MS_VEC, TGATTRIBUT, 5},
+ { "wp" , TWP, MS_WP, TGSTANDALONE, 5},
+ { "yellow", TYELLOW, '\0', TGCOLOR, 0},
+ { "[", TLBRACKET, MS_LBRACKET, TGLBRACES, 5}, //! 5 to continue expression
+ { "\\", TESCAPE, '\0', 0, 5},
+ { "]", TRBRACKET, MS_RBRACKET, TGRBRACES, 0}, //! 0 to terminate expression
+ { "^", TRSUP, '\0', TGPOWER, 0},
+ { "_", TRSUB, '\0', TGPOWER, 0},
+ { "`", TSBLANK, '\0', TGBLANK, 5},
+ { "{", TLGROUP, MS_LBRACE, 0, 5}, //! 5 to continue expression
+ { "|", TOR, MS_OR, TGSUM, 0},
+ { "}", TRGROUP, MS_RBRACE, 0, 0}, //! 0 to terminate expression
+ { "~", TBLANK, '\0', TGBLANK, 5},
+ { "", TEND, '\0', 0, 0}
+};
+
+
+///////////////////////////////////////////////////////////////////////////
+
+
+BOOL SmParser::IsDelimiter(sal_Unicode cChar)
+ // returns 'TRUE' iff cChar is '\0' or a delimeter
+{
+ if(!cChar)
+ return TRUE;
+
+ // check if 'cChar' is in the delimeter table
+ const sal_Unicode *pDelim = &aDelimiterTable[0];
+ for ( ; *pDelim != 0; pDelim++)
+ if (*pDelim == cChar)
+ break;
+
+ return (*pDelim != 0);
+}
+
+
+#ifdef NOT_USED
+const xub_Unicode * SmParser::GetText(XubString &rText, const xub_Unicode *pPos)
+ // put text between current and next '"' in 'rText'. With '\' quoted
+ // chars will be inserted without '\'. Thus type '\"' to get '"' in
+ // the text and '\\' for '\'. ('pPos' has to point to start of the
+ // string (ie the opening '"' char).)
+{
+ const xub_Unicode *pEnd = (const xub_Unicode *) BufferString + BufferString.Len();
+
+ DBG_ASSERT(*pPos == '"', "Dies ist kein Text");
+
+ // get string content without quoting '\'
+ rText.Erase();
+ pPos++;
+ while (pPos < pEnd && *pPos != '"')
+ if (*pPos != '\\' || ++pPos < pEnd)
+ rText += *pPos++;
+ else
+ { Error(PE_UNEXPECTED_ENDOFINPUT);
+ return pEnd;
+ }
+
+ // check for irregular end of string
+ if (pPos == pEnd)
+ { Error(PE_UNEXPECTED_ENDOFINPUT);
+ return pEnd;
+ }
+
+ // return pointer to char after closing '"'
+ return pPos + 1;
+}
+#endif
+
+
+const xub_Unicode * SmParser::SkipWhiteSpaces(const xub_Unicode *pPos, USHORT &nRow, USHORT &nCol)
+ // skip white-spaces while keeping track of actual row and column.
+{
+ DBG_ASSERT(pPos , "NULL pointer");
+
+ while ( *pPos != '\0' && IsWhiteSpace(*pPos))
+ { if (*pPos == CharLineEnd)
+ { nRow += 1;
+ nCol = 0;
+ }
+ nCol++;
+ pPos++;
+ }
+
+ return pPos;
+}
+
+
+const xub_Unicode * SmParser::SkipComment(const xub_Unicode *pPos, USHORT &nRow, USHORT &nCol)
+ // skip rest of line if comment-start ('%%') is encountered.
+ // return pointer to char after line-end or (in case of end of buffer)
+ // return pointer to the terminating '\0' char.
+{
+ DBG_ASSERT(pPos, "NULL pointer");
+
+ if (!IsComment(pPos))
+ return pPos;
+
+ // skip rest of line
+ const xub_Unicode *pStart = pPos;
+ while (*pPos != '\0' && *pPos != CharLineEnd)
+ pPos++;
+ if (*pPos == CharLineEnd)
+ { nRow += 1;
+ nCol = 0;
+ }
+ else
+ nCol += pPos - pStart;
+
+ return *pPos == '\0' ? pPos : pPos + 1;
+}
+
+
+void SmParser::Insert(const XubString &rText, USHORT nPos)
+{
+ BufferString.Insert(rText, nPos);
+
+ xub_StrLen nLen = rText.Len();
+ BufferIndex += nLen;
+ nTokenIndex += nLen;
+}
+
+
+void SmParser::NextToken()
+{
+ //xub_Unicode *pBuffer = &BufferString[BufferIndex];
+ const sal_Unicode *pBuffer = BufferString.GetBuffer();
+ pBuffer += BufferIndex;
+
+ xub_StrLen nLen = BufferString.Len();
+
+ // skip comments and white-spaces
+ const sal_Unicode *pStart;
+ do
+ { pStart = pBuffer;
+ pBuffer = (xub_Unicode *) SkipWhiteSpaces(pStart, Row, Column);
+ pBuffer = (xub_Unicode *) SkipComment(pBuffer, Row, Column);
+ } while (pStart != pBuffer);
+ BufferIndex = pBuffer - BufferString.GetBuffer();
+
+ // set index of current token
+ nTokenIndex = BufferIndex;
+
+ // check for end of input
+ if ((BufferIndex >= nLen) || (*pBuffer == '\0'))
+ { CurToken.eType = TEND;
+ CurToken.cMathChar = '\0';
+ CurToken.nGroup = 0;
+ CurToken.nLevel = 0;
+ CurToken.aText.Erase();
+ CurToken.nRow = Row;
+ CurToken.nCol = Column;
+
+ return;
+ }
+
+ // table lookup
+ int l = 0;
+ int h = sizeof(aTokenTable) / sizeof(aTokenTable[0]);
+ while (l < h-1)
+ {
+ int i = l;
+ const sal_Char *pIdentI = aTokenTable[i].pIdent;
+ USHORT n = strlen(pIdentI);
+
+ if (n != 0 && strnccmp(BufferString, BufferIndex, pIdentI, n))
+ { int j = i;
+ DBG_ASSERT(j + 1 < h, "Sm : index out of range");
+ const sal_Char *pIdentJ = aTokenTable[j + 1].pIdent;
+ int m = strlen(pIdentJ);
+ BOOL u = strnccmp(BufferString, BufferIndex, pIdentJ, m);
+
+ BOOL bReCalcLen = FALSE;
+
+ while ( ( u || strnccmp(BufferString, BufferIndex, pIdentJ, n) )
+ && (++j < h - 1) )
+ {
+ if (u)
+ {
+ i = j;
+ bReCalcLen = TRUE;
+ }
+
+ pIdentJ = aTokenTable[j + 1].pIdent;
+ m = strlen(pIdentJ);
+ u = strnccmp(BufferString, BufferIndex, pIdentJ, m);
+ }
+
+ if (bReCalcLen)
+ n = strlen(aTokenTable[i].pIdent);
+
+ const SmTokenTableEntry &rTokenI = aTokenTable[i];
+ const sal_Unicode *pChar = BufferString.GetBuffer() + BufferIndex + n - 1;
+ if (IsDelimiter(*pChar) || IsDelimiter(*(pChar + 1)))
+ { CurToken.eType = rTokenI.eType;
+ CurToken.cMathChar = rTokenI.cMathChar;
+ CurToken.nGroup = rTokenI.nGroup;
+ CurToken.nLevel = rTokenI.nLevel;
+ CurToken.aText.AssignAscii( rTokenI.pIdent );
+ CurToken.nRow = Row;
+ CurToken.nCol = Column;
+
+ Column += n;
+ BufferIndex += n;
+
+ return;
+ }
+ }
+ l++;
+ } // end of table lookup
+
+ if (*pBuffer == '"')
+ // text token
+ { CurToken.eType = TTEXT;
+ CurToken.cMathChar = '\0';
+ CurToken.nGroup = 0;
+ CurToken.nLevel = 5;
+ CurToken.aText.Erase();
+ CurToken.nRow = Row;
+ CurToken.nCol = Column + 1;
+
+ BufferIndex++;
+ pBuffer ++;
+ Column++;
+
+ while ((*pBuffer != '"') && (*pBuffer != '\0'))
+ { if ((*pBuffer == '\n') || (*pBuffer == '\r'))
+ { if (*pBuffer == '\n')
+ { CurToken.aText += ' ';
+ Row += 1;
+ }
+ else
+ Column = 1;
+ }
+ else
+ CurToken.aText += *pBuffer;
+
+ Column++;
+ BufferIndex++;
+ pBuffer ++;
+ }
+
+ if (*pBuffer == '"')
+ { BufferIndex++;
+ pBuffer ++;
+ Column++;
+ }
+ return;
+ }
+
+ USHORT n;
+ for (n = 1; !IsDelimiter(BufferString.GetChar(BufferIndex + n)); n++)
+ ;
+
+ if (*pBuffer == '%')
+ { CurToken.eType = TSPECIAL;
+ CurToken.cMathChar = '\0';
+ CurToken.nGroup = 0;
+ CurToken.nLevel = 5;
+ CurToken.aText = XubString(BufferString, BufferIndex + 1, n - 1);
+ CurToken.nRow = Row;
+ CurToken.nCol = Column + 1;
+
+ BufferIndex += n;
+ pBuffer++;
+ Column += n;
+
+ return;
+ }
+
+ USHORT i;
+ for (i = 0; (i < n) && (isdigit(*pBuffer) ||
+ (*pBuffer == '.') ||
+ (*pBuffer == ',')); i++)
+ pBuffer ++;
+
+ CurToken.eType = (i < n) ? TIDENT : TNUMBER;
+ CurToken.cMathChar = '\0';
+ CurToken.nGroup = 0;
+ CurToken.nLevel = 5;
+ CurToken.aText = XubString(BufferString, BufferIndex, n);
+ CurToken.nRow = Row;
+ CurToken.nCol = Column;
+
+ BufferIndex += n;
+ Column += n;
+}
+
+
+////////////////////////////////////////
+// grammar
+//
+
+
+void SmParser::Table()
+{
+ SmNodeArray LineArray;
+
+ Line();
+ while (CurToken.eType == TNEWLINE)
+ {
+ NextToken();
+ Line();
+ }
+
+ if (CurToken.eType != TEND)
+ Error(PE_UNEXPECTED_CHAR);
+
+ USHORT n = NodeStack.Count();
+
+ LineArray.SetSize(n);
+
+ for (USHORT i = 0; i < n; i++)
+ LineArray.Put(n - (i + 1), NodeStack.Pop());
+
+ SmStructureNode *pSNode = new SmTableNode(CurToken);
+ pSNode->SetSubNodes(LineArray);
+ NodeStack.Push(pSNode);
+}
+
+
+void SmParser::Align()
+ // parse alignment info (if any), then go on with rest of expression
+{
+ SmStructureNode *pSNode = 0;
+ BOOL bNeedGroupClose = FALSE;
+
+ if (TokenInGroup(TGALIGN))
+ {
+ if (IsConvert40To50())
+ // encapsulate expression to be aligned in group braces
+ // (here group-open brace)
+ { Insert('{', GetTokenIndex());
+ bNeedGroupClose = TRUE;
+
+ // get first valid align statement in sequence
+ // (the dominant one in 4.0) and erase all others (especially old
+ // discarded tokens) from command string.
+ while (TokenInGroup(TGALIGN))
+ { if (TokenInGroup(TGDISCARDED) || pSNode)
+ { BufferIndex = GetTokenIndex();
+ BufferString.Erase(BufferIndex, CurToken.aText.Len());
+ }
+ else
+ pSNode = new SmAlignNode(CurToken);
+
+ NextToken();
+ }
+ }
+ else
+ {
+ pSNode = new SmAlignNode(CurToken);
+
+ NextToken();
+
+ // allow for just one align statement in 5.0
+ if (!IsConvert40To50() && TokenInGroup(TGALIGN))
+ { Error(PE_DOUBLE_ALIGN);
+ return;
+ }
+ }
+ }
+
+ Expression();
+
+ if (bNeedGroupClose)
+ Insert('}', GetTokenIndex());
+
+ if (pSNode)
+ { pSNode->SetSubNodes(NodeStack.Pop(), 0);
+ NodeStack.Push(pSNode);
+ }
+}
+
+
+void SmParser::Line()
+{
+ USHORT n = 0;
+ SmNodeArray ExpressionArray;
+
+ ExpressionArray.SetSize(n);
+
+ // start with single expression that may have an alignment statement
+ // (and go on with expressions that must not have alignment
+ // statements in 'while' loop below. See also 'Expression()'.)
+ if (CurToken.eType != TEND && CurToken.eType != TNEWLINE)
+ { Align();
+ ExpressionArray.SetSize(++n);
+ ExpressionArray.Put(n - 1, NodeStack.Pop());
+ }
+
+ while (CurToken.eType != TEND && CurToken.eType != TNEWLINE)
+ { if (!IsConvert40To50())
+ Expression();
+ else
+ Align();
+ ExpressionArray.SetSize(++n);
+ ExpressionArray.Put(n - 1, NodeStack.Pop());
+ }
+
+ SmStructureNode *pSNode = new SmLineNode(CurToken);
+ pSNode->SetSubNodes(ExpressionArray);
+ NodeStack.Push(pSNode);
+}
+
+
+void SmParser::Expression()
+{
+ USHORT n = 0;
+ SmNodeArray RelationArray;
+
+ RelationArray.SetSize(n);
+
+ Relation();
+ RelationArray.SetSize(++n);
+ RelationArray.Put(n - 1, NodeStack.Pop());
+
+ while (CurToken.nLevel >= 4)
+ { Relation();
+ RelationArray.SetSize(++n);
+ RelationArray.Put(n - 1, NodeStack.Pop());
+ }
+
+ SmStructureNode *pSNode = new SmExpressionNode(CurToken);
+ pSNode->SetSubNodes(RelationArray);
+ NodeStack.Push(pSNode);
+}
+
+
+void SmParser::Relation()
+{
+ Sum();
+ while (TokenInGroup(TGRELATION))
+ {
+ SmStructureNode *pSNode = new SmBinHorNode(CurToken);
+ SmNode *pFirst = NodeStack.Pop();
+
+ OpSubSup();
+ SmNode *pSecond = NodeStack.Pop();
+
+ Sum();
+
+ pSNode->SetSubNodes(pFirst, pSecond, NodeStack.Pop());
+ NodeStack.Push(pSNode);
+ }
+}
+
+
+void SmParser::Sum()
+{
+ Product();
+ while (TokenInGroup(TGSUM))
+ {
+ SmStructureNode *pSNode = new SmBinHorNode(CurToken);
+ SmNode *pFirst = NodeStack.Pop();
+
+ OpSubSup();
+ SmNode *pSecond = NodeStack.Pop();
+
+ Product();
+
+ pSNode->SetSubNodes(pFirst, pSecond, NodeStack.Pop());
+ NodeStack.Push(pSNode);
+ }
+}
+
+
+void SmParser::Product()
+{
+ Power();
+
+ while (TokenInGroup(TGPRODUCT))
+ { SmStructureNode *pSNode;
+ SmNode *pFirst = NodeStack.Pop(),
+ *pOper;
+ BOOL bSwitchArgs = FALSE;
+
+ SmTokenType eType = CurToken.eType;
+ switch (eType)
+ {
+ case TOVER:
+ pSNode = new SmBinVerNode(CurToken);
+ pOper = new SmRectangleNode(CurToken);
+ NextToken();
+ break;
+
+ case TBOPER:
+ pSNode = new SmBinHorNode(CurToken);
+
+ NextToken();
+
+ GlyphSpecial();
+ pOper = NodeStack.Pop();
+ break;
+
+ case TOVERBRACE :
+ case TUNDERBRACE :
+ pSNode = new SmVerticalBraceNode(CurToken);
+#ifdef USE_POLYGON
+ pOper = new SmPolygonNode(CurToken);
+#else
+ pOper = new SmMathSymbolNode(CurToken);
+#endif
+ NextToken();
+ break;
+
+ case TWIDEBACKSLASH:
+ case TWIDESLASH:
+ {
+ SmBinDiagonalNode *pSTmp = new SmBinDiagonalNode(CurToken);
+ pSTmp->SetAscending(eType == TWIDESLASH);
+ pSNode = pSTmp;
+
+ pOper = new SmPolyLineNode(CurToken);
+ NextToken();
+
+ bSwitchArgs =TRUE;
+ break;
+ }
+
+ default:
+ pSNode = new SmBinHorNode(CurToken);
+
+ OpSubSup();
+ pOper = NodeStack.Pop();
+ }
+
+ Power();
+
+ if (bSwitchArgs)
+ //! vgl siehe SmBinDiagonalNode::Arrange
+ pSNode->SetSubNodes(pFirst, NodeStack.Pop(), pOper);
+ else
+ pSNode->SetSubNodes(pFirst, pOper, NodeStack.Pop());
+ NodeStack.Push(pSNode);
+ }
+}
+
+
+void SmParser::SubSup(ULONG nActiveGroup)
+{
+ DBG_ASSERT(nActiveGroup == TGPOWER || nActiveGroup == TGLIMIT,
+ "Sm: falsche Tokengruppe");
+
+ if (!TokenInGroup(nActiveGroup))
+ // already finish
+ return;
+
+ SmSubSupNode *pNode = new SmSubSupNode(CurToken);
+ //! Of course 'CurToken' ist just the first sub-/supscript token.
+ //! It should be of no further interest. The positions of the
+ //! sub-/supscripts will be identified by the corresponding subnodes
+ //! index in the 'aSubNodes' array (enum value from 'SmSubSup').
+
+ pNode->SetUseLimits(nActiveGroup == TGLIMIT);
+
+ // initialize subnodes array
+ SmNodeArray aSubNodes;
+ aSubNodes.SetSize(1 + SUBSUP_NUM_ENTRIES);
+ aSubNodes.Put(0, NodeStack.Pop());
+ for (int i = 1; i < aSubNodes.GetSize(); i++)
+ aSubNodes.Put(i, NULL);
+
+ // process all sub-/supscripts
+ int nIndex;
+ while (TokenInGroup(nActiveGroup))
+ { SmTokenType eType (CurToken.eType);
+
+ // skip sub-/supscript token
+ NextToken();
+
+ // get sub-/supscript node on top of stack
+ if (eType == TFROM || eType == TTO)
+ {
+ // parse limits in old 4.0 and 5.0 style
+ Relation();
+ }
+ else
+ Term();
+
+ switch (eType)
+ { case TRSUB : nIndex = (int) RSUB; break;
+ case TRSUP : nIndex = (int) RSUP; break;
+ case TFROM :
+ case TCSUB : nIndex = (int) CSUB; break;
+ case TTO :
+ case TCSUP : nIndex = (int) CSUP; break;
+ case TLSUB : nIndex = (int) LSUB; break;
+ case TLSUP : nIndex = (int) LSUP; break;
+ default :
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+ nIndex++;
+ DBG_ASSERT(1 <= nIndex && nIndex <= 1 + SUBSUP_NUM_ENTRIES,
+ "SmParser::Power() : sub-/supscript index falsch")
+
+ // set sub-/supscript if not already done
+ if (aSubNodes.Get(nIndex) != NULL)
+ Error(PE_DOUBLE_SUBSUPSCRIPT);
+ aSubNodes.Put(nIndex, NodeStack.Pop());
+ }
+
+ pNode->SetSubNodes(aSubNodes);
+ NodeStack.Push(pNode);
+}
+
+
+void SmParser::OpSubSup()
+{
+ // push operator symbol
+ NodeStack.Push(new SmMathSymbolNode(CurToken));
+ // skip operator token
+ NextToken();
+ // get sub- supscripts if any
+ if (TokenInGroup(TGPOWER))
+ SubSup(TGPOWER);
+}
+
+
+void SmParser::Power()
+{
+ // get body for sub- supscripts on top of stack
+ Term();
+
+ SubSup(TGPOWER);
+}
+
+
+void SmParser::Blank()
+{
+ DBG_ASSERT(TokenInGroup(TGBLANK), "Sm : falsches Token");
+ SmBlankNode *pBlankNode = new SmBlankNode(CurToken);
+
+ while (TokenInGroup(TGBLANK))
+ {
+ pBlankNode->IncreaseBy(CurToken);
+ NextToken();
+ }
+
+ // Blanks am Zeilenende ignorieren wenn die entsprechende Option gesetzt ist
+ if (CurToken.eType == TNEWLINE || CurToken.eType == TEND
+ && SM_MOD1()->GetConfig()->IsNoRightSpaces())
+ pBlankNode->Clear();
+
+ NodeStack.Push(pBlankNode);
+}
+
+
+void SmParser::Term()
+{
+ switch (CurToken.eType)
+ { case TESCAPE :
+ Escape();
+ break;
+
+ case TLGROUP :
+ NextToken();
+
+ // allow for empty group
+ if (CurToken.eType == TRGROUP)
+ { SmStructureNode *pSNode = new SmExpressionNode(CurToken);
+ pSNode->SetSubNodes(NULL, NULL);
+ NodeStack.Push(pSNode);
+
+ NextToken();
+ }
+ else // go as usual
+ { Align();
+ if (CurToken.eType != TRGROUP)
+ Error(PE_RGROUP_EXPECTED);
+ else
+ { NextToken();
+ }
+ }
+ break;
+
+ case TLEFT :
+ Brace();
+ break;
+
+ case TBLANK :
+ case TSBLANK :
+ Blank();
+ break;
+
+ case TTEXT :
+ NodeStack.Push(new SmTextNode(CurToken, FNT_TEXT));
+ NextToken();
+ break;
+ case TIDENT :
+ NodeStack.Push(new SmTextNode(CurToken, FNT_VARIABLE));
+ NextToken();
+ break;
+ case TNUMBER :
+ NodeStack.Push(new SmTextNode(CurToken, FNT_NUMBER));
+ NextToken();
+ break;
+
+ case TLEFTARROW :
+ case TRIGHTARROW :
+ case TUPARROW :
+ case TDOWNARROW :
+ case TSETN :
+ case TSETZ :
+ case TSETQ :
+ case TSETR :
+ case TSETC :
+ case THBAR :
+ case TLAMBDABAR :
+ case TCIRC :
+ case TDRARROW :
+ case TDLARROW :
+ case TDLRARROW :
+ case TBACKEPSILON :
+ case TALEPH :
+ case TIM :
+ case TRE :
+ case TWP :
+ case TEMPTYSET :
+ case TINFINITY :
+ case TEXISTS :
+ case TFORALL :
+ case TPARTIAL :
+ case TNABLA :
+ case TTOWARD :
+ case TDOTSAXIS :
+ case TDOTSDIAG :
+ case TDOTSDOWN :
+ case TDOTSLOW :
+ case TDOTSUP :
+ case TDOTSVERT :
+ NodeStack.Push(new SmMathSymbolNode(CurToken));
+ NextToken();
+ break;
+
+ case TPLACE:
+ NodeStack.Push(new SmPlaceNode(CurToken));
+ NextToken();
+ break;
+
+ case TSPECIAL:
+ Special();
+ break;
+
+ case TBINOM:
+ Binom();
+ break;
+
+ case TSTACK:
+ Stack();
+ break;
+
+ case TMATRIX:
+ Matrix();
+ break;
+
+ default:
+ if (TokenInGroup(TGLBRACES))
+ { Brace();
+ }
+ else if (TokenInGroup(TGOPER))
+ { Operator();
+ }
+ else if (TokenInGroup(TGUNOPER))
+ { UnOper();
+ }
+ else if ( TokenInGroup(TGATTRIBUT)
+ || TokenInGroup(TGFONTATTR))
+ { SmStructureNodeArray aArray;
+
+ BOOL bIsAttr;
+ USHORT n = 0;
+ while ((bIsAttr = TokenInGroup(TGATTRIBUT))
+ || TokenInGroup(TGFONTATTR))
+ { aArray.SetSize(n + 1);
+
+ if (bIsAttr)
+ Attribut();
+ else
+ FontAttribut();
+
+ // check if casting in following line is ok
+ DBG_ASSERT(!NodeStack.Top()->IsVisible(), "Sm : Ooops...");
+
+ aArray.Put(n, (SmStructureNode *) NodeStack.Pop());
+ n++;
+ }
+
+ Power();
+
+ SmNode *pFirstNode = NodeStack.Pop();
+ while (n > 0)
+ { aArray.Get(n - 1)->SetSubNodes(0, pFirstNode);
+ pFirstNode = aArray.Get(n - 1);
+ n--;
+ }
+ NodeStack.Push(pFirstNode);
+ }
+ else if (TokenInGroup(TGFUNCTION))
+ { if (!IsConvert40To50())
+ { Function();
+ }
+ else // encapsulate old 4.0 style parsing in braces
+ {
+ // insert opening brace
+ Insert('{', GetTokenIndex());
+
+ //
+ // parse in 4.0 style
+ //
+ Function();
+
+ SmNode *pFunc = NodeStack.Pop();
+
+ if (CurToken.eType == TLPARENT)
+ { Term();
+ }
+ else
+ { Align();
+ }
+
+ // insert closing brace
+ Insert('}', GetTokenIndex());
+
+ SmStructureNode *pSNode = new SmExpressionNode(pFunc->GetToken());
+ pSNode->SetSubNodes(pFunc, NodeStack.Pop());
+ NodeStack.Push(pSNode);
+ }
+ }
+ else
+ Error(PE_UNEXPECTED_CHAR);
+ }
+}
+
+
+void SmParser::Escape()
+{
+ NextToken();
+
+ xub_Unicode cChar;
+ switch (CurToken.eType)
+ { case TLPARENT : cChar = MS_LPARENT; break;
+ case TRPARENT : cChar = MS_RPARENT; break;
+ case TLBRACKET : cChar = MS_LBRACKET; break;
+ case TRBRACKET : cChar = MS_RBRACKET; break;
+ case TLBRACE :
+ case TLGROUP : cChar = MS_LBRACE; break;
+ case TRBRACE :
+ case TRGROUP : cChar = MS_RBRACE; break;
+ case TLANGLE : cChar = MS_LANGLE; break;
+ case TRANGLE : cChar = MS_RANGLE; break;
+ case TLCEIL : cChar = MS_LCEIL; break;
+ case TRCEIL : cChar = MS_RCEIL; break;
+ case TLFLOOR : cChar = MS_LFLOOR; break;
+ case TRFLOOR : cChar = MS_RFLOOR; break;
+ case TLLINE :
+ case TRLINE : cChar = MS_LINE; break;
+ case TLDLINE :
+ case TRDLINE : cChar = MS_DLINE; break;
+ default:
+ Error(PE_UNEXPECTED_TOKEN);
+ }
+
+ SmNode *pNode = new SmMathSymbolNode(CurToken);
+ NodeStack.Push(pNode);
+
+ NextToken();
+}
+
+
+void SmParser::Operator()
+{
+ if (TokenInGroup(TGOPER))
+ { SmStructureNode *pSNode = new SmOperNode(CurToken);
+
+ // put operator on top of stack
+ Oper();
+
+ if (TokenInGroup(TGLIMIT) || TokenInGroup(TGPOWER))
+ SubSup(CurToken.nGroup);
+ SmNode *pOperator = NodeStack.Pop();
+
+ // get argument
+ Power();
+
+ pSNode->SetSubNodes(pOperator, NodeStack.Pop());
+ NodeStack.Push(pSNode);
+ }
+}
+
+
+void SmParser::Oper()
+{
+ SmTokenType eType (CurToken.eType);
+ SmNode *pNode = NULL;
+
+ switch (eType)
+ {
+ case TSUM :
+ case TPROD :
+ case TCOPROD :
+ case TINT :
+ case TIINT :
+ case TIIINT :
+ case TLINT :
+ case TLLINT :
+ case TLLLINT :
+ pNode = new SmMathSymbolNode(CurToken);
+ break;
+
+ case TLIM :
+ case TLIMSUP :
+ case TLIMINF :
+ {
+ const sal_Char* pLim = 0;
+ switch (eType)
+ {
+ case TLIM : pLim = "lim"; break;
+ case TLIMSUP : pLim = "lim sup"; break;
+ case TLIMINF : pLim = "lim inf"; break;
+ }
+ if( pLim )
+ CurToken.aText.AssignAscii( pLim );
+ pNode = new SmTextNode(CurToken, FNT_TEXT);
+ }
+ break;
+
+ case TOVERBRACE :
+ case TUNDERBRACE :
+#ifdef USE_POLYGON
+ pNode = new SmPolygonNode(CurToken);
+#else
+ pNode = new SmMathSymbolNode(CurToken);
+#endif
+ break;
+
+ case TOPER :
+ NextToken();
+
+ DBG_ASSERT(CurToken.eType == TSPECIAL, "Sm: falsches Token");
+ pNode = new SmGlyphSpecialNode(CurToken);
+ break;
+
+ default :
+ DBG_ASSERT(0, "Sm: unbekannter Fall");
+ }
+ NodeStack.Push(pNode);
+
+ NextToken();
+}
+
+
+void SmParser::UnOper()
+{
+ DBG_ASSERT(TokenInGroup(TGUNOPER), "Sm: falsches Token");
+
+ SmToken aNodeToken = CurToken;
+ SmTokenType eType = CurToken.eType;
+ BOOL bIsPostfix = eType == TFACT;
+
+ SmStructureNode *pSNode;
+ SmNode *pOper,
+ *pExtra = 0,
+ *pArg;
+
+ switch (eType)
+ {
+ case TABS :
+ case TSQRT :
+ NextToken();
+ break;
+
+ case TNROOT :
+ NextToken();
+ Power();
+ pExtra = NodeStack.Pop();
+ break;
+
+ case TUOPER :
+ NextToken();
+ GlyphSpecial();
+ pOper = NodeStack.Pop();
+ break;
+
+ case TPLUS :
+ case TMINUS :
+ case TPLUSMINUS :
+ case TMINUSPLUS :
+ case TNEG :
+ case TFACT :
+ OpSubSup();
+ pOper = NodeStack.Pop();
+ break;
+
+ default :
+ Error(PE_UNOPER_EXPECTED);
+ }
+
+ // get argument
+ Power();
+ pArg = NodeStack.Pop();
+
+ if (eType == TABS)
+ { pSNode = new SmBraceNode(aNodeToken);
+ pSNode->SetScaleMode(SCALE_HEIGHT);
+
+ // build nodes for left & right lines
+ // (text, group, level of the used token are of no interrest here)
+ // we'll use row & column of the keyword for abs
+ aNodeToken.eType = TABS;
+ //
+ aNodeToken.cMathChar = MS_LINE;
+#ifdef USE_POLYGON
+ SmNode* pLeft = new SmPolygonNode(aNodeToken);
+#else
+ SmNode* pLeft = new SmMathSymbolNode(aNodeToken);
+#endif
+ //
+ aNodeToken.cMathChar = MS_LINE;
+#ifdef USE_POLYGON
+ SmNode* pRight = new SmPolygonNode(aNodeToken);
+#else
+ SmNode* pRight = new SmMathSymbolNode(aNodeToken);
+#endif
+
+ pSNode->SetSubNodes(pLeft, pArg, pRight);
+ }
+ else if (eType == TSQRT || eType == TNROOT)
+ { pSNode = new SmRootNode(aNodeToken);
+ pOper = new SmRootSymbolNode(aNodeToken);
+ pSNode->SetSubNodes(pExtra, pOper, pArg);
+ }
+ else
+ { pSNode = new SmUnHorNode(aNodeToken);
+
+ if (bIsPostfix)
+ pSNode->SetSubNodes(pArg, pOper);
+ else
+ // prefix operator
+ pSNode->SetSubNodes(pOper, pArg);
+ }
+
+ NodeStack.Push(pSNode);
+}
+
+
+void SmParser::Attribut()
+{
+ DBG_ASSERT(TokenInGroup(TGATTRIBUT), "Sm: falsche Tokengruppe");
+
+ SmStructureNode *pSNode = new SmAttributNode(CurToken);
+ SmNode *pAttr;
+ SmScaleMode eScaleMode = SCALE_NONE;
+
+ // get appropriate node for the attribut itself
+ switch (CurToken.eType)
+ { case TUNDERLINE :
+ case TOVERLINE :
+ case TOVERSTRIKE :
+ pAttr = new SmRectangleNode(CurToken);
+ eScaleMode = SCALE_WIDTH;
+ break;
+
+ case TWIDEVEC :
+ case TWIDEHAT :
+ case TWIDETILDE :
+#ifdef USE_POLYGON
+ pAttr = new SmPolygonNode(CurToken);
+#else
+ pAttr = new SmMathSymbolNode(CurToken);
+#endif
+ eScaleMode = SCALE_WIDTH;
+ break;
+
+ default :
+ pAttr = new SmMathSymbolNode(CurToken);
+ }
+
+ NextToken();
+
+ pSNode->SetSubNodes(pAttr, 0);
+ pSNode->SetScaleMode(eScaleMode);
+ NodeStack.Push(pSNode);
+}
+
+
+void SmParser::FontAttribut()
+{
+ DBG_ASSERT(TokenInGroup(TGFONTATTR), "Sm: falsche Tokengruppe");
+
+ switch (CurToken.eType)
+ {
+ case TITALIC :
+ case TNITALIC :
+ case TBOLD :
+ case TNBOLD :
+ case TPHANTOM :
+ NodeStack.Push(new SmFontNode(CurToken));
+ NextToken();
+ break;
+
+ case TSIZE :
+ FontSize();
+ break;
+
+ case TFONT :
+ Font();
+ break;
+
+ case TCOLOR :
+ Color();
+ break;
+
+ default :
+ DBG_ASSERT(0, "Sm: unbekannter Fall");
+ }
+}
+
+
+void SmParser::Color()
+{
+ DBG_ASSERT(CurToken.eType == TCOLOR, "Sm : Ooops...");
+
+ // last color rules, get that one
+ SmToken aToken;
+ do
+ { NextToken();
+
+ if (TokenInGroup(TGCOLOR))
+ { aToken = CurToken;
+ NextToken();
+ }
+ else
+ Error(PE_COLOR_EXPECTED);
+ } while (CurToken.eType == TCOLOR);
+
+ NodeStack.Push(new SmFontNode(aToken));
+}
+
+
+void SmParser::Font()
+{
+ DBG_ASSERT(CurToken.eType == TFONT, "Sm : Ooops...");
+
+ // last font rules, get that one
+ SmToken aToken;
+ do
+ { NextToken();
+
+ if (TokenInGroup(TGFONT))
+ { aToken = CurToken;
+ NextToken();
+ }
+ else
+ Error(PE_FONT_EXPECTED);
+ } while (CurToken.eType == TFONT);
+
+ NodeStack.Push(new SmFontNode(aToken));
+}
+BOOL lcl_IsNumber(const UniString& rText)
+{
+ BOOL bPoint = FALSE;
+ const sal_Unicode* pBuffer = rText.GetBuffer();
+ for(xub_StrLen nPos = 0; nPos < rText.Len(); nPos++, pBuffer++)
+ {
+ const sal_Unicode cChar = *pBuffer;
+ if(cChar == '.')
+ {
+ if(bPoint)
+ return FALSE;
+ else
+ bPoint = TRUE;
+ }
+ else if ( (cChar < 48) || (cChar > 57) )
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void SmParser::FontSize()
+{
+ DBG_ASSERT(CurToken.eType == TSIZE, "Sm : Ooops...");
+
+ USHORT Type;
+ SmFontNode *pFontNode = new SmFontNode(CurToken);
+
+ NextToken();
+
+ switch (CurToken.eType)
+ {
+ case TNUMBER: Type = FNTSIZ_ABSOLUT; break;
+ case TPLUS: Type = FNTSIZ_PLUS; break;
+ case TMINUS: Type = FNTSIZ_MINUS; break;
+ case TMULTIPLY: Type = FNTSIZ_MULTIPLY; break;
+ case TDIVIDEBY: Type = FNTSIZ_DIVIDE; break;
+
+ default:
+ delete pFontNode;
+ Error(PE_SIZE_EXPECTED);
+ return;
+ }
+
+ if (Type != FNTSIZ_ABSOLUT)
+ {
+ NextToken();
+ if (CurToken.eType != TNUMBER)
+ {
+ delete pFontNode;
+ Error(PE_SIZE_EXPECTED);
+ return;
+ }
+ }
+
+ // get number argument
+ double fTmp;
+ Fraction aValue;
+ if(lcl_IsNumber(CurToken.aText) &&
+ sscanf(ByteString(CurToken.aText, RTL_TEXTENCODING_ASCII_US).GetBuffer(), "%lf", &fTmp) == 1)
+ aValue = fTmp;
+
+ NextToken();
+
+ pFontNode->SetSizeParameter(aValue, Type);
+ NodeStack.Push(pFontNode);
+}
+
+
+void SmParser::Brace()
+{
+ DBG_ASSERT(CurToken.eType == TLEFT || TokenInGroup(TGLBRACES),
+ "Sm: kein Klammer Ausdruck");
+
+ SmStructureNode *pSNode = new SmBraceNode(CurToken);
+ SmNode *pBody = 0,
+ *pLeft = 0,
+ *pRight = 0;
+ SmScaleMode eScaleMode = SCALE_NONE;
+ SmParseError eError = PE_NONE;
+
+ if (CurToken.eType == TLEFT)
+ { NextToken();
+
+ eScaleMode = SCALE_HEIGHT;
+
+ // check for left bracket
+ if (TokenInGroup(TGLBRACES) || TokenInGroup(TGRBRACES))
+ {
+#ifdef USE_POLYGON
+ pLeft = new SmPolygonNode(CurToken);
+#else
+ pLeft = new SmMathSymbolNode(CurToken);
+#endif
+ NextToken();
+ Bracebody(TRUE);
+ pBody = NodeStack.Pop();
+
+ if (CurToken.eType == TRIGHT)
+ { NextToken();
+
+ // check for right bracket
+ if (TokenInGroup(TGLBRACES) || TokenInGroup(TGRBRACES))
+ {
+#ifdef USE_POLYGON
+ pRight = new SmPolygonNode(CurToken);
+#else
+ pRight = new SmMathSymbolNode(CurToken);
+#endif
+ NextToken();
+ }
+ else
+ eError = PE_RBRACE_EXPECTED;
+ }
+ else
+ eError = PE_RIGHT_EXPECTED;
+ }
+ else
+ eError = PE_LBRACE_EXPECTED;
+ }
+ else
+ {
+ if (TokenInGroup(TGLBRACES))
+ {
+#ifdef USE_POLYGON
+ pLeft = new SmPolygonNode(CurToken);
+#else
+ pLeft = new SmMathSymbolNode(CurToken);
+#endif
+ NextToken();
+ Bracebody(FALSE);
+ pBody = NodeStack.Pop();
+
+ SmTokenType eExpectedType;
+ switch (pLeft->GetToken().eType)
+ { case TLPARENT : eExpectedType = TRPARENT; break;
+ case TLBRACKET : eExpectedType = TRBRACKET; break;
+ case TLBRACE : eExpectedType = TRBRACE; break;
+ case TLDBRACKET : eExpectedType = TRDBRACKET; break;
+ case TLLINE : eExpectedType = TRLINE; break;
+ case TLDLINE : eExpectedType = TRDLINE; break;
+ case TLANGLE : eExpectedType = TRANGLE; break;
+ case TLFLOOR : eExpectedType = TRFLOOR; break;
+ case TLCEIL : eExpectedType = TRCEIL; break;
+ default :
+ DBG_ASSERT(0, "Sm: unbekannter Fall");
+ }
+
+ if (CurToken.eType == eExpectedType)
+ {
+#ifdef USE_POLYGON
+ pRight = new SmPolygonNode(CurToken);
+#else
+ pRight = new SmMathSymbolNode(CurToken);
+#endif
+ NextToken();
+ }
+ else
+ eError = PE_PARENT_MISMATCH;
+ }
+ else
+ eError = PE_LBRACE_EXPECTED;
+ }
+
+ if (eError == PE_NONE)
+ { DBG_ASSERT(pLeft, "Sm: NULL pointer");
+ DBG_ASSERT(pRight, "Sm: NULL pointer");
+ pSNode->SetSubNodes(pLeft, pBody, pRight);
+ pSNode->SetScaleMode(eScaleMode);
+ NodeStack.Push(pSNode);
+ }
+ else
+ { delete pSNode;
+ delete pBody;
+ delete pLeft;
+ delete pRight;
+
+ Error(eError);
+ }
+}
+
+
+void SmParser::Bracebody(BOOL bIsLeftRight)
+{
+ SmStructureNode *pBody = new SmBracebodyNode(CurToken);
+ SmNodeArray aNodes;
+ USHORT nNum = 0;
+
+ // get body if any
+ if (bIsLeftRight)
+ {
+ do
+ {
+ if (CurToken.eType == TMLINE)
+ {
+#ifdef USE_POLYGON
+ NodeStack.Push(new SmPolygonNode(CurToken));
+#else
+ NodeStack.Push(new SmMathSymbolNode(CurToken));
+#endif
+ NextToken();
+ nNum++;
+ }
+ else if (CurToken.eType != TRIGHT)
+ { Align();
+ nNum++;
+
+ if (CurToken.eType != TMLINE && CurToken.eType != TRIGHT)
+ Error(PE_RIGHT_EXPECTED);
+ }
+ } while (CurToken.eType != TEND && CurToken.eType != TRIGHT);
+ }
+ else
+ {
+ do
+ {
+ if (CurToken.eType == TMLINE)
+ {
+#ifdef USE_POLYGON
+ NodeStack.Push(new SmPolygonNode(CurToken));
+#else
+ NodeStack.Push(new SmMathSymbolNode(CurToken));
+#endif
+ NextToken();
+ nNum++;
+ }
+ else if (!TokenInGroup(TGRBRACES))
+ { Align();
+ nNum++;
+
+ if (CurToken.eType != TMLINE && !TokenInGroup(TGRBRACES))
+ Error(PE_RBRACE_EXPECTED);
+ }
+ } while (CurToken.eType != TEND && !TokenInGroup(TGRBRACES));
+ }
+
+ // build argument vector in parsing order
+ aNodes.SetSize(nNum);
+ for (USHORT i = 0; i < nNum; i++)
+ aNodes.Put(nNum - 1 - i, NodeStack.Pop());
+
+ pBody->SetSubNodes(aNodes);
+ pBody->SetScaleMode(bIsLeftRight ? SCALE_HEIGHT : SCALE_NONE);
+ NodeStack.Push(pBody);
+}
+
+
+void SmParser::Function()
+{
+ switch (CurToken.eType)
+ {
+ case TFUNC:
+ NextToken(); // skip "FUNC"-statement
+ // fall through
+
+ case TSIN :
+ case TCOS :
+ case TTAN :
+ case TCOT :
+ case TASIN :
+ case TACOS :
+ case TATAN :
+ case TACOT :
+ case TSINH :
+ case TCOSH :
+ case TTANH :
+ case TCOTH :
+ case TASINH :
+ case TACOSH :
+ case TATANH :
+ case TACOTH :
+ case TLN :
+ case TLOG :
+ case TEXP :
+ NodeStack.Push(new SmTextNode(CurToken, FNT_FUNCTION));
+ NextToken();
+ break;
+
+ default:
+ Error(PE_FUNC_EXPECTED);
+ }
+}
+
+
+void SmParser::Binom()
+{
+ SmNodeArray ExpressionArray;
+ SmStructureNode *pSNode = new SmTableNode(CurToken);
+
+ NextToken();
+
+ Sum();
+ Sum();
+
+ ExpressionArray.SetSize(2);
+
+ for (int i = 0; i < 2; i++)
+ ExpressionArray.Put(2 - (i + 1), NodeStack.Pop());
+
+ pSNode->SetSubNodes(ExpressionArray);
+ NodeStack.Push(pSNode);
+}
+
+
+void SmParser::Stack()
+{
+ SmNodeArray ExpressionArray;
+ NextToken();
+ if (CurToken.eType == TLGROUP)
+ {
+ USHORT n = 0;
+
+ do
+ {
+ NextToken();
+ Align();
+ n++;
+ }
+ while (CurToken.eType == TPOUND);
+
+ ExpressionArray.SetSize(n);
+
+ for (USHORT i = 0; i < n; i++)
+ ExpressionArray.Put(n - (i + 1), NodeStack.Pop());
+
+ if (CurToken.eType != TRGROUP)
+ Error(PE_RGROUP_EXPECTED);
+
+ NextToken();
+
+ SmStructureNode *pSNode = new SmTableNode(CurToken);
+ pSNode->SetSubNodes(ExpressionArray);
+ NodeStack.Push(pSNode);
+ }
+ else
+ Error(PE_LGROUP_EXPECTED);
+}
+
+
+void SmParser::Matrix()
+{
+ SmNodeArray ExpressionArray;
+
+ NextToken();
+ if (CurToken.eType == TLGROUP)
+ {
+ USHORT c = 0;
+
+ do
+ {
+ NextToken();
+ Align();
+ c++;
+ }
+ while (CurToken.eType == TPOUND);
+
+ USHORT r = 1;
+
+ while (CurToken.eType == TDPOUND)
+ {
+ NextToken();
+ for (USHORT i = 0; i < c; i++)
+ {
+ Align();
+ if (i < (c - 1))
+ {
+ if (CurToken.eType == TPOUND)
+ {
+ NextToken();
+ }
+ else
+ Error(PE_POUND_EXPECTED);
+ }
+ }
+
+ r++;
+ }
+
+ long nRC = r * c;
+
+ ExpressionArray.SetSize(nRC);
+
+ for (USHORT i = 0; i < (nRC); i++)
+ ExpressionArray.Put((nRC) - (i + 1), NodeStack.Pop());
+
+ if (CurToken.eType != TRGROUP)
+ Error(PE_RGROUP_EXPECTED);
+
+ NextToken();
+
+ SmMatrixNode *pMNode = new SmMatrixNode(CurToken);
+ pMNode->SetSubNodes(ExpressionArray);
+ pMNode->SetRowCol(r, c);
+ NodeStack.Push(pMNode);
+ }
+ else
+ Error(PE_LGROUP_EXPECTED);
+}
+
+
+void SmParser::Special()
+{
+ NodeStack.Push(new SmSpecialNode(CurToken));
+ NextToken();
+}
+
+
+void SmParser::GlyphSpecial()
+{
+ NodeStack.Push(new SmGlyphSpecialNode(CurToken));
+ NextToken();
+}
+
+
+void SmParser::Error(SmParseError eError)
+{
+ SmStructureNode *pSNode = new SmExpressionNode(CurToken);
+ SmErrorNode *pErr = new SmErrorNode(eError, CurToken);
+ pSNode->SetSubNodes(pErr, 0);
+
+ //! put a structure node on the stack (instead of the error node itself)
+ //! because sometimes such a node is expected in order to attach some
+ //! subnodes
+ NodeStack.Push(pSNode);
+
+ AddError(eError, pSNode);
+
+ NextToken();
+}
+
+
+// end gramar
+
+
+SmParser::SmParser()
+{
+ switch (GetSystemLineEnd())
+ {
+ case LINEEND_CRLF:
+ case LINEEND_LF: CharLineEnd = '\n'; break;
+ case LINEEND_CR: CharLineEnd = '\r'; break;
+
+ default:
+ CharLineEnd = '\n';
+ break;
+ }
+
+ bConvert40To50 = FALSE;
+}
+
+
+BOOL SmParser::CheckSyntax(const XubString &rBuffer)
+{
+ SmErrDescList OldErrorList;
+
+ BufferString = rBuffer;
+ BufferIndex =
+ nTokenIndex = 0;
+ Row =
+ Column = 1;
+
+ NodeStack.Clear();
+
+ OldErrorList = ErrDescList;
+ ErrDescList.Clear();
+
+ NextToken();
+ Table();
+
+ delete NodeStack.Pop();
+
+ if (ErrDescList.Count() > 0)
+ {
+ for (int i = 0; i < ErrDescList.Count(); i++)
+ delete ErrDescList.Remove(i);
+
+ ErrDescList = OldErrorList;
+
+ return (FALSE);
+ }
+ ErrDescList = OldErrorList;
+
+ return (TRUE);
+}
+
+
+SmNode *SmParser::Parse(const XubString &rBuffer)
+{
+ BufferString = rBuffer;
+ BufferIndex =
+ nTokenIndex = 0;
+ Row =
+ Column = 1;
+ CurError = -1;
+
+ for (int i = 0; i < ErrDescList.Count(); i++)
+ delete ErrDescList.Remove(i);
+
+ ErrDescList.Clear();
+
+ NodeStack.Clear();
+
+ NextToken();
+ Table();
+
+ return NodeStack.Pop();
+}
+
+
+USHORT SmParser::AddError(SmParseError Type, SmNode *pNode)
+{
+ SmErrorDesc *pErrDesc = new SmErrorDesc;
+
+ pErrDesc->Type = Type;
+ pErrDesc->pNode = pNode;
+ pErrDesc->Text = XubString(SmResId(RID_ERR_IDENT));
+
+ USHORT nRID;
+ switch (Type)
+ {
+ case PE_UNEXPECTED_CHAR: nRID = RID_ERR_UNEXPECTEDCHARACTER; break;
+ case PE_LGROUP_EXPECTED: nRID = RID_ERR_LGROUPEXPECTED; break;
+ case PE_RGROUP_EXPECTED: nRID = RID_ERR_RGROUPEXPECTED; break;
+ case PE_LBRACE_EXPECTED: nRID = RID_ERR_LBRACEEXPECTED; break;
+ case PE_RBRACE_EXPECTED: nRID = RID_ERR_RBRACEEXPECTED; break;
+ case PE_FUNC_EXPECTED: nRID = RID_ERR_FUNCEXPECTED; break;
+ case PE_UNOPER_EXPECTED: nRID = RID_ERR_UNOPEREXPECTED; break;
+ case PE_BINOPER_EXPECTED: nRID = RID_ERR_BINOPEREXPECTED; break;
+ case PE_SYMBOL_EXPECTED: nRID = RID_ERR_SYMBOLEXPECTED; break;
+ case PE_IDENTIFIER_EXPECTED: nRID = RID_ERR_IDENTEXPECTED; break;
+ case PE_POUND_EXPECTED: nRID = RID_ERR_POUNDEXPECTED; break;
+ case PE_COLOR_EXPECTED: nRID = RID_ERR_COLOREXPECTED; break;
+ case PE_RIGHT_EXPECTED: nRID = RID_ERR_RIGHTEXPECTED; break;
+
+ default:
+ nRID = RID_ERR_UNKOWN;
+ }
+ pErrDesc->Text += SmResId(nRID);
+
+ ErrDescList.Insert(pErrDesc);
+
+ return ErrDescList.GetPos(pErrDesc);
+}
+
+
+const SmErrorDesc *SmParser::NextError()
+{
+ if (ErrDescList.Count())
+ if (CurError > 0) return ErrDescList.Seek(--CurError);
+ else
+ {
+ CurError = 0;
+ return ErrDescList.Seek(CurError);
+ }
+ else return 0;
+}
+
+
+const SmErrorDesc *SmParser::PrevError()
+{
+ if (ErrDescList.Count())
+ if (CurError < (int) (ErrDescList.Count() - 1)) return ErrDescList.Seek(++CurError);
+ else
+ {
+ CurError = (int) (ErrDescList.Count() - 1);
+ return ErrDescList.Seek(CurError);
+ }
+ else return 0;
+}
+
+
+const SmErrorDesc *SmParser::GetError(USHORT i)
+{
+ return (i >= 0 && i < ErrDescList.Count())
+ ? ErrDescList.Seek(i)
+ : ErrDescList.Seek(CurError);
+}
+
+
diff --git a/starmath/source/rect.cxx b/starmath/source/rect.cxx
new file mode 100644
index 000000000000..12853c07189c
--- /dev/null
+++ b/starmath/source/rect.cxx
@@ -0,0 +1,908 @@
+/*************************************************************************
+ *
+ * $RCSfile: rect.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX //autogen
+#include <tools/debug.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX //autogen
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SV_VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+
+
+#include "rect.hxx"
+#include "types.hxx"
+#include "xchar.hxx"
+#include "utility.hxx"
+#include "smmod.hxx"
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+// '\0' terminiertes Array mit Zeichen, die im StarMath Font als Buchstaben
+// betrachtet werden sollen, (um im Gegensatz zu den anderen Operatoren
+// und Symbolen ein "normales"(ungecliptes) SmRect zu erhalten).
+static xub_Unicode __READONLY_DATA aMathAlpha[] =
+{
+ MS_ALEPH, MS_IM, MS_RE, MS_WP,
+ xub_Unicode('\x70'), MS_EMPTYSET, xub_Unicode('\xF0'), xub_Unicode('\xF1'),
+ xub_Unicode('\xF2'), xub_Unicode('\xF3'), xub_Unicode('\xF4'), MS_HBAR,
+ MS_LAMBDABAR, MS_SETN, MS_SETZ, MS_SETQ,
+ MS_SETR, MS_SETC, xub_Unicode('\xB4'), xub_Unicode('\xB5'),
+ xub_Unicode('\xB8'), xub_Unicode('\xB9'), xub_Unicode('\xBA'),
+ xub_Unicode('\0')
+};
+
+BOOL SmIsMathAlpha(const XubString &rText)
+ // ergibt genau dann TRUE, wenn das Zeichen (aus dem StarMath Font) wie ein
+ // Buchstabe behandelt werden soll.
+{
+ if (rText.Len() == 0)
+ return FALSE;
+
+ DBG_ASSERT(rText.Len() == 1, "Sm : String enthält nicht genau ein Zeichen");
+ xub_Unicode cChar = rText.GetChar(0);
+
+ // ist es ein griechisches Zeichen ?
+ if (xub_Unicode('\xC6') <= cChar && cChar <= xub_Unicode('\xEE'))
+ return TRUE;
+ else
+ {
+ // kommt es in 'aMathAlpha' vor ?
+ const xub_Unicode *pChar = aMathAlpha;
+ while (*pChar && *pChar != cChar)
+ pChar++;
+ return *pChar != xub_Unicode('\0');
+ }
+}
+
+
+////////////////////////////////////////
+//
+// SmRect members
+//
+
+
+SmRect::SmRect()
+ // constructs empty rectangle at (0, 0) with width and height 0.
+{
+ DBG_ASSERT(aTopLeft == Point(0, 0), "Sm: ooops...");
+ DBG_ASSERT(aSize == Size(0, 0), "Sm: ooops...");
+
+ bHasBaseline = bHasAlignInfo = FALSE;
+ nBaseline = nAlignT = nAlignM = nAlignB =
+ nGlyphTop = nGlyphBottom =
+ nItalicLeftSpace = nItalicRightSpace =
+ nLoAttrFence = nHiAttrFence = 0;
+}
+
+
+SmRect::SmRect(const SmRect &rRect)
+: aTopLeft(rRect.aTopLeft),
+ aSize(rRect.aSize)
+{
+ bHasBaseline = rRect.bHasBaseline;
+ nBaseline = rRect.nBaseline;
+ nAlignT = rRect.nAlignT;
+ nAlignM = rRect.nAlignM;
+ nAlignB = rRect.nAlignB;
+ nGlyphTop = rRect.nGlyphTop;
+ nGlyphBottom = rRect.nGlyphBottom;
+ nHiAttrFence = rRect.nHiAttrFence;
+ nLoAttrFence = rRect.nLoAttrFence;
+ bHasAlignInfo = rRect.bHasAlignInfo;
+ nItalicLeftSpace = rRect.nItalicLeftSpace;
+ nItalicRightSpace = rRect.nItalicRightSpace;
+}
+
+
+void SmRect::CopyAlignInfo(const SmRect &rRect)
+{
+ nBaseline = rRect.nBaseline;
+ bHasBaseline = rRect.bHasBaseline;
+ nAlignT = rRect.nAlignT;
+ nAlignM = rRect.nAlignM;
+ nAlignB = rRect.nAlignB;
+ bHasAlignInfo = rRect.bHasAlignInfo;
+ nLoAttrFence = rRect.nLoAttrFence;
+ nHiAttrFence = rRect.nHiAttrFence;
+}
+
+
+void SmRect::BuildRect(const OutputDevice &rDev, const SmFormat *pFormat,
+ const XubString &rText, long nBorderWidth)
+{
+#ifndef PRODUCT
+ if (rDev.GetOutDevType() != OUTDEV_PRINTER)
+ DBG_WARNING("Sm : Referenz-Device ist kein Drucker");
+#endif
+
+ DBG_ASSERT(aTopLeft == Point(0, 0), "Sm: Ooops...");
+
+ aSize = Size(rDev.GetTextWidth(rText), rDev.GetTextHeight());
+
+ const FontMetric aFM (rDev.GetFontMetric());
+ BOOL bIsMath = aFM.GetName().EqualsIgnoreCaseAscii("StarMath");
+ BOOL bAllowSmaller = bIsMath && !SmIsMathAlpha(rText);
+ const long nFontHeight = rDev.GetFont().GetSize().Height();
+
+ bHasAlignInfo = TRUE;
+ bHasBaseline = TRUE;
+ nBaseline = aFM.GetAscent();
+ nAlignT = nBaseline - nFontHeight * 750L / 1000L;
+ nAlignM = nBaseline - nFontHeight * 121L / 422L;
+ // that's where the horizontal bars of '+', '-', ... are
+ // (1/3 of ascent over baseline)
+ // (121 = 1/3 of 12pt ascent, 422 = 12pt fontheight)
+ nAlignB = nBaseline;
+
+ // workaround for printer fonts with very small (possible 0 or even
+ // negative(!)) leading
+ if (aFM.GetLeading() < 5 && rDev.GetOutDevType() == OUTDEV_PRINTER)
+ {
+#if SUPD >= 593
+ OutputDevice *pWindow = Application::GetDefaultDevice();
+#else
+ Window *pWindow = Application::GetAppWindow();
+#endif
+
+ pWindow->Push(PUSH_MAPMODE | PUSH_FONT);
+
+ pWindow->SetMapMode(rDev.GetMapMode());
+ pWindow->SetFont(rDev.GetFontMetric());
+
+ long nDelta = pWindow->GetFontMetric().GetLeading();
+ if (nDelta == 0)
+ { // dieser Wert entspricht etwa einem Leading von 80 bei einer
+ // Fonthöhe von 422 (12pt)
+ nDelta = nFontHeight * 8L / 43;
+ }
+ SetTop(GetTop() - nDelta);
+
+ pWindow->Pop();
+ }
+
+ // get GlyphBoundRect
+ Rectangle aGlyphRect;
+ BOOL bSuccess = SmGetGlyphBoundRect(rDev, rText, aGlyphRect);
+ DBG_ASSERT(bSuccess, "Sm : Ooops... (fehlt evtl. der Font?)");
+
+ nItalicLeftSpace = GetLeft() - aGlyphRect.Left() + nBorderWidth;
+ nItalicRightSpace = aGlyphRect.Right() - GetRight() + nBorderWidth;
+ if (nItalicLeftSpace < 0 && !bAllowSmaller)
+ nItalicLeftSpace = 0;
+ if (nItalicRightSpace < 0 && !bAllowSmaller)
+ nItalicRightSpace = 0;
+
+ long nDist = 0;
+ if (pFormat)
+ nDist = (rDev.GetFont().GetSize().Height()
+ * pFormat->GetDistance(DIS_ORNAMENTSIZE)) / 100L;
+
+ nHiAttrFence = aGlyphRect.TopLeft().Y() - 1 - nBorderWidth - nDist;
+ nLoAttrFence = SmFromTo(GetAlignB(), GetBottom(), 0.0);
+
+ nGlyphTop = aGlyphRect.Top() - nBorderWidth;
+ nGlyphBottom = aGlyphRect.Bottom() + nBorderWidth;
+
+ if (bAllowSmaller)
+ {
+ // für Symbole und Operatoren aus dem StarMath Font passen wir den
+ // oberen und unteren Rand dem Zeichen an.
+ SetTop(nGlyphTop);
+ SetBottom(nGlyphBottom);
+ }
+
+ if (nHiAttrFence < GetTop())
+ nHiAttrFence = GetTop();
+
+ if (nLoAttrFence > GetBottom())
+ nLoAttrFence = GetBottom();
+
+ DBG_ASSERT(rText.Len() == 0 || !IsEmpty(),
+ "Sm: leeres Rechteck erzeugt");
+}
+
+
+void SmRect::Init(const OutputDevice &rDev, const SmFormat *pFormat,
+ const XubString &rText, long nBorderWidth)
+ // get rectangle fitting for drawing 'rText' on OutputDevice 'rDev'
+{
+ SmRectCache *pRectCache = SM_MOD1()->GetRectCache();
+ DBG_ASSERT(pRectCache, "Sm : NULL pointer");
+
+ // build key for rectangle (to look up in cache for)
+ const SmRectCache::Key aKey (rText, rDev.GetFont());
+
+ const SmRect *pResult = pRectCache->Search(aKey);
+ if (pResult)
+ *this = *pResult;
+ else
+ { // build rectangle and put it in cache
+ BuildRect(rDev, pFormat, rText, nBorderWidth);
+ pResult = pRectCache->Add(aKey, *this);
+ }
+ DBG_ASSERT(pResult, "Sm : NULL pointer");
+}
+
+
+SmRect::SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
+ const XubString &rText, long nBorderWidth)
+{
+ Init(rDev, pFormat, rText, nBorderWidth);
+}
+
+
+SmRect::SmRect(const OutputDevice &rDev, const SmFormat *pFormat,
+ const SmPolygon &rPoly, long nBorderWidth)
+{
+ Init(rDev, pFormat, rPoly.GetChar(), nBorderWidth);
+
+ // den Offset in der Zeichenzelle passend waehlen
+ Point aPolyOffset (rPoly.GetOrigPos());
+ aPolyOffset.X() *= rPoly.GetScaleX();
+ aPolyOffset.Y() *= rPoly.GetScaleY();
+
+ // und es an diese Position schieben
+ Rectangle aPolyRect ( rPoly.GetBoundRect(rDev) );
+ Point aDelta (aPolyOffset - aPolyRect.TopLeft());
+ aPolyRect.Move( aDelta.X(), aDelta.Y() );
+
+ aTopLeft.X() = aPolyRect.Left() - nBorderWidth;
+ aTopLeft.Y() = aPolyRect.Top() - nBorderWidth;
+
+ aSize = aPolyRect.GetSize();
+ aSize.Width() += 2 * nBorderWidth;
+ aSize.Height() += 2 * nBorderWidth;
+
+ nItalicLeftSpace = nItalicRightSpace = 0;
+}
+
+
+SmRect::SmRect(long nWidth, long nHeight)
+ // this constructor should never be used for anything textlike because
+ // it will not provide useful values for baseline, AlignT and AlignB!
+ // It's purpose is to get a 'SmRect' for the horizontal line in fractions
+ // as used in 'SmBinVerNode'.
+: aSize(nWidth, nHeight)
+{
+ DBG_ASSERT(aTopLeft == Point(0, 0), "Sm: ooops...");
+
+ bHasBaseline = FALSE;
+ bHasAlignInfo = TRUE;
+ nBaseline = 0;
+ nAlignT = GetTop();
+ nAlignB = GetBottom();
+ nAlignM = (nAlignT + nAlignB) / 2; // this is the default
+ nItalicLeftSpace = nItalicRightSpace = 0;
+ nGlyphTop = nHiAttrFence = GetTop();
+ nGlyphBottom = nLoAttrFence = GetBottom();
+}
+
+
+void SmRect::SetLeft(long nLeft)
+{
+ if (nLeft <= GetRight())
+ { aSize.Width() = GetRight() - nLeft + 1;
+ aTopLeft.X() = nLeft;
+ }
+}
+
+
+void SmRect::SetRight(long nRight)
+{
+ if (nRight >= GetLeft())
+ aSize.Width() = nRight - GetLeft() + 1;
+}
+
+
+void SmRect::SetBottom(long nBottom)
+{
+ if (nBottom >= GetTop())
+ aSize.Height() = nBottom - GetTop() + 1;
+}
+
+
+void SmRect::SetTop(long nTop)
+{
+ if (nTop <= GetBottom())
+ { aSize.Height() = GetBottom() - nTop + 1;
+ aTopLeft.Y() = nTop;
+ }
+}
+
+
+void SmRect::Move(const Point &rPosition)
+ // move rectangle by position 'rPosition'.
+{
+ aTopLeft += rPosition;
+
+ long nDelta = rPosition.Y();
+ nBaseline += nDelta;
+ nAlignT += nDelta;
+ nAlignM += nDelta;
+ nAlignB += nDelta;
+ nGlyphTop += nDelta;
+ nGlyphBottom += nDelta;
+ nHiAttrFence += nDelta;
+ nLoAttrFence += nDelta;
+}
+
+
+const Point SmRect::AlignTo(const SmRect &rRect, RectPos ePos,
+ RectHorAlign eHor, RectVerAlign eVer) const
+{ Point aPos (GetTopLeft());
+ // will become the topleft point of the new rectangle position
+
+ // set horizontal or vertical new rectangle position depending on
+ // 'ePos' is one of 'RP_LEFT', 'RP_RIGHT' or 'RP_TOP', 'RP_BOTTOM'
+ switch (ePos)
+ { case RP_LEFT :
+ aPos.X() = rRect.GetItalicLeft() - GetItalicRightSpace()
+ - GetWidth();
+ break;
+ case RP_RIGHT :
+ aPos.X() = rRect.GetItalicRight() + 1 + GetItalicLeftSpace();
+ break;
+ case RP_TOP :
+ aPos.Y() = rRect.GetTop() - GetHeight();
+ break;
+ case RP_BOTTOM :
+ aPos.Y() = rRect.GetBottom() + 1;
+ break;
+ case RP_ATTRIBUT :
+ aPos.X() = rRect.GetItalicCenterX() - GetItalicWidth() / 2
+ + GetItalicLeftSpace();
+ break;
+ default :
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+
+ // check if horizontal position is already set
+ if (ePos == RP_LEFT || ePos == RP_RIGHT || ePos == RP_ATTRIBUT)
+ // correct error in current vertical position
+ switch (eVer)
+ { case RVA_TOP :
+ aPos.Y() += rRect.GetAlignT() - GetAlignT();
+ break;
+ case RVA_MID :
+ aPos.Y() += rRect.GetAlignM() - GetAlignM();
+ break;
+ case RVA_BASELINE :
+ // align baselines if possible else align mid's
+ if (HasBaseline() && rRect.HasBaseline())
+ aPos.Y() += rRect.GetBaseline() - GetBaseline();
+ else
+ aPos.Y() += rRect.GetAlignM() - GetAlignM();
+ break;
+ case RVA_BOTTOM :
+ aPos.Y() += rRect.GetAlignB() - GetAlignB();
+ break;
+ case RVA_CENTERY :
+ aPos.Y() += rRect.GetCenterY() - GetCenterY();
+ break;
+ case RVA_ATTRIBUT_HI:
+ aPos.Y() += rRect.GetHiAttrFence() - GetBottom();
+ break;
+ case RVA_ATTRIBUT_MID :
+ aPos.Y() += SmFromTo(rRect.GetAlignB(), rRect.GetAlignT(), 0.4)
+ - GetCenterY();
+ break;
+ case RVA_ATTRIBUT_LO :
+ aPos.Y() += rRect.GetLoAttrFence() - GetTop();
+ break;
+ default :
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+
+ // check if vertical position is already set
+ if (ePos == RP_TOP || ePos == RP_BOTTOM)
+ // correct error in current horizontal position
+ switch (eHor)
+ { case RHA_LEFT :
+ aPos.X() += rRect.GetItalicLeft() - GetItalicLeft();
+ break;
+ case RHA_CENTER :
+ aPos.X() += rRect.GetItalicCenterX() - GetItalicCenterX();
+ break;
+ case RHA_RIGHT :
+ aPos.X() += rRect.GetItalicRight() - GetItalicRight();
+ break;
+ default :
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+
+ return aPos;
+}
+
+
+SmRect & SmRect::Union(const SmRect &rRect)
+ // rectangle union of current one with 'rRect'. The result is to be the
+ // smallest rectangles that covers the space of both rectangles.
+ // (empty rectangles cover no space)
+ //! Italic correction is NOT taken into account here!
+{
+ if (rRect.IsEmpty())
+ return *this;
+
+ long nL = rRect.GetLeft(),
+ nR = rRect.GetRight(),
+ nT = rRect.GetTop(),
+ nB = rRect.GetBottom(),
+ nGT = rRect.nGlyphTop,
+ nGB = rRect.nGlyphBottom;
+ if (!IsEmpty())
+ { long nTmp;
+
+ if ((nTmp = GetLeft()) < nL)
+ nL = nTmp;
+ if ((nTmp = GetRight()) > nR)
+ nR = nTmp;
+ if ((nTmp = GetTop()) < nT)
+ nT = nTmp;
+ if ((nTmp = GetBottom()) > nB)
+ nB = nTmp;
+ if ((nTmp = nGlyphTop) < nGT)
+ nGT = nTmp;
+ if ((nTmp = nGlyphBottom) > nGB)
+ nGB = nTmp;
+ }
+
+ SetLeft(nL);
+ SetRight(nR);
+ SetTop(nT);
+ SetBottom(nB);
+ nGlyphTop = nGT;
+ nGlyphBottom = nGB;
+
+ return *this;
+}
+
+
+SmRect & SmRect::ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode)
+ // let current rectangle be the union of itself and 'rRect'
+ // (the smallest rectangle surrounding both). Also adapt values for
+ // 'AlignT', 'AlignM', 'AlignB', baseline and italic-spaces.
+ // The baseline is set according to 'eCopyMode'.
+ // If one of the rectangles has no relevant info the other one is copied.
+{
+ // get some values used for (italic) spaces adaption
+ // ! (need to be done before changing current SmRect) !
+ long nL = Min(GetItalicLeft(), rRect.GetItalicLeft()),
+ nR = Max(GetItalicRight(), rRect.GetItalicRight());
+
+ Union(rRect);
+
+ SetItalicSpaces(GetLeft() - nL, nR - GetRight());
+
+ if (!HasAlignInfo())
+ CopyAlignInfo(rRect);
+ else if (rRect.HasAlignInfo())
+ { nAlignT = Min(GetAlignT(), rRect.GetAlignT());
+ nAlignB = Max(GetAlignB(), rRect.GetAlignB());
+ nHiAttrFence = Min(GetHiAttrFence(), rRect.GetHiAttrFence());
+ nLoAttrFence = Max(GetLoAttrFence(), rRect.GetLoAttrFence());
+ DBG_ASSERT(HasAlignInfo(), "Sm: ooops...");
+
+ switch (eCopyMode)
+ { case RCP_THIS:
+ // already done
+ break;
+ case RCP_ARG:
+ CopyMBL(rRect);
+ break;
+ case RCP_NONE:
+ ClearBaseline();
+ nAlignM = (nAlignT + nAlignB) / 2;
+ break;
+ case RCP_XOR:
+ if (!HasBaseline())
+ CopyMBL(rRect);
+ break;
+ default :
+ DBG_ASSERT(FALSE, "Sm: unbekannter Fall");
+ }
+ }
+
+ return *this;
+}
+
+
+SmRect & SmRect::ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode,
+ long nNewAlignM)
+ // as 'ExtendBy' but sets AlignM value to 'nNewAlignM'.
+ // (this version will be used in 'SmBinVerNode' to provide means to
+ // align eg "{a over b} over c" correctly where AlignM should not
+ // be (AlignT + AlignB) / 2)
+{
+ DBG_ASSERT(HasAlignInfo(), "Sm: keine Align Info");
+
+ ExtendBy(rRect, eCopyMode);
+ nAlignM = nNewAlignM;
+
+ return *this;
+}
+
+
+SmRect & SmRect::ExtendBy(const SmRect &rRect, RectCopyMBL eCopyMode,
+ BOOL bKeepVerAlignParams)
+ // as 'ExtendBy' but keeps original values for AlignT, -M and -B and
+ // baseline.
+ // (this is used in 'SmSupSubNode' where the sub-/supscripts shouldn't
+ // be allowed to modify these values.)
+{
+ long nOldAlignT = GetAlignT(),
+ nOldAlignM = GetAlignM(),
+ nOldAlignB = GetAlignB(),
+ nOldBaseline = nBaseline; //! depends not on 'HasBaseline'
+ BOOL bOldHasAlignInfo = HasAlignInfo();
+
+ ExtendBy(rRect, eCopyMode);
+
+ if (bKeepVerAlignParams)
+ { nAlignT = nOldAlignT;
+ nAlignM = nOldAlignM;
+ nAlignB = nOldAlignB;
+ nBaseline = nOldBaseline;
+ bHasAlignInfo = bOldHasAlignInfo;
+ }
+
+ return *this;
+}
+
+
+SmRect & SmRect::ExtendBy(const Point &rPoint)
+ // extend current rectangle to include 'rPoint'.
+ // The effect should be similar to
+ // "ExtendBy(rRect, RCP_THIS, (BOOL) TRUE)"
+ // where 'rRect' is a SmRect of size and width 1 with no italic spaces
+ // (as by "SmRect (1, 1)") and position at 'rPoint'.
+{
+ // get some values used for italic spaces adaption
+ // ! (need to be done before changing current SmRect) !
+ long nL = Min(GetItalicLeft(), rPoint.X()),
+ nR = Max(GetItalicRight(), rPoint.X());
+
+ // this is the adaption of rectangle union
+ if (rPoint.X() < GetLeft())
+ SetLeft(rPoint.X());
+ if (rPoint.X() > GetRight())
+ SetRight(rPoint.X());
+ if (rPoint.Y() < GetTop())
+ SetTop(rPoint.Y());
+ if (rPoint.Y() > GetBottom())
+ SetBottom(rPoint.Y());
+
+ SetItalicSpaces(GetLeft() - nL, nR - GetRight());
+
+ return *this;
+}
+
+
+long SmRect::OrientedDist(const Point &rPoint) const
+ // return oriented distance of rPoint to the current rectangle,
+ // especially the return value is <= 0 iff the point is inside the
+ // rectangle.
+ // For simplicity the maximum-norm is used.
+{
+ BOOL bIsInside = IsInsideItalicRect(rPoint);
+
+ // build reference point to define the distance
+ Point aRef;
+ if (bIsInside)
+ { Point aIC (GetItalicCenterX(), GetCenterY());
+
+ aRef.X() = rPoint.X() >= aIC.X() ? GetItalicRight() : GetItalicLeft();
+ aRef.Y() = rPoint.Y() >= aIC.Y() ? GetBottom() : GetTop();
+ }
+ else
+ {
+ // x-coordinate
+ if (rPoint.X() > GetItalicRight())
+ aRef.X() = GetItalicRight();
+ else if (rPoint.X() < GetItalicLeft())
+ aRef.X() = GetItalicLeft();
+ else
+ aRef.X() = rPoint.X();
+ // y-coordinate
+ if (rPoint.Y() > GetBottom())
+ aRef.Y() = GetBottom();
+ else if (rPoint.Y() < GetTop())
+ aRef.Y() = GetTop();
+ else
+ aRef.Y() = rPoint.Y();
+ }
+
+ // build distance vector
+ Point aDist (aRef - rPoint);
+
+ long nAbsX = labs(aDist.X()),
+ nAbsY = labs(aDist.Y());
+
+ return bIsInside ? - Min(nAbsX, nAbsY) : Max (nAbsX, nAbsY);
+}
+
+
+BOOL SmRect::IsInsideRect(const Point &rPoint) const
+{
+ return rPoint.Y() >= GetTop()
+ && rPoint.Y() <= GetBottom()
+ && rPoint.X() >= GetLeft()
+ && rPoint.X() <= GetRight();
+}
+
+
+BOOL SmRect::IsInsideItalicRect(const Point &rPoint) const
+{
+ return rPoint.Y() >= GetTop()
+ && rPoint.Y() <= GetBottom()
+ && rPoint.X() >= GetItalicLeft()
+ && rPoint.X() <= GetItalicRight();
+}
+
+SmRect SmRect::AsGlyphRect() const
+{
+ SmRect aRect (*this);
+ aRect.SetTop(nGlyphTop);
+ aRect.SetBottom(nGlyphBottom);
+ return aRect;
+}
+
+
+// forward declaration
+void SmDrawFrame(OutputDevice &rDev, const Rectangle &rRec,
+ const Color aCol = COL_BLACK);
+
+void SmRect::Draw(OutputDevice &rDev, const Point &rPosition, int nFlags) const
+{
+ if (IsEmpty())
+ return;
+
+ rDev.Push(PUSH_LINECOLOR);
+
+ if (nFlags & SM_RECT_LINES)
+ { long nLeftSpace = 0,
+ nRightSpace = 0;
+
+ if (nFlags & SM_RECT_ITALIC)
+ { nLeftSpace = GetItalicLeftSpace();
+ nRightSpace = GetItalicRightSpace();
+ }
+
+ long nLeft = GetLeft() - nLeftSpace,
+ nRight = GetRight() + nRightSpace;
+
+ Point aOffset (rPosition - GetTopLeft());
+
+ rDev.SetLineColor(COL_LIGHTBLUE);
+ rDev.DrawLine(Point(nLeft, GetAlignB()) += aOffset,
+ Point(nRight, GetAlignB()) += aOffset);
+ rDev.DrawLine(Point(nLeft, GetAlignT()) += aOffset,
+ Point(nRight, GetAlignT()) += aOffset);
+ if (HasBaseline())
+ rDev.DrawLine(Point(nLeft, GetBaseline()) += aOffset,
+ Point(nRight, GetBaseline()) += aOffset);
+
+ rDev.SetLineColor(COL_GRAY);
+ rDev.DrawLine(Point(nLeft, GetHiAttrFence()) += aOffset,
+ Point(nRight, GetHiAttrFence()) += aOffset);
+ }
+
+ if (nFlags & SM_RECT_MID)
+ { Point aCenter = rPosition
+ + (Point(GetItalicCenterX(), GetAlignM()) -= GetTopLeft()),
+ aLenX (GetWidth() / 5, 0),
+ aLenY (0, GetHeight() / 16);
+
+ rDev.SetLineColor(COL_LIGHTGREEN);
+ rDev.DrawLine(aCenter - aLenX, aCenter + aLenX);
+ rDev.DrawLine(aCenter - aLenY, aCenter + aLenY);
+ }
+
+ if (nFlags & SM_RECT_ITALIC)
+ SmDrawFrame(rDev, Rectangle(rPosition - Point(GetItalicLeftSpace(), 0),
+ GetItalicSize()));
+
+ if (nFlags & SM_RECT_CORE)
+ SmDrawFrame(rDev, Rectangle(rPosition, GetSize()), COL_LIGHTRED);
+
+ rDev.Pop();
+}
+
+
+
+////////////////////////////////////////
+// misc functions
+//
+
+
+void SmDrawFrame(OutputDevice &rDev, const Rectangle &rRec,
+ const Color aCol)
+{
+ rDev.Push(PUSH_LINECOLOR);
+
+ rDev.SetLineColor(aCol);
+
+ rDev.DrawLine(rRec.TopLeft(), rRec.BottomLeft());
+ rDev.DrawLine(rRec.BottomLeft(), rRec.BottomRight());
+ rDev.DrawLine(rRec.BottomRight(), rRec.TopRight());
+ rDev.DrawLine(rRec.TopRight(), rRec.TopLeft());
+
+ rDev.Pop();
+}
+
+
+BOOL SmGetGlyphBoundRect(const OutputDevice &rDev,
+ const XubString &rText, Rectangle &rRect)
+ // basically the same as 'GetGlyphBoundRect' (in class 'OutputDevice')
+ // but with a string as argument.
+{
+ // handle special case first
+ xub_StrLen nLen = rText.Len();
+ if (nLen == 0)
+ { rRect.SetEmpty();
+ return TRUE;
+ }
+
+ // get a device where 'OutputDevice::GetGlyphBoundRect' will be successful
+ OutputDevice *pGlyphDev;
+ if (rDev.GetOutDevType() != OUTDEV_PRINTER)
+ pGlyphDev = (OutputDevice *) &rDev;
+ else
+ {
+ // since we format for the printer (where GetGlyphBoundRect will fail)
+ // we need a virtual device here.
+ pGlyphDev = SM_MOD1()->GetRectCache()->GetVirDev();
+ }
+
+ const FontMetric aDevFM (rDev.GetFontMetric());
+
+ pGlyphDev->Push(PUSH_FONT);
+ pGlyphDev->SetFont(rDev.GetFont());
+ //! Da in der FontMetric die Weite immer != 0 ist (was fuer wide-Attribute
+ //! und skalierbare Klammern auch so benötigt wird) kann dies zu einer
+ //! Verzerrung der Proportionen im 'pGlyphDev' gegnüber dem 'rDev' kommen!
+
+ const BOOL bOptimize = FALSE;
+ BOOL bSuccess = TRUE;
+ Point aPoint;
+ Rectangle aResult (aPoint, Size(rDev.GetTextWidth(rText), rDev.GetTextHeight())),
+ aTmp;
+ long nDelta;
+
+ // setzen des linken Randes (dabei Leerzeichen erhalten!)
+ xub_Unicode cChar = rText.GetChar(0);
+ if (cChar != xub_Unicode(' '))
+ {
+ bSuccess &= pGlyphDev->GetGlyphBoundRect(cChar, aTmp, bOptimize);
+ if (!aTmp.IsEmpty())
+ {
+ // linken Rand am 'rDev' ermitteln
+ // (wir nehmen den linken Rand bezüglich 'pGlyphDev' und skalieren
+ // ihn passen für 'rDev')
+ long nLeftSpace = aTmp.Left() * rDev.GetTextWidth(cChar)
+ / pGlyphDev->GetTextWidth(cChar);
+ aResult.Left() += nLeftSpace;
+ }
+ }
+
+ // setzen des rechten Randes (dabei Leerzeichen erhalten!)
+ cChar = rText.GetChar(nLen - 1);
+ if (cChar != xub_Unicode(' '))
+ {
+ bSuccess &= pGlyphDev->GetGlyphBoundRect(cChar, aTmp, bOptimize);
+ if (!aTmp.IsEmpty())
+ {
+ // rechten Rand am 'rDev' ermitteln (analog wie beim linken Rand)
+ long nGlyphWidth = pGlyphDev->GetTextWidth(cChar),
+ nRightSpace = (nGlyphWidth - 1 - aTmp.Right())
+ * rDev.GetTextWidth(cChar)
+ / nGlyphWidth;
+ aResult.Right() -= nRightSpace;
+ }
+ }
+
+ // oberen und unteren Rand bestimmen.
+ // Im Augenblick gehen wird davon aus, daß die Texthöhen an den beiden
+ // Devices im wesentlichen gleich sind und skalieren diese Ränder daher
+ // nicht um.
+ long nTop = aResult.Bottom() + 1,
+ nBottom = aResult.Top() - 1;
+ for (USHORT i = 0; i < nLen; i++)
+ {
+ cChar = rText.GetChar(i);
+ if (cChar != xub_Unicode(' '))
+ {
+ //! Anmerkung: Leerzeichen *können* leere Rechtecke ergeben, aber
+ //! der Returnwert sollte auch dann TRUE sein.
+ bSuccess &= pGlyphDev->GetGlyphBoundRect(cChar, aTmp, bOptimize);
+
+ if (!aTmp.IsEmpty() && aTmp.Top() < nTop)
+ nTop = aTmp.Top();
+ if (!aTmp.IsEmpty() && aTmp.Bottom() > nBottom)
+ nBottom = aTmp.Bottom();
+ }
+ }
+ aResult.Top() = nTop;
+ aResult.Bottom() = nBottom;
+
+ // move rectangle to match possibly different baselines
+ // (because of different devices)
+ nDelta = aDevFM.GetAscent() - pGlyphDev->GetFontMetric().GetAscent();
+ aResult.Move(0, nDelta);
+
+ rRect = aResult;
+ pGlyphDev->Pop();
+ return bSuccess;
+}
+
+
diff --git a/starmath/source/smdll.cxx b/starmath/source/smdll.cxx
new file mode 100644
index 000000000000..494036585e49
--- /dev/null
+++ b/starmath/source/smdll.cxx
@@ -0,0 +1,166 @@
+/*************************************************************************
+ *
+ * $RCSfile: smdll.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _SOT_FACTORY_HXX //autogen
+#include <sot/factory.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SVX_MODCTRL_HXX //autogen
+#include <svx/modctrl.hxx>
+#endif
+#ifndef _SVX_ZOOMCTRL_HXX //autogen
+#include <svx/zoomctrl.hxx>
+#endif
+
+
+#ifndef _SMDLL_HXX
+#include "smdll.hxx"
+#endif
+#ifndef DOCUMENT_HXX
+#include "document.hxx"
+#endif
+#ifndef TOOLBOX_HXX
+#include "toolbox.hxx"
+#endif
+#ifndef VIEW_HXX
+#include "view.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+
+BOOL SmDLL::bInitialized = FALSE;
+
+/*************************************************************************
+|*
+|* Initialisierung
+|*
+\************************************************************************/
+void SmDLL::Init()
+{
+ if ( bInitialized )
+ return;
+
+ bInitialized = TRUE;
+
+ // called directly after loading the DLL
+ // do whatever you want, you may use Sd-DLL too
+
+ // the SdModule must be created
+#if 0
+ SmDocShell::RegisterFactory(SDT_SMA_DOCFACTPRIO);
+#endif
+
+ SmModuleDummy** ppShlPtr = (SmModuleDummy**) GetAppData(SHL_SM);
+
+#if 1
+ SvFactory* pFact = PTR_CAST(SvFactory,(*ppShlPtr)->pSmDocShellFactory);
+ delete (*ppShlPtr);
+ (*ppShlPtr) = new SmModule(pFact);
+ (*ppShlPtr)->pSmDocShellFactory = pFact;
+#else
+ (*ppShlPtr) = new SmModule( &SmDocShell::Factory() );
+#endif
+
+ String aResDll(C2S("sm"));
+ aResDll += String::CreateFromInt32( SOLARUPD );
+
+ SfxModule *p = SM_MOD1();
+ SmModule *pp = (SmModule *) p;
+
+ SmModule::RegisterInterface(pp);
+
+ SmDocShell::Factory().RegisterMenuBar( SmResId(RID_SMMENU) );
+ SmDocShell::Factory().RegisterAccel ( SmResId(RID_SMACCEL) );
+ SmDocShell::RegisterInterface(pp);
+
+ SmViewShell::RegisterFactory(1);
+ SmViewShell::RegisterInterface(pp);
+
+ SvxZoomStatusBarControl::RegisterControl( SID_ATTR_ZOOM, pp );
+ SvxModifyControl::RegisterControl( SID_TEXTSTATUS, pp );
+
+ SmToolBoxWrapper::RegisterChildWindow(TRUE);
+ SmCmdBoxWrapper::RegisterChildWindow(TRUE);
+
+ ((SmModule*) *ppShlPtr)->InitManager ();
+}
+
+/*************************************************************************
+|*
+|* Deinitialisierung
+|*
+\************************************************************************/
+void SmDLL::Exit()
+{
+ // the SdModule must be destroyed
+ SmModuleDummy** ppShlPtr = (SmModuleDummy**) GetAppData(SHL_SM);
+ delete (*ppShlPtr);
+ (*ppShlPtr) = NULL;
+
+ *GetAppData(SHL_SM) = 0;
+}
+
+
diff --git a/starmath/source/smmod.cxx b/starmath/source/smmod.cxx
new file mode 100644
index 000000000000..7e1342e3294e
--- /dev/null
+++ b/starmath/source/smmod.cxx
@@ -0,0 +1,231 @@
+/*************************************************************************
+ *
+ * $RCSfile: smmod.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+
+#ifndef _GLOBNAME_HXX //autogen
+#include <tools/globname.hxx>
+#endif
+#ifndef _SV_STATUS_HXX //autogen
+#include <vcl/status.hxx>
+#endif
+#ifndef _SFXMSG_HXX //autogen
+#include <sfx2/msg.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXOBJFACE_HXX //autogen
+#include <sfx2/objface.hxx>
+#endif
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+#ifndef _SFX_HRC //autogen
+#include <sfx2/sfx.hrc>
+#endif
+#ifndef _FACTORY_HXX //autogen
+#include <so3/factory.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _SMMOD_HXX
+#include "smmod.hxx"
+#endif
+#ifndef SYMBOL_HXX
+#include "symbol.hxx"
+#endif
+#ifndef _CONFIG_HXX
+#include "config.hxx"
+#endif
+#ifndef _DIALOG_HXX
+#include "dialog.hxx"
+#endif
+#include "starmath.hrc"
+
+TYPEINIT1( SmModuleDummy, SfxModule );
+TYPEINIT1( SmModule, SmModuleDummy );
+
+#define SmModule
+#include "smslots.hxx"
+
+SFX_IMPL_INTERFACE(SmModule, SfxModule, SmResId(RID_APPLICATION))
+{
+ SFX_STATUSBAR_REGISTRATION(SmResId(RID_STATUSBAR));
+}
+
+SmModule::SmModule(SvFactory* pObjFact) :
+ SmModuleDummy(SFX_APP()->CreateResManager("sm"), FALSE, pObjFact)
+{
+ SetName( C2S("StarMath" ));
+
+ pConfig = new SmConfig;
+ pConfig->Initialize();
+
+ pSymSetManager = new SmSymSetManager;
+ pRectCache = new SmRectCache;
+}
+
+SmModule::~SmModule()
+{
+ delete pConfig;
+ delete pSymSetManager;
+ delete pRectCache;
+}
+
+void SmModule::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+
+ for (USHORT nWh = aIter.FirstWhich(); 0 != nWh; nWh = aIter.NextWhich())
+ switch (nWh)
+ {
+ case SID_CONFIGEVENT :
+ rSet.DisableItem(SID_CONFIGEVENT);
+ break;
+ }
+}
+
+void SmModule::FillStatusBar(StatusBar &rBar)
+{
+ rBar.InsertItem(SID_TEXTSTATUS, 300, SIB_LEFT | SIB_IN);
+ rBar.InsertItem(SID_ATTR_ZOOM, rBar.GetTextWidth(C2S(" 100% ")));
+ rBar.InsertItem(SID_MODIFYSTATUS, rBar.GetTextWidth(C2S(" * ")));
+}
+
+SfxModule *SmModule::Load()
+{
+ return this;
+}
+
+void SmModule::Free()
+{
+}
+
+void SmModule::InitManager()
+{
+ pSymSetManager->Init();
+}
+
+
+
+SfxModule *SmModuleDummy::Load()
+{
+ return 0;
+}
+/* -----------------15.02.99 12:45-------------------
+ *
+ * --------------------------------------------------*/
+SfxItemSet* SmModule::CreateItemSet( USHORT nId )
+{
+ SfxItemSet* pRet = 0;
+ if(nId == SID_SM_EDITOPTIONS)
+ {
+ pRet = new SfxItemSet(GetPool(),
+ //TP_SMPRINT
+ SID_PRINTSIZE, SID_PRINTSIZE,
+ SID_PRINTZOOM, SID_PRINTZOOM,
+ SID_PRINTTITLE, SID_PRINTTITLE,
+ SID_PRINTTEXT, SID_PRINTTEXT,
+ SID_PRINTFRAME, SID_PRINTFRAME,
+ SID_NO_RIGHT_SPACES, SID_NO_RIGHT_SPACES,
+ 0 );
+
+ GetConfig()->ConfigToItemSet(*pRet);
+ }
+ return pRet;
+}
+/* -----------------15.02.99 12:45-------------------
+ *
+ * --------------------------------------------------*/
+void SmModule::ApplyItemSet( USHORT nId, const SfxItemSet& rSet )
+{
+ if(nId == SID_SM_EDITOPTIONS)
+ {
+ GetConfig()->ItemSetToConfig(rSet);
+ }
+}
+/* -----------------15.02.99 12:45-------------------
+ *
+ * --------------------------------------------------*/
+SfxTabPage* SmModule::CreateTabPage( USHORT nId, Window* pParent, const SfxItemSet& rSet )
+{
+ SfxTabPage* pRet = 0;
+ if(nId == SID_SM_TP_PRINTOPTIONS)
+ pRet = SmPrintOptionsTabPage::Create( pParent, rSet );
+ return pRet;
+
+}
+
+
+
diff --git a/starmath/source/smres.src b/starmath/source/smres.src
new file mode 100644
index 000000000000..a4509391b50f
--- /dev/null
+++ b/starmath/source/smres.src
@@ -0,0 +1,10674 @@
+/*************************************************************************
+ *
+ * $RCSfile: smres.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:26 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+
+
+
+#include <sfx2/sfx.hrc>
+#include <svx/globlmn.hrc>
+#include "starmath.hrc"
+
+#define IMAGE_STDBTN_COLOR Color { Red = 0xC000; Green = 0xC000; Blue = 0xC000; }
+
+#define MN_SUB_TOOLBAR 32
+
+
+ModalDialog RID_FONTDIALOG
+{
+ Moveable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 189 , 150 ) ;
+ Text = "Schriften" ;
+ Text [ ENGLISH ] = "Fonts" ;
+ Text [ norwegian ] = "Fonts" ;
+ Text [ italian ] = "Caratteri" ;
+ Text [ portuguese_brazilian ] = "Fontes" ;
+ Text [ portuguese ] = "Tipos de letra" ;
+ Text [ finnish ] = "Fontit" ;
+ Text [ danish ] = "Skrifttyper" ;
+ Text [ french ] = "Polices" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertypen" ;
+ Text [ spanish ] = "Fuentes" ;
+ Text [ english_us ] = "Fonts" ;
+ FixedText 1
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Schriftart:" ;
+ Text [ ENGLISH ] = "~Font:" ;
+ Text [ norwegian ] = "~Font:" ;
+ Text [ italian ] = "~Tipo di carattere:" ;
+ Text [ portuguese_brazilian ] = "~Fonte:" ;
+ Text [ portuguese ] = "~Tipo de letra:" ;
+ Text [ finnish ] = "~Fontti:" ;
+ Text [ danish ] = "Skrifttype:" ;
+ Text [ french ] = "~Police :" ;
+ Text [ swedish ] = "Tecken~snitt:" ;
+ Text [ dutch ] = "~Lettertype:" ;
+ Text [ spanish ] = "~Fuente:" ;
+ Text [ english_us ] = "~Font:" ;
+ Text[ chinese_simplified ] = "×ÖÌå(~F)£º";
+ Text[ russian ] = "~Òèï øðèôòà:";
+ Text[ polish ] = "Czcionka:";
+ Text[ japanese ] = "Ì«ÝÄ‚ÌŽí—Þ(~F):";
+ Text[ chinese_traditional ] = "¦r«¬(~F)";
+ Text[ arabic ] = ":äæÚ ÇáÎØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÜ:";
+ Text[ korean ] = "±Û²Ã:(~F)";
+ Text[ turkish ] = "Yazýtipi:";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 18 ) ;
+ Size = MAP_APPFONT ( 111 , 60 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ VScroll = TRUE ;
+ };
+ CheckBox 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 135 , 93 ) ;
+ Size = MAP_APPFONT ( 33 , 12 ) ;
+ Text = "~Fett" ;
+ Text [ ENGLISH ] = "~Bold" ;
+ Text [ norwegian ] = "~Bold" ;
+ Text [ italian ] = "G~rassetto" ;
+ Text [ portuguese_brazilian ] = "~Negrito" ;
+ Text [ portuguese ] = "~Negrito" ;
+ Text [ finnish ] = "~Lihavoitu" ;
+ Text [ danish ] = "Fed" ;
+ Text [ french ] = "~Gras" ;
+ Text [ swedish ] = "~Fet" ;
+ Text [ dutch ] = "~Vet" ;
+ Text [ spanish ] = "~Negrita" ;
+ Text [ english_us ] = "~Bold" ;
+ Text[ chinese_simplified ] = "´ÖÌå(~B)";
+ Text[ russian ] = "~Æèðíûé";
+ Text[ polish ] = "Pogrubienie";
+ Text[ japanese ] = "‘¾Žš(~B)";
+ Text[ chinese_traditional ] = "²ÊÅé(~B)";
+ Text[ arabic ] = "ÚÑíÖ";
+ Text[ greek ] = "¸íôïíï";
+ Text[ korean ] = "ÁøÇÏ°Ô(~B)";
+ Text[ turkish ] = "Kalýn";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 135 , 108 ) ;
+ Size = MAP_APPFONT ( 33 , 12 ) ;
+ Text = "~Kursiv" ;
+ Text [ ENGLISH ] = "~Italic" ;
+ Text [ norwegian ] = "~Italic" ;
+ Text [ italian ] = "Co~rsivo" ;
+ Text [ portuguese_brazilian ] = "~Itálico" ;
+ Text [ portuguese ] = "~Itálico" ;
+ Text [ finnish ] = "~Kursivoitu" ;
+ Text [ danish ] = "Kursiv" ;
+ Text [ french ] = "~Italique" ;
+ Text [ swedish ] = "~Kursiv" ;
+ Text [ dutch ] = "~Cursief" ;
+ Text [ spanish ] = "~Cursiva" ;
+ Text [ english_us ] = "~Italic" ;
+ Text[ chinese_simplified ] = "бÌå(~I)";
+ Text[ russian ] = "~Êóðñèâ";
+ Text[ polish ] = "Kursywa";
+ Text[ japanese ] = "ŽÎ‘Ì(~I)";
+ Text[ chinese_traditional ] = "±×Åé(~I)";
+ Text[ arabic ] = "ãÇÆá";
+ Text[ greek ] = "ÐëÜãéá";
+ Text[ korean ] = "ÀÌÅŸ¯Ã¼(~I)";
+ Text[ turkish ] = "Ýtalik";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 126 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 126 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Control 1
+ {
+ Disable = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 96 ) ;
+ Size = MAP_APPFONT ( 99 , 25 ) ;
+ };
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 84 ) ;
+ Size = MAP_APPFONT ( 111 , 42 ) ;
+ Text = "Beispiel" ;
+ Text [ ENGLISH ] = "Sample" ;
+ Text [ norwegian ] = "Sample" ;
+ Text [ italian ] = "Esempio" ;
+ Text [ portuguese_brazilian ] = "Modelo" ;
+ Text [ portuguese ] = "Exemplo" ;
+ Text [ finnish ] = "Malli" ;
+ Text [ danish ] = "Eksempel" ;
+ Text [ french ] = "Exemple" ;
+ Text [ swedish ] = "Exempel" ;
+ Text [ dutch ] = "Voorbeeld" ;
+ Text [ spanish ] = "Ejemplo" ;
+ Text [ english_us ] = "Example" ;
+ Text[ chinese_simplified ] = "ʾÀý";
+ Text[ russian ] = "Ïðèìåð";
+ Text[ polish ] = "Przyk³ad";
+ Text[ japanese ] = "—á";
+ Text[ chinese_traditional ] = "¨Ò¤l";
+ Text[ arabic ] = "ãËÇá";
+ Text[ greek ] = "ÐáñÜäåéãìá";
+ Text[ korean ] = "¿¹";
+ Text[ turkish ] = "Örnek";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 2
+ {
+ Pos = MAP_APPFONT ( 129 , 84 ) ;
+ Size = MAP_APPFONT ( 42 , 42 ) ;
+ Text = "Attribute" ;
+ Text [ ENGLISH ] = "Styles" ;
+ Text [ norwegian ] = "Styles" ;
+ Text [ italian ] = "Attributi" ;
+ Text [ portuguese_brazilian ] = "Estilos" ;
+ Text [ portuguese ] = "Atributos" ;
+ Text [ finnish ] = "Tyylit" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ french ] = "Styles" ;
+ Text [ swedish ] = "Attribut" ;
+ Text [ dutch ] = "Attributen" ;
+ Text [ spanish ] = "Atributos" ;
+ Text [ english_us ] = "Attributes" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû";
+ Text[ polish ] = "Atrybuty";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÓãÇÊ";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ korean ] = "¼Ó¼º";
+ Text[ turkish ] = "Öznitelikler";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Øðèôòû";
+ Text[ polish ] = "Czcionki";
+ Text[ japanese ] = "Ì«ÝÄ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÎØæØ";
+ Text[ greek ] = "ÃñáììáôïóåéñÝò";
+ Text[ korean ] = "±Û²Ã";
+ Text[ turkish ] = "Yazýtipleri";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_FONTSIZEDIALOG
+{
+ Moveable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = SID_FONTSIZE ;
+ Size = MAP_APPFONT ( 171 , 120 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Schriftgrößen : Schriftgrößen */
+ Text = "Schriftgrößen" ;
+ Text [ ENGLISH ] = "Fontsizes" ;
+ Text [ norwegian ] = "Fontsizes" ;
+ Text [ italian ] = "Dimensioni carattere" ;
+ Text [ portuguese_brazilian ] = "Tamanhos de letra" ;
+ Text [ portuguese ] = "Tamanhos de letra" ;
+ Text [ finnish ] = "Fonttien koot" ;
+ Text [ danish ] = "Skriftstørrelse" ;
+ Text [ french ] = "Tailles de police" ;
+ Text [ swedish ] = "Teckenstorlekar" ;
+ Text [ dutch ] = "Lettergrootten" ;
+ Text [ spanish ] = "Tamaños de fuente" ;
+ Text [ english_us ] = "Font Sizes" ;
+ FixedText 1
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 7 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Basisgröße: : ~Basisgröße: */
+ Text = "~Basisgröße:" ;
+ Text [ ENGLISH ] = "~Basis size:" ;
+ Text [ norwegian ] = "~Basis size:" ;
+ Text [ italian ] = "Dim. di ~base:" ;
+ Text [ portuguese_brazilian ] = "~Tamanho de base:" ;
+ Text [ portuguese ] = "~Tamanho de base:" ;
+ Text [ finnish ] = "~Peruskoko:" ;
+ Text [ danish ] = "Basisstørrelse:" ;
+ Text [ french ] = "~Taille de base :" ;
+ Text [ swedish ] = "~Basstorlek:" ;
+ Text [ dutch ] = "~Basisgrootte:" ;
+ Text [ spanish ] = "~Tamaño de base:" ;
+ Text [ english_us ] = "Base ~size:" ;
+ Text[ chinese_simplified ] = "»ù±¾³ß´ç(~S)";
+ Text[ russian ] = "~Îñíîâíîé ðàçìåð:";
+ Text[ polish ] = "Rozmiar bazy:";
+ Text[ japanese ] = "Šî€»²½Þ:(~S)";
+ Text[ chinese_traditional ] = "°ò¥»¤Ø¤o(~S)";
+ Text[ arabic ] = "ÍÌã ÇáÞÇÚÏÉ:";
+ Text[ greek ] = "Âáóéêü ìÝãåèïò:";
+ Text[ korean ] = "±âº» Å©±â:(~S)";
+ Text[ turkish ] = "Temel boyut:";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 6 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 4 ;
+ Maximum = 127 ;
+ Unit = FUNIT_POINT ;
+ };
+ FixedText 4
+ {
+ Pos = MAP_APPFONT ( 12 , 37 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Text:" ;
+ Text [ English ] = "~Text:" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Texto:" ;
+ Text [ english_us ] = "~Text:" ;
+ Text [ portuguese_brazilian ] = "~Text:" ;
+ Text [ swedish ] = "~Text:" ;
+ Text [ danish ] = "~Tekst:" ;
+ Text [ italian ] = "~Testo:" ;
+ Text [ spanish ] = "~Texto:" ;
+ Text [ french ] = "Te~xte :" ;
+ Text [ dutch ] = "~Tekst:" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö(~T)";
+ Text[ russian ] = "~Òåêñò:";
+ Text[ polish ] = "Tekst:";
+ Text[ japanese ] = "÷½Ä:(~T)";
+ Text[ chinese_traditional ] = "¤å¦r(~T)";
+ Text[ arabic ] = ":ÇáäÕ";
+ Text[ greek ] = "Êåßìåíï:";
+ Text[ korean ] = "ÅؽºÆ®:(~T)";
+ Text[ turkish ] = "Metin:";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 4
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 36 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 200 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ };
+ FixedText 5
+ {
+ Pos = MAP_APPFONT ( 12 , 52 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Indizes:" ;
+ Text [ ENGLISH ] = "~Indices:" ;
+ Text [ norwegian ] = "~Indices:" ;
+ Text [ italian ] = "~Indici:" ;
+ Text [ portuguese_brazilian ] = "~Índices" ;
+ Text [ portuguese ] = "Í~ndices:" ;
+ Text [ finnish ] = "~Indices:" ;
+ Text [ danish ] = "Sub-/Superscript:" ;
+ Text [ french ] = "~Index :" ;
+ Text [ swedish ] = "~Index:" ;
+ Text [ dutch ] = "~Indicies:" ;
+ Text [ spanish ] = "Í~ndices:" ;
+ Text [ english_us ] = "~Indices:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "±êÖ¾(~I)";
+ Text[ russian ] = "Èíäåêñû:";
+ Text[ polish ] = "Indeksy:";
+ Text[ japanese ] = "²ÝÃÞ¯¸½:(~I)";
+ Text[ chinese_traditional ] = "¼Ð»x(~I)";
+ Text[ arabic ] = ":ÝåÇÑÓ";
+ Text[ greek ] = "Äåßêôåò:";
+ Text[ korean ] = "À妽º:(~I)";
+ Text[ turkish ] = "Ýndisler:";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 5
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 51 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 200 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ };
+ FixedText 6
+ {
+ Pos = MAP_APPFONT ( 12 , 67 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Funktionen:" ;
+ Text [ ENGLISH ] = "~Functions:" ;
+ Text [ norwegian ] = "~Functions:" ;
+ Text [ italian ] = "~Funzioni:" ;
+ Text [ portuguese_brazilian ] = "~Funções:" ;
+ Text [ portuguese ] = "~Funções:" ;
+ Text [ finnish ] = "~Funktiot:" ;
+ Text [ danish ] = "~Funktioner:" ;
+ Text [ french ] = "~Fonctions :" ;
+ Text [ swedish ] = "~Funktioner:" ;
+ Text [ dutch ] = "~Functies:" ;
+ Text [ spanish ] = "~Funciones:" ;
+ Text [ english_us ] = "~Functions:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "º¯Êý(~F)";
+ Text[ russian ] = "Ôóíêöèè:";
+ Text[ polish ] = "Funkcje:";
+ Text[ japanese ] = "̧ݸ¼®Ý:(~F)";
+ Text[ chinese_traditional ] = "¨ç¼Æ(~F)";
+ Text[ arabic ] = ":ÏÇáÇÊ";
+ Text[ greek ] = "ÓõíáñôÞóåéò:";
+ Text[ korean ] = "±â´É:(~F)";
+ Text[ turkish ] = "Fonksiyonlar:";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 6
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 66 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 200 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ };
+ FixedText 7
+ {
+ Pos = MAP_APPFONT ( 12 , 82 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Operatoren:" ;
+ Text [ ENGLISH ] = "~Operators:" ;
+ Text [ norwegian ] = "~Operators:" ;
+ Text [ italian ] = "~Operatori:" ;
+ Text [ portuguese_brazilian ] = "~Operadores:" ;
+ Text [ portuguese ] = "~Operadores:" ;
+ Text [ finnish ] = "~Operaattorit:" ;
+ Text [ danish ] = "~Operatorer:" ;
+ Text [ french ] = "~Opérateurs :" ;
+ Text [ swedish ] = "~Operatorer:" ;
+ Text [ dutch ] = "~Operatoren:" ;
+ Text [ spanish ] = "~Operadores:" ;
+ Text [ english_us ] = "~Operators:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "ÔËËã·û(~O)";
+ Text[ russian ] = "Îïðåàòîðû:";
+ Text[ polish ] = "Operatory:";
+ Text[ japanese ] = "µÍßÚ°À:(~O)";
+ Text[ chinese_traditional ] = "¹Bºâ²Å(~O)";
+ Text[ arabic ] = "ÚæÇãá ÇáÊÔÛíá:";
+ Text[ greek ] = "ÔåëåóôÝò:";
+ Text[ korean ] = "¿¬»êÀÚ:(~O)";
+ Text[ turkish ] = "Ýþleçler:";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 7
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 81 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 200 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ };
+ FixedText 8
+ {
+ Pos = MAP_APPFONT ( 12 , 97 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Grenzen:" ;
+ Text [ ENGLISH ] = "~Borders:" ;
+ Text [ norwegian ] = "~Borders:" ;
+ Text [ italian ] = "~Bordi:" ;
+ Text [ portuguese_brazilian ] = "~Bordas:" ;
+ Text [ portuguese ] = "~Contornos:" ;
+ Text [ finnish ] = "~Reunaviivat:" ;
+ Text [ danish ] = "~Grænser:" ;
+ Text [ french ] = "~Limites :" ;
+ Text [ swedish ] = "~Gränser:" ;
+ Text [ dutch ] = "~Grenzen:" ;
+ Text [ spanish ] = "~Límites:" ;
+ Text [ english_us ] = "~Limits:" ;
+ Left = TRUE ;
+ Text[ chinese_simplified ] = "½çÏÞ(~L)";
+ Text[ russian ] = "~Ãðàíèöû:";
+ Text[ polish ] = "Granice:";
+ Text[ japanese ] = "ØЯÄ:(~L)";
+ Text[ chinese_traditional ] = "¬É­­(~L)";
+ Text[ arabic ] = ":ÍÏæÏ";
+ Text[ greek ] = "¼ñéá:";
+ Text[ korean ] = "±ØÇÑ:(~L)";
+ Text[ turkish ] = "Limitler:";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 8
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 57 , 96 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 5 ;
+ Maximum = 200 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ };
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 24 ) ;
+ Size = MAP_APPFONT ( 99 , 90 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? relative Größen : relative Größen */
+ Text = "relative Größen" ;
+ Text [ ENGLISH ] = "relativ sizes" ;
+ Text [ norwegian ] = "relativ sizes" ;
+ Text [ italian ] = "Dimensioni relative" ;
+ Text [ portuguese_brazilian ] = "tamanhos relativos" ;
+ Text [ portuguese ] = "Tamanhos relativos" ;
+ Text [ finnish ] = "suhteutetut koot" ;
+ Text [ danish ] = "Relative størrelser" ;
+ Text [ french ] = "Tailles relatives" ;
+ Text [ swedish ] = "Relativa storlekar" ;
+ Text [ dutch ] = "Relatieve grootten" ;
+ Text [ spanish ] = "Tamaños relativos" ;
+ Text [ english_us ] = "Relative sizes" ;
+ Text[ chinese_simplified ] = "Ïà¶Ô´óС";
+ Text[ russian ] = "Îòíîñèòåëüíûå ðàçìåðû";
+ Text[ polish ] = "Wzglêdne wielkoœci";
+ Text[ japanese ] = "‘Š‘ΓI»²½Þ";
+ Text[ chinese_traditional ] = "¬Û¹ï¤j¤p";
+ Text[ arabic ] = "ÃÍÌÇã äÓÈíÉ";
+ Text[ greek ] = "Ó÷åôéêÜ ìåãÝèç";
+ Text[ korean ] = "»ó´ëÀû Å©±â";
+ Text[ turkish ] = "Göreceli boyutlar";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 114 , 3 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 114 , 21 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 114 , 45 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Standard" ;
+ Text [ ENGLISH ] = "~Standard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ dutch ] = "Standaar~d" ;
+ Text [ swedish ] = "~Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese_brazilian ] = "~Standard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "񃧯(~D)";
+ Text[ turkish ] = "Standart";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Ðàçìåðû øðèôòà";
+ Text[ polish ] = "Rozmiar czcionek";
+ Text[ japanese ] = "Ì«ÝÄ »²½Þ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÃÍÌÇã ÇáÎØ";
+ Text[ greek ] = "ÌÝãåèïò ãñáììáôïóåéñÜò";
+ Text[ korean ] = "±Û²Ã Å©±â";
+ Text[ turkish ] = "Yazýtipi boyutu";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_FONTTYPEDIALOG
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = SID_FONT ;
+ Size = MAP_APPFONT ( 282 , 153 ) ;
+ Text = "Schriftarten" ;
+ Text [ ENGLISH ] = "Fonts" ;
+ Text[ chinese_simplified ] = "×ÖÌå";
+ Text[ russian ] = "Òèïû øðèôòà";
+ Text[ polish ] = "Czcionki";
+ Text[ japanese ] = "Ì«ÝÄ‚ÌŽí—Þ";
+ Text[ chinese_traditional ] = "¦r«¬";
+ Text[ arabic ] = "ÃäæÇÚ ÇáÎØ";
+ Text [ norwegian ] = "Fonts" ;
+ Text [ italian ] = "Tipi di carattere" ;
+ Text [ portuguese_brazilian ] = "Fontes" ;
+ Text [ portuguese ] = "Tipos de letra" ;
+ Text [ finnish ] = "Fontit" ;
+ Text [ danish ] = "Skrifttyper" ;
+ Text [ french ] = "Polices" ;
+ Text [ swedish ] = "Teckensnitt" ;
+ Text [ dutch ] = "Lettertypen" ;
+ Text [ spanish ] = "Fuentes" ;
+ Text [ english_us ] = "Font Types" ;
+ Moveable = TRUE ;
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 207 , 75 ) ;
+ Text = "Formelschriften" ;
+ Text [ ENGLISH ] = "Equationfonts" ;
+ Text[ chinese_simplified ] = "¹«Ê½×ÖÌå";
+ Text[ chinese_traditional ] = "¤½¦¡¦r«¬";
+ Text[ russian ] = "Øðèôòû ôîðìóë";
+ Text[ polish ] = "Czcionki formu³y";
+ Text[ japanese ] = "”Ž®Ì«ÝÄ";
+ Text[ arabic ] = "ÎØæØ ÇáÕíÛÉ";
+ Text [ norwegian ] = "Equationfonts" ;
+ Text [ italian ] = "Carattere formule" ;
+ Text [ portuguese_brazilian ] = "Fontes das equações" ;
+ Text [ portuguese ] = "Tipos de letra das equações" ;
+ Text [ finnish ] = "Kaavafontit" ;
+ Text [ danish ] = "Fomelskrifttyper" ;
+ Text [ french ] = "Polices de formules" ;
+ Text [ swedish ] = "Formelteckensnitt" ;
+ Text [ dutch ] = "Lettertypen fomules" ;
+ Text [ spanish ] = "Fuentes de fórmula" ;
+ Text [ english_us ] = "Formula fonts" ;
+ Text[ greek ] = "ÃñáììáôïóåéñÝò ôýðùí";
+ Text[ korean ] = "¼ö½Ä ±Û²Ã";
+ Text[ turkish ] = "Formül yazýtipleri";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 2
+ {
+ Pos = MAP_APPFONT ( 6 , 84 ) ;
+ Size = MAP_APPFONT ( 207 , 63 ) ;
+ Text = "Benutzerschriften" ;
+ Text [ ENGLISH ] = "Userfonts" ;
+ Text[ chinese_simplified ] = "ʹÓÃÕßÉ趨×ÖÌå";
+ Text[ chinese_traditional ] = "¦Û­q¦r«¬";
+ Text[ russian ] = "Øðèôòû ïîëüçîâàòåëÿ";
+ Text[ polish ] = "Czcionki niestandardowe";
+ Text[ japanese ] = "Õ°»Þ°Žw’è‚ÌÌ«ÝÄ";
+ Text[ arabic ] = "ÎØæØ ãÎÕÕÉ";
+ Text [ norwegian ] = "Userfonts" ;
+ Text [ italian ] = "Caratteri dell'utente" ;
+ Text [ portuguese_brazilian ] = "Fontes do usuário" ;
+ Text [ portuguese ] = "Tipos de letra do utilizador" ;
+ Text [ finnish ] = "Käyttäjän fontit" ;
+ Text [ danish ] = "Brugerskrifttyper" ;
+ Text [ french ] = "Polices d'utilisateur" ;
+ Text [ swedish ] = "Användarteckensnitt" ;
+ Text [ dutch ] = "Eigen lettertypen" ;
+ Text [ spanish ] = "Fuentes del usuario" ;
+ Text [ english_us ] = "Custom fonts" ;
+ Text[ greek ] = "ÃñáììáôïóåéñÝò ÷ñÞóôç";
+ Text[ korean ] = "»ç¿ëÀÚ ±Û²Ã";
+ Text[ turkish ] = "Kullanýcý yazýtipleri";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText 1
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 18 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Variablen:" ;
+ Text [ ENGLISH ] = "~Variables:" ;
+ Text [ norwegian ] = "~Variables:" ;
+ Text [ italian ] = "~Variabili:" ;
+ Text [ portuguese_brazilian ] = "~Variáveis:" ;
+ Text [ portuguese ] = "~Variáveis:" ;
+ Text [ finnish ] = "~Muuttujat:" ;
+ Text [ danish ] = "~Variabler:" ;
+ Text [ french ] = "~Variables :" ;
+ Text [ swedish ] = "~Variabler:" ;
+ Text [ dutch ] = "~Variabelen:" ;
+ Text [ spanish ] = "~Variables:" ;
+ Text [ english_us ] = "~Variables:" ;
+ Text[ chinese_simplified ] = "±äÁ¿(~V)";
+ Text[ russian ] = "Ïåðåìåííûå:";
+ Text[ polish ] = "Zmienne:";
+ Text[ japanese ] = "•ÏX‰Â”\\:(~V)";
+ Text[ chinese_traditional ] = "Åܶq(~V)";
+ Text[ arabic ] = "ÇáãÊÛíÑÇÊ:";
+ Text[ greek ] = "ÌåôáâëçôÝò:";
+ Text[ korean ] = "º¯¼ö:(~V)";
+ Text[ turkish ] = "Deðiþkenler:";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 18 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 2
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 33 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Funktionen:" ;
+ Text [ ENGLISH ] = "~Functions:" ;
+ Text [ norwegian ] = "~Functions:" ;
+ Text [ italian ] = "~Funzioni:" ;
+ Text [ portuguese_brazilian ] = "~Funções:" ;
+ Text [ portuguese ] = "~Funções:" ;
+ Text [ finnish ] = "~Funktiot:" ;
+ Text [ danish ] = "~Funktioner:" ;
+ Text [ french ] = "~Fonctions :" ;
+ Text [ swedish ] = "~Funktioner:" ;
+ Text [ dutch ] = "~Functies:" ;
+ Text [ spanish ] = "~Funciones:" ;
+ Text [ english_us ] = "~Functions:" ;
+ Text[ chinese_simplified ] = "º¯Êý(~F)";
+ Text[ russian ] = "Ôóíêöèè:";
+ Text[ polish ] = "Funkcje:";
+ Text[ japanese ] = "ŠÖ”(~F)";
+ Text[ chinese_traditional ] = "¨ç¼Æ(~F)";
+ Text[ arabic ] = ":ÏÇáÇÊ";
+ Text[ greek ] = "ÓõíáñôÞóåéò:";
+ Text[ korean ] = "ÇÔ¼ö:(~F)";
+ Text[ turkish ] = "Fonksiyonlar:";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox 2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 33 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 3
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Zahlen:" ;
+ Text [ ENGLISH ] = "~Numbers:" ;
+ Text [ norwegian ] = "~Numbers:" ;
+ Text [ italian ] = "~Numeri:" ;
+ Text [ portuguese_brazilian ] = "~Números:" ;
+ Text [ portuguese ] = "~Números:" ;
+ Text [ finnish ] = "~Numerot:" ;
+ Text [ danish ] = "Tal:" ;
+ Text [ french ] = "~Nombres :" ;
+ Text [ swedish ] = "T~al:" ;
+ Text [ dutch ] = "~Getallen:" ;
+ Text [ spanish ] = "~Números:" ;
+ Text [ english_us ] = "~Numbers:" ;
+ Text[ chinese_simplified ] = "Êý×Ö(~N)";
+ Text[ russian ] = "×èñëà:";
+ Text[ polish ] = "Liczby:";
+ Text[ japanese ] = "”:(~N)";
+ Text[ chinese_traditional ] = "¼Æ¦r(~N)";
+ Text[ arabic ] = ":ÃÑÞÇã";
+ Text[ greek ] = "Áñéèìïß:";
+ Text[ korean ] = "¹øÈ£:(~N)";
+ Text[ turkish ] = "Sayýlar:";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox 3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 48 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 4
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 66 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Text:" ;
+ Text [ English ] = "~Text:" ;
+ Text [ english_us ] = "~Text:" ;
+ Text [ portuguese_brazilian ] = "~Text:" ;
+ Text [ swedish ] = "~Text:" ;
+ Text [ danish ] = "Tekst:" ;
+ Text [ italian ] = "~Testo:" ;
+ Text [ spanish ] = "~Texto:" ;
+ Text [ french ] = "~Texte :" ;
+ Text [ dutch ] = "~Tekst:" ;
+ Text [ portuguese ] = "~Texto:" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö(~T)";
+ Text[ russian ] = "Òåêñò:";
+ Text[ polish ] = "Tekst:";
+ Text[ japanese ] = "÷½Ä:(~T)";
+ Text[ chinese_traditional ] = "¤å¦r(~T)";
+ Text[ arabic ] = ":äÕ";
+ Text[ greek ] = "Êåßìåíï:";
+ Text[ korean ] = "ÅؽºÆ®:(~T)";
+ Text[ turkish ] = "Metin:";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox 4
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 63 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 5
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 97 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Serif:" ;
+ };
+ ListBox 5
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 96 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 6
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 112 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "S~ans:" ;
+ };
+ ListBox 6
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 111 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 7
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 127 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "F~ixed:" ;
+ };
+ ListBox 7
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 54 , 126 ) ;
+ Size = MAP_APPFONT ( 150 , 69 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 225 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 225 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ MenuButton 1
+ {
+ TabStop = TRUE ;
+ ButtonMenu = Menu , RID_FONTMENU ;
+ Pos = MAP_APPFONT ( 225 , 48 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Ä~ndern" ;
+ Text [ ENGLISH ] = "~Change" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä(~M)";
+ Text[ chinese_traditional ] = "Åܧó(~M)";
+ Text[ russian ] = "Èçìåíèòü";
+ Text[ polish ] = "~Modyfikuj";
+ Text[ japanese ] = "•ÏX(~M)";
+ Text[ arabic ] = "ÊÚÏí~á";
+ Text [ norwegian ] = "~Endre" ;
+ Text [ italian ] = "~Cambia" ;
+ Text [ portuguese_brazilian ] = "~Mudar" ;
+ Text [ portuguese ] = "~Modificar" ;
+ Text [ finnish ] = "~Muuta" ;
+ Text [ danish ] = "~Modificer" ;
+ Text [ french ] = "~Modifier" ;
+ Text [ swedish ] = "Ä~ndra" ;
+ Text [ dutch ] = "Wij~zigen" ;
+ Text [ spanish ] = "~Modificar" ;
+ Text [ english_us ] = "~Modify" ;
+ Text[ greek ] = "~Ôñïðïðïßçóç";
+ Text[ korean ] = "º¯°æ(~M)";
+ Text[ turkish ] = "Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 225 , 66 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Standard" ;
+ Text [ ENGLISH ] = "~Standard" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ dutch ] = "Standaar~d" ;
+ Text [ swedish ] = "~Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese_brazilian ] = "~Standard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "񃧯(~D)";
+ Text[ turkish ] = "Standart";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ greek ] = "Ôýðïò ãñáììáôïóåéñÜò";
+ Text[ korean ] = "±Û²Ã À¯Çü";
+ Text[ turkish ] = "Yazýtipleri";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_DISTANCEDIALOG
+{
+ Moveable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = SID_DISTANCE ;
+ Size = MAP_APPFONT ( 258 , 90 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? Abstände : Abstände */
+ Text = "Abstände" ;
+ Text [ ENGLISH ] = "Spacing" ;
+ Text [ norwegian ] = "Distances" ;
+ Text [ italian ] = "Distanze" ;
+ Text [ portuguese_brazilian ] = "Distâncias" ;
+ Text [ portuguese ] = "Espaços" ;
+ Text [ finnish ] = "Etäisyydet" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ french ] = "Écarts" ;
+ Text [ swedish ] = "Avstånd" ;
+ Text [ dutch ] = "Afstanden" ;
+ Text [ spanish ] = "Espacios" ;
+ Text [ english_us ] = "Spacing" ;
+ FixedText 1
+ {
+ Pos = MAP_APPFONT ( 12 , 19 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Left = TRUE ;
+ };
+ MetricField 1
+ {
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ SpinSize = 1 ;
+ Repeat = TRUE;
+ Pos = MAP_APPFONT ( 78 , 18 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ CustomUnitText [ english_us ] = "%" ;
+ CustomUnitText [ portuguese_brazilian ] = "0.0" ;
+ CustomUnitText = "%" ;
+ CustomUnitText [ swedish ] = "%" ;
+ CustomUnitText [ danish ] = "%" ;
+ CustomUnitText [ italian ] = "%" ;
+ CustomUnitText [ spanish ] = "%" ;
+ CustomUnitText [ french ] = "%" ;
+ CustomUnitText [ dutch ] = "%" ;
+ CustomUnitText [ portuguese ] = "%" ;
+ CustomUnitText[ chinese_simplified ] = "%";
+ CustomUnitText[ russian ] = "%";
+ CustomUnitText[ polish ] = "%";
+ CustomUnitText[ japanese ] = "%";
+ CustomUnitText[ chinese_traditional ] = "%";
+ CustomUnitText[ arabic ] = "%";
+ CustomUnitText[ greek ] = "%";
+ CustomUnitText[ korean ] = "%";
+ CustomUnitText[ turkish ] = "%";
+ CustomUnitText[ language_user1 ] = " ";
+ };
+ FixedText 2
+ {
+ Disable = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 35 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Left = TRUE ;
+ };
+ MetricField 2
+ {
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ SpinSize = 1 ;
+ Repeat = TRUE;
+ Pos = MAP_APPFONT ( 78 , 34 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ CustomUnitText [ portuguese ] = "%" ;
+ CustomUnitText [ english_us ] = "%" ;
+ CustomUnitText [ portuguese_brazilian ] = "0.0" ;
+ CustomUnitText = "%" ;
+ CustomUnitText [ swedish ] = "%" ;
+ CustomUnitText [ danish ] = "%" ;
+ CustomUnitText [ italian ] = "%" ;
+ CustomUnitText [ spanish ] = "%" ;
+ CustomUnitText [ french ] = "%" ;
+ CustomUnitText [ dutch ] = "%" ;
+ CustomUnitText[ chinese_simplified ] = "%";
+ CustomUnitText[ russian ] = "%";
+ CustomUnitText[ polish ] = "%";
+ CustomUnitText[ japanese ] = "%";
+ CustomUnitText[ chinese_traditional ] = "%";
+ CustomUnitText[ arabic ] = "%";
+ CustomUnitText[ greek ] = "%";
+ CustomUnitText[ korean ] = "%";
+ CustomUnitText[ turkish ] = "%";
+ CustomUnitText[ language_user1 ] = " ";
+ };
+ CheckBox 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 55 ) ;
+ Size = MAP_APPFONT ( 110 , 12 ) ;
+ Text = "Alle Klammern skalieren" ;
+ Text [ ENGLISH ] = "Scale all Brackets" ;
+ Text[ english_us ] = "Scale ~all brackets";
+ Text[ portuguese ] = "Redimensionar parênteses todos";
+ Text[ russian ] = "Ìàñøòàáèðîâàòü âñå ñêîáêè";
+ Text[ dutch ] = "Alle haken op scala brengen";
+ Text[ french ] = "Redimensionner ttes les parenthèses";
+ Text[ spanish ] = "Dimensionar todos los paréntesis";
+ Text[ italian ] = "Tutte le parentesi in scala";
+ Text[ danish ] = "Skaler alle parenteser";
+ Text[ swedish ] = "Dimensionera alla parenteserna";
+ Text[ polish ] = "Skaluj wszystkie nawiasy";
+ Text[ portuguese_brazilian ] = "Scale all Brackets";
+ Text[ japanese ] = "‚·‚ׂĂ̂©‚Á‚±‚ð½¹°Ù‚·‚é";
+ Text[ chinese_simplified ] = "ÏÔʾËùÓÐÀ¨ºÅµÄ¿Ì¶È";
+ Text[ chinese_traditional ] = "Åã¥Ü©Ò¦³¬A¸¹ªº¨è«×";
+ Text[ arabic ] = "ÊÏÑíÌ ßá ÇáÃÞæÇÓ";
+ Text[ greek ] = "ÊëéìÜêùóç üëùí ôùí ðáñåíèÝóåùí";
+ Text[ korean ] = "¸ðµç °ýÈ£ÀÇ ¹èÀ² Á¶Á¤(~A)";
+ Text[ turkish ] = "Tüm ayraçlarý ölçekle";
+ Text[ language_user1 ] = " ";
+ };
+ FixedText 3
+ {
+ Disable = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 51 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Left = TRUE ;
+ };
+ MetricField 3
+ {
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ SpinSize = 1 ;
+ Repeat = TRUE;
+ Pos = MAP_APPFONT ( 78 , 50 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ CustomUnitText [ english_us ] = "%" ;
+ CustomUnitText [ portuguese_brazilian ] = "0.0" ;
+ CustomUnitText = "%" ;
+ CustomUnitText [ swedish ] = "%" ;
+ CustomUnitText [ danish ] = "%" ;
+ CustomUnitText [ italian ] = "%" ;
+ CustomUnitText [ spanish ] = "%" ;
+ CustomUnitText [ french ] = "%" ;
+ CustomUnitText [ dutch ] = "%" ;
+ CustomUnitText [ portuguese ] = "%" ;
+ CustomUnitText[ chinese_simplified ] = "%";
+ CustomUnitText[ russian ] = "%";
+ CustomUnitText[ polish ] = "%";
+ CustomUnitText[ japanese ] = "%";
+ CustomUnitText[ chinese_traditional ] = "%";
+ CustomUnitText[ arabic ] = "%";
+ CustomUnitText[ greek ] = "%";
+ CustomUnitText[ korean ] = "%";
+ CustomUnitText[ turkish ] = "%";
+ CustomUnitText[ language_user1 ] = " ";
+ };
+ FixedText 4
+ {
+ Disable = TRUE ;
+ Hide = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 67 ) ;
+ Size = MAP_APPFONT ( 65 , 10 ) ;
+ Left = TRUE ;
+ };
+ MetricField 4
+ {
+ Border = TRUE ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Spin = TRUE ;
+ SpinSize = 1 ;
+ Repeat = TRUE;
+ Pos = MAP_APPFONT ( 78 , 66 ) ;
+ Size = MAP_APPFONT ( 38 , 12 ) ;
+ TabStop = TRUE ;
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 198 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 198 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 198 , 69 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Standard" ;
+ Text [ ENGLISH ] = "~Standard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "Par ~défaut" ;
+ Text [ dutch ] = "Standaar~d" ;
+ Text [ swedish ] = "~Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese_brazilian ] = "~Standard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "񃧯(~D)";
+ Text[ turkish ] = "Standart";
+ Text[ language_user1 ] = " ";
+ };
+ MenuButton 1
+ {
+ TabStop = TRUE ;
+ ButtonMenu = Menu , RID_DISTANCEMENU ;
+ Pos = MAP_APPFONT ( 198 , 51 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Kategorie" ;
+ Text [ ENGLISH ] = "~Category" ;
+ Text [ norwegian ] = "~Category" ;
+ Text [ italian ] = "~Categoria" ;
+ Text [ portuguese_brazilian ] = "~Categoria" ;
+ Text [ portuguese ] = "~Categoria" ;
+ Text [ finnish ] = "~Ryhmä" ;
+ Text [ danish ] = "Kategori" ;
+ Text [ french ] = "~Catégorie" ;
+ Text [ swedish ] = "~Kategori" ;
+ Text [ dutch ] = "~Categorie" ;
+ Text [ spanish ] = "~Categoría" ;
+ Text [ english_us ] = "~Category" ;
+ Text[ chinese_simplified ] = "·ÖÀà(~C)";
+ Text[ russian ] = "Êàòåãîðèÿ";
+ Text[ polish ] = "~Kategoria";
+ Text[ japanese ] = "•ª—Þ(~C)";
+ Text[ chinese_traditional ] = "¤ÀÃþ(~C)";
+ Text[ arabic ] = "ÝÆÉ";
+ Text[ greek ] = "~Êáôçãïñßá";
+ Text[ korean ] = "Ä«Å×°í¸®(~C)";
+ Text[ turkish ] = "Kategori";
+ Text[ language_user1 ] = " ";
+ };
+ FixedBitmap 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 120 , 18 ) ;
+ Size = MAP_APPFONT ( 57 , 60 ) ;
+ };
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 180 , 78 ) ;
+ Text = "Kategorie" ;
+ Text [ ENGLISH ] = "~Category" ;
+ Text [ norwegian ] = "~Category" ;
+ Text [ italian ] = "~Categoria" ;
+ Text [ portuguese_brazilian ] = "~Categoria" ;
+ Text [ portuguese ] = "Categoria" ;
+ Text [ finnish ] = "~Ryhmä" ;
+ Text [ danish ] = "Kategori" ;
+ Text [ french ] = "Catégorie" ;
+ Text [ swedish ] = "Kategori" ;
+ Text [ dutch ] = "Categorie" ;
+ Text [ spanish ] = "Categoría" ;
+ Text [ english_us ] = "Functions" ;
+ Text[ chinese_simplified ] = "·ÖÀà";
+ Text[ russian ] = "Êàòåãîðèÿ";
+ Text[ polish ] = "Kategoria";
+ Text[ japanese ] = "•ª—Þ";
+ Text[ chinese_traditional ] = "¤ÀÃþ";
+ Text[ arabic ] = "ÝÆÉ";
+ Text[ greek ] = "Êáôçãïñßåò";
+ Text[ korean ] = "Ä«Å×°í¸®";
+ Text[ turkish ] = "Kategori";
+ Text[ language_user1 ] = " ";
+ };
+ Resource 1
+ {
+ String 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Abstände : Abstände */
+ Text = "Abstände" ;
+ Text [ ENGLISH ] = "Distances" ;
+ Text [ norwegian ] = "Distances" ;
+ Text [ italian ] = "Distanze" ;
+ Text [ portuguese_brazilian ] = "Distâncias" ;
+ Text [ portuguese ] = "Espaços" ;
+ Text [ finnish ] = "Etäisyydet" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ french ] = "Écarts" ;
+ Text [ swedish ] = "Avstånd" ;
+ Text [ dutch ] = "Afstanden" ;
+ Text [ spanish ] = "Espacios" ;
+ Text [ english_us ] = "Spacing" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàëû";
+ Text[ polish ] = "Odstêpy";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÊÈÇÚÏ";
+ Text[ greek ] = "AðïóôÜóåéò";
+ Text[ korean ] = "°£°Ý";
+ Text[ turkish ] = "Aralýklar";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ Text = "~Abstand:" ;
+ Text [ ENGLISH ] = "~Distance:" ;
+ Text [ norwegian ] = "~Distance:" ;
+ Text [ italian ] = "~Distanza:" ;
+ Text [ portuguese_brazilian ] = "~Distância:" ;
+ Text [ portuguese ] = "~Espaçamento:" ;
+ Text [ finnish ] = "~Etäisyys:" ;
+ Text [ danish ] = "Afstand:" ;
+ Text [ french ] = "~Écart :" ;
+ Text [ swedish ] = "~Avstånd:" ;
+ Text [ dutch ] = "~Afstand:" ;
+ Text [ spanish ] = "~Espacio:" ;
+ Text [ english_us ] = "~Spacing:" ;
+ Text[ chinese_simplified ] = "¼ä¸ô(~S)";
+ Text[ russian ] = "Èíòåðâàë:";
+ Text[ polish ] = "Odstêp:";
+ Text[ japanese ] = "ŠÔŠu:(~S)";
+ Text[ chinese_traditional ] = "¶¡¹j(~S)";
+ Text[ arabic ] = ":ÊÈÇÚÏ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "~Áðüóôáóç:";
+ Text[ korean ] = "°£°Ý:(~S)";
+ Text[ turkish ] = "Aralýk:";
+ };
+ Bitmap 2
+ {
+ File = "dist11.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Zeilenabstand:" ;
+ Text [ ENGLISH ] = "~Linespacing:" ;
+ Text [ norwegian ] = "~Linespacing:" ;
+ Text [ italian ] = "Distanza linee:" ;
+ Text [ portuguese_brazilian ] = "~Espaçamento de linha:" ;
+ Text [ portuguese ] = "~Entrelinhas:" ;
+ Text [ finnish ] = "~Riviväli:" ;
+ Text [ danish ] = "Linjeafstand:" ;
+ Text [ french ] = "Interligne :" ;
+ Text [ swedish ] = "Ra~davstånd:" ;
+ Text [ dutch ] = "~Regelafstand:" ;
+ Text [ spanish ] = "~Interlineado:" ;
+ Text [ english_us ] = "~Line spacing:" ;
+ Text[ chinese_simplified ] = "Ðоà(~L)";
+ Text[ russian ] = "Ìåæäó ñòðîêàìè:";
+ Text[ polish ] = "Odstêp wierszy:";
+ Text[ japanese ] = "sŠÔ:(~L)";
+ Text[ chinese_traditional ] = "¦æ¶Z(~L)";
+ Text[ arabic ] = ":ÊÈÇÚÏ ÇáÃÓØÑ";
+ Text[ greek ] = "ÄéÜóôé÷ï:";
+ Text[ korean ] = "ÁÙ °£°Ý:(~L)";
+ Text[ turkish ] = "Satýr aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist12.bmp" ;
+ };
+ String 4
+ {
+ Text = "~Wurzelabstand:" ;
+ Text [ ENGLISH ] = "~Rootspacing:" ;
+ Text [ norwegian ] = "~Rootspacing:" ;
+ Text [ italian ] = "Distanza radice:" ;
+ Text [ portuguese_brazilian ] = "~Espaçamento de raiz:" ;
+ Text [ portuguese ] = "~Espaçamento de raíz:" ;
+ Text [ finnish ] = "~Juuriväli:" ;
+ Text [ danish ] = "Rodafstand: ." ;
+ Text [ french ] = "~Espacement :" ;
+ Text [ swedish ] = "R~otavstånd:" ;
+ Text [ dutch ] = "Afstand tot ~wortel:" ;
+ Text [ spanish ] = "Intervalo de ~raíz:" ;
+ Text [ english_us ] = "~Root spacing:" ;
+ Text[ chinese_simplified ] = "¸ùʽ¼ä¸ô(~R)";
+ Text[ russian ] = "~Ðàññòîÿíèå îò êîðíÿ:";
+ Text[ polish ] = "Odstêp pierwiast.:";
+ Text[ japanese ] = "Ù°Ä‚ÌŠÔŠu:(~R)";
+ Text[ chinese_traditional ] = "®Ú¦¡¶¡¹j(~R)";
+ Text[ arabic ] = ":ÊÈÇÚÏ ÇáÌÐæÑ";
+ Text[ greek ] = "Áðüóôáóç ñßæáò:";
+ Text[ korean ] = "·çÆ® °£°Ý:(~R)";
+ Text[ turkish ] = "Kök aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 4
+ {
+ File = "dist13.bmp" ;
+ };
+ };
+ Resource 2
+ {
+ String 1
+ {
+ Text = "Indizes" ;
+ Text [ ENGLISH ] = "Indices" ;
+ Text [ norwegian ] = "Indices" ;
+ Text [ italian ] = "Indici" ;
+ Text [ portuguese_brazilian ] = "Índices" ;
+ Text [ portuguese ] = "Índices" ;
+ Text [ finnish ] = "Indices" ;
+ Text [ danish ] = "Sub-/Superscript" ;
+ Text [ french ] = "Index" ;
+ Text [ swedish ] = "Index" ;
+ Text [ dutch ] = "Indicies" ;
+ Text [ spanish ] = "Índices" ;
+ Text [ english_us ] = "Indices" ;
+ Text[ chinese_simplified ] = "±êÖ¾";
+ Text[ russian ] = "Èíäåêñû";
+ Text[ polish ] = "Indeksy";
+ Text[ japanese ] = "²ÝÃÞ¯¸½";
+ Text[ chinese_traditional ] = "¼Ð»x";
+ Text[ arabic ] = "ÅÓÇÓ (ÃÏáÉ)";
+ Text[ greek ] = "Äåßêôåò";
+ Text[ korean ] = "À妽º";
+ Text[ turkish ] = "Ýndisler";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ Text = "~Hochstellung:" ;
+ Text [ ENGLISH ] = "~Superscript:" ;
+ Text [ norwegian ] = "~Superscript:" ;
+ Text [ italian ] = "A~pice:" ;
+ Text [ portuguese_brazilian ] = "~Sobrescrito:" ;
+ Text [ portuguese ] = "~Sup. à linha:" ;
+ Text [ finnish ] = "~Yläindeksi:" ;
+ Text [ danish ] = "~Hævet:" ;
+ Text [ french ] = "~Exposant :" ;
+ Text [ swedish ] = "~Upphöjning:" ;
+ Text [ dutch ] = "~Superscript:" ;
+ Text [ spanish ] = "~Superíndice:" ;
+ Text [ english_us ] = "~Superscript:" ;
+ Text[ chinese_simplified ] = "Éϱê(~S)";
+ Text[ russian ] = "~Âåðõíèé èíäåêñ:";
+ Text[ polish ] = "Indeks górny:";
+ Text[ japanese ] = "ã•t‚«:(~S)";
+ Text[ chinese_traditional ] = "¤W¼Ð(~S)";
+ Text[ arabic ] = ":ãÑÊÝÚ";
+ Text[ greek ] = "ÅêèÝôçò:";
+ Text[ korean ] = "À§Ã·ÀÚ:(~S)";
+ Text[ turkish ] = "Üst simge:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist21.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Tiefstellung:" ;
+ Text [ ENGLISH ] = "S~upscript:" ;
+ Text [ norwegian ] = "S~upscript:" ;
+ Text [ italian ] = "Pe~dice:" ;
+ Text [ portuguese_brazilian ] = "S~ubscrito:" ;
+ Text [ portuguese ] = "~Inf. à linha:" ;
+ Text [ finnish ] = "~Alaindeksi:" ;
+ Text [ danish ] = "~Sænket:" ;
+ Text [ french ] = "I~ndice :" ;
+ Text [ swedish ] = "~Nedsänkning:" ;
+ Text [ dutch ] = "S~ubscript:" ;
+ Text [ spanish ] = "S~ubíndice:" ;
+ Text [ english_us ] = "S~ubscript:" ;
+ Text[ chinese_simplified ] = "챐(~U)";
+ Text[ russian ] = "~Íèæíèé èíäåêñ:";
+ Text[ polish ] = "Indeks dolny:";
+ Text[ japanese ] = "‰º•t‚«:(~U)";
+ Text[ chinese_traditional ] = "¤U¼Ð(~U)";
+ Text[ arabic ] = ":ãäÎÝÖ";
+ Text[ greek ] = "Äåßêôçò:";
+ Text[ korean ] = "¾Æ·¡Ã·ÀÚ:(~U)";
+ Text[ turkish ] = "Alt simge:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist22.bmp" ;
+ };
+ };
+ Resource 3
+ {
+ String 1
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Brüche : Br³che */
+ Text = "Brüche" ;
+ Text [ ENGLISH ] = "Fractions" ;
+ Text [ norwegian ] = "Fractions" ;
+ Text [ italian ] = "Frazioni" ;
+ Text [ portuguese_brazilian ] = "Frações" ;
+ Text [ portuguese ] = "Fracções" ;
+ Text [ finnish ] = "Murtomerkinnät" ;
+ Text [ danish ] = "Brøker" ;
+ Text [ french ] = "Fractions" ;
+ Text [ swedish ] = "Bråk" ;
+ Text [ dutch ] = "Breuken" ;
+ Text [ spanish ] = "Fracciones" ;
+ Text [ english_us ] = "Fractions" ;
+ Text[ chinese_simplified ] = "·ÖÊý";
+ Text[ russian ] = "Ïðîñòûå äðîáè";
+ Text[ polish ] = "U³amki";
+ Text[ japanese ] = "•ª”";
+ Text[ chinese_traditional ] = "¤À¼Æ";
+ Text[ arabic ] = "ßÓæÑ";
+ Text[ greek ] = "ÊëÜóìáôá";
+ Text[ korean ] = "ºÐ¼ö";
+ Text[ turkish ] = "Kesirler";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Zählerhöhe: : ~Zählerhöhe: */
+ Text = "~Zählerhöhe:" ;
+ Text [ ENGLISH ] = "~Numerator high:" ;
+ Text [ norwegian ] = "~Numerator high:" ;
+ Text [ italian ] = "Val. del contatore:" ;
+ Text [ portuguese_brazilian ] = "~Numerador alto:" ;
+ Text [ portuguese ] = "Altura do ~numerador:" ;
+ Text [ finnish ] = "~Osoittaja:" ;
+ Text [ danish ] = "~Tællerhøjde:" ;
+ Text [ french ] = "~Numérateur :" ;
+ Text [ swedish ] = "~Täljare höjd:" ;
+ Text [ dutch ] = "~Noemer boven:" ;
+ Text [ spanish ] = "Altura del ~numerador:" ;
+ Text [ english_us ] = "~Numerator:" ;
+ Text[ chinese_simplified ] = "·Ö×Ó(~N)";
+ Text[ russian ] = "~×èñëèòåëü:";
+ Text[ polish ] = "Wys. licznika u³amka:";
+ Text[ japanese ] = "•ªŽq:(~N)";
+ Text[ chinese_traditional ] = "¤À¤l(~N)";
+ Text[ arabic ] = ":ÈÓØ ÇáßÓÑ";
+ Text[ greek ] = "ÁñéèìçôÞò:";
+ Text[ korean ] = "ºÐÀÚ:(~N)";
+ Text[ turkish ] = "Bölünen aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist31.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Nennertiefe:" ;
+ Text [ ENGLISH ] = "~Denominator deep:" ;
+ Text [ norwegian ] = "~Denominator deep:" ;
+ Text [ italian ] = "Prof. del denominatore:" ;
+ Text [ portuguese_brazilian ] = "~Denominador baixo:" ;
+ Text [ portuguese ] = "Altura do ~denominador:" ;
+ Text [ finnish ] = "~Nimittäjä:" ;
+ Text [ danish ] = "~Nævnerdybde:" ;
+ Text [ french ] = "~Dénominateur :" ;
+ Text [ swedish ] = "~Nämnaredjup:" ;
+ Text [ dutch ] = "~Deler onder:" ;
+ Text [ spanish ] = "~Altura del denominador:" ;
+ Text [ english_us ] = "~Denominator:" ;
+ Text[ chinese_simplified ] = "·Öĸ(~D)";
+ Text[ russian ] = "~Çíàìåíàòåëü:";
+ Text[ polish ] = "Pozycja mian. u³amka:";
+ Text[ japanese ] = "•ª•ê:(~D)";
+ Text[ chinese_traditional ] = "¤À¥À(~D)";
+ Text[ arabic ] = ":ãÎÑÌ ÇáßÓÑ";
+ Text[ greek ] = "ÂÜèïò ðáñïíïìáóôÞ:";
+ Text[ korean ] = "ºÐ¸ð:(~D)";
+ Text[ turkish ] = "Bölen aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist32.bmp" ;
+ };
+ };
+ Resource 4
+ {
+ String 1
+ {
+ Text = "Bruchstriche" ;
+ Text [ ENGLISH ] = "Fraction lines" ;
+ Text [ norwegian ] = "Fraction lines" ;
+ Text [ italian ] = "Linee di frazione" ;
+ Text [ portuguese_brazilian ] = "Linhas de fração" ;
+ Text [ portuguese ] = "Traços de fracção" ;
+ Text [ finnish ] = "Murtoviivat" ;
+ Text [ danish ] = "Brøkstreger" ;
+ Text [ french ] = "Traits de fraction" ;
+ Text [ swedish ] = "Bråkstreck" ;
+ Text [ dutch ] = "Breuklijnen" ;
+ Text [ spanish ] = "Líneas de fracción" ;
+ Text [ english_us ] = "Fraction bar" ;
+ Text[ chinese_simplified ] = "·ÖÊýÏß";
+ Text[ russian ] = "Äðîáíàÿ ÷åðòà";
+ Text[ polish ] = "Kreski u³amkowe";
+ Text[ japanese ] = "•ª”ü";
+ Text[ chinese_traditional ] = "¤À¼Æ½u";
+ Text[ arabic ] = "ÔÑØÉ ÇáßÓÑ";
+ Text[ greek ] = "ÃñáììÝò êëÜóìáôïò";
+ Text[ korean ] = "ºÐ¼ö ÁÙ";
+ Text[ turkish ] = "Kesir çizgisi";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Überlänge: : ~šberlänge: */
+ Text = "~Überlänge:" ;
+ Text [ ENGLISH ] = "~Excessive lenght:" ;
+ Text [ norwegian ] = "~Excessive lenght:" ;
+ Text [ italian ] = "L~ungh. in eccesso:" ;
+ Text [ portuguese_brazilian ] = "~Comprimento excessivo:" ;
+ Text [ portuguese ] = "Comprimento ~excessivo:" ;
+ Text [ finnish ] = "~Ylipitkä:" ;
+ Text [ danish ] = "~Overlængde:" ;
+ Text [ french ] = "~Longueur excessive :" ;
+ Text [ swedish ] = "~Överskjutning:" ;
+ Text [ dutch ] = "~Extra lengte:" ;
+ Text [ spanish ] = "Longitud ~excesiva:" ;
+ Text [ english_us ] = "~Excess length:" ;
+ Text[ chinese_simplified ] = "³¬³¤¶È(~E)";
+ Text[ russian ] = "~Âûñòóï:";
+ Text[ polish ] = "Nadd³ugoœæ:";
+ Text[ japanese ] = "’´’·»²½Þ:(~E)";
+ Text[ chinese_traditional ] = "¶Wªø«×(~E)";
+ Text[ arabic ] = ":Øæá ÒÇÆÏ";
+ Text[ greek ] = "ÌÞêïò õðÝñâáóçò:";
+ Text[ korean ] = "ÃÊ°ú ±æÀÌ:(~E)";
+ Text[ turkish ] = "Taþma uzunluðu:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist41.bmp" ;
+ };
+ String 3
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Strichstärke: : ~Strichstärke: */
+ Text = "~Strichstärke:" ;
+ Text [ ENGLISH ] = "~Line width:" ;
+ Text [ norwegian ] = "~Line width:" ;
+ Text [ italian ] = "~Spessore del tratto:" ;
+ Text [ portuguese_brazilian ] = "~Largura da linha:" ;
+ Text [ portuguese ] = "~Espessura do traço:" ;
+ Text [ finnish ] = "~Viivan leveys:" ;
+ Text [ danish ] = "~Stregstyrke:" ;
+ Text [ french ] = "~Épaisseur de trait :" ;
+ Text [ swedish ] = "~Linjestyrka:" ;
+ Text [ dutch ] = "~Lijndikte:" ;
+ Text [ spanish ] = "Espesor del ~trazo:" ;
+ Text [ english_us ] = "~Weight:" ;
+ Text[ chinese_simplified ] = "»®Ïß´Ö(~L)";
+ Text[ russian ] = "~Òîëùèíà ëèíèè:";
+ Text[ polish ] = "GruboϾ linii:";
+ Text[ japanese ] = "ü‚Ì‘¾‚³:(~L)";
+ Text[ chinese_traditional ] = "½u²Ê(~L)";
+ Text[ arabic ] = "Óõãß ÇáÎØ:";
+ Text[ greek ] = "ÐÜ÷ïò ãñáììÞò:";
+ Text[ korean ] = "ÁÙÀÇ µÎ²²:(~W)";
+ Text[ turkish ] = "Çizgi kalýnlýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist42.bmp" ;
+ };
+ };
+ Resource 5
+ {
+ String 1
+ {
+ Text = "Grenzen" ;
+ Text [ ENGLISH ] = "Borders" ;
+ Text [ norwegian ] = "Borders" ;
+ Text [ italian ] = "Margini" ;
+ Text [ portuguese_brazilian ] = "Margens" ;
+ Text [ portuguese ] = "Limites" ;
+ Text [ finnish ] = "Reunaviivat" ;
+ Text [ danish ] = "Grænser" ;
+ Text [ french ] = "Limites" ;
+ Text [ swedish ] = "Gränser" ;
+ Text [ dutch ] = "Begrenzing" ;
+ Text [ spanish ] = "Límites" ;
+ Text [ english_us ] = "Limits" ;
+ Text[ chinese_simplified ] = "½çÏÞ";
+ Text[ russian ] = "Ïðåäåëû";
+ Text[ polish ] = "Granice";
+ Text[ japanese ] = "ØЯÄ";
+ Text[ chinese_traditional ] = "¬É­­";
+ Text[ arabic ] = "ÇáÍÏæÏ";
+ Text[ greek ] = "¼ñéá";
+ Text[ korean ] = "±ØÇÑ";
+ Text[ turkish ] = "Limitler";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Grenz~höhe: : Grenz~höhe: */
+ Text = "Grenz~höhe:" ;
+ Text [ ENGLISH ] = "Maximum ~hight:" ;
+ Text [ norwegian ] = "Maximum ~hight:" ;
+ Text [ italian ] = "Valore massimo:" ;
+ Text [ portuguese_brazilian ] = "Altura ~máxima:" ;
+ Text [ portuguese ] = "Altura ~máxima:" ;
+ Text [ finnish ] = "Suurin korkeus:" ;
+ Text [ danish ] = "Grænsehøjde:" ;
+ Text [ french ] = "Hauteur ~maximale :" ;
+ Text [ swedish ] = "Gräns~höjd:" ;
+ Text [ dutch ] = "Maximum~hoogte:" ;
+ Text [ spanish ] = "~Altura máxima:" ;
+ Text [ english_us ] = "~Upper limit:" ;
+ Text[ chinese_simplified ] = "ÉϽçÏÞ(~U)";
+ Text[ russian ] = "Âåðõíèé ïðåäåë:";
+ Text[ polish ] = "WysokoϾ granicy:";
+ Text[ japanese ] = "ãŒÀ:(~U)";
+ Text[ chinese_traditional ] = "¤W¬É­­(~U)";
+ Text[ arabic ] = ":ÇáÍÏ ÇáÚáæí";
+ Text[ greek ] = "¢íù üñéï:";
+ Text[ korean ] = "ÃÖ´ë ±ØÇÑ:(~U)";
+ Text[ turkish ] = "Üst limit:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist51.bmp" ;
+ };
+ String 3
+ {
+ Text = "Grenz~tiefe:" ;
+ Text [ ENGLISH ] = "Minimum hight:" ;
+ Text [ english_us ] = "~Lower limit:" ;
+ Text [ italian ] = "Limi~te profondità:" ;
+ Text [ spanish ] = "Altura ~mínima:" ;
+ Text [ french ] = "~Hauteur minimale :" ;
+ Text [ dutch ] = "~Maximum diepte:" ;
+ Text [ swedish ] = "Gräns~djup:" ;
+ Text [ danish ] = "Grænsedybde:" ;
+ Text [ portuguese ] = "Altura mí~nima:" ;
+ Text [ portuguese_brazilian ] = "Grenz~tiefe:" ;
+ Text[ chinese_simplified ] = "ϽçÏÞ(~L)";
+ Text[ russian ] = "Íèæíèé ïðåäåë:";
+ Text[ polish ] = "Pozycja granicy:";
+ Text[ japanese ] = "‰ºŒÀ(~L)";
+ Text[ chinese_traditional ] = "¤U¬É­­(~L)";
+ Text[ arabic ] = ":ÇáÍÏ ÇáÓÝáí";
+ Text[ greek ] = "ÊÜôù üñéï:";
+ Text[ korean ] = "ÃÖ¼Ò ±ØÇÑ:(~L)";
+ Text[ turkish ] = "Alt limit:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist52.bmp" ;
+ };
+ };
+ Resource 6
+ {
+ String 1
+ {
+ Text = "Klammern" ;
+ Text [ ENGLISH ] = "Brackets" ;
+ Text [ norwegian ] = "Brackets" ;
+ Text [ italian ] = "Parentesi" ;
+ Text [ portuguese_brazilian ] = "Colchetes" ;
+ Text [ portuguese ] = "Parênteses" ;
+ Text [ finnish ] = "Sulkeet" ;
+ Text [ danish ] = "Parenteser" ;
+ Text [ french ] = "Crochets" ;
+ Text [ swedish ] = "Parenteser" ;
+ Text [ dutch ] = "Haakjes" ;
+ Text [ spanish ] = "Paréntesis" ;
+ Text [ english_us ] = "Brackets" ;
+ Text[ chinese_simplified ] = "À¨ºÅ";
+ Text[ russian ] = "Ñêîáêè";
+ Text[ polish ] = "Nawiasy";
+ Text[ japanese ] = "Š‡ŒÊ";
+ Text[ chinese_traditional ] = "¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ";
+ Text[ greek ] = "ÐáñåíèÝóåéò";
+ Text[ korean ] = "°ýÈ£";
+ Text[ turkish ] = "Ayraçlar";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ Text = "~left/right Übergröße:" ;
+ Text [ ENGLISH ] = "~left/right excess height:" ;
+ Text[ english_us ] = "~Excess size (left/right):";
+ Text[ portuguese ] = "Tamanho ~excessivo (esquerda/direita):";
+ Text[ russian ] = "~Âûñòóï (ñëåâà/ñïðàâà):";
+ Text[ dutch ] = "~links/rechts te groot:";
+ Text[ french ] = "~Dépassement latéral :";
+ Text[ spanish ] = "~Sobredimensión izquierda/derecha:";
+ Text[ italian ] = "Sovradimensionato (sinistra/destra):";
+ Text[ danish ] = "Venstre/højre overstørrelse:";
+ Text[ swedish ] = "~vänster/höger överstorlek:";
+ Text[ polish ] = "Nadwymiar:";
+ Text[ portuguese_brazilian ] = "~Tamanho excedente:";
+ Text[ japanese ] = "’´‘廲½Þ¶/‰E:(~E)";
+ Text[ chinese_simplified ] = "×óÓÒ³¬´ó(~E)";
+ Text[ chinese_traditional ] = "¥ª¥k¶W¤j(~E)";
+ Text[ arabic ] = ":ÍÌã ÒÇÆÏ íãíä/íÓÇÑ";
+ Text[ greek ] = "Õð~åñâÜëëïí ìÝãåèïò (áñéóôåñÜ/äåîéÜ):";
+ Text[ korean ] = "¿ÞÂÊ/¿À¸¥ÂÊ ÃÊ°ú Å©±â:(~E)";
+ Text[ turkish ] = "Sol/sað taþma:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist61.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Abstand:" ;
+ Text [ ENGLISH ] = "~Distance:" ;
+ Text [ norwegian ] = "~Distance:" ;
+ Text [ italian ] = "~Distanza:" ;
+ Text [ portuguese_brazilian ] = "~Distância:" ;
+ Text [ portuguese ] = "~Espaçamento:" ;
+ Text [ finnish ] = "~Etäisyys:" ;
+ Text [ danish ] = "Afstand:" ;
+ Text [ french ] = "É~cart :" ;
+ Text [ swedish ] = "~Avstånd sidled:" ;
+ Text [ dutch ] = "~Afstand:" ;
+ Text [ spanish ] = "~Espacio:" ;
+ Text [ english_us ] = "~Spacing:" ;
+ Text[ chinese_simplified ] = "¼ä¸ô(~S)";
+ Text[ russian ] = "Èíòåðâàë:";
+ Text[ polish ] = "Odstêp:";
+ Text[ japanese ] = "ŠÔŠu:(~S)";
+ Text[ chinese_traditional ] = "¶¡¹j(~S)";
+ Text[ arabic ] = ":ÊÈÇÚÏ";
+ Text[ greek ] = "~Áðüóôáóç:";
+ Text[ korean ] = "°£°Ý:(~S)";
+ Text[ turkish ] = "Aralýk:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist62.bmp" ;
+ };
+ String 5
+ {
+ Text = "~Übergröße:" ;
+ Text [ ENGLISH ] = "~Excess size:" ;
+ Text[ english_us ] = "~Excess size:";
+ Text[ portuguese ] = "~Tamanho excessivo:";
+ Text[ russian ] = "~Âûñòóï:";
+ Text[ dutch ] = "~Te groot:";
+ Text[ french ] = "~Dépassement :";
+ Text[ spanish ] = "~Sobredimensión:";
+ Text[ italian ] = "Sovradimensionato:";
+ Text[ danish ] = "Overstørrelse:";
+ Text[ swedish ] = "~Överstorlek:";
+ Text[ polish ] = "Nadrozmiar:";
+ Text[ portuguese_brazilian ] = "~Excess size:";
+ Text[ japanese ] = "’´‘廲½Þ(~E)";
+ Text[ chinese_simplified ] = "ÌØÊâ´óС(~E)";
+ Text[ chinese_traditional ] = "¯S®í¤j¤p(~E)";
+ Text[ arabic ] = ":ÍÌã ÒÇÆÏ";
+ Text[ greek ] = "Õð~åñâÜëëïí ìÝãåèïò:";
+ Text[ korean ] = "ÃÊ°ú Å©±â:(~E)";
+ Text[ turkish ] = "Taþma:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 5
+ {
+ File = "dist61.bmp" ;
+ };
+ };
+ Resource 7
+ {
+ String 1
+ {
+ Text = "Matrizen" ;
+ Text [ ENGLISH ] = "Matrix" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "Matrici" ;
+ Text [ portuguese_brazilian ] = "Matriz" ;
+ Text [ portuguese ] = "Matriz" ;
+ Text [ finnish ] = "Matriisi" ;
+ Text [ danish ] = "Matrixer" ;
+ Text [ french ] = "Matrices" ;
+ Text [ swedish ] = "Matriser" ;
+ Text [ dutch ] = "Matrix" ;
+ Text [ spanish ] = "Matrices" ;
+ Text [ english_us ] = "Matrix" ;
+ Text[ chinese_simplified ] = "¾ØÕó";
+ Text[ russian ] = "Ìàòðèöû";
+ Text[ polish ] = "Macierze";
+ Text[ japanese ] = "ÏÄظ½";
+ Text[ chinese_traditional ] = "¯x°}";
+ Text[ arabic ] = "ãÕÝæÝÇÊ";
+ Text[ greek ] = "ÌÞôñá";
+ Text[ korean ] = "Çà·Ä";
+ Text[ turkish ] = "Matrisler";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ Text = "~Zeilenabstand:" ;
+ Text [ ENGLISH ] = "~Line spacing:" ;
+ Text [ norwegian ] = "~Line spacing:" ;
+ Text [ italian ] = "Distanza linee:" ;
+ Text [ portuguese_brazilian ] = "~Espaçamento de linha:" ;
+ Text [ portuguese ] = "~Entrelinhas:" ;
+ Text [ finnish ] = "~Riviväli:" ;
+ Text [ danish ] = "Linjeafstand:" ;
+ Text [ french ] = "~Interligne :" ;
+ Text [ swedish ] = "~Radavstånd:" ;
+ Text [ dutch ] = "~Regelafstand:" ;
+ Text [ spanish ] = "~Interlineado:" ;
+ Text [ english_us ] = "~Line spacing:" ;
+ Text[ chinese_simplified ] = "Ðоà(~L)";
+ Text[ russian ] = "Ìåæäó ñòðîêàìè:";
+ Text[ polish ] = "Odstêp wierszy:";
+ Text[ japanese ] = "sŠÔ:(~L)";
+ Text[ chinese_traditional ] = "¦æ¶Z(~L)";
+ Text[ arabic ] = ":ÊÈÇÚÏ ÇáÃÓØÑ";
+ Text[ greek ] = "ÄéÜóôé÷ï:";
+ Text[ korean ] = "ÁÙ °£°Ý:(~L)";
+ Text[ turkish ] = "Satýr aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist71.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Spaltenabstand:" ;
+ Text [ ENGLISH ] = "~Column spacing:" ;
+ Text [ norwegian ] = "~Column spacing:" ;
+ Text [ italian ] = "Distanza colonne:" ;
+ Text [ portuguese_brazilian ] = "~Espaçamento de coluna:" ;
+ Text [ portuguese ] = "~Espaçamento de coluna:" ;
+ Text [ finnish ] = "~Sarakeväli:" ;
+ Text [ danish ] = "~Kolonneafstand:" ;
+ Text [ french ] = "E~spacem. colonnes :" ;
+ Text [ swedish ] = "~Kolumnavstånd:" ;
+ Text [ dutch ] = "~Kolomafstand:" ;
+ Text [ spanish ] = "Distancia entre ~columnas:" ;
+ Text [ english_us ] = "~Column spacing:" ;
+ Text[ chinese_simplified ] = "Áмä¸ô(~C)";
+ Text[ russian ] = "~Ìåæäó ñòîëáöàìè:";
+ Text[ polish ] = "Odstêp kolum:";
+ Text[ japanese ] = "—ñ‚ÌŠÔŠu:(~C)";
+ Text[ chinese_traditional ] = "¦C¶¡¹j(~C)";
+ Text[ arabic ] = ":ÊÈÇÚÏ ÇáÃÚãÏÉ";
+ Text[ greek ] = "Áðü~óôáóç óôçëþí:";
+ Text[ korean ] = "¿­ °£°Ý:(~C)";
+ Text[ turkish ] = "Sütun aralýðý:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist72.bmp" ;
+ };
+ };
+ Resource 8
+ {
+ String 1
+ {
+ Text = "Ornamente" ;
+ Text [ ENGLISH ] = "Ornaments" ;
+ Text [ norwegian ] = "Ornaments" ;
+ Text [ italian ] = "Ornamenti" ;
+ Text [ portuguese_brazilian ] = "Ornamentos" ;
+ Text [ portuguese ] = "Ornamentos" ;
+ Text [ finnish ] = "Koristeet" ;
+ Text [ danish ] = "Ornamenter" ;
+ Text [ french ] = "Ornements" ;
+ Text [ swedish ] = "Ornament" ;
+ Text [ dutch ] = "Ornamenten" ;
+ Text [ spanish ] = "Ornamentos" ;
+ Text [ english_us ] = "Symbols" ;
+ Text[ chinese_simplified ] = "ͼ±ê";
+ Text[ russian ] = "Ñèìâîëû";
+ Text[ polish ] = "Ornamenty";
+ Text[ japanese ] = "‘•ü";
+ Text[ chinese_traditional ] = "¹Ï¥Ü";
+ Text[ arabic ] = "ÑãæÒ";
+ Text[ greek ] = "Äéáêüóìçóç";
+ Text[ korean ] = "Àå½Ä ±âÈ£";
+ Text[ turkish ] = "Simgeler";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Primärhöhe: : ~Primärhöhe: */
+ Text = "~Primärhöhe:" ;
+ Text [ ENGLISH ] = "~Primary hight:" ;
+ Text [ norwegian ] = "~Primary hight:" ;
+ Text [ italian ] = "Valore ~primario:" ;
+ Text [ portuguese_brazilian ] = "~Altura primária:" ;
+ Text [ portuguese ] = "Altura ~primária:" ;
+ Text [ finnish ] = "Perus~korkeus:" ;
+ Text [ danish ] = "~Primærhøjde:" ;
+ Text [ french ] = "~Hauteur principale :" ;
+ Text [ swedish ] = "~Primärhöjd:" ;
+ Text [ dutch ] = "~Primaire hoogte:" ;
+ Text [ spanish ] = "Altura ~primaria:" ;
+ Text [ english_us ] = "~Primary height:" ;
+ Text[ chinese_simplified ] = "»ù±¾¸ß¶È(~P)";
+ Text[ russian ] = "~Îñíîâíàÿ âûñîòà:";
+ Text[ polish ] = "WysokoϾ pierwotna:";
+ Text[ japanese ] = "Šî–{‚Ì‚‚³:(~P)";
+ Text[ chinese_traditional ] = "°ò¥»°ª«×(~P)";
+ Text[ arabic ] = ":ÇáÇÑÊÝÇÚ ÇáÃÓÇÓí";
+ Text[ greek ] = "~Ðñùôåýïí ýøïò:";
+ Text[ korean ] = "ÀÏÂ÷ ³ôÀÌ:(~P)";
+ Text[ turkish ] = "Birincil yükseklik:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist81.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Mindestabstand:" ;
+ Text [ ENGLISH ] = "~Minimum distance:" ;
+ Text [ norwegian ] = "~Minimum distance:" ;
+ Text [ italian ] = "Distanza ~minima:" ;
+ Text [ portuguese_brazilian ] = "~Distância mínima:" ;
+ Text [ portuguese ] = "Distância ~mínima:" ;
+ Text [ finnish ] = "~Pienin etäisyys:" ;
+ Text [ danish ] = "~Mindste afstand:" ;
+ Text [ french ] = "~Écart minimum :" ;
+ Text [ swedish ] = "~Minimiavstånd:" ;
+ Text [ dutch ] = "~Minimum afstand:" ;
+ Text [ spanish ] = "Distancia ~mínima:" ;
+ Text [ english_us ] = "~Minimum spacing:" ;
+ Text[ chinese_simplified ] = "×îС¸ß¶È(~M)";
+ Text[ russian ] = "~Ìèí. ðàññòîÿíèå:";
+ Text[ polish ] = "Minimalny odstêp:";
+ Text[ japanese ] = "Å’ZŠÔŠu:(~M)";
+ Text[ chinese_traditional ] = "³Ì¤p°ª«×(~M)";
+ Text[ arabic ] = ":ÃÞá ÊÈÇÚÏ";
+ Text[ greek ] = "ÅëÜ÷éóôç áðüóôáóç:";
+ Text[ korean ] = "ÃÖ¼Ò °£°Ý:(~M)";
+ Text[ turkish ] = "Asgari aralýk:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist82.bmp" ;
+ };
+ };
+ Resource 9
+ {
+ String 1
+ {
+ Text = "Operatoren" ;
+ Text [ ENGLISH ] = "Operators" ;
+ Text [ norwegian ] = "Operators" ;
+ Text [ italian ] = "Operatori" ;
+ Text [ portuguese_brazilian ] = "Operadores" ;
+ Text [ portuguese ] = "Operadores" ;
+ Text [ finnish ] = "Operaattorit" ;
+ Text [ danish ] = "Operatorer" ;
+ Text [ french ] = "Opérateurs" ;
+ Text [ swedish ] = "Operatorer" ;
+ Text [ dutch ] = "Operatoren" ;
+ Text [ spanish ] = "Operadores" ;
+ Text [ english_us ] = "Operators" ;
+ Text[ chinese_simplified ] = "ÔËËã·û";
+ Text[ russian ] = "Îïåðàòîðû";
+ Text[ polish ] = "Operatory";
+ Text[ japanese ] = "‰‰ŽZŽq";
+ Text[ chinese_traditional ] = "¹Bºâ²Å";
+ Text[ arabic ] = "ÚæÇãá ÇáÊÔÛíá";
+ Text[ greek ] = "ÔåëåóôÝò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ turkish ] = "Ýþleçler";
+ Text[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? ~Übergröße: : ~šbergröße: */
+ Text = "~Übergröße:" ;
+ Text [ ENGLISH ] = "~Oversize:" ;
+ Text [ norwegian ] = "~Oversize:" ;
+ Text [ italian ] = "~Sovradimensionato:" ;
+ Text [ portuguese_brazilian ] = "~Tamanho excedente:" ;
+ Text [ portuguese ] = "Tamanho ~excessivo:" ;
+ Text [ finnish ] = "~Ylisuuri:" ;
+ Text [ danish ] = "~Overstørrelse:" ;
+ Text [ french ] = "~Dépassement :" ;
+ Text [ swedish ] = "~Överstorlek:" ;
+ Text [ dutch ] = "~Te groot:" ;
+ Text [ spanish ] = "~Sobredimensión:" ;
+ Text [ english_us ] = "~Excess size:" ;
+ Text[ chinese_simplified ] = "³¬¸ß(~E)";
+ Text[ russian ] = "Âûñòóï:";
+ Text[ polish ] = "Nadwymiar:";
+ Text[ japanese ] = "’´‘廲½Þ:(~E)";
+ Text[ chinese_traditional ] = "¶W°ª(~E)";
+ Text[ arabic ] = ":ÍÌã ÒÇÆÏ";
+ Text[ greek ] = "Õð~åñâÜëëïí ìÝãåèïò:";
+ Text[ korean ] = "ÃÊ°ú Å©±â:(~E)";
+ Text[ turkish ] = "Taþma:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist91.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Abstand:" ;
+ Text [ ENGLISH ] = "~Distance:" ;
+ Text [ norwegian ] = "~Distance:" ;
+ Text [ italian ] = "~Distanza:" ;
+ Text [ portuguese_brazilian ] = "~Distância:" ;
+ Text [ portuguese ] = "~Espaçamento:" ;
+ Text [ finnish ] = "~Etäisyys:" ;
+ Text [ danish ] = "~Afstand:" ;
+ Text [ french ] = "~Écart : " ;
+ Text [ swedish ] = "~Avstånd sidled:" ;
+ Text [ dutch ] = "~Afstand:" ;
+ Text [ spanish ] = "~Espacio:" ;
+ Text [ english_us ] = "~Spacing:" ;
+ Text[ chinese_simplified ] = "¼ä¸ô(~S)";
+ Text[ russian ] = "~Èíòåðâàë:";
+ Text[ polish ] = "Odstêp:";
+ Text[ japanese ] = "ŠÔŠu:(~S)";
+ Text[ chinese_traditional ] = "¶¡¹j(~S)";
+ Text[ arabic ] = ":ÇáÊÈÇÚÏ";
+ Text[ greek ] = "~Áðüóôáóç:";
+ Text[ korean ] = "°£°Ý:(~S)";
+ Text[ turkish ] = "Aralýk:";
+ Text[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist92.bmp" ;
+ };
+ };
+ Resource 10
+ {
+ String 1
+ {
+ Text = "Ränder" ;
+ Text [ ENGLISH ] = "Border" ;
+ TEXT[ italian ] = "Margini";
+ TEXT[ portuguese_brazilian ] = "Ränder";
+ TEXT[ portuguese ] = "Margens";
+ TEXT[ danish ] = "Margener";
+ TEXT[ french ] = "Marges";
+ TEXT[ swedish ] = "Marginaler";
+ TEXT[ dutch ] = "Marges";
+ TEXT[ spanish ] = "Márgenes";
+ TEXT[ english_us ] = "Borders";
+ TEXT[ chinese_simplified ] = "±ß¿ò";
+ TEXT[ russian ] = "Ïîëÿ";
+ TEXT[ polish ] = "Krawêdzie";
+ TEXT[ japanese ] = "—]”’";
+ TEXT[ chinese_traditional ] = "Ãä®Ø";
+ TEXT[ arabic ] = "ÇáåæÇãÔ";
+ TEXT[ greek ] = "ÐåñéãñÜììáôá";
+ TEXT[ korean ] = "Å׵θ®";
+ TEXT[ turkish ] = "Kenarlar";
+ TEXT[ language_user1 ] = " ";
+ };
+ String 2
+ {
+ Text = "~Links:" ;
+ Text [ ENGLISH ] = "~Left:" ;
+ TEXT[ italian ] = "~Sinistra:";
+ TEXT[ portuguese_brazilian ] = "~Links:";
+ TEXT[ portuguese ] = "~Esquerda:";
+ TEXT[ danish ] = "~Venstre:";
+ TEXT[ french ] = "~À gauche :";
+ TEXT[ swedish ] = "~Vänster:";
+ TEXT[ dutch ] = "~Links:";
+ TEXT[ spanish ] = "~Izquierda:";
+ TEXT[ english_us ] = "~Left:";
+ TEXT[ chinese_simplified ] = "×ó(~L)";
+ TEXT[ russian ] = "Ñëåâà:";
+ TEXT[ polish ] = "Z lewej:";
+ TEXT[ japanese ] = "¶:(~L)";
+ TEXT[ chinese_traditional ] = "¥ª(~L)";
+ TEXT[ arabic ] = ":íÓÇÑ";
+ TEXT[ greek ] = "ÁñéóôåñÜ:";
+ TEXT[ korean ] = "¿ÞÂÊ:(~L)";
+ TEXT[ turkish ] = "Sol:";
+ TEXT[ language_user1 ] = " ";
+ };
+ Bitmap 2
+ {
+ File = "dist101.bmp" ;
+ };
+ String 3
+ {
+ Text = "~Rechts:" ;
+ Text [ ENGLISH ] = "~Right:" ;
+ TEXT[ italian ] = "Dest~ra:";
+ TEXT[ portuguese_brazilian ] = "~Rechts:";
+ TEXT[ portuguese ] = "~Direita:";
+ TEXT[ danish ] = "Høj~re:";
+ TEXT[ french ] = "~À droite :";
+ TEXT[ swedish ] = "~Höger:";
+ TEXT[ dutch ] = "~Rechts:";
+ TEXT[ spanish ] = "~Derecha:";
+ TEXT[ english_us ] = "~Right:";
+ TEXT[ chinese_simplified ] = "ÓÒ(~R)";
+ TEXT[ russian ] = "Ñïðàâà:";
+ TEXT[ polish ] = "Z prawej:";
+ TEXT[ japanese ] = "‰E:(~R)";
+ TEXT[ chinese_traditional ] = "¥k(~R)";
+ TEXT[ arabic ] = ":íãíä";
+ TEXT[ greek ] = "ÄåîéÜ:";
+ TEXT[ korean ] = "¿À¸¥ÂÊ:(~R)";
+ TEXT[ turkish ] = "Sað:";
+ TEXT[ language_user1 ] = " ";
+ };
+ Bitmap 3
+ {
+ File = "dist102.bmp" ;
+ };
+ String 4
+ {
+ Text = "~Oben:" ;
+ Text [ ENGLISH ] = "~Top:" ;
+ TEXT[ italian ] = "~Alto:";
+ TEXT[ portuguese_brazilian ] = "~Oben:";
+ TEXT[ portuguese ] = "~Topo:";
+ TEXT[ danish ] = "Foroven:";
+ TEXT[ french ] = "~En haut :";
+ TEXT[ swedish ] = "~Överst:";
+ TEXT[ dutch ] = "~Boven:";
+ TEXT[ spanish ] = "~Arriba:";
+ TEXT[ english_us ] = "~Top:";
+ TEXT[ chinese_simplified ] = "ÉÏ(~T)";
+ TEXT[ russian ] = "Ñâåðõó:";
+ TEXT[ polish ] = "W górze:";
+ TEXT[ japanese ] = "ã:(~T)";
+ TEXT[ chinese_traditional ] = "¤W(~T)";
+ TEXT[ arabic ] = ":ÃÚáì";
+ TEXT[ greek ] = "ÐÜíù:";
+ TEXT[ korean ] = "ˤ:(~T)";
+ TEXT[ turkish ] = "Üst:";
+ TEXT[ language_user1 ] = " ";
+ };
+ Bitmap 4
+ {
+ File = "dist103.bmp" ;
+ };
+ String 5
+ {
+ Text = "~Unten:" ;
+ Text [ ENGLISH ] = "~Bottom:" ;
+ TEXT[ italian ] = "~In basso:";
+ TEXT[ portuguese_brazilian ] = "~Unten:";
+ TEXT[ portuguese ] = "~Base:";
+ TEXT[ danish ] = "Forneden:";
+ TEXT[ french ] = "En ~bas :";
+ TEXT[ swedish ] = "~Underst:";
+ TEXT[ dutch ] = "~Beneden:";
+ TEXT[ spanish ] = "~Abajo:";
+ TEXT[ english_us ] = "~Bottom:";
+ TEXT[ chinese_simplified ] = "ÏÂ(~B)";
+ TEXT[ russian ] = "Ñíèçó:";
+ TEXT[ polish ] = "W dole:";
+ TEXT[ japanese ] = "‰º:(~B)";
+ TEXT[ chinese_traditional ] = "¤U(~B)";
+ TEXT[ arabic ] = ":ÃÓÝá";
+ TEXT[ greek ] = "ÊÜôù:";
+ TEXT[ korean ] = "¾Æ·¡:(~B)";
+ TEXT[ turkish ] = "Alt:";
+ TEXT[ language_user1 ] = " ";
+ };
+ Bitmap 5
+ {
+ File = "dist104.bmp" ;
+ };
+ };
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàëû";
+ Text[ polish ] = "Odstêpy";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÊÈÇÚÏ";
+ Text[ greek ] = "AðïóôÜóåéò";
+ Text[ korean ] = "°£°Ý";
+ Text[ turkish ] = "Aralýklar";
+ Text[ language_user1 ] = " ";
+};
+
+
+ModalDialog RID_ALIGNDIALOG
+{
+ Moveable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ HelpID = SID_ALIGN ;
+ Size = MAP_APPFONT ( 119 , 66 ) ;
+ Text = "Ausrichtung" ;
+ Text [ ENGLISH ] = "Adjustment" ;
+ Text [ norwegian ] = "Justering" ;
+ Text [ italian ] = "Allineamento" ;
+ Text [ portuguese_brazilian ] = "Ajuste" ;
+ Text [ portuguese ] = "Ajuste" ;
+ Text [ finnish ] = "Säätö" ;
+ Text [ danish ] = "Justering" ;
+ Text [ french ] = "Alignement" ;
+ Text [ swedish ] = "Justering" ;
+ Text [ dutch ] = "Uitlijning" ;
+ Text [ spanish ] = "Alineación" ;
+ Text [ english_us ] = "Alignment" ;
+ RadioButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 18 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "~Links" ;
+ Text [ ENGLISH ] = "~Left" ;
+ Text [ norwegian ] = "~Left" ;
+ Text [ italian ] = "~Sinistra" ;
+ Text [ portuguese_brazilian ] = "~Esquerda" ;
+ Text [ portuguese ] = "~Esquerda" ;
+ Text [ finnish ] = "~Vasemmalle" ;
+ Text [ danish ] = "~Venstre" ;
+ Text [ french ] = "À ~gauche" ;
+ Text [ swedish ] = "~Vänster" ;
+ Text [ dutch ] = "~Links" ;
+ Text [ spanish ] = "~Izquierda" ;
+ Text [ english_us ] = "~Left" ;
+ Text[ chinese_simplified ] = "Ïò×ó(~L)";
+ Text[ russian ] = "Ñëåâà";
+ Text[ polish ] = "Z lewej";
+ Text[ japanese ] = "¶‘µ‚¦(~L)";
+ Text[ chinese_traditional ] = "¦V¥ª(~L)";
+ Text[ arabic ] = "íÓÇÑ";
+ Text[ greek ] = "ÁñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ(~L)";
+ Text[ turkish ] = "Sol";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 30 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "~Zentriert" ;
+ Text [ ENGLISH ] = "~Center" ;
+ Text [ norwegian ] = "~Center" ;
+ Text [ italian ] = "~Centro" ;
+ Text [ portuguese_brazilian ] = "~Centro" ;
+ Text [ portuguese ] = "~Centro" ;
+ Text [ finnish ] = "~Keski" ;
+ Text [ danish ] = "~Centreret" ;
+ Text [ french ] = "~Centré" ;
+ Text [ swedish ] = "~Centrerad" ;
+ Text [ dutch ] = "~Centreren" ;
+ Text [ spanish ] = "~Centrado" ;
+ Text [ english_us ] = "~Centered" ;
+ Text[ chinese_simplified ] = "¾ÓÖÐ(~C)";
+ Text[ russian ] = "Ïî öåíòðó";
+ Text[ polish ] = "Wyœrodkuj";
+ Text[ japanese ] = "’†‰›‘µ‚¦(~C)";
+ Text[ chinese_traditional ] = "¸m¤¤(~C)";
+ Text[ arabic ] = "ÊæÓíØ";
+ Text[ greek ] = "ÊåíôñáñéóìÝíá";
+ Text[ korean ] = "°¡¿îµ¥(~C)";
+ Text[ turkish ] = "Orta";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton 3
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 42 ) ;
+ Size = MAP_APPFONT ( 40 , 12 ) ;
+ Text = "~Rechts" ;
+ Text [ ENGLISH ] = "~Right" ;
+ Text [ norwegian ] = "~Right" ;
+ Text [ italian ] = "~Destra" ;
+ Text [ portuguese_brazilian ] = "~Direita" ;
+ Text [ portuguese ] = "~Direita" ;
+ Text [ finnish ] = "~Oikealle" ;
+ Text [ danish ] = "Høj~re" ;
+ Text [ french ] = "À ~droite" ;
+ Text [ swedish ] = "~Höger" ;
+ Text [ dutch ] = "~Rechts" ;
+ Text [ spanish ] = "~Derecha" ;
+ Text [ english_us ] = "~Right" ;
+ Text[ chinese_simplified ] = "ÏòÓÒ(~R)";
+ Text[ russian ] = "Ñïðàâà";
+ Text[ polish ] = "W praw~o";
+ Text[ japanese ] = "‰E‘µ‚¦(~R)";
+ Text[ chinese_traditional ] = "¦V¥k(~R)";
+ Text[ arabic ] = "íãíä";
+ Text[ greek ] = "ÄåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ(~R)";
+ Text[ turkish ] = "Sað";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 51 , 54 ) ;
+ Text = "Horizontal" ;
+ Text [ ENGLISH ] = "Horizontal" ;
+ Text [ english_us ] = "Horizontal" ;
+ Text [ italian ] = "Orizzontale" ;
+ Text [ spanish ] = "Horizontal" ;
+ Text [ french ] = "Horizontal" ;
+ Text [ dutch ] = "Horizontaal" ;
+ Text [ swedish ] = "Horisontell" ;
+ Text [ danish ] = "Vandret" ;
+ Text [ portuguese ] = "Horizontal" ;
+ Text [ portuguese_brazilian ] = "Horizontal" ;
+ Text[ chinese_simplified ] = "ˮƽ·½Ïò";
+ Text[ russian ] = "Ãîðèçîíòàëüíî";
+ Text[ polish ] = "Poziomo";
+ Text[ japanese ] = "…•½‚É”z—ñ";
+ Text[ chinese_traditional ] = "¤ô¥­¤è¦V";
+ Text[ arabic ] = "ÃÝÞí";
+ Text[ greek ] = "Ïñéæüíôéá";
+ Text[ korean ] = "¼öÆò";
+ Text[ turkish ] = "Yatay";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 63 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 63 , 23 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ PushButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 63 , 46 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Standard" ;
+ Text [ ENGLISH ] = "~Standard" ;
+ Text [ english_us ] = "~Default" ;
+ Text [ dutch ] = "Standaar~d" ;
+ Text [ italian ] = "~Standard" ;
+ Text [ spanish ] = "~Predeterminado" ;
+ Text [ french ] = "~Par défaut" ;
+ Text [ swedish ] = "~Standard" ;
+ Text [ danish ] = "Standard" ;
+ Text [ portuguese ] = "~Padrão" ;
+ Text [ portuguese_brazilian ] = "~Standard" ;
+ Text[ chinese_simplified ] = "±ê×¼(~D)";
+ Text[ russian ] = "Ñòàíäàðò";
+ Text[ polish ] = "Domyœlnie";
+ Text[ japanese ] = "•W€(~D)";
+ Text[ chinese_traditional ] = "¼Ð·Ç(~D)";
+ Text[ arabic ] = "ÇÝÊÑÇÖí";
+ Text[ greek ] = "ÐñïåðéëïãÞ";
+ Text[ korean ] = "񃧯(~D)";
+ Text[ turkish ] = "Standart";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "¶ÔÆë";
+ Text[ russian ] = "Âûðàâíèâàíèå";
+ Text[ polish ] = "Wyrównanie";
+ Text[ japanese ] = "”z’u";
+ Text[ chinese_traditional ] = "¹ï»ô";
+ Text[ arabic ] = "ÇáãÍÇÐÇÉ";
+ Text[ greek ] = "Óôïß÷éóç";
+ Text[ korean ] = "¸ÂÃã";
+ Text[ turkish ] = "Hizalama";
+ Text[ language_user1 ] = " ";
+};
+
+TabPage RID_PRINTOPTIONPAGE
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 260 , 135 ) ;
+ Text = "Optionen Formel:Einstellungen" ;
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 6 , 3 ) ;
+ Size = MAP_APPFONT ( 80 , 50 ) ;
+ Text = "Druck Optionen" ;
+ Text[ english_us ] = "Print options";
+ Text[ portuguese ] = "Opções de impressão";
+ Text[ russian ] = "Ïàðàìåòðû ïå÷àòè";
+ Text[ dutch ] = "Afdrukopties";
+ Text[ french ] = "Options d'impression";
+ Text[ spanish ] = "Opciones de impresión";
+ Text[ italian ] = "Opzioni stampa";
+ Text[ danish ] = "Udskriftsindstillinger";
+ Text[ swedish ] = "Utskriftsalternativ";
+ Text[ polish ] = "Opcje wydruku";
+ Text[ portuguese_brazilian ] = "Opções";
+ Text[ japanese ] = "ˆóüµÌß¼®Ý";
+ Text[ chinese_simplified ] = "´òÓ¡Ñ¡Ïî";
+ Text[ chinese_traditional ] = "¦C¦L¿ï¶µ";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáØÈÇÚÉ";
+ Text[ greek ] = "ÅðéëïãÝò åêôýðùóçò";
+ Text[ korean ] = "Àμ⠿ɼÇ";
+ Text[ turkish ] = "Yazdýrma seçenekleri";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 13 ) ;
+ Size = MAP_APPFONT ( 65 , 12 ) ;
+ Text = "~Titelzeile" ;
+ Text [ ENGLISH ] = "~Title" ;
+ Text [ dutch ] = "~Titelregel" ;
+ Text [ english_us ] = "~Title row" ;
+ Text [ swedish ] = "R~ubrikrad" ;
+ Text [ danish ] = "Titellinje" ;
+ Text [ italian ] = "Riga del ~titolo" ;
+ Text [ spanish ] = "~Fila del título" ;
+ Text [ french ] = "~Ligne du titre" ;
+ Text [ portuguese ] = "Linha do ~título" ;
+ Text [ portuguese_brazilian ] = "~Titelzeile" ;
+ Text[ chinese_simplified ] = "±êÌâÐÐ(~T)";
+ Text[ russian ] = "~Çàãëàâíàÿ ñòðîêà";
+ Text[ polish ] = "~Wiersz tytu³owy";
+ Text[ japanese ] = "À²ÄÙs(~T)";
+ Text[ chinese_traditional ] = "¼ÐÃD¦æ(~T)";
+ Text[ arabic ] = "ÓØÑ ÇáÚäæÇä";
+ Text[ greek ] = "ÃñáììÞ ôßôëïõ";
+ Text[ korean ] = "Á¦¸ñ Çà(~T)";
+ Text[ turkish ] = "Baþlýk satýrý";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 24 ) ;
+ Size = MAP_APPFONT ( 65 , 12 ) ;
+ Text = "~Formeltext" ;
+ Text [ ENGLISH ] = "~Equation text" ;
+ Text [ dutch ] = "~Formuletekst" ;
+ Text [ english_us ] = "~Formula text" ;
+ Text [ swedish ] = "~Formeltext" ;
+ Text [ danish ] = "~Formeltekst" ;
+ Text [ italian ] = "~Testo formula" ;
+ Text [ spanish ] = "~Texto de la fórmula" ;
+ Text [ french ] = "~Texte de la formule" ;
+ Text [ portuguese ] = "Te~xto da fórmula" ;
+ Text [ portuguese_brazilian ] = "~Formeltext" ;
+ Text[ chinese_simplified ] = "¹«Ê½ËµÃ÷ÎÄ(~F)";
+ Text[ russian ] = "Òåêñò ôîðìóëû";
+ Text[ polish ] = "~Tekst formu³y";
+ Text[ japanese ] = "”Ž®‚Ì•¶Žš—ñ(~F)";
+ Text[ chinese_traditional ] = "¤½¦¡´£¥Ü¤å(~F)";
+ Text[ arabic ] = "äÕ ÇáÕíÛÉ";
+ Text[ greek ] = "Êåßìåíï ôýðïõ";
+ Text[ korean ] = "¼ö½Ä ÅؽºÆ®(~F)";
+ Text[ turkish ] = "Formül metni";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox 3
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 35 ) ;
+ Size = MAP_APPFONT ( 65 , 12 ) ;
+ Text = "~Rahmen" ;
+ Text [ ENGLISH ] = "~Frame" ;
+ Text [ dutch ] = "~Kader" ;
+ Text [ english_us ] = "B~order" ;
+ Text [ swedish ] = "~Ram" ;
+ Text [ danish ] = "Ramme" ;
+ Text [ italian ] = "~Cornice" ;
+ Text [ spanish ] = "~Borde" ;
+ Text [ french ] = "~Cadre" ;
+ Text [ portuguese ] = "~Quadro" ;
+ Text [ portuguese_brazilian ] = "~Rahmen" ;
+ Text[ chinese_simplified ] = "±ß¿ò(~B)";
+ Text[ russian ] = "Ðàìêà";
+ Text[ polish ] = "~Ramka";
+ Text[ japanese ] = "˜g(~B)";
+ Text[ chinese_traditional ] = "Ãä®Ø(~B)";
+ Text[ arabic ] = "ÅØÇÑ";
+ Text[ greek ] = "Ðåñßãñáììá";
+ Text[ korean ] = "Å׵θ®(~O)";
+ Text[ turkish ] = "Çerçeve";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 3
+ {
+ Pos = MAP_APPFONT ( 94 , 3 ) ;
+ Size = MAP_APPFONT ( 160 , 50 ) ;
+ Text = "Sonstige Optionen" ;
+ Text [ ENGLISH ] = "Misc Options" ;
+ Text[ english_us ] = "Miscellaneous options";
+ Text[ portuguese ] = "Outras opções";
+ Text[ russian ] = "Ïðî÷èå ïàðàìåòðû";
+ Text[ dutch ] = "Verdere opties";
+ Text[ french ] = "Autres options";
+ Text[ spanish ] = "Otras opciones";
+ Text[ italian ] = "Ulteriori opzioni";
+ Text[ danish ] = "Andre indstilllinger";
+ Text[ swedish ] = "Övriga alternativ";
+ Text[ polish ] = "Inne opcje";
+ Text[ portuguese_brazilian ] = "Misc Options";
+ Text[ japanese ] = "‚»‚Ì‘¼";
+ Text[ chinese_simplified ] = "ÆäËûÑ¡Ïî";
+ Text[ chinese_traditional ] = "¨ä¥L¿ï¶µ";
+ Text[ arabic ] = "ÚãáíÇÊ ÃÎÑì";
+ Text[ greek ] = "¢ëëåò åðéëïãÝò";
+ Text[ korean ] = "°¢Á¾ ¿É¼Ç";
+ Text[ turkish ] = "Diðer seçenekler";
+ Text[ language_user1 ] = " ";
+ };
+ CheckBox 4
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 100 , 13 ) ;
+ Size = MAP_APPFONT ( 150 , 12 ) ;
+ Text = "~~ und ` am ~Zeilenende ignorieren" ;
+ Text [ ENGLISH ] = "~Ignore ~~ and ` at ~lineend" ;
+ Text[ english_us ] = "Ig~nore ~~ and ` at the end of the line";
+ Text[ portuguese ] = "Ignorar ~~ e ` no ~fim da linha";
+ Text[ russian ] = "Ïðîïóñêàòü ~~ è ` â êîíöå ñòðîêè";
+ Text[ dutch ] = "~~ en ` aan het einde van de regel ~negeren";
+ Text[ french ] = "~Ignorer ~~ et ` en ~fin de ligne";
+ Text[ spanish ] = "Ignorar ~~ y ` al ~final de línea";
+ Text[ italian ] = "Ignora ~~ e ` a fine riga";
+ Text[ danish ] = "Ignorer ~~ og ` ved linjeslut";
+ Text[ swedish ] = "~Ignorera ~~ och ` vid radslutet";
+ Text[ polish ] = "~Ignoruj ~~i na 'koñcu wiersza";
+ Text[ portuguese_brazilian ] = "~Ignore ~~ and ` at ~lineend";
+ Text[ japanese ] = "~~‚Æ`‚ð~s––‚Å–³Ž‹";
+ Text[ chinese_simplified ] = "ºöÂÔÐÐÄ©µÄ·ûºÏ ~~ ºÍ `";
+ Text[ chinese_traditional ] = "©¿²¤¦æ¥½ªº²Å¦X ~~ ©M `";
+ Text[ arabic ] = "ÊÌÇåá ~~ æ ` ÚäÏ äåÇíÉ ÇáÓØÑ";
+ Text[ greek ] = "ÐáñÜâëåøç ~~ êáé ` óôï ôÝëïò ôçò ãñáììÞò";
+ Text[ korean ] = "ÁÙÀÇ ¸¶Áö¸·¿¡¼­~~ ¿Í ` ¹«½Ã";
+ Text[ turkish ] = "Satýr sonundaki ~~ ve ` iþaretlerini dikkate alma";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 2
+ {
+ Pos = MAP_APPFONT ( 6 , 56 ) ;
+ Size = MAP_APPFONT ( 248 , 73 ) ;
+ Text = "Druckformat" ;
+ Text [ ENGLISH ] = "Print format" ;
+ Text [ norwegian ] = "Print format" ;
+ Text [ italian ] = "Formato stampa" ;
+ Text [ portuguese_brazilian ] = "Imprimir formato" ;
+ Text [ portuguese ] = "Formato de impressão" ;
+ Text [ finnish ] = "Tulostusmuoto" ;
+ Text [ danish ] = "Udskriftsformat" ;
+ Text [ french ] = "Format d'impression" ;
+ Text [ swedish ] = "Utskriftsformat" ;
+ Text [ dutch ] = "Afdrukopmaak" ;
+ Text [ spanish ] = "Formato de impresión" ;
+ Text [ english_us ] = "Print format" ;
+ Text[ chinese_simplified ] = "´òÓ¡¸ñʽ";
+ Text[ russian ] = "Ôîðìàò ïå÷àòè";
+ Text[ polish ] = "Format wydruku";
+ Text[ japanese ] = "ˆóü‘Ž®";
+ Text[ chinese_traditional ] = "¦C¦L®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ ÇáØÈÇÚÉ";
+ Text[ greek ] = "ÌïñöÞ åêôýðùóçò";
+ Text[ korean ] = "Àμ⠼­½Ä";
+ Text[ turkish ] = "Yazdýrma formatý";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 66 ) ;
+ Size = MAP_APPFONT ( 60 , 12 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Originalgröße : ~Originalgröße */
+ Text = "~Originalgröße" ;
+ Text [ ENGLISH ] = "~Originale size" ;
+ Text [ norwegian ] = "~Originale size" ;
+ Text [ italian ] = "Dimensione ~originale" ;
+ Text [ portuguese_brazilian ] = "~Tamanho original" ;
+ Text [ portuguese ] = "~Tamanho original" ;
+ Text [ finnish ] = "~Todellinen koko" ;
+ Text [ danish ] = "Oprindelig størrelse" ;
+ Text [ french ] = "~Taille d'origine" ;
+ Text [ swedish ] = "~Originalstorlek" ;
+ Text [ dutch ] = "~Originele grootte" ;
+ Text [ spanish ] = "T~amaño original" ;
+ Text [ english_us ] = "O~riginal size" ;
+ Text[ chinese_simplified ] = "Ô­ÓдóС(~O)";
+ Text[ russian ] = "Èñõîäíûé ðàçìåð";
+ Text[ polish ] = "~Rozmiar oryginalny";
+ Text[ japanese ] = "µØ¼ÞÅÙ »²½Þ(~O)";
+ Text[ chinese_traditional ] = "­ì¦³¤j¤p(~O)";
+ Text[ arabic ] = "ÇáÍÌã ÇáÃÕáí";
+ Text[ greek ] = "Áñ÷éêü ìÝãåè~ïò";
+ Text[ korean ] = "¿ø·¡ Å©±â(~R)";
+ Text[ turkish ] = "Gerçek boyut";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 12 , 77 ) ;
+ Size = MAP_APPFONT ( 81 , 12 ) ;
+ Text = "~Seite anpassen" ;
+ Text [ ENGLISH ] = "~Fit to Page" ;
+ Text [ norwegian ] = "~Fit to Page" ;
+ Text [ italian ] = "Adatta alla p~agina" ;
+ Text [ portuguese_brazilian ] = "~Encaixar na Página" ;
+ Text [ portuguese ] = "~Ajustar página" ;
+ Text [ finnish ] = "S~ovita sivulle" ;
+ Text [ danish ] = "Tilpas til siden" ;
+ Text [ french ] = "~Adapter à la page" ;
+ Text [ swedish ] = "Anpassa ~sida" ;
+ Text [ dutch ] = "~Pagina aanpassen" ;
+ Text [ spanish ] = "Ajustar a la ~página" ;
+ Text [ english_us ] = "Fit to ~page" ;
+ Text[ chinese_simplified ] = "¶ÔÓ¦Ò³Ãæ(~P)";
+ Text[ russian ] = "Ñîãëàñíî ñòðàíèöû";
+ Text[ polish ] = "~Dopasuj stronê";
+ Text[ japanese ] = "Íß°¼Þ‚É“K‡(~P)";
+ Text[ chinese_traditional ] = "¹ïÀ³­¶­±(~P)";
+ Text[ arabic ] = "ãáÇÁãÉ ÇáÕÝÍÉ";
+ Text[ greek ] = "ÐñïóáñìïãÞ óåëßäáò";
+ Text[ korean ] = "ÆäÀÌÁö Á¶Á¤(~P)";
+ Text[ turkish ] = "Sayfaya sýðdýr";
+ Text[ language_user1 ] = " ";
+ };
+ RadioButton 3
+ {
+ Pos = MAP_APPFONT ( 12 , 88 ) ;
+ Size = MAP_APPFONT ( 45 , 12 ) ;
+ Text = "S~kalierung" ;
+ Text [ ENGLISH ] = "~Scaling" ;
+ Text [ norwegian ] = "~Scaling" ;
+ Text [ italian ] = "~Scala" ;
+ Text [ portuguese_brazilian ] = "~Dimensionar" ;
+ Text [ portuguese ] = "~Escala" ;
+ Text [ finnish ] = "~Skaalaus" ;
+ Text [ danish ] = "Skalering" ;
+ Text [ french ] = "~Échelle" ;
+ Text [ swedish ] = "S~kalering" ;
+ Text [ dutch ] = "~Schaal" ;
+ Text [ spanish ] = "~Escala" ;
+ Text [ english_us ] = "~Scaling" ;
+ TabStop = TRUE ;
+ Text[ chinese_simplified ] = "¿Ì¶È(~S)";
+ Text[ russian ] = "Ìàñøòàáèðîâàíèå";
+ Text[ polish ] = "~Skalowanie";
+ Text[ japanese ] = "½¹°Ù(~S)";
+ Text[ chinese_traditional ] = "Åã¥Ü¤ñ¨Ò(~S)";
+ Text[ arabic ] = "ÊÏÑíÌ";
+ Text[ greek ] = "Êëßìáêá";
+ Text[ korean ] = "¹èÀ²(~S)";
+ Text[ turkish ] = "Ölçeklendirme";
+ Text[ language_user1 ] = " ";
+ };
+ MetricField 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 23 , 102 ) ;
+ Size = MAP_APPFONT ( 50 , 12 ) ;
+ TabStop = TRUE ;
+ Left = TRUE ;
+ Repeat = TRUE ;
+ Spin = TRUE ;
+ Minimum = 10 ;
+ Maximum = 400 ;
+ Unit = FUNIT_CUSTOM ;
+ CustomUnitText = "%" ;
+ };
+ Text[ english_us ] = "Formula Options: Settings";
+ Text[ portuguese ] = "Opções de fórmulas: configuração";
+ Text[ russian ] = "Ïàðàìåòðû ôîðìóëû: Íàñòðîéêè";
+ Text[ dutch ] = "Optie Formule: Instellingen";
+ Text[ french ] = "Options de formule : paramètres";
+ Text[ spanish ] = "Opciones de fórmulas: Configuración";
+ Text[ italian ] = "Opzioni formula: impostazioni";
+ Text[ danish ] = "Formelalternativer: Indstillinger";
+ Text[ swedish ] = "Alternativ formel: Inställningar";
+ Text[ polish ] = "Opcje formu³y:Ustawienia";
+ Text[ portuguese_brazilian ] = "Imprimir";
+ Text[ japanese ] = "”Ž®µÌß¼®Ý:Ý’è";
+ Text[ chinese_simplified ] = "¹«Ê½Ñ¡ÏÉ趨";
+ Text[ chinese_traditional ] = "¤½¦¡¿ï¶µ¡G³]©w";
+ Text[ arabic ] = "ÎíÇÑÇÊ ÇáÕíÛÉ: ÇáÅÚÏÇÏÇÊ";
+ Text[ greek ] = "ÅðéëïãÝò ôýðïõ:Ñõèìßóåéò";
+ Text[ korean ] = "¼ö½Ä ¿É¼Ç: ¼³Á¤";
+ Text[ turkish ] = "Formül seçenekleri: Ayarlar";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SYMBOLDIALOG
+{
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Closeable = TRUE; // Close Button in Window Leiste explizit einbauen
+ Size = MAP_APPFONT ( 262 , 123 ) ;
+ Text = "Symbole" ;
+ Text [ ENGLISH ] = "Symbols" ;
+ Text [ norwegian ] = "Symbols" ;
+ Text [ italian ] = "Simboli" ;
+ Text [ portuguese_brazilian ] = "Símbolos" ;
+ Text [ portuguese ] = "Símbolos" ;
+ Text [ finnish ] = "Symbolit" ;
+ Text [ danish ] = "Symboler" ;
+ Text [ french ] = "Symboles" ;
+ Text [ swedish ] = "Symboler" ;
+ Text [ dutch ] = "Symbolen" ;
+ Text [ spanish ] = "Símbolos" ;
+ Text [ english_us ] = "Symbols" ;
+ Moveable = TRUE ;
+ FixedText 1
+ {
+ Pos = MAP_APPFONT ( 6 , 6 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text = "~Symbolset:" ;
+ Text [ English ] = "~Symbolset:" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Grupo de símbolos:" ;
+ Text [ english_us ] = "~Symbol Set:" ;
+ Text [ portuguese_brazilian ] = "~Symbolset:" ;
+ Text [ swedish ] = "~Symbolset:" ;
+ Text [ danish ] = "~Symbolsæt:" ;
+ Text [ italian ] = "~Simboli:" ;
+ Text [ spanish ] = "~Símbolos:" ;
+ Text [ french ] = "~Jeu :" ;
+ Text [ dutch ] = "S~ymbolenset" ;
+ Text[ chinese_simplified ] = "ͼ±ê×é(~S)";
+ Text[ russian ] = "~Íàáîð ñèìâîëîâ:";
+ Text[ polish ] = "Zbiór symboli:";
+ Text[ japanese ] = "‹L†¾¯Ä:(~S)";
+ Text[ chinese_traditional ] = "¹Ï¥Ü²Õ(~S)";
+ Text[ arabic ] = ":ãÌãæÚÉ ÑãæÒ";
+ Text[ greek ] = "Óýíïëï óõìâüëùí:";
+ Text[ korean ] = "±âÈ£ ¼¼Æ®:(~S)";
+ Text[ turkish ] = "Simge kümesi:";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 21 ) ;
+ Size = MAP_APPFONT ( 104 , 57 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ DropDown = TRUE ;
+ VScroll = TRUE ;
+ };
+ Control 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 39 ) ;
+ Size = MAP_APPFONT ( 108 , 72 ) ;
+ TabStop = TRUE ;
+ };
+ Control 2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 42 ) ;
+ Size = MAP_APPFONT ( 63 , 63 ) ;
+ };
+ FixedText 2
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 123 , 27 ) ;
+ Size = MAP_APPFONT ( 63 , 10 ) ;
+ Text = "Unbekannt" ;
+ Text [ ENGLISH ] = "Unknown" ;
+ Text [ norwegian ] = "Unknown" ;
+ Text [ italian ] = "Sconosciuto" ;
+ Text [ portuguese_brazilian ] = "Desconhecido" ;
+ Text [ portuguese ] = "Desconhecido" ;
+ Text [ finnish ] = "Tuntematon" ;
+ Text [ danish ] = "Ukendt" ;
+ Text [ french ] = "Inconnu" ;
+ Text [ swedish ] = "Okänd" ;
+ Text [ dutch ] = "Onbekend" ;
+ Text [ spanish ] = "Desconocido" ;
+ Text [ english_us ] = "Unknown" ;
+ Text[ chinese_simplified ] = "²»Ã÷";
+ Text[ russian ] = "Íåèçâåñòíî";
+ Text[ polish ] = "Bez tytu³u";
+ Text[ japanese ] = "•s–¾‚Ì";
+ Text[ chinese_traditional ] = "¤£©ú";
+ Text[ arabic ] = "ÛíÑ ãÚÑæÝ";
+ Text[ greek ] = "¢ãíùóôï";
+ Text[ korean ] = "¾Ë·ÁÁöÁö ¾ÊÀ½";
+ Text[ turkish ] = "Bilinmiyor";
+ Text[ language_user1 ] = " ";
+ };
+ GroupBox 1
+ {
+ Pos = MAP_APPFONT ( 117 , 15 ) ;
+ Size = MAP_APPFONT ( 75 , 96 ) ;
+ Text = "Symbol" ;
+ Text [ English ] = "Symbol" ;
+ Text [ english_us ] = "Symbol" ;
+ Text [ portuguese_brazilian ] = "Symbol" ;
+ Text [ swedish ] = "Symbol" ;
+ Text [ danish ] = "Symbol" ;
+ Text [ italian ] = "Simbolo" ;
+ Text [ spanish ] = "Símbolo" ;
+ Text [ french ] = "Symbole" ;
+ Text [ dutch ] = "Symbool" ;
+ Text [ portuguese ] = "Símbolo" ;
+ Text[ chinese_simplified ] = "ͼ±ê";
+ Text[ russian ] = "Ñèìâîë";
+ Text[ polish ] = "Symbol";
+ Text[ japanese ] = "‹L†";
+ Text[ chinese_traditional ] = "¹Ï¥Ü";
+ Text[ arabic ] = "ÑãÒ";
+ Text[ greek ] = "Óýìâïëï";
+ Text[ korean ] = "±âÈ£";
+ Text[ turkish ] = "Simge";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton 3
+ {
+ Pos = MAP_APPFONT ( 200 , 9 ) ;
+ Size = MAP_APPFONT ( 56 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ Text = "Schließe~n" ;
+ Text [ ENGLISH ] = "Close" ;
+ Text[ english_us ] = "~Close";
+ Text[ portuguese ] = "~Fechar";
+ Text[ russian ] = "Çàêðûòü";
+ Text[ dutch ] = "Sluiten~n";
+ Text[ french ] = "~Fermer";
+ Text[ spanish ] = "~Cerrar";
+ Text[ italian ] = "Chiudi";
+ Text[ danish ] = "Luk";
+ Text[ swedish ] = "Stä~ng";
+ Text[ polish ] = "Zamknij";
+ Text[ portuguese_brazilian ] = "Close";
+ Text[ japanese ] = "•Â‚¶‚é(~C)";
+ Text[ chinese_simplified ] = "¹Ø±Õ(~C)";
+ Text[ chinese_traditional ] = "Ãö³¬(~C)";
+ Text[ arabic ] = "ÅÛáÇÞ";
+ Text[ greek ] = "Êëåßóéìï";
+ Text[ korean ] = "´Ý±â(~C)";
+ Text[ turkish ] = "Kapat";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 54 ) ;
+ Size = MAP_APPFONT ( 56 , 14 ) ;
+ Text = "~Bearbeiten..." ;
+ Text [ ENGLISH ] = "~Edit..." ;
+ Text [ norwegian ] = "~Edit..." ;
+ Text [ italian ] = "~Modifica..." ;
+ Text [ portuguese_brazilian ] = "~Editar..." ;
+ Text [ portuguese ] = "~Editar..." ;
+ Text [ finnish ] = "~Muokkaa..." ;
+ Text [ danish ] = "Rediger..." ;
+ Text [ french ] = "~Éditer..." ;
+ Text [ swedish ] = "~Redigera..." ;
+ Text [ dutch ] = "Be~werken..." ;
+ Text [ spanish ] = "~Editar..." ;
+ Text [ english_us ] = "~Edit..." ;
+ Text[ chinese_simplified ] = "±à¼­(~E)...";
+ Text[ russian ] = "Ïðàâêà...";
+ Text[ polish ] = "Edytuj...";
+ Text[ japanese ] = "•ÒW(~E)...";
+ Text[ chinese_traditional ] = "½s¿è(~E)...";
+ Text[ arabic ] = "...ÊÍÑíÑ";
+ Text[ greek ] = "~Åðåîåñãáóßá...";
+ Text[ korean ] = "ÆíÁý(~E)...";
+ Text[ turkish ] = "Düzenle...";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 200 , 81 ) ;
+ Size = MAP_APPFONT ( 56 , 14 ) ;
+ /* ### ACHTUNG: Neuer Text in Resource? ~Übernehmen : ~šbernehmen */
+ Text = "~Übernehmen" ;
+ Text [ ENGLISH ] = "~Get" ;
+ Text [ norwegian ] = "~Get" ;
+ Text [ english_us ] = "~Insert" ;
+ Text [ italian ] = "Applica" ;
+ Text [ spanish ] = "~Aplicar" ;
+ Text [ french ] = "~Appliquer" ;
+ Text [ dutch ] = "~Overnemen" ;
+ Text [ swedish ] = "~Överta" ;
+ Text [ danish ] = "Accepter" ;
+ Text [ portuguese_brazilian ] = "~Übernehmen" ;
+ Text [ portuguese ] = "~Aplicar" ;
+ Text[ chinese_simplified ] = "½ÓÊÜ(~I)";
+ Text[ russian ] = "Ïðèíÿòü";
+ Text[ polish ] = "Zastosuj";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ russian ] = "Ïðèíÿòü";
+ Text[ polish ] = "Zastosuj";
+ Text[ japanese ] = "‘}“ü(~I)";
+ Text[ chinese_simplified ] = "½ÓÊÜ(~I)";
+ Text[ chinese_traditional ] = "±µ¨ü(~I)";
+ Text[ arabic ] = "ÅÏÑÇÌ";
+ Text[ greek ] = "ÅöáñìïãÞ";
+ Text[ korean ] = "Àû¿ë(~I)";
+ Text[ turkish ] = "Kullan";
+ Text[ language_user1 ] = " ";
+ };
+ Text[ chinese_simplified ] = "ͼ±ê";
+ Text[ russian ] = "Ñèìâîëû";
+ Text[ polish ] = "Symbole";
+ Text[ japanese ] = "‹L†";
+ Text[ chinese_traditional ] = "¹Ï¥Ü";
+ Text[ arabic ] = "ÑãæÒ";
+ Text[ greek ] = "Óýìâïëá";
+ Text[ korean ] = "±âÈ£";
+ Text[ turkish ] = "Simgeler";
+ Text[ language_user1 ] = " ";
+};
+
+ModalDialog RID_SYMDEFINEDIALOG
+{
+ Moveable = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 365 , 195 ) ;
+ Text = "Symbole bearbeiten" ;
+ Text [ ENGLISH ] = "Edit symbols" ;
+ Text[ chinese_simplified ] = "±à¼­Í¼±ê";
+ Text[ russian ] = "Ïðàâêà ñèìâîëîâ";
+ Text[ polish ] = "Edytuj symbole";
+ Text[ japanese ] = "‹L†‚Ì•ÒW";
+ Text[ chinese_traditional ] = "½s¿è¹Ï¥Ü";
+ Text[ arabic ] = "ÊÍÑíÑ ÑãæÒ";
+ Text [ norwegian ] = "Edit symbols" ;
+ Text [ italian ] = "Modifica simboli" ;
+ Text [ portuguese_brazilian ] = "Editar símbolos" ;
+ Text [ portuguese ] = "Editar símbolos" ;
+ Text [ finnish ] = "Muokkaa symboleita" ;
+ Text [ danish ] = "Rediger symboler" ;
+ Text [ french ] = "Édition des symboles" ;
+ Text [ swedish ] = "Redigera symboler" ;
+ Text [ dutch ] = "Symbolen bewerken" ;
+ Text [ spanish ] = "Editar símbolos" ;
+ Text [ english_us ] = "Edit Symbols" ;
+ FixedText 1
+ {
+ Pos = MAP_APPFONT ( 6 , 8 ) ;
+ Size = MAP_APPFONT ( 50 , 10 ) ;
+ Left = TRUE ;
+ Text = "~Altes Symbol:" ;
+ Text [ English ] = "~Old Symbol:" ;
+ Text[ english_us ] = "~Old Symbol:";
+ Text[ portuguese ] = "~Símbolo precedente:";
+ Text[ russian ] = "~Ñèìâîë:";
+ Text[ dutch ] = "~Oud symbool:";
+ Text[ french ] = "Actuel :";
+ Text[ spanish ] = "~Símbolo anterior:";
+ Text[ italian ] = "Simbolo:";
+ Text[ danish ] = "Oprindeligt symbol:";
+ Text[ swedish ] = "~Gammal symbol:";
+ Text[ polish ] = "Stary symbol:";
+ Text[ portuguese_brazilian ] = "~Symbol:";
+ Text[ japanese ] = "ŒÃ‚¢‹L†:(~O)";
+ Text[ chinese_simplified ] = "¾Éͼ±ê(~O)";
+ Text[ chinese_traditional ] = "¹ϥÜ(~O)";
+ Text[ arabic ] = ":ÑãÒ ÞÏíã";
+ Text[ greek ] = "Ð~áëéü óýìâïëï:";
+ Text[ korean ] = "ÀÌÀü ±âÈ£:(~O)";
+ Text[ turkish ] = "Eski simge:";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox 1
+ {
+ Pos = MAP_APPFONT ( 55 , 6 ) ;
+ Size = MAP_APPFONT ( 80 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText 2
+ {
+ Pos = MAP_APPFONT ( 150 , 8 ) ;
+ Size = MAP_APPFONT ( 60 , 10 ) ;
+ Left = TRUE ;
+ Text = "Alt~es Symbolset:" ;
+ Text [ English ] = "Ol~d Symbolset:" ;
+ Text[ english_us ] = "Ol~d Symbol Set:";
+ Text[ portuguese ] = "Conjunto de ~símbolos precedente:";
+ Text[ russian ] = "Ïðåæíèé íàáîð:";
+ Text[ dutch ] = "Oud s~ymbolenset:";
+ Text[ french ] = "Jeu actuel :";
+ Text[ spanish ] = "Conjunto ~anterior:";
+ Text[ italian ] = "Gamma simboli:";
+ Text[ danish ] = "Oprindeligt symbolsæt:";
+ Text[ swedish ] = "Gammalt s~ymbolset:";
+ Text[ polish ] = "Zbiór symboli:";
+ Text[ portuguese_brazilian ] = "S~ymbolset:";
+ Text[ japanese ] = "ŒÃ‚¢‹L†‚̾¯Ä:(~D)";
+ Text[ chinese_simplified ] = "¾Éͼ±ê×é(~D)";
+ Text[ chinese_traditional ] = "¹ϥܲÕ(~D)";
+ Text[ arabic ] = ":ãÌãæÚÉ ÑãæÒ ÞÏíãÉ";
+ Text[ greek ] = "ÐáëéÜ ó~åéñÜ óõìâüëùí:";
+ Text[ korean ] = "ÀÌÀü ±âÈ£ ¼¼Æ®:(~D)";
+ Text[ turkish ] = "Eski simge kümesi:";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox 2
+ {
+ Pos = MAP_APPFONT ( 210 , 6 ) ;
+ Size = MAP_APPFONT ( 80 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ Control 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 24 ) ;
+ Size = MAP_APPFONT ( 295 , 90 ) ;
+ TabStop = TRUE ;
+ };
+ FixedText 9
+ {
+ Pos = MAP_APPFONT ( 6 , 113 ) ;
+ Size = MAP_APPFONT ( 56 , 10 ) ;
+ Text = "~Symbol:" ;
+ Text [ English ] = "~Symbol:" ;
+ Left = TRUE ;
+ Text [ portuguese ] = "~Símbolo:" ;
+ Text [ english_us ] = "~Symbol:" ;
+ Text [ portuguese_brazilian ] = "~Symbol:" ;
+ Text [ swedish ] = "~Symbol:" ;
+ Text [ danish ] = "Symbol:" ;
+ Text [ italian ] = "Simbolo:" ;
+ Text [ spanish ] = "Sím~bolo:" ;
+ Text [ french ] = "~Symbole :" ;
+ Text [ dutch ] = "~Symbool:" ;
+ Text[ chinese_simplified ] = "ͼ±ê(~S)";
+ Text[ russian ] = "Ñèìâîë:";
+ Text[ polish ] = "Symbol:";
+ Text[ japanese ] = "‹L†:(~S)";
+ Text[ chinese_traditional ] = "¹Ï¥Ü(~S)";
+ Text[ arabic ] = ":ÑãÒ";
+ Text[ greek ] = "Óýìâïëï:";
+ Text[ korean ] = "±âÈ£:(~S)";
+ Text[ turkish ] = "Simge:";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox 4
+ {
+ Pos = MAP_APPFONT ( 70 , 110 ) ;
+ Size = MAP_APPFONT ( 100 , 80 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText 10
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 128 ) ;
+ Size = MAP_APPFONT ( 56 , 10 ) ;
+ Text = "S~ymbolset:" ;
+ Text [ English ] = "S~ymbolset:" ;
+ Text[ chinese_simplified ] = "ͼ±ê×é(~E)";
+ Text[ chinese_traditional ] = "¹Ï¥Ü²Õ(~E)";
+ Text[ russian ] = "Íàáîð ñèìâîëîâ:";
+ Text[ polish ] = "Zbiór symboli:";
+ Text[ japanese ] = "‹L†¾¯Ä(~E)";
+ Text[ arabic ] = ":ãÌãæÚÉ ÑãæÒ";
+ Text [ portuguese ] = "Conjunto de ~símbolos:" ;
+ Text [ english_us ] = "Symbol S~et:" ;
+ Text [ portuguese_brazilian ] = "S~ymbolset:" ;
+ Text [ swedish ] = "S~ymbolset:" ;
+ Text [ danish ] = "Symbolsæt:" ;
+ Text [ italian ] = "Simboli:" ;
+ Text [ spanish ] = "Con~junto:" ;
+ Text [ french ] = "Jeu :" ;
+ Text [ dutch ] = "S~ymbolenset:" ;
+ Text[ greek ] = "Óýíïëï óõìâüëùí:";
+ Text[ korean ] = "±âÈ£ ¼¼Æ®:(~E)";
+ Text[ turkish ] = "Simge kümesi:";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox 5
+ {
+ Pos = MAP_APPFONT ( 70 , 125 ) ;
+ Size = MAP_APPFONT ( 100 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = TRUE ;
+ };
+ FixedText 3
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 143 ) ;
+ Size = MAP_APPFONT ( 56 , 10 ) ;
+ Text = "Schri~ftart:" ;
+ Text [ ENGLISH ] = "~Font:" ;
+ Text[ chinese_simplified ] = "×ÖÌå(~F)£º";
+ Text[ chinese_traditional ] = "¦r«¬(~F)";
+ Text[ russian ] = "Òèï øðèôòà:";
+ Text[ polish ] = "Czcionka:";
+ Text[ japanese ] = "Ì«ÝÄ‚ÌŽí—Þ(~F):";
+ Text[ arabic ] = ":äæÚ ÇáÎØ";
+ Text [ norwegian ] = "~Font:" ;
+ Text [ italian ] = "~Tipo di carattere:" ;
+ Text [ portuguese_brazilian ] = "~Fonte:" ;
+ Text [ portuguese ] = "Tipo de letra:" ;
+ Text [ finnish ] = "~Fontti:" ;
+ Text [ danish ] = "Skrifttype:" ;
+ Text [ french ] = "~Police :" ;
+ Text [ swedish ] = "Te~ckensnitt:" ;
+ Text [ dutch ] = "~Lettertype:" ;
+ Text [ spanish ] = "~Fuente:" ;
+ Text [ english_us ] = "~Font:" ;
+ Text[ greek ] = "ÃñáììáôïóåéñÜ:";
+ Text[ korean ] = "±Û²Ã:(~F)";
+ Text[ turkish ] = "Yazýtipi:";
+ Text[ language_user1 ] = " ";
+ };
+ ListBox 1
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 70 , 140 ) ;
+ Size = MAP_APPFONT ( 100 , 50 ) ;
+ TabStop = TRUE ;
+ Sort = TRUE ;
+ DropDown = TRUE ;
+ };
+ FixedText 4
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 6 , 158 ) ;
+ Size = MAP_APPFONT ( 56 , 10 ) ;
+ Text = "Schriftschni~tt:" ;
+ Text [ ENGLISH ] = "S~tyle:" ;
+ Text[ italian ] = "S~tile:";
+ Text[ portuguese_brazilian ] = "Schriftschni~tt:";
+ Text[ portuguese ] = "~Tipo:";
+ Text[ danish ] = "Typografi:";
+ Text[ french ] = "Type~ :";
+ Text[ swedish ] = "Teckens~til:";
+ Text[ dutch ] = "~Type:";
+ Text[ spanish ] = "~Carácter:";
+ Text[ english_us ] = "Type:";
+ Text[ chinese_simplified ] = "×ÖÌ壺";
+ Text[ chinese_traditional ] = "¦r«¬¡G";
+ Text[ russian ] = "~Íà÷åðòàíèå øðèôòà:";
+ Text[ polish ] = "Krój czcionki:";
+ Text[ japanese ] = "Ì«ÝÄ‚ÌŽí—Þ:";
+ Text[ arabic ] = "äãØ ÇáÎØ:";
+ Text[ greek ] = "~Ôýðïò ãñáöÞò:";
+ Text[ korean ] = "À¯Çü:";
+ Text[ turkish ] = "Yazýtipi varyantý:";
+ Text[ language_user1 ] = " ";
+ };
+ ComboBox 3
+ {
+ Border = TRUE;
+ Pos = MAP_APPFONT ( 70 , 155 ) ;
+ Size = MAP_APPFONT ( 100 , 50 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ Sort = FALSE ;
+ };
+ FixedText 5
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 310 , 110 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ };
+ Control 2
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 310 , 120 ) ;
+ Size = MAP_APPFONT ( 40 , 40 ) ;
+ };
+ FixedText 6
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 310 , 160 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ };
+ FixedImage BMP_ARROW_RIGHT
+ {
+ Pos = MAP_APPFONT ( 252 , 122 ) ;
+ Size = MAP_APPFONT ( 36 , 36 ) ;
+
+ Fixed = Image
+ {
+ ImageBitmap = Bitmap { File = "ar_right.bmp" ; };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ };
+ };
+ FixedText 7
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 190 , 110 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ };
+ Control 3
+ {
+ Border = TRUE ;
+ Pos = MAP_APPFONT ( 190 , 120 ) ;
+ Size = MAP_APPFONT ( 40 , 40 ) ;
+ };
+ FixedText 8
+ {
+ Left = TRUE ;
+ Pos = MAP_APPFONT ( 190 , 160 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ };
+ PushButton 1
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 305 , 175 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "H~inzufügen" ;
+ Text [ ENGLISH ] = "~Add" ;
+ Text[ chinese_simplified ] = "ÐÂÔö(~A)";
+ Text[ russian ] = "Äîáàâèòü";
+ Text[ polish ] = "Dodaj";
+ Text[ japanese ] = "’ljÁ(~A)";
+ Text[ chinese_traditional ] = "·s¼W(~A)";
+ Text[ arabic ] = "ÅÖÇÝÉ";
+ Text [ norwegian ] = "Leg~g til" ;
+ Text [ italian ] = "~Aggiungi" ;
+ Text [ portuguese_brazilian ] = "~Acrescentar" ;
+ Text [ portuguese ] = "Adicionar" ;
+ Text [ finnish ] = "~Lisää" ;
+ Text [ danish ] = "Tilføj" ;
+ Text [ french ] = "~Ajouter" ;
+ Text [ swedish ] = "Lägg t~ill" ;
+ Text [ dutch ] = "~Toevoegen" ;
+ Text [ spanish ] = "~Añadir" ;
+ Text [ english_us ] = "~Add" ;
+ Text[ greek ] = "ÐñïóèÞê~ç";
+ Text[ korean ] = "Ãß°¡(~A)";
+ Text[ turkish ] = "Ekle";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton 2
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 245 , 175 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "Ä~ndern" ;
+ Text [ ENGLISH ] = "~Change" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä(~M)";
+ Text[ russian ] = "Èçìåíèòü";
+ Text[ polish ] = "Modyfikuj";
+ Text[ japanese ] = "•ÏX(~M)";
+ Text[ chinese_traditional ] = "Åܧó(~M)";
+ Text[ arabic ] = "ÊÚÏíá";
+ Text [ norwegian ] = "~Endre" ;
+ Text [ italian ] = "~Cambia" ;
+ Text [ portuguese_brazilian ] = "~Mudar" ;
+ Text [ portuguese ] = "Modificar" ;
+ Text [ finnish ] = "~Muuta" ;
+ Text [ danish ] = "Modificer" ;
+ Text [ french ] = "~Modifier" ;
+ Text [ swedish ] = "Ä~ndra" ;
+ Text [ dutch ] = "Wij~zigen" ;
+ Text [ spanish ] = "~Modificar" ;
+ Text [ english_us ] = "~Modify" ;
+ Text[ greek ] = "Ôñïðïðïßçóç";
+ Text[ korean ] = "º¯°æ(~M)";
+ Text[ turkish ] = "Deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ PushButton 3
+ {
+ TabStop = TRUE ;
+ Pos = MAP_APPFONT ( 185 , 175 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text = "~Löschen" ;
+ Text [ ENGLISH ] = "~Delete" ;
+ Text[ chinese_simplified ] = "ɾ³ý(~D)";
+ Text[ russian ] = "Óäàëèòü";
+ Text[ polish ] = "Usuñ";
+ Text[ japanese ] = "íœ(~D)";
+ Text[ chinese_traditional ] = "§R°£(~D)";
+ Text[ arabic ] = "ÍÐÝ";
+ Text [ norwegian ] = "~Slett" ;
+ Text [ italian ] = "C~ancella" ;
+ Text [ portuguese_brazilian ] = "~Apagar" ;
+ Text [ portuguese ] = "Limpar" ;
+ Text [ finnish ] = "~Poista" ;
+ Text [ danish ] = "~Slet" ;
+ Text [ french ] = "~Supprimer" ;
+ Text [ swedish ] = "~Radera" ;
+ Text [ dutch ] = "~Wissen" ;
+ Text [ spanish ] = "~Eliminar" ;
+ Text [ english_us ] = "~Delete" ;
+ Text[ greek ] = "ÄéáãñáöÞ";
+ Text[ korean ] = "»èÁ¦(~D)";
+ Text[ turkish ] = "Sil";
+ Text[ language_user1 ] = " ";
+ };
+ OKButton 1
+ {
+ Pos = MAP_APPFONT ( 310 , 6 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ DefButton = TRUE ;
+ };
+ CancelButton 1
+ {
+ Pos = MAP_APPFONT ( 310 , 24 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ };
+ Text[ greek ] = "Åðåîåñãáóßá óõìâüëùí";
+ Text[ korean ] = "±âÈ£ ÆíÁý";
+ Text[ turkish ] = "Simgeleri düzenle";
+ Text[ language_user1 ] = " ";
+};
+
+WarningBox RID_NOMATHTYPEFACEWARNING
+{
+ Message = "Der \"StarMath\" Font ist nicht installiert !\nOhne diesen Font kann StarMath nicht korrekt arbeiten...\nInstallieren Sie den Font und starten Sie StarMath erneut." ;
+ Message [ ENGLISH ] = "The Font \"StarMath\" is not installed!\nWithout this Font StarMath is not working correct...\nPlease install this Font and restart StarMath." ;
+ Message [ norwegian ] = "The Font \"StarMath\" is not installed!\nWithout this Font StarMath is not working correct...\nPlease install this Font and restart StarMath." ;
+ Message [ italian ] = "Il carattere \"StarMath\" non è installato.\nSenza questo carattere StarOffice Math non funzionerà in modo corretto.\nInstallate questo carattere e riavviate StarOffice Math." ;
+ Message [ portuguese_brazilian ] = "A Fonte \"StarOffice Math\" não está instalada!\nSem esta Fonte o StarOffice Math não está operando corretamente...\nPor favor instale esta Fonte e reinicieStarOffice Math." ;
+ Message [ portuguese ] = "O tipo de letra \"StarMath\" não está instalado!\nSem este tipo de letra o StarOffice Math não operará correctamente...\nInstale este tipo de letra e reinicie a aplicação." ;
+ Message [ finnish ] = "Fonttia \"StarMath\" ei ole asennettu!\nStarMath ei toimikunnolla ilman sitä...\nAsenna tämä fontti ja käynnistä StarMath uudelleen." ;
+ Message [ danish ] = "Skrifttypen \"StarMath\" er ikke installeret!\nUden denne skrifttype kan StarOffice Math ikke arbejde korrekt...\nInstaller venligst skrifttypen og genstart StarOffice Math." ;
+ Message [ french ] = "La police \"StarMath\" n'est pas installée !\nSans cette police, StarOffice Math ne fonctionne pas correctement...\nInstallez la police et redémarrez StarOffice Math." ;
+ Message [ swedish ] = "Teckensnittet \"StarMath\" är inte installerat!\nUtan detta teckensnitt kan StarOffice Math inte arbeta korrekt....\nInstallera teckensnittet och starta om StarOffice Math." ;
+ Message [ dutch ] = "Het lettertype \"StarMath\" is niet geïnstalleerd!\nZonder dit lettertype werkt StarOffice Math niet correct...\nInstalleer dit lettertype en start StarOffice Math opnieuw." ;
+ Message [ spanish ] = "¡La fuente \"StarMath\" no está instalada!\nSin esta fuente StarMath no funcionará correctamente...\nInstale la fuente y reinicie StarMath." ;
+ Message [ english_us ] = "The font \"StarMath\" is not installed.\nWithout this font StarOffice Math will not perform correctly.\nPlease install this font and restart StarOffice Math." ;
+ Message[ chinese_simplified ] = "ûÓа²×°¡°StarMath¡± ×ÖÌ壡\nûÓÐÕâ¸ö×ÖÌå StarOffice Math ÎÞ·¨Õý³£ÔË×÷¡£\nÇëÔÚ°²×°Õâ¸ö×ÖÌåºóÖØÐÂÆô¶¯ StarOffice Math ¡£";
+ Message[ russian ] = "Øðèôò \"StarMath\" íå èíñòàëëèðîâàí !\nÁåç ýòîãî øðèôòà StarOffice Math ìîæåò íåïðàâèëüíî ðàáîòàòü...\nÈíñòàëëèðóéòå øðèôò è ïåðåçàïóñòèòå StarOffice Math.";
+ Message[ polish ] = "Czcionka \"StarMath\" nie jest zainstalowana!\nBez tej czcionki StarOffice Math nie mo¿e poprawnie pracowaæ...\nZainstaluj tê czcionkê i uruchom StarOffice Math ponownie.";
+ Message[ japanese ] = "\"StarMath\" Ì«ÝÄ‚ª²Ý½Ä°Ù‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ¡\n‚±‚ÌÌ«ÝÄ‚È‚µ‚Å‚Í StarOffice Math ‚ª‚¤‚Ü‚­‹@”\\‚µ‚Ü‚¹‚ñ...\n‚Ü‚¸Ì«ÝÄ‚ð²Ý½Ä°Ù‚µ‚Ä StarOffice Math ‚ðÄ‹N“®‚µ‚Ä‚­‚¾‚³‚¢B";
+ Message[ chinese_traditional ] = "¨S¦³¦w¸Ë StarMath ¦r«¬\n¦ÓµLªk¥¿±`¹B§@¡I\n½Ð±z¦w¸Ë StarMath ¦r«¬¡AµM¦Z¦A­«·s¶}±Ò StaMath¡C";
+ Message[ arabic ] = "ÇáÎØ \"StarMath\" ÛíÑ ãõËÈøóÊ!\nÈÏæä åÐÇ ÇáÎØ áÇ íÓÊØíÚ StarOffice Math ÇáÚãá ÈÔßá ÕÍíÍ...\nÇáÑÌÇÁ ÊËÈíÊ åÐÇ ÇáÎØ¡ Ëã ÈÏÁ StarOffice Math ãÌÏÏÇð.";
+ Message[ greek ] = "Äåí Ýãéíå ç åãêáôÜóôáóç ôçò ãñáììáôïóåéñÜò \"StarMath\".\n×ùñßò áõôÞ ôç ãñáììáôïóåéñÜ ôï StarOffice Math äåí èá åêôåëåóôåß óùóôÜ.\nÐáñáêáëþ íá ãßíåé ðñþôá ç åãêáôÜóôáóç áõôÞò ôçò ãñáììáôïóåéñÜò êáé óôç óõíÝ÷åéá ç åðáíåêêßíçóç ôïõ StarOffice Math.";
+ Message[ korean ] = "\"StarOffice Math\" ±Û²ÃÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù!\nÀÌ ±Û²ÃÀÌ ¾øÀ¸¸é StarOffice Math°¡ Á¦´ë·Î ÀÛ¾÷À» ÇÒ ¼ö ¾ø½À´Ï´Ù...\n±Û²ÃÀ» ¼³Ä¡ÇÏ°í StarOffice Math¸¦ »õ·Î ½ÃÀÛÇϽʽÿÀ.";
+ Message[ turkish ] = "\"StarMath\" yazýtipi yüklenmedi!\nBu yazýtipi olmadan StarMath programý doðru bir biçimde çalýþmaz...\nYazýtipini yükleyin ve StarMath programýný yeniden baþlatýn.";
+ Message[ language_user1 ] = " ";
+};
+
+QueryBox RID_DEFAULTSAVEQUERY
+{
+ Buttons = WB_YES_NO ;
+ DefButton = WB_DEF_YES ;
+ /* ### ACHTUNG: Neuer Text in Resource? Sollen die Änderungen als Standard gespeichert werden ?\n\nDiese Änderungen wirken sich auf alle neuen Formeln aus. : Sollen die Žnderungen als Standard gespeichert werden ?\n\nDiese Žnderungen wirken sich auf alle neuen Formeln aus. */
+ Message = "Sollen die Änderungen als Standard gespeichert werden ?\n\nDiese Änderungen wirken sich auf alle neuen Formeln aus." ;
+ Message [ ENGLISH ] = "Save the current changes as default?\n\nThese changeswill influence all new Equations." ;
+ Message [ norwegian ] = "Save the current changes as default?\n\nThese changeswill influence all new Equations." ;
+ Message [ italian ] = "Salvare le modifiche correnti come predefinite?\n\nLe modifiche verranno applicate a tutte le nuove formule." ;
+ Message [ portuguese_brazilian ] = "Gravar as mudanças atuais como default?\n\nEstas mudançasser o válidas para todas as novas Equações." ;
+ Message [ portuguese ] = "Guardar modificações como padrão?\n\nEstas modificações serão válidas para todas as novas equações." ;
+ Message [ finnish ] = "Tallennetaanko nykyiset muutokset oletuksiksi?\n\nNe vaikuttavat kaikkiin uusiin kaavoihin." ;
+ Message [ danish ] = "Skal ændringerne gemmes som standard?\n\nÆndringerne vil påvirke alle nye formler." ;
+ Message [ french ] = "Enregistrer les modifications par défaut ?\n\nCes modifications s'appliqueront à toutes les nouvelles formules." ;
+ Message [ swedish ] = "Skall ändringarna sparas som standard?\n\nDessa ändringar påverkar alla nya formler." ;
+ Message [ dutch ] = "Wilt u deze wijzigingen opslaan als standaardinstellingen?\n\nDeze wijzigingen hebben uitwerkingen op alle nieuwe formules." ;
+ Message [ spanish ] = "¿Desea guardar los cambios como predeterminados?\n\nEstos cambios tendrán efecto en todas las nuevas fórmulas." ;
+ Message [ english_us ] = "Save changes as default?\n\nThese changes will influence all new formulas." ;
+ Message[ chinese_simplified ] = "ÄúÒª½«¸ü¸Ä×÷Ϊ±ê×¼¸ñʽ´æÅÌ£¿\n\nÕâ¸ö¸ü¸Ä»áÓ°ÏìËùÓÐй«Ê½¡£";
+ Message[ russian ] = "Ñîõðàíèòü èçìåíåíèÿ êàê ñòàíäàðòíûå ?\n\nÝòè èçìåíåíèÿ ïîâëèÿþò íà âñå íîâûå ôîðìóëû.";
+ Message[ polish ] = "Czy zapisaæ zmiany jako domyœlne?\n\nTe zmiany wywieraj¹ wp³yw na wszystkie nowe formu³y.";
+ Message[ japanese ] = "‚±‚Ì•ÏX‚ð•W€‚Æ‚µ‚Ä•Û‘¶‚µ‚Ü‚·‚©?\n\n‚±‚Ì•ÏX‚Í‚·‚ׂĂÌV‚µ‚¢”Ž®‚ɉe‹¿‚µ‚Ü‚·B";
+ Message[ chinese_traditional ] = "±z­n±NÅܧó§@¬°¼Ð·Ç®æ¦¡Àx¦s¡H\n\n³o­ÓÅܧó·|¼vÅT©Ò¦³ªº·s¤½¦¡¡C";
+ Message[ arabic ] = "åá ÊÑíÏ ÍÝÙ ÇáÊÛííÑÇÊ ßÇÝÊÑÇÖí¿\n\nÓæÝ íßæä áåÐå ÇáÊÛííÑÇÊ ÃËÑÇð Úáì ßá ÇáÕíÛ ÇáÌÏíÏÉ.";
+ Message[ greek ] = "Íá áðïèçêåõôïýí ïé áëëáãÝò ùò ðñïåðéëïãÞ;\n\nÏé áëëáãÝò áõôÝò èá Ý÷ïõí åðßäñáóç óå üëïõò ôïõò íÝïõò ôýðïõò.";
+ Message[ korean ] = "º¯°æ»çÇ×À» ±âº»À¸·Î ÀúÀåÇϽðڽÀ´Ï±î?\n\nÀÌ º¯°æ»çÇ×µéÀº ¸ðµç »õ ¼ö½Ä¿¡ ¿µÇâÀ» ¹ÌĨ´Ï´Ù.";
+ Message[ turkish ] = "Deðiþiklikler standart deðerler olarak kaydedilsin mi?\n\nBu deðiþiklikler tüm yeni formülleri etkileyecektir.";
+ Message[ language_user1 ] = " ";
+};
+
+String RID_FONTREGULAR
+{
+ Text = ", Normal" ;
+ Text [ ENGLISH ] = "Standard" ;
+ Text [ norwegian ] = "Standard" ;
+ Text [ italian ] = "Standard" ;
+ Text [ portuguese_brazilian ] = "Padrão" ;
+ Text [ portuguese ] = ", Padrão" ;
+ Text [ finnish ] = "Vakio" ;
+ Text [ danish ] = ", Normal" ;
+ Text [ french ] = "Par défaut" ;
+ Text [ swedish ] = ", Normal" ;
+ Text [ dutch ] = ", Normaal" ;
+ Text [ spanish ] = ", Estándar" ;
+ Text [ english_us ] = ", Standard" ;
+ Text[ chinese_simplified ] = ", ÆÕͨ";
+ Text[ russian ] = ", Îáû÷íûé";
+ Text[ polish ] = ", Standard";
+ Text[ japanese ] = ",’Êí";
+ Text[ chinese_traditional ] = "¡A´¶³q";
+ Text[ arabic ] = "ÚÇÏí ,";
+ Text[ greek ] = ", ÊáíïíéêÜ";
+ Text[ korean ] = ", º¸Åë";
+ Text[ turkish ] = ", standart";
+ Text[ language_user1 ] = " ";
+};
+String RID_FONTITALIC
+{
+ Text = ", Kursiv" ;
+ Text [ ENGLISH ] = "Italic" ;
+ Text [ norwegian ] = "Kursiv" ;
+ Text [ italian ] = ", Corsivo" ;
+ Text [ portuguese_brazilian ] = "Itálico" ;
+ Text [ portuguese ] = ", Itálico" ;
+ Text [ finnish ] = "Kursivoitu" ;
+ Text [ danish ] = ", Kursiv" ;
+ Text [ french ] = "Italique" ;
+ Text [ swedish ] = ", Kursiv" ;
+ Text [ dutch ] = ", Cursief" ;
+ Text [ spanish ] = ", Cursiva" ;
+ Text [ english_us ] = "Italic" ;
+ Text[ chinese_simplified ] = ", бÌå";
+ Text[ russian ] = ", Íàêëîííûé";
+ Text[ polish ] = "Kursywa";
+ Text[ japanese ] = ",ŽÎ‘Ì";
+ Text[ chinese_traditional ] = ", ±×Åé";
+ Text[ arabic ] = "ãÇÆá";
+ Text[ greek ] = ", ÐëÜãéá";
+ Text[ korean ] = "ÀÌÅŸ¯Ã¼";
+ Text[ turkish ] = ", italik";
+ Text[ language_user1 ] = " ";
+};
+String RID_FONTBOLD
+{
+ Text = ", Fett" ;
+ Text [ ENGLISH ] = "Bold" ;
+ Text [ norwegian ] = "Fet" ;
+ Text [ italian ] = "Grassetto" ;
+ Text [ portuguese_brazilian ] = "Negrito" ;
+ Text [ portuguese ] = ", Negrito" ;
+ Text [ finnish ] = "Lihavoitu" ;
+ Text [ danish ] = ", Fed" ;
+ Text [ french ] = "Gras" ;
+ Text [ swedish ] = ", Fett" ;
+ Text [ dutch ] = ", Vet" ;
+ Text [ spanish ] = ", Negrita" ;
+ Text [ english_us ] = "Bold" ;
+ Text[ chinese_simplified ] = ", ´ÖÌå";
+ Text[ russian ] = ", Æèðíûé";
+ Text[ polish ] = ", Pogrubienie";
+ Text[ japanese ] = ",‘¾Žš";
+ Text[ chinese_traditional ] = ", ²ÊÅé";
+ Text[ arabic ] = "ÚÑíÖ";
+ Text[ greek ] = ";¸íôïíï";
+ Text[ korean ] = ", ÁøÇÏ°Ô";
+ Text[ turkish ] = ", kalýn";
+ Text[ language_user1 ] = " ";
+};
+String RID_APPLICATION
+{
+ Text = "StarMath" ;
+};
+String RID_OBJECTNAME
+{
+ Text = "SMath3" ;
+};
+String RID_VIEWNAME
+{
+ Text = "StarMath" ;
+};
+String RID_UNDOEDITNAME
+{
+ Text = "Edit" ;
+};
+String RID_UNDOFORMATNAME
+{
+ Text = "Format" ;
+};
+String GID_FORMEL
+{
+ Text = "StarMath" ;
+};
+Menu RID_VIEWMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Identifier = SID_VIEW050 ;
+ HelpID = SID_VIEW050 ;
+ Text = "Ansicht ~50%" ;
+ Text [ ENGLISH ] = "Zoom ~50%" ;
+ Text [ norwegian ] = "Zoom ~50%" ;
+ Text [ italian ] = "Zoom 50%" ;
+ Text [ portuguese_brazilian ] = "Zoom 50%" ;
+ Text [ portuguese ] = "Zoom ~50%" ;
+ Text [ finnish ] = "Zoomaa ~50 %" ;
+ Text [ danish ] = "Zoom 50%" ;
+ Text [ french ] = "Zoom ~50 %" ;
+ Text [ swedish ] = "Visa ~50%" ;
+ Text [ dutch ] = "Zoomwaarde ~50%" ;
+ Text [ spanish ] = "Zoom ~50%" ;
+ Text [ english_us ] = "View 50%" ;
+ Text[ chinese_simplified ] = "ÊÓͼ 50%";
+ Text[ russian ] = "Âèä ~50%";
+ Text[ polish ] = "Widok 50%";
+ Text[ japanese ] = "•\\Ž¦50%";
+ Text[ chinese_traditional ] = "À˵ø 50%";
+ Text[ arabic ] = "%ÚÑÖ 50";
+ Text[ greek ] = "ÌåãÝèõíóç ~50%";
+ Text[ korean ] = "º¸±â 50%";
+ Text[ turkish ] = "Görünüm %~50";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_VIEW100 ;
+ HelpID = SID_VIEW100 ;
+ Text = "Ansicht ~100%" ;
+ Text [ ENGLISH ] = "Zoom ~100%" ;
+ Text [ norwegian ] = "Zoom ~100%" ;
+ Text [ italian ] = "Zoom 100%" ;
+ Text [ portuguese_brazilian ] = "Zoom 100%" ;
+ Text [ portuguese ] = "Zoom ~100%" ;
+ Text [ finnish ] = "Normaali ~100%" ;
+ Text [ danish ] = "Zoom 100%" ;
+ Text [ french ] = "Zoom ~100 %" ;
+ Text [ swedish ] = "Visa ~100%" ;
+ Text [ dutch ] = "Zoomwaarde ~100%" ;
+ Text [ spanish ] = "Zoom ~100%" ;
+ Text [ english_us ] = "View 100%" ;
+ Text[ chinese_simplified ] = "ÊÓͼ 100%";
+ Text[ russian ] = "Âèä ~100%";
+ Text[ polish ] = "Widok 100%";
+ Text[ japanese ] = "•\\Ž¦100%";
+ Text[ chinese_traditional ] = "À˵ø 100%";
+ Text[ arabic ] = "%ÚÑÖ 100";
+ Text[ greek ] = "ÌåãÝèõíóç ~100%";
+ Text[ korean ] = "100%·Î º¸±â";
+ Text[ turkish ] = "Görünüm %~100";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_VIEW200 ;
+ HelpID = SID_VIEW200 ;
+ Text = "Ansicht ~200%" ;
+ Text [ ENGLISH ] = "Zoom ~200%" ;
+ Text [ norwegian ] = "Zoom ~200%" ;
+ Text [ italian ] = "Zoom 200%" ;
+ Text [ portuguese_brazilian ] = "Zoom 200%" ;
+ Text [ portuguese ] = "Zoom ~200%" ;
+ Text [ finnish ] = "Zoomaa ~200 %" ;
+ Text [ danish ] = "Zoom 200%" ;
+ Text [ french ] = "Zoom ~200 %" ;
+ Text [ swedish ] = "Visa ~200%" ;
+ Text [ dutch ] = "Zoomwaarde ~200%" ;
+ Text [ spanish ] = "Zoom ~200%" ;
+ Text [ english_us ] = "View 200%" ;
+ Text[ chinese_simplified ] = "ÊÓͼ 200%";
+ Text[ russian ] = "Âèä ~200%";
+ Text[ polish ] = "Widok 200%";
+ Text[ japanese ] = "•\\Ž¦200%";
+ Text[ chinese_traditional ] = "À˵ø 200%";
+ Text[ arabic ] = "%ÚÑÖ 200";
+ Text[ greek ] = "ÌåãÝèõíóç ~200%";
+ Text[ korean ] = "200%·Î º¸±â";
+ Text[ turkish ] = "Görünüm %~200";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_ZOOMIN ;
+ HelpID = SID_ZOOMIN ;
+ /* ### ACHTUNG: Neuer Text in Resource? Vergrößern : Vergrößern */
+ Text = "~Vergrößern" ;
+ Text [ ENGLISH ] = "Zoom in" ;
+ Text [ norwegian ] = "Forstørr" ;
+ Text [ italian ] = "Zoom avanti" ;
+ Text [ portuguese_brazilian ] = "Mais zoom" ;
+ Text [ portuguese ] = "Apro~ximar" ;
+ Text [ finnish ] = "Suurenna" ;
+ Text [ danish ] = "Forstør" ;
+ Text [ french ] = "A~grandir" ;
+ Text [ swedish ] = "För~stora" ;
+ Text [ dutch ] = "~Inzoomen" ;
+ Text [ spanish ] = "~Aumentar" ;
+ Text [ english_us ] = "Zoom In" ;
+ Text[ chinese_simplified ] = "·Å´ó(~I)";
+ Text[ russian ] = "Óâåëè÷èòü";
+ Text[ polish ] = "Powiêksz";
+ Text[ japanese ] = "Šg‘å";
+ Text[ chinese_traditional ] = "©ñ¤j(~I)";
+ Text[ arabic ] = "ÊßÈíÑ";
+ Text[ greek ] = "ÌåãÝèõ~íóç";
+ Text[ korean ] = "È®´ë";
+ Text[ turkish ] = "Büyüt";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_ZOOMOUT ;
+ HelpID = SID_ZOOMOUT ;
+ Text = "V~erkleinern" ;
+ Text [ ENGLISH ] = "Zoom out" ;
+ Text [ norwegian ] = "Forminsk" ;
+ Text [ italian ] = "Zoom indietro" ;
+ Text [ portuguese_brazilian ] = "Menos zoom" ;
+ Text [ portuguese ] = "Af~astar" ;
+ Text [ finnish ] = "Pienennä" ;
+ Text [ danish ] = "Formindsk" ;
+ Text [ french ] = "R~éduire" ;
+ Text [ swedish ] = "För~minska" ;
+ Text [ dutch ] = "~Uitzoomen" ;
+ Text [ spanish ] = "~Reducir" ;
+ Text [ english_us ] = "Zoom Out" ;
+ Text[ chinese_simplified ] = "ËõС(~O)";
+ Text[ russian ] = "Óìåíüøèòü";
+ Text[ polish ] = "Pomniejsz";
+ Text[ japanese ] = "k¬";
+ Text[ chinese_traditional ] = "ÁY¤p(~O)";
+ Text[ arabic ] = "ÊÕÛíÑ";
+ Text[ greek ] = "Óìßêñõíó~ç";
+ Text[ korean ] = "Ãà¼Ò";
+ Text[ turkish ] = "Küçült";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = SID_ADJUST ;
+ HelpID = SID_ADJUST ;
+ Text = "~Alles anzeigen" ;
+ Text [ ENGLISH ] = "Show all" ;
+ Text [ norwegian ] = "Show all" ;
+ Text [ italian ] = "Mostra tutto" ;
+ Text [ portuguese_brazilian ] = "Mostrar tudo" ;
+ Text [ portuguese ] = "Mostrar ~tudo" ;
+ Text [ finnish ] = "Näytä kaikki" ;
+ Text [ danish ] = "Vis alt" ;
+ Text [ french ] = "A~fficher tout" ;
+ Text [ swedish ] = "Visa ~allt" ;
+ Text [ dutch ] = "Alles wee~rgeven" ;
+ Text [ spanish ] = "Mostrar ~todo" ;
+ Text [ english_us ] = "Display All" ;
+ Text[ chinese_simplified ] = "È«²¿ÏÔʾ";
+ Text[ russian ] = "~Ïîêàçàòü âñå";
+ Text[ polish ] = "Poka¿ wszystko";
+ Text[ japanese ] = "‚·‚ׂĕ\\Ž¦";
+ Text[ chinese_traditional ] = "¥þ³¡Åã¥Ü";
+ Text[ arabic ] = "ÅÙåÇÑ Çáßá";
+ Text[ greek ] = "~ÅìöÜíéóç üëùí";
+ Text[ korean ] = "¸ðµÎ Ç¥½Ã";
+ Text[ turkish ] = "Tümünü görüntüle";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Separator = TRUE ;
+ };
+ MenuItem
+ {
+ Identifier = SID_DRAW ;
+ HelpID = SID_DRAW ;
+ Text = "A~ktualisieren" ;
+ Text [ ENGLISH ] = "Update" ;
+ Text [ norwegian ] = "Update" ;
+ Text [ italian ] = "Aggiorna" ;
+ Text [ portuguese_brazilian ] = "Atualizar" ;
+ Text [ portuguese ] = "A~ctualizar" ;
+ Text [ finnish ] = "Päivitä" ;
+ Text [ danish ] = "Opdater" ;
+ Text [ french ] = "~Actualiser" ;
+ Text [ swedish ] = "~Uppdatera" ;
+ Text [ dutch ] = "A~ctualiseren" ;
+ Text [ spanish ] = "A~ctualizar" ;
+ Text [ english_us ] = "U~pdate" ;
+ Text[ chinese_simplified ] = "¸üÐÂ(~P)";
+ Text[ russian ] = "Îáíîâèòü";
+ Text[ polish ] = "Aktualizuj";
+ Text[ japanese ] = "XV(~P)";
+ Text[ chinese_traditional ] = "§ó·s(~P)";
+ Text[ arabic ] = "ÊÍÏíË";
+ Text[ greek ] = "Å~íçìÝñùóç";
+ Text[ korean ] = "¾÷ µ¥ÀÌÆ®(~P)";
+ Text[ turkish ] = "Güncelle";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+Menu RID_DISTANCEMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ /* ### ACHTUNG: Neuer Text in Resource? Abstände : Abstände */
+ Text = "Abstände" ;
+ Text [ ENGLISH ] = "Distances" ;
+ Text [ norwegian ] = "Distances" ;
+ Text [ italian ] = "Distanze" ;
+ Text [ portuguese_brazilian ] = "Distâncias" ;
+ Text [ portuguese ] = "Espaços" ;
+ Text [ finnish ] = "Etäisyydet" ;
+ Text [ danish ] = "Afstand" ;
+ Text [ french ] = "Écarts" ;
+ Text [ swedish ] = "Avstånd" ;
+ Text [ dutch ] = "Afstanden" ;
+ Text [ spanish ] = "Espacios" ;
+ Text [ english_us ] = "Spacing" ;
+ Text[ chinese_simplified ] = "¼ä¸ô";
+ Text[ russian ] = "Èíòåðâàëû";
+ Text[ polish ] = "Odstêpy";
+ Text[ japanese ] = "ŠÔŠu";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÊÈÇÚÏ";
+ Text[ greek ] = "AðïóôÜóåéò";
+ Text[ korean ] = "Ä­ ¶ç¿ì±â";
+ Text[ turkish ] = "Aralýklar";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = 2 ;
+ Text = "Indizes" ;
+ Text [ ENGLISH ] = "Indices" ;
+ Text [ norwegian ] = "Indices" ;
+ Text [ italian ] = "Indici" ;
+ Text [ portuguese_brazilian ] = "Índices" ;
+ Text [ portuguese ] = "Índices" ;
+ Text [ finnish ] = "Indices" ;
+ Text [ danish ] = "Sub-/Superscript" ;
+ Text [ french ] = "Indices" ;
+ Text [ swedish ] = "Index" ;
+ Text [ dutch ] = "Indices" ;
+ Text [ spanish ] = "Índices" ;
+ Text [ english_us ] = "Indexes" ;
+ Text[ chinese_simplified ] = "±êÖ¾";
+ Text[ russian ] = "Èíäåêñû";
+ Text[ polish ] = "Indeksy";
+ Text[ japanese ] = "²ÝÃÞ¯¸½";
+ Text[ chinese_traditional ] = "¼Ð»x";
+ Text[ arabic ] = "ÝåÇÑÓ";
+ Text[ greek ] = "Äåßêôåò";
+ Text[ korean ] = "À妽º";
+ Text[ turkish ] = "Ýndisler";
+ };
+ MenuItem
+ {
+ Identifier = 3 ;
+ /* ### ACHTUNG: Neuer Text in Resource? Brüche : Br³che */
+ Text = "Brüche" ;
+ Text [ ENGLISH ] = "Fractions" ;
+ Text [ norwegian ] = "Fractions" ;
+ Text [ italian ] = "Frazioni" ;
+ Text [ portuguese_brazilian ] = "Frações" ;
+ Text [ portuguese ] = "Fracções" ;
+ Text [ finnish ] = "Murtomerkinnät" ;
+ Text [ danish ] = "Brøker" ;
+ Text [ french ] = "Fractions" ;
+ Text [ swedish ] = "Bråk" ;
+ Text [ dutch ] = "Breuken" ;
+ Text [ spanish ] = "Fracciones" ;
+ Text [ english_us ] = "Fractions" ;
+ Text[ chinese_simplified ] = "·ÖÊý";
+ Text[ russian ] = "Äðîáè";
+ Text[ polish ] = "U³amki";
+ Text[ japanese ] = "•ª”";
+ Text[ chinese_traditional ] = "¤À¼Æ";
+ Text[ arabic ] = "ßÓæÑ";
+ Text[ greek ] = "ÊëÜóìáôá";
+ Text[ korean ] = "ºÐ¼ö";
+ Text[ turkish ] = "Kesirler";
+ };
+ MenuItem
+ {
+ Identifier = 4 ;
+ Text = "Bruchstriche" ;
+ Text [ ENGLISH ] = "Fraction line" ;
+ Text [ norwegian ] = "Fraction line" ;
+ Text [ italian ] = "Linee di frazione" ;
+ Text [ portuguese_brazilian ] = "Linha de fração" ;
+ Text [ portuguese ] = "Linhas de fracção" ;
+ Text [ finnish ] = "Murtoviiva" ;
+ Text [ danish ] = "Brøkstreger" ;
+ Text [ french ] = "Traits de fraction" ;
+ Text [ swedish ] = "Bråkstreck" ;
+ Text [ dutch ] = "Breuklijnen" ;
+ Text [ spanish ] = "Líneas de fracción" ;
+ Text [ english_us ] = "Fraction Bars" ;
+ Text[ chinese_simplified ] = "·ÖÊýÏß";
+ Text[ russian ] = "Äðîáíàÿ ÷åðòà";
+ Text[ polish ] = "Kreski u³amkowe";
+ Text[ japanese ] = "•ª”ü";
+ Text[ chinese_traditional ] = "¤À¼Æ½u";
+ Text[ arabic ] = "ÔÑØÉ ÇáßÓÑ";
+ Text[ greek ] = "ÃñáììÝò êëÜóìáôïò";
+ Text[ korean ] = "ºÐ¼ö Ç¥½ÃÁÙ";
+ Text[ turkish ] = "Kesir çizgisi";
+ };
+ MenuItem
+ {
+ Identifier = 5 ;
+ Text = "Grenzen" ;
+ Text [ ENGLISH ] = "Limits" ;
+ Text [ norwegian ] = "Border" ;
+ Text [ italian ] = "Bordi" ;
+ Text [ portuguese_brazilian ] = "Borda" ;
+ Text [ portuguese ] = "Limites" ;
+ Text [ finnish ] = "Reunaviiva" ;
+ Text [ danish ] = "Grænser" ;
+ Text [ french ] = "Limites" ;
+ Text [ swedish ] = "Gränser" ;
+ Text [ dutch ] = "Begrenzing" ;
+ Text [ spanish ] = "Límites" ;
+ Text [ english_us ] = "Limits" ;
+ Text[ chinese_simplified ] = "½çÏÞ";
+ Text[ russian ] = "Ãðàíèöû";
+ Text[ polish ] = "Granice";
+ Text[ japanese ] = "ØЯÄ";
+ Text[ chinese_traditional ] = "¬É­­";
+ Text[ arabic ] = "ÍÏæÏ";
+ Text[ greek ] = "¼ñéá";
+ Text[ korean ] = "±ØÇÑ";
+ Text[ turkish ] = "Limitler";
+ };
+ MenuItem
+ {
+ Identifier = 6 ;
+ Text = "Klammern" ;
+ Text [ ENGLISH ] = "Brackets" ;
+ Text [ norwegian ] = "Brackets" ;
+ Text [ italian ] = "Parentesi" ;
+ Text [ portuguese_brazilian ] = "Colchetes" ;
+ Text [ portuguese ] = "Parênteses" ;
+ Text [ finnish ] = "Sulkeet" ;
+ Text [ danish ] = "Parenteser" ;
+ Text [ french ] = "Parenthèses" ;
+ Text [ swedish ] = "Parenteser" ;
+ Text [ dutch ] = "Haakjes" ;
+ Text [ spanish ] = "Paréntesis" ;
+ Text [ english_us ] = "Brackets" ;
+ Text[ chinese_simplified ] = "À¨ºÅ";
+ Text[ russian ] = "Ñêîáêè";
+ Text[ polish ] = "Nawiasy";
+ Text[ japanese ] = "Š‡ŒÊ";
+ Text[ chinese_traditional ] = "¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ";
+ Text[ greek ] = "ÐáñåíèÝóåéò";
+ Text[ korean ] = "°ýÈ£";
+ Text[ turkish ] = "Ayraçlar";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = 7 ;
+ Text = "Matrizen" ;
+ Text [ ENGLISH ] = "Matrix" ;
+ Text [ norwegian ] = "Matrix" ;
+ Text [ italian ] = "Matrici" ;
+ Text [ portuguese_brazilian ] = "Matriz" ;
+ Text [ portuguese ] = "Matrizes" ;
+ Text [ finnish ] = "Matriisi" ;
+ Text [ danish ] = "Matrixer" ;
+ Text [ french ] = "Matrices" ;
+ Text [ swedish ] = "Matriser" ;
+ Text [ dutch ] = "Matrices" ;
+ Text [ spanish ] = "Matrices" ;
+ Text [ english_us ] = "Matrixes" ;
+ Text[ chinese_simplified ] = "¾ØÕó";
+ Text[ russian ] = "Ìàòðèöû";
+ Text[ polish ] = "Macierze";
+ Text[ japanese ] = "ÏÄظ½";
+ Text[ chinese_traditional ] = "¯x°}";
+ Text[ arabic ] = "ãÕÝæÝÇÊ";
+ Text[ greek ] = "ÌÞôñåò";
+ Text[ korean ] = "Çà¿­";
+ Text[ turkish ] = "Matrisler";
+ };
+ MenuItem
+ {
+ Identifier = 8 ;
+ Text = "Ornamente" ;
+ Text [ ENGLISH ] = "Ornaments" ;
+ Text [ norwegian ] = "Ornaments" ;
+ Text [ italian ] = "Ornamenti" ;
+ Text [ portuguese_brazilian ] = "Ornamentos" ;
+ Text [ portuguese ] = "Ornamentos" ;
+ Text [ finnish ] = "Koristeet" ;
+ Text [ danish ] = "Ornamenter" ;
+ Text [ french ] = "Ornements" ;
+ Text [ swedish ] = "Ornament" ;
+ Text [ dutch ] = "Ornamenten" ;
+ Text [ spanish ] = "Ornamentos" ;
+ Text [ english_us ] = "Symbols" ;
+ Text[ chinese_simplified ] = "×°ÊÎ";
+ Text[ russian ] = "Ñèìâîëû";
+ Text[ polish ] = "Ornamenty";
+ Text[ japanese ] = "‘•ü";
+ Text[ chinese_traditional ] = "¹Ï¥Ü";
+ Text[ arabic ] = "ÑãæÒ";
+ Text[ greek ] = "Äéáêüóìçóç";
+ Text[ korean ] = "±âÈ£";
+ Text[ turkish ] = "Simgeler";
+ };
+ MenuItem
+ {
+ Identifier = 9 ;
+ Text = "Operatoren" ;
+ Text [ ENGLISH ] = "Operands" ;
+ Text [ norwegian ] = "Operands" ;
+ Text [ italian ] = "Operatori" ;
+ Text [ portuguese_brazilian ] = "Operands" ;
+ Text [ portuguese ] = "Operadores" ;
+ Text [ finnish ] = "Operaattorit" ;
+ Text [ danish ] = "Operatorer" ;
+ Text [ french ] = "Opérateurs" ;
+ Text [ swedish ] = "Operatorer" ;
+ Text [ dutch ] = "Operatoren" ;
+ Text [ spanish ] = "Operadores" ;
+ Text [ english_us ] = "Operators" ;
+ Text[ chinese_simplified ] = "ÔËËã·û";
+ Text[ russian ] = "Îïðåàòîðû";
+ Text[ polish ] = "Operatory";
+ Text[ japanese ] = "‰‰ŽZŽq";
+ Text[ chinese_traditional ] = "¹Bºâ²Å";
+ Text[ arabic ] = "ÚæÇãá ÇáÊÔÛíá";
+ Text[ greek ] = "ÔåëåóôÝò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ turkish ] = "Ýþleçler";
+ };
+ MenuItem
+ {
+ Identifier = 10 ;
+ Text = "Ränder" ;
+ Text [ ENGLISH ] = "Border" ;
+ TEXT[ italian ] = "Margini";
+ TEXT[ portuguese_brazilian ] = "Ränder";
+ TEXT[ portuguese ] = "Margens";
+ TEXT[ danish ] = "Margener";
+ TEXT[ french ] = "Marges";
+ TEXT[ swedish ] = "Marginaler";
+ TEXT[ dutch ] = "Marges";
+ TEXT[ spanish ] = "Márgenes";
+ TEXT[ english_us ] = "Borders";
+ TEXT[ chinese_simplified ] = "±ß";
+ TEXT[ russian ] = "Ïîëÿ";
+ TEXT[ polish ] = "Krawêdzie";
+ TEXT[ japanese ] = "—]”’";
+ TEXT[ chinese_traditional ] = "Ãä®Ø";
+ TEXT[ arabic ] = "ÃØÑÇÝ";
+ TEXT[ greek ] = "ÐåñéãñÜììáôá";
+ TEXT[ korean ] = "¿Ü°û¼±";
+ TEXT[ turkish ] = "Kenarlar";
+ };
+ };
+};
+
+Menu RID_FONTMENU
+{
+ ItemList =
+ {
+ MenuItem
+ {
+ Text = "Variablen" ;
+ Text [ ENGLISH ] = "Variables" ;
+ Text [ norwegian ] = "Variabler" ;
+ Text [ italian ] = "Variabili" ;
+ Text [ portuguese_brazilian ] = "Variáveis" ;
+ Text [ portuguese ] = "Variáveis" ;
+ Text [ finnish ] = "Muuttujat" ;
+ Text [ danish ] = "Variabler" ;
+ Text [ french ] = "Variables" ;
+ Text [ swedish ] = "Variabler" ;
+ Text [ dutch ] = "Variabelen" ;
+ Text [ spanish ] = "Variables" ;
+ Text [ english_us ] = "Variables" ;
+ Text[ chinese_simplified ] = "±äÁ¿";
+ Text[ russian ] = "Ïåðåìåííûå";
+ Text[ polish ] = "Zmienne";
+ Text[ japanese ] = "•Ï”";
+ Text[ chinese_traditional ] = "Åܶq";
+ Text[ arabic ] = "ãÊÛíÑÇÊ";
+ Text[ greek ] = "ÌåôáâëçôÝò";
+ Text[ korean ] = "º¯¼ö";
+ Text[ turkish ] = "Deðiþkenler";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = 2 ;
+ Text = "Funktionen" ;
+ Text [ ENGLISH ] = "Functions" ;
+ Text [ norwegian ] = "Funksjoner" ;
+ Text [ italian ] = "Funzioni" ;
+ Text [ portuguese_brazilian ] = "Funções" ;
+ Text [ portuguese ] = "Funções" ;
+ Text [ finnish ] = "Toiminnot" ;
+ Text [ danish ] = "Funktioner" ;
+ Text [ french ] = "Fonctions" ;
+ Text [ swedish ] = "Funktioner" ;
+ Text [ dutch ] = "Functies" ;
+ Text [ spanish ] = "Funciones" ;
+ Text [ english_us ] = "Functions" ;
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèè";
+ Text[ polish ] = "Funkcje";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ arabic ] = "ÏÇáÇÊ";
+ Text[ greek ] = "ÓõíáñôÞóåéò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Fonksiyon";
+ };
+ MenuItem
+ {
+ Identifier = 3 ;
+ Text = "Zahlen" ;
+ Text [ ENGLISH ] = "Numbers" ;
+ Text [ norwegian ] = "Numbers" ;
+ Text [ italian ] = "Numeri" ;
+ Text [ portuguese_brazilian ] = "Números" ;
+ Text [ portuguese ] = "Números" ;
+ Text [ finnish ] = "Numerot" ;
+ Text [ danish ] = "Tal" ;
+ Text [ french ] = "Nombres" ;
+ Text [ swedish ] = "Tal" ;
+ Text [ dutch ] = "Getallen" ;
+ Text [ spanish ] = "Números" ;
+ Text [ english_us ] = "Numbers" ;
+ Text[ chinese_simplified ] = "Êý×Ö";
+ Text[ russian ] = "×èñëà";
+ Text[ polish ] = "Liczby";
+ Text[ japanese ] = "”’l";
+ Text[ chinese_traditional ] = "¼Æ¦r";
+ Text[ arabic ] = "ÃÑÞÇã";
+ Text[ greek ] = "Áñéèìïß";
+ Text[ korean ] = "¹øÈ£";
+ Text[ turkish ] = "Sayýlar";
+ };
+ MenuItem
+ {
+ Identifier = 4 ;
+ Text = "Text" ;
+ Text [ ENGLISH ] = "Text" ;
+ Text [ norwegian ] = "Text" ;
+ Text [ italian ] = "Testo" ;
+ Text [ portuguese_brazilian ] = "Texto" ;
+ Text [ portuguese ] = "Texto" ;
+ Text [ finnish ] = "Teksti" ;
+ Text [ danish ] = "Tekst" ;
+ Text [ french ] = "Texte" ;
+ Text [ swedish ] = "Text" ;
+ Text [ dutch ] = "Tekst" ;
+ Text [ spanish ] = "Texto" ;
+ Text [ english_us ] = "Text" ;
+ Text[ chinese_simplified ] = "ÎÄ×Ö";
+ Text[ russian ] = "Òåêñò";
+ Text[ polish ] = "Tekst";
+ Text[ japanese ] = "÷½Ä";
+ Text[ chinese_traditional ] = "¤å¦r";
+ Text[ arabic ] = "äÕ";
+ Text[ greek ] = "Êåßìåíï";
+ Text[ korean ] = "ÅؽºÆ®";
+ Text[ turkish ] = "Metin";
+ Text[ language_user1 ] = " ";
+ };
+ MenuItem
+ {
+ Identifier = 5 ;
+ Text = "Serif" ;
+ Text [ ENGLISH ] = "Serif" ;
+ Text [ norwegian ] = "Serif" ;
+ Text [ italian ] = "Serif" ;
+ Text [ portuguese_brazilian ] = "Serif" ;
+ Text [ portuguese ] = "Serif" ;
+ Text [ finnish ] = "Serif" ;
+ Text [ danish ] = "Serif" ;
+ Text [ french ] = "Serif" ;
+ Text [ swedish ] = "Serif" ;
+ Text [ dutch ] = "Schreefletters" ;
+ Text [ spanish ] = "Serif" ;
+ Text [ english_us ] = "Serif" ;
+ Text[ chinese_simplified ] = "ϸÌå";
+ Text[ russian ] = "Ñåðèô";
+ Text[ polish ] = "Serif";
+ Text[ japanese ] = "Serif";
+ Text[ chinese_traditional ] = "Serif";
+ Text[ arabic ] = "Serif";
+ Text[ greek ] = "Serif";
+ Text[ korean ] = "Serif";
+ Text[ turkish ] = "Serif";
+ };
+ MenuItem
+ {
+ Identifier = 6 ;
+ Text = "Sans" ;
+ Text [ ENGLISH ] = "Sans" ;
+ Text [ norwegian ] = "Sans" ;
+ Text [ italian ] = "Sans" ;
+ Text [ portuguese_brazilian ] = "Sans" ;
+ Text [ portuguese ] = "Sans" ;
+ Text [ finnish ] = "Sans" ;
+ Text [ danish ] = "Sans" ;
+ Text [ french ] = "Sans" ;
+ Text [ swedish ] = "Sans" ;
+ Text [ dutch ] = "Schreefloze letters" ;
+ Text [ spanish ] = "Sans" ;
+ Text [ english_us ] = "Sans" ;
+ Text[ chinese_simplified ] = "Sans";
+ Text[ russian ] = "Ñàíñ";
+ Text[ polish ] = "Sans";
+ Text[ japanese ] = "Sans";
+ Text[ chinese_traditional ] = "Sans";
+ Text[ arabic ] = "Sans";
+ Text[ greek ] = "Sans";
+ Text[ korean ] = "Sans";
+ Text[ turkish ] = "Sans";
+ };
+ MenuItem
+ {
+ Identifier = 7 ;
+ Text = "Fixed" ;
+ Text [ ENGLISH ] = "Fixed" ;
+ Text [ norwegian ] = "Fixed" ;
+ Text [ italian ] = "Fisso" ;
+ Text [ portuguese_brazilian ] = "Fixo" ;
+ Text [ portuguese ] = "Fixo" ;
+ Text [ finnish ] = "Vakio" ;
+ Text [ danish ] = "Fixed" ;
+ Text [ french ] = "Fixe" ;
+ Text [ swedish ] = "Fixerad" ;
+ Text [ dutch ] = "Vast" ;
+ Text [ spanish ] = "Fijo" ;
+ Text [ english_us ] = "Fixed" ;
+ Text[ chinese_simplified ] = "¹Ì¶¨µÄ";
+ Text[ russian ] = "Ôèêñèðîâàííûé";
+ Text[ polish ] = "Sta³y";
+ Text[ japanese ] = "΁Տ";
+ Text[ chinese_traditional ] = "©T©wªº";
+ Text[ arabic ] = "ËÇÈÊ";
+ Text[ greek ] = "ÓôáèåñÜ";
+ Text[ korean ] = "°íÁ¤µÊ";
+ Text[ turkish ] = "Sabit";
+ };
+ };
+};
+
+ErrorBox RID_WRITESYMBOLERROR
+{
+ Message = "Die Symboldatei '%FILE%' kann nicht gespeichert werden !" ;
+ Message [ ENGLISH ] = "The symbolfile '%FILE%' can not save!" ;
+ Message [ norwegian ] = "The symbolfile '%FILE%' can not save!" ;
+ Message [ italian ] = "Impossibile salvare il file dei simboli '%FILE%'." ;
+ Message [ portuguese_brazilian ] = "O arquivo símbolo '%FILE%' não pode gravar!" ;
+ Message [ portuguese ] = "O ficheiro de símbolos '%FILE%' não pode ser guardado!" ;
+ Message [ finnish ] = "Symbolitiedostoa '%FILE%' ei voi tallentaa!" ;
+ Message [ danish ] = "Det er ikke muligt at gemme symbolfilen '%FILE%'!" ;
+ Message [ french ] = "Impossible d'enregistrer le fichier de symboles '%FILE%' !" ;
+ Message [ swedish ] = "Symbolfilen '%FILE%' kan inte sparas !" ;
+ Message [ dutch ] = "Het symbolenbestand '%FILE%' kan niet worden opgeslagen!" ;
+ Message [ spanish ] = "¡No se puede guardar el archivo de símbolos '%FILE%'!" ;
+ Message [ english_us ] = "The symbol file '%FILE%' cannot be saved." ;
+ Message[ chinese_simplified ] = "ÎÞ·¨´æÅÌÎļþ'%FILE%' £¡";
+ Message[ russian ] = "Ñîõðàíèòü ôàéë ñèìâîëîâ '%FILE%' íå óäàåòñÿ !";
+ Message[ polish ] = "Pliku symboli '%FILE%' nie mo¿na zapisaæ!";
+ Message[ japanese ] = "¼ÝÎÞ٠̧²Ù'%FILE%'‚ª•Û‘¶‚Å‚«‚Ü‚¹‚ñ!";
+ Message[ chinese_traditional ] = "µLªkÀx¦sÀÉ®×'%FILE%' ¡I";
+ Message[ arabic ] = "áÇ íãßä ÍÝÙ ãáÝ ÇáÑãæÒ '%FILE%'!";
+ Message[ greek ] = "Ôï áñ÷åßï óõìâüëùí '%FILE%' äåí åßíáé äõíáôüí íá áðïèçêåõôåß!";
+ Message[ korean ] = "±âÈ£ ÆÄÀÏ'%FILE%'À» ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù!";
+ Message[ turkish ] = "Simge dosyasý '%FILE%' kaydedilemiyor!";
+ Message[ language_user1 ] = " ";
+};
+ErrorBox RID_READSYMBOLERROR
+{
+ Message = "Die Symboldatei '%FILE%' kann nicht geladen werden !" ;
+ Message [ ENGLISH ] = "The symbolfile '%FILE%' can not load!" ;
+ Message [ norwegian ] = "The symbolfile '%FILE%' can not load!" ;
+ Message [ italian ] = "Impossibile caricare il file dei simboli '%FILE%'." ;
+ Message [ portuguese_brazilian ] = "O arquivo símbolo '%FILE%' não pode carregar!" ;
+ Message [ portuguese ] = "O ficheiro de símbolos '%FILE%' não pode ser carregado!" ;
+ Message [ finnish ] = "Symbolitiedostoa '%FILE%' ei voi lukea!" ;
+ Message [ danish ] = "Det er ikke muligt at indlæse symbolfilen '%FILE%'!" ;
+ Message [ french ] = "Impossible de charger le fichier de symboles '%FILE%' !" ;
+ Message [ swedish ] = "Symbolfilen '%FILE%' kan inte laddas !" ;
+ Message [ dutch ] = "Het symbolenbestand '%FILE%' kan niet worden geladen!" ;
+ Message [ spanish ] = "¡No se puede cargar el archivo de símbolos '%FILE%'!" ;
+ Message [ english_us ] = "The symbol file '%FILE%' cannot be loaded." ;
+ Message[ chinese_simplified ] = "ÎÞ·¨×°ÔØͼ±êÎļþ'%FILE%' £¡";
+ Message[ russian ] = "Çàãðóçèòü ôàéë ñèìâîëîâ '%FILE%' íå óäàåòñÿ !";
+ Message[ polish ] = "Pliku symboli '%FILE%' nie mo¿na za³adowaæ!";
+ Message[ japanese ] = "¼ÝÎÞ٠̧²Ù'%FILE%'‚ª“Ç‚Ýž‚Ý‚Å‚«‚Ü‚¹‚ñ!";
+ Message[ chinese_traditional ] = "µLªk¸Ë¸ü¹Ï¥ÜÀÉ®×'%FILE%' ¡I";
+ Message[ arabic ] = "áÇ íãßä ÊÍãíá ãáÝ ÇáÑãæÒ '%FILE%'!";
+ Message[ greek ] = "Äåí åßíáé äõíáôüí íá ãßíåé öüñôùóç ôïõ áñ÷åßïõ óõìâüëùí '%FILE%'!";
+ Message[ korean ] = "±âÈ£ ÆÄÀÏ'%FILE%'À» ·ÎµåÇÒ ¼ö ¾ø½À´Ï´Ù!";
+ Message[ turkish ] = "Simge dosyasý '%FILE%' yüklenemiyor!";
+ Message[ language_user1 ] = " ";
+};
+
+FloatingWindow RID_TOOLBOXWINDOW
+{
+ HelpId = HID_SMA_OPERATOR_WIN ;
+ Border = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Hide = TRUE ;
+ OutputSize = TRUE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 0 , 0 ) ;
+ Text = "Auswahl" ;
+ Text [ ENGLISH ] = "Selection" ;
+ ToolBox 1
+ {
+ // unary/binary operators
+ HelpId = HID_SMA_UNBINOPS_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 4 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "unop.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_PLUSX ;
+ RID_MINUSX ;
+ RID_PLUSMINUSX ;
+ RID_MINUSPLUSX ;
+ RID_XPLUSY ;
+ RID_XCDOTY ;
+ RID_XTIMESY ;
+ RID_XSYMTIMESY ;
+ RID_XMINUSY ;
+ RID_XOVERY ;
+ RID_XDIVY ;
+ RID_XSYMDIVIDEY ;
+ RID_NEGX ;
+ RID_XANDY ;
+ RID_XORY ;
+ RID_XCIRCY ;
+ };
+ IdCount =
+ {
+ 16 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_PLUSX ;
+ HelpId = HID_SMA_PLUSX ;
+ Text = "Vorzeichen +" ;
+ Text [ ENGLISH ] = "sign +" ;
+ Text [ english_us ] = "+ sign" ;
+ Text [ portuguese_brazilian ] = "Vorzeichen +" ;
+ Text [ swedish ] = "Förtecken +" ;
+ Text [ danish ] = "fortegn +" ;
+ Text [ italian ] = "Segno +" ;
+ Text [ spanish ] = "Signo +" ;
+ Text [ french ] = "Signe +" ;
+ Text [ dutch ] = "Voorteken +" ;
+ Text [ portuguese ] = "sinal +" ;
+ Text[ chinese_simplified ] = "·ûºÅ +";
+ Text[ russian ] = "Çíàê âïåðåäè +";
+ Text[ polish ] = "Znak +";
+ Text[ japanese ] = "•„†+";
+ Text[ chinese_traditional ] = "²Å¸¹ +";
+ Text[ arabic ] = "+ ÚáÇãÉ";
+ Text[ greek ] = "Ðñüóçìï +";
+ Text[ korean ] = "+ ±âÈ£";
+ Text[ turkish ] = "+ iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_MINUSX ;
+ HelpId = HID_SMA_MINUSX ;
+ Text = "Vorzeichen -" ;
+ Text [ ENGLISH ] = "sign -" ;
+ Text [ english_us ] = "- sign" ;
+ Text [ portuguese_brazilian ] = "Vorzeichen -" ;
+ Text [ swedish ] = "Förtecken -" ;
+ Text [ danish ] = "fortegn -" ;
+ Text [ italian ] = "Segno -" ;
+ Text [ spanish ] = "Signo -" ;
+ Text [ french ] = "Signe -" ;
+ Text [ dutch ] = "Voorteken -" ;
+ Text [ portuguese ] = "Sinal -" ;
+ Text[ chinese_simplified ] = "¸º·ûºÅ";
+ Text[ russian ] = "Çíàê -";
+ Text[ polish ] = "Znak -";
+ Text[ japanese ] = "•„†-";
+ Text[ chinese_traditional ] = "­t²Å¸¹";
+ Text[ arabic ] = "- ÚáÇãÉ";
+ Text[ greek ] = "Ðñüóçìï -";
+ Text[ korean ] = "- ±âÈ£";
+ Text[ turkish ] = "- iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_PLUSMINUSX ;
+ HelpId = HID_SMA_PLUSMINUSX ;
+ Text = "Vorzeichen +-" ;
+ Text [ ENGLISH ] = "sign +-" ;
+ Text [ english_us ] = "+- Sign" ;
+ Text [ portuguese_brazilian ] = "Vorzeichen +-" ;
+ Text [ swedish ] = "Förtecken +-" ;
+ Text [ danish ] = "fortegn +-" ;
+ Text [ italian ] = "Segno +-" ;
+ Text [ spanish ] = "Signo +-" ;
+ Text [ french ] = "Signe +" ;
+ Text [ dutch ] = "Voorteken +-" ;
+ Text [ portuguese ] = "Sinal +-" ;
+ Text[ chinese_simplified ] = "Õý¸º·ûºÅ";
+ Text[ russian ] = "Çíàê +-";
+ Text[ polish ] = "Znak +-";
+ Text[ japanese ] = "•„†+-";
+ Text[ chinese_traditional ] = "¥¿­t²Å¸¹";
+ Text[ arabic ] = "+- ÚáÇãÉ";
+ Text[ greek ] = "Ðñüóçìï +-";
+ Text[ korean ] = "+- ±âÈ£";
+ Text[ turkish ] = "+- iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_MINUSPLUSX ;
+ HelpId = HID_SMA_MINUSPLUSX ;
+ Text = "Vorzeichen -+" ;
+ Text [ ENGLISH ] = "sign-+" ;
+ Text [ english_us ] = "-+ Sign" ;
+ Text [ portuguese_brazilian ] = "Vorzeichen -+" ;
+ Text [ swedish ] = "Förtecken -+" ;
+ Text [ danish ] = "fortegn -+" ;
+ Text [ italian ] = "Segno -+" ;
+ Text [ spanish ] = "Signo -+" ;
+ Text [ french ] = "Signe -+" ;
+ Text [ dutch ] = "Voorteken -+" ;
+ Text [ portuguese ] = "Sinal -+" ;
+ Text[ chinese_simplified ] = "¸ºÕý·ûºÅ";
+ Text[ russian ] = "Çíàê -+";
+ Text[ polish ] = "Znak -+";
+ Text[ japanese ] = "•„†-+";
+ Text[ chinese_traditional ] = "­t¥¿²Å¸¹";
+ Text[ arabic ] = "-+ ÚáÇãÉ";
+ Text[ greek ] = "Ðñüóçìï -+";
+ Text[ korean ] = "-+ ±âÈ£";
+ Text[ turkish ] = "-+ iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_NEGX ;
+ HelpId = HID_SMA_NEGX ;
+ Text = "Logisches NICHT" ;
+ Text [ ENGLISH ] = "logical NOT" ;
+ Text [ english_us ] = "Boolean NOT" ;
+ Text [ portuguese_brazilian ] = "Logisches NICHT" ;
+ Text [ swedish ] = "logiskt INTE" ;
+ Text [ danish ] = "logisk IKKE" ;
+ Text [ italian ] = "NO logico" ;
+ Text [ spanish ] = "NO lógico" ;
+ Text [ french ] = "NON logique" ;
+ Text [ dutch ] = "Logisch NIET" ;
+ Text [ portuguese ] = "NÃO lógico" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ NOT";
+ Text[ russian ] = "Ëîãè÷åñêîå ÍÅ";
+ Text[ polish ] = "Funkcja logiczna NIE";
+ Text[ japanese ] = "˜_—‰‰ŽZŽq NOT";
+ Text[ chinese_traditional ] = "Å޿誺 NOT";
+ Text[ arabic ] = "áÇ ãäØÞíÉ";
+ Text[ greek ] = "ÔåëåóôÞò NOT ôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð NOT";
+ Text[ turkish ] = "Mantýksal DEÐÝL";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XPLUSY ;
+ HelpId = HID_SMA_XPLUSY ;
+ Text = "Additions +" ;
+ Text [ ENGLISH ] = "addition +" ;
+ Text [ english_us ] = "Addition +" ;
+ Text [ portuguese_brazilian ] = "Additions +" ;
+ Text [ swedish ] = "addition +" ;
+ Text [ danish ] = "additions +" ;
+ Text [ italian ] = "Addizione +" ;
+ Text [ spanish ] = "+ de suma" ;
+ Text [ french ] = "+ d'addition" ;
+ Text [ dutch ] = "Optellen +" ;
+ Text [ portuguese ] = "Adição +" ;
+ Text[ chinese_simplified ] = "¼Ó·¨ +";
+ Text[ russian ] = "Ñëîæåíèå +";
+ Text[ polish ] = "Dodawanie +";
+ Text[ japanese ] = "‘«ŽZ+";
+ Text[ chinese_traditional ] = "¥[ªk +";
+ Text[ arabic ] = "+ ÌãÚ";
+ Text[ greek ] = "¢èñïéóìá +";
+ Text[ korean ] = "µ¡¼À +";
+ Text[ turkish ] = "Toplama +";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XCDOTY ;
+ HelpId = HID_SMA_XCDOTY ;
+ Text = "Multiplikation (Punkt)" ;
+ Text [ ENGLISH ] = "multiplication (dot)" ;
+ Text [ english_us ] = "multiplication (Dot )" ;
+ Text [ portuguese_brazilian ] = "Multiplikation (Punkt)" ;
+ Text [ swedish ] = "multiplikation (punkt)" ;
+ Text [ danish ] = "multiplikation (punkt)" ;
+ Text [ italian ] = "Moltiplicazione (punto)" ;
+ Text [ spanish ] = "Multiplicación (Punto)" ;
+ Text [ french ] = "Multiplication (Point)" ;
+ Text [ dutch ] = "Vermenigvuldigen (punt)" ;
+ Text [ portuguese ] = "Multiplicação (ponto)" ;
+ Text[ chinese_simplified ] = "³Ë·¨(µã)";
+ Text[ russian ] = "Óìíîæåíèå (òî÷êà)";
+ Text[ polish ] = "Mno¿enie (Kropka)";
+ Text[ japanese ] = "Š|ŽZ(“_)";
+ Text[ chinese_traditional ] = "­¼ªk(ÂI)";
+ Text[ arabic ] = "(.) ÖÑÈ";
+ Text[ greek ] = "Ðïëëáðëáóéáóìüò (Êïõêêßäá)";
+ Text[ korean ] = "°ö¼À(. )";
+ Text[ turkish ] = "Çarpým (.)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XTIMESY ;
+ HelpId = HID_SMA_XTIMESY ;
+ Text = "Multiplikation (Kreuz)" ;
+ Text [ ENGLISH ] = "multiplication (cross)" ;
+ Text [ english_us ] = "multiplication (x)" ;
+ Text [ portuguese_brazilian ] = "Multiplikation (Kreuz)" ;
+ Text [ swedish ] = "multiplikation (x)" ;
+ Text [ danish ] = "multiplikation (x)" ;
+ Text [ italian ] = "Moltiplicazione (per)" ;
+ Text [ spanish ] = "Multiplicación (cruz)" ;
+ Text [ french ] = "Multiplication (croix)" ;
+ Text [ dutch ] = "Vermenigvuldigen (kruisje)" ;
+ Text [ portuguese ] = "Multiplicação (cruz)" ;
+ Text[ chinese_simplified ] = "³Ë·¨(½»²æ·û)";
+ Text[ russian ] = "Óìíîæåíèå (êðåñòèê)";
+ Text[ polish ] = "Mno¿enie (x)";
+ Text[ japanese ] = "Š|ŽZ(Íß¹)";
+ Text[ chinese_traditional ] = "­¼ªk(¥æ¤e²Å)";
+ Text[ arabic ] = "(x) ÖÑÈ";
+ Text[ greek ] = "Ðïëëáðëáóéáóìüò (x)";
+ Text[ korean ] = "°ö¼À(x)";
+ Text[ turkish ] = "Çarpým (x)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSYMTIMESY ;
+ HelpId = HID_SMA_XSYMTIMESY ;
+ Text = "Multiplikation (Stern)" ;
+ Text [ ENGLISH ] = "multiplication (star)" ;
+ Text [ english_us ] = "multiplication (*)" ;
+ Text [ portuguese_brazilian ] = "Multiplikation (Stern)" ;
+ Text [ swedish ] = "multiplikation (*)" ;
+ Text [ danish ] = "multiplikation (stjerne)" ;
+ Text [ italian ] = "Moltiplicazione (asterisco)" ;
+ Text [ spanish ] = "Multiplicación (estrella)" ;
+ Text [ french ] = "Multiplication (étoile)" ;
+ Text [ dutch ] = "Vermenigvuldigen (sterretje)" ;
+ Text [ portuguese ] = "Multiplicação (asterisco)" ;
+ Text[ chinese_simplified ] = "³Ë·¨(ÐǺÅ)";
+ Text[ russian ] = "Óìíîæåíèå (çâåçäî÷êà)";
+ Text[ polish ] = "Mno¿enie (gwiazdka)";
+ Text[ japanese ] = "Š|ŽZ(•Äˆó)";
+ Text[ chinese_traditional ] = "­¼ªk(¬P¸¹)";
+ Text[ arabic ] = "(*) ÖÑÈ";
+ Text[ greek ] = "Ðïëëáðëáóéáóìüò (*)";
+ Text[ korean ] = "°ö¼À (*)";
+ Text[ turkish ] = "Çarpým (*)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XANDY ;
+ HelpId = HID_SMA_XANDY ;
+ Text = "Logisches UND" ;
+ Text [ ENGLISH ] = "logical AND" ;
+ Text [ english_us ] = "Boolean AND" ;
+ Text [ portuguese_brazilian ] = "Logisches UND" ;
+ Text [ swedish ] = "logiskt OCH" ;
+ Text [ danish ] = "logisk OG" ;
+ Text [ italian ] = "E logico" ;
+ Text [ spanish ] = "Y lógico" ;
+ Text [ french ] = "ET logique" ;
+ Text [ dutch ] = "Logisch EN" ;
+ Text [ portuguese ] = "E lógico" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ AND";
+ Text[ russian ] = "Ëîãè÷åñêîå È";
+ Text[ polish ] = "Funkcja logiczna ORAZ";
+ Text[ japanese ] = "˜_—Ï AND";
+ Text[ chinese_traditional ] = "Å޿誺 AND";
+ Text[ arabic ] = "æ ãäØÞíÉ";
+ Text[ greek ] = "ÔåëåóôÞò ANDôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð AND";
+ Text[ turkish ] = "Mantýksal VE";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XMINUSY ;
+ HelpId = HID_SMA_XMINUSY ;
+ Text = "Subtraktions -" ;
+ Text [ ENGLISH ] = "subtraction -" ;
+ Text [ english_us ] = "subtraction -" ;
+ Text [ portuguese_brazilian ] = "Subtraktions -" ;
+ Text [ swedish ] = "subtraktion -" ;
+ Text [ danish ] = "subtraktions -" ;
+ Text [ italian ] = "Sottrazione -" ;
+ Text [ spanish ] = "Restas -" ;
+ Text [ french ] = "- de soustraction" ;
+ Text [ dutch ] = "Aftrekken (-)" ;
+ Text [ portuguese ] = "Subtracção -" ;
+ Text[ chinese_simplified ] = "¼õ·¨ -";
+ Text[ russian ] = "Âû÷èòàíèå -";
+ Text[ polish ] = "Odejmowanie -";
+ Text[ japanese ] = "ˆøŽZ-";
+ Text[ chinese_traditional ] = "´îªk -";
+ Text[ arabic ] = "ØÑÍ Ü";
+ Text[ greek ] = "Áöáßñåóç -";
+ Text[ korean ] = "»¬¼À -";
+ Text[ turkish ] = "Çýkarma -";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XOVERY ;
+ HelpId = HID_SMA_XOVERY ;
+ Text = "Division (Bruch)" ;
+ Text [ ENGLISH ] = "division (fraction)" ;
+ Text [ english_us ] = "Division (Fraction)" ;
+ Text [ portuguese_brazilian ] = "Division (Bruch)" ;
+ Text [ swedish ] = "Division (bråk)" ;
+ Text [ danish ] = "division (brøk)" ;
+ Text [ italian ] = "Divisione (frazione)" ;
+ Text [ spanish ] = "División (fracción)" ;
+ Text [ french ] = "Division (fraction)" ;
+ Text [ dutch ] = "Delen (breuk)" ;
+ Text [ portuguese ] = "Divisão (fracção)" ;
+ Text[ chinese_simplified ] = "³ý·¨(·ÖÊý)";
+ Text[ russian ] = "Äåëåíèå (äðîáü)";
+ Text[ polish ] = "Dzielenie (U³amek)";
+ Text[ japanese ] = "Š„ŽZ(•ª”)";
+ Text[ chinese_traditional ] = "°£ªk(¤À¼Æ)";
+ Text[ arabic ] = "ÞÓãÉ (ßÓÑ)";
+ Text[ greek ] = "Äéáßñåóç (ÊëÜóìá)";
+ Text[ korean ] = "³ª´°¼À (ºÐ¼ö)";
+ Text[ turkish ] = "Bölme (kesir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XDIVY ;
+ HelpId = HID_SMA_XDIVY ;
+ Text = "Division (Doppelpunkt-Strich)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Division (÷)" ;
+ Text [ portuguese_brazilian ] = "Division (Doppelpunkt-Strich)" ;
+ Text [ swedish ] = "Division (kolon/snedstreck)" ;
+ Text [ danish ] = "division (kolon-streg)" ;
+ Text [ italian ] = "Divisione (due punti-trattino)" ;
+ Text [ spanish ] = "División (dos puntos-raya)" ;
+ Text [ french ] = "Division (÷)" ;
+ Text [ dutch ] = "Delen (dubbele punt-streepje)" ;
+ Text [ portuguese ] = "Divisão (÷)" ;
+ Text[ chinese_simplified ] = "³ý·¨(Ò»ÐÐË«µã)";
+ Text[ russian ] = "Äåëåíèå (äâîåòî÷èå ñ ÷åðòîé)";
+ Text[ polish ] = "Dzielenie (Dwukropek-Kreska)";
+ Text[ japanese ] = "Š„ŽZ(ü‚É2“_)";
+ Text[ chinese_traditional ] = "°£ªk(¤@¦æÂùÂI)";
+ Text[ arabic ] = "(÷) ÞÓãÉ";
+ Text[ greek ] = "Division (¸)";
+ Text[ korean ] = "³ª´°¼À (?";
+ Text[ turkish ] = "Bölme (÷)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSYMDIVIDEY ;
+ HelpId = HID_SMA_XSYMDIVIDEY ;
+ Text = "Division (Schrägstrich)" ;
+ Text [ ENGLISH ] = "division (slash)" ;
+ Text [ english_us ] = "Division (Slash)" ;
+ Text [ portuguese_brazilian ] = "Division (Schrägstrich)" ;
+ Text [ swedish ] = "Division (snedstreck)" ;
+ Text [ danish ] = "division (skråstreg)" ;
+ Text [ italian ] = "Divisione (barra)" ;
+ Text [ spanish ] = "División (barra oblicua)" ;
+ Text [ french ] = "Division (barre oblique)" ;
+ Text [ dutch ] = "Delen (schuine streep)" ;
+ Text [ portuguese ] = "Divisão (barra diagonal)" ;
+ Text[ chinese_simplified ] = "³ý·¨(бÏß)";
+ Text[ russian ] = "Äåëåíèå (êîñàÿ ÷åðòà)";
+ Text[ polish ] = "Dzielenie (Kreska ukoœna)";
+ Text[ japanese ] = "Š„ŽZ(ŽÎü)";
+ Text[ chinese_traditional ] = "°£ªk(±×½u)";
+ Text[ arabic ] = "(/) ÞÓãÉ";
+ Text[ greek ] = "Äéáßñåóç (ÊÜèåôïò)";
+ Text[ korean ] = "³ª´°¼À (/)";
+ Text[ turkish ] = "Bölme (/)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XORY ;
+ HelpId = HID_SMA_XORY ;
+ Text = "Logisches ODER" ;
+ Text [ ENGLISH ] = "logical OR" ;
+ Text [ english_us ] = "Boolean OR" ;
+ Text [ portuguese_brazilian ] = "Logisches ODER" ;
+ Text [ swedish ] = "logiskt ELLER" ;
+ Text [ danish ] = "logisk ELLER" ;
+ Text [ italian ] = "O logico" ;
+ Text [ spanish ] = "O lógico" ;
+ Text [ french ] = "OU logique" ;
+ Text [ dutch ] = "Logisch OF" ;
+ Text [ portuguese ] = "OU lógico" ;
+ Text[ chinese_simplified ] = "Âß¼­µÄ OR";
+ Text[ russian ] = "Ëîãè÷åñêîå ÈËÈ";
+ Text[ polish ] = "Funkcja logiczna LUB";
+ Text[ japanese ] = "˜_—˜a(OR)";
+ Text[ chinese_traditional ] = "Å޿誺 OR";
+ Text[ arabic ] = "Ãæ ãäØÞíÉ";
+ Text[ greek ] = "ÔåëåóôÞò ORôïõ Boole";
+ Text[ korean ] = "ºÒ¸®¾ð OR";
+ Text[ turkish ] = "Mantýksal VEYA";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XCIRCY ;
+ HelpId = HID_SMA_XCIRCY ;
+ Text = "Verkettung" ;
+ Text [ ENGLISH ] = "Composition" ;
+ TEXT[ italian ] = "Concatenazione";
+ TEXT[ portuguese_brazilian ] = "Verkettung";
+ TEXT[ portuguese ] = "Concatenar";
+ TEXT[ danish ] = "funktionssammensætning";
+ TEXT[ french ] = "Enchaînement";
+ TEXT[ swedish ] = "Kedjning";
+ TEXT[ dutch ] = "Aaneenschakeling";
+ TEXT[ spanish ] = "Encadenamiento";
+ TEXT[ english_us ] = "Catenate";
+ TEXT[ chinese_simplified ] = "Á¬Ëø";
+ TEXT[ russian ] = "Êîìïîçèöèÿ";
+ TEXT[ polish ] = "Z³¹czenie";
+ TEXT[ japanese ] = "˜AŒ‹";
+ TEXT[ chinese_traditional ] = "³sÂê";
+ TEXT[ arabic ] = "ÓóáÓóáÉ";
+ TEXT[ greek ] = "Äçìéïõñãßá áëëçëïõ÷ßáò";
+ TEXT[ korean ] = "¿¬°á";
+ TEXT[ turkish ] = "Zincirleme";
+ TEXT[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 2
+ {
+ // relations
+ HelpId = HID_SMA_RELATIONS_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 5 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "biop.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_XEQY ;
+ RID_XNEQY ;
+ RID_XEQUIVY ;
+ RID_XORTHOY ;
+ RID_XLTY ;
+ RID_XGTY ;
+ RID_XAPPROXY ;
+ RID_XPARALLELY ;
+ RID_XLESLANTY ;
+ RID_XGESLANTY ;
+ RID_XSIMEQY ;
+ RID_XPROPY ;
+ RID_XLEY ;
+ RID_XGEY ;
+ RID_XSIMY ;
+ RID_XTOWARDY ;
+ RID_XDIVIDESY ;
+ RID_XNDIVIDESY;
+ RID_DLARROW ;
+ RID_DLRARROW ;
+ RID_DRARROW ;
+ };
+ IdCount =
+ {
+ 21 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_XEQY ;
+ HelpId = HID_SMA_XEQY ;
+ Text = "ist gleich" ;
+ Text [ ENGLISH ] = "is equal" ;
+ Text [ english_us ] = "Is Equal" ;
+ Text [ portuguese_brazilian ] = "ist gleich" ;
+ Text [ swedish ] = "är lika med" ;
+ Text [ danish ] = "lig med" ;
+ Text [ italian ] = "Uguale a" ;
+ Text [ spanish ] = "es igual" ;
+ Text [ french ] = "est égal à" ;
+ Text [ dutch ] = "is gelijk aan" ;
+ Text [ portuguese ] = "é igual" ;
+ Text[ chinese_simplified ] = "ÏàµÈ";
+ Text[ russian ] = "ðàâíî";
+ Text[ polish ] = "jest równy";
+ Text[ japanese ] = "“™‚µ‚¢";
+ Text[ chinese_traditional ] = "¬Ûµ¥";
+ Text[ arabic ] = "íÓÇæí";
+ Text[ greek ] = "åßíáé ßóï";
+ Text[ korean ] = "µî°¡ÀÔ´Ï´Ù";
+ Text[ turkish ] = "Eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNEQY ;
+ HelpId = HID_SMA_XNEQY ;
+ Text = "ist ungleich" ;
+ Text [ ENGLISH ] = "is not equal" ;
+ Text [ english_us ] = "Is Not Equal" ;
+ Text [ portuguese_brazilian ] = "ist ungleich" ;
+ Text [ swedish ] = "är inte lika med" ;
+ Text [ danish ] = "forskellig fra" ;
+ Text [ italian ] = "Diverso" ;
+ Text [ spanish ] = "no es igual" ;
+ Text [ french ] = "est différent de" ;
+ Text [ dutch ] = "is niet gelijk aan" ;
+ Text [ portuguese ] = "é desigual" ;
+ Text[ chinese_simplified ] = "²»µÈÓÚ";
+ Text[ russian ] = "íå ðàâíî";
+ Text[ polish ] = "nie jest równy";
+ Text[ japanese ] = "“™‚µ‚­‚È‚¢";
+ Text[ chinese_traditional ] = "¤£µ¥©ó";
+ Text[ arabic ] = "áÇ íÓÇæí";
+ Text[ greek ] = "åßíáé äéÜöïñï";
+ Text[ korean ] = "µ¿ÀÏÇÏÁö ¾Ê½À´Ï´Ù.";
+ Text[ turkish ] = "Eþit deðil";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XAPPROXY ;
+ HelpId = HID_SMA_XAPPROXY ;
+ Text = "ist ungefähr gleich" ;
+ Text [ ENGLISH ] = "is approximately equal" ;
+ Text [ english_us ] = "Is Approximately Equal" ;
+ Text [ portuguese_brazilian ] = "ist ungefähr gleich" ;
+ Text [ swedish ] = "är ungefär lika" ;
+ Text [ danish ] = "omtrent lig med" ;
+ Text [ italian ] = "Approssimativamente uguale" ;
+ Text [ spanish ] = "es aprox. igual" ;
+ Text [ french ] = "est approximativement égal à" ;
+ Text [ dutch ] = "is ongeveer gelijk aan" ;
+ Text [ portuguese ] = "é aprox. igual" ;
+ Text[ chinese_simplified ] = "½üËƵÈÓÚ";
+ Text[ russian ] = "ïðèáëèçèòåëüíî ðàâíî";
+ Text[ polish ] = "jest w przybli¿eniu równy";
+ Text[ japanese ] = "‚Ù‚Ú“™‚µ‚¢";
+ Text[ chinese_traditional ] = "ªñ¦üµ¥©ó";
+ Text[ arabic ] = "íÓÇæí ÊÞÑíÈÇð";
+ Text[ greek ] = "åßíáé êáôÜ ðñïóÝããéóç ßóï";
+ Text[ korean ] = "°ÅÀÇ °°À½";
+ Text[ turkish ] = "Yaklaþýk olarak eþit";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XDIVIDESY ;
+ HelpId = HID_SMA_XDIVIDESY ;
+ Text = "teilt" ;
+ Text [ ENGLISH ] = "divides" ;
+ TEXT[ italian ] = "Divide";
+ TEXT[ portuguese_brazilian ] = "teilt";
+ TEXT[ portuguese ] = "divide";
+ TEXT[ danish ] = "er divisor i";
+ TEXT[ french ] = "est un diviseur de";
+ TEXT[ swedish ] = "delar";
+ TEXT[ dutch ] = "deelt";
+ TEXT[ spanish ] = "divide";
+ TEXT[ english_us ] = "Divides";
+ TEXT[ chinese_simplified ] = "¿É±»³ýÓÚ";
+ TEXT[ russian ] = "äåëèòñÿ";
+ TEXT[ polish ] = "dzieli";
+ TEXT[ japanese ] = "Š„‚é";
+ TEXT[ chinese_traditional ] = "¥i³Q°£¤_";
+ TEXT[ arabic ] = "íÞÈá ÇáÞÓãÉ";
+ TEXT[ greek ] = "äéáéñåß";
+ TEXT[ korean ] = "³ª´©±â";
+ TEXT[ turkish ] = "Böler";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNDIVIDESY ;
+ HelpId = HID_SMA_XNDIVIDESY ;
+ Text = "teilt nicht" ;
+ Text [ ENGLISH ] = "divides not" ;
+ TEXT[ italian ] = "Non divide";
+ TEXT[ portuguese_brazilian ] = "teilt nicht";
+ TEXT[ portuguese ] = "não divide";
+ TEXT[ danish ] = "er ikke divisor i";
+ TEXT[ french ] = "n'est pas un diviseur de";
+ TEXT[ swedish ] = "delar ej";
+ TEXT[ dutch ] = "deelt niet";
+ TEXT[ spanish ] = "no divide";
+ TEXT[ english_us ] = "Does Not Divide";
+ TEXT[ chinese_simplified ] = "²»Äܱ»³ýÓÚ";
+ TEXT[ russian ] = "íå äåëèòñÿ";
+ TEXT[ polish ] = "nie dzieli";
+ TEXT[ japanese ] = "Š„‚ç‚È‚¢";
+ TEXT[ chinese_traditional ] = "¤£¯à³Q°£¤_";
+ TEXT[ arabic ] = "áÇ íÞÈá ÇáÞÓãÉ";
+ TEXT[ greek ] = "äåí äéáéñåß";
+ TEXT[ korean ] = "³ª´©¾î ÁöÁö ¾ÊÀ½";
+ TEXT[ turkish ] = "Bölmez";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XLTY ;
+ HelpId = HID_SMA_XLTY ;
+ Text = "ist kleiner als" ;
+ Text [ ENGLISH ] = "is less than" ;
+ Text [ english_us ] = "Is Less Than" ;
+ Text [ portuguese_brazilian ] = "ist kleiner als" ;
+ Text [ swedish ] = "är mindre än" ;
+ Text [ danish ] = "mindre end" ;
+ Text [ italian ] = "Minore di" ;
+ Text [ spanish ] = "es menor que" ;
+ Text [ french ] = "est inférieur à" ;
+ Text [ dutch ] = "is kleiner dan" ;
+ Text [ portuguese ] = "é menor que" ;
+ Text[ chinese_simplified ] = "СÓÚ";
+ Text[ russian ] = "ìåíüøå ÷åì";
+ Text[ polish ] = "jest mniejszy ni¿";
+ Text[ japanese ] = "‚æ‚謂³‚¢";
+ Text[ chinese_traditional ] = "¤p©ó";
+ Text[ arabic ] = "ÃÞá ãä";
+ Text[ greek ] = "åßíáé ìéêñüôåñï áðü";
+ Text[ korean ] = "´ÙÀ½ÀÇ ¹Ì¸¸ÀÓ";
+ Text[ turkish ] = "Küçüktür";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XGTY ;
+ HelpId = HID_SMA_XGTY ;
+ Text = "ist größer als" ;
+ Text [ ENGLISH ] = "is greater than" ;
+ Text [ english_us ] = "Is Greater Than" ;
+ Text [ portuguese_brazilian ] = "ist größer als" ;
+ Text [ swedish ] = "är större än" ;
+ Text [ danish ] = "større end" ;
+ Text [ italian ] = "Maggiore di" ;
+ Text [ spanish ] = "es mayor que" ;
+ Text [ french ] = "est supérieur à" ;
+ Text [ dutch ] = "is groter dan" ;
+ Text [ portuguese ] = "é maior que" ;
+ Text[ chinese_simplified ] = "´óÓÚ";
+ Text[ russian ] = "áîëüøå ÷åì";
+ Text[ polish ] = "jest wiêkszy ni¿";
+ Text[ japanese ] = "‚æ‚è‘å‚«‚¢";
+ Text[ chinese_traditional ] = "¤j©ó";
+ Text[ arabic ] = "ÃßÈÑ ãä";
+ Text[ greek ] = "åßíáé ìåãáëýôåñï áðü";
+ Text[ korean ] = "´ÙÀ½ÀÇ ÃÊ°úÀÓ";
+ Text[ turkish ] = "Büyüktür";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSIMEQY ;
+ HelpId = HID_SMA_XSIMEQY ;
+ /* ### ACHTUNG: Neuer Text in Resource? ist ähnlich oder gleich : ist ähnlich oder glech */
+ Text = "ist ähnlich oder gleich" ;
+ Text [ ENGLISH ] = "is similar or equal" ;
+ Text [ english_us ] = "Is Similar or Equal" ;
+ Text [ portuguese_brazilian ] = "ist ähnlich oder glech" ;
+ Text [ swedish ] = "är liknande eller lika med" ;
+ Text [ danish ] = "tilnærmet eller lig med" ;
+ Text [ italian ] = "È simile o uguale" ;
+ Text [ spanish ] = "es parecido o igual" ;
+ Text [ french ] = "est similaire ou égal à" ;
+ Text [ dutch ] = "is ongeveer gelijk of gelijk aan" ;
+ Text [ portuguese ] = "é idêntico ou igual" ;
+ Text[ chinese_simplified ] = "ÏàËÆÓÚ»òµÈÓÚ";
+ Text[ russian ] = "ïîäîáíî èëè ðàâíî";
+ Text[ polish ] = "jest podobny lub równy";
+ Text[ japanese ] = "‚Ù‚Ú“™‚µ‚¢¤‚ ‚é‚¢‚Í“™‚µ‚¢";
+ Text[ chinese_traditional ] = "¬Û¦ü¤_©Îµ¥©ó";
+ Text[ arabic ] = "ãÔÇÈå Ãæ ãÓÇæí";
+ Text[ greek ] = "åßíáé üìïéï Þ ßóï ìå";
+ Text[ korean ] = "À¯»çÇϰųª µ¿ÀÏÇÔ";
+ Text[ turkish ] = "Benzer ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XPARALLELY ;
+ HelpId = HID_SMA_XPARALLELY ;
+ Text = "ist parallel zu" ;
+ Text [ ENGLISH ] = "is parallel to" ;
+ Text [ english_us ] = "Is Parallel To" ;
+ Text [ portuguese_brazilian ] = "ist parallel zu" ;
+ Text [ swedish ] = "är parallell med" ;
+ Text [ danish ] = "parallel med" ;
+ Text [ italian ] = "parallelo a" ;
+ Text [ spanish ] = "es paralelo a" ;
+ Text [ french ] = "est parallèle à" ;
+ Text [ dutch ] = "is parallel aan" ;
+ Text [ portuguese ] = "é paralelo a" ;
+ Text[ chinese_simplified ] = "ƽÐÐÓÚ";
+ Text[ russian ] = "ïàðàëëåëüíî";
+ Text[ polish ] = "jest równoleg³y do";
+ Text[ japanese ] = "•½s‚·‚é‘ÎÛ";
+ Text[ chinese_traditional ] = "¥­¦æ¤_";
+ Text[ arabic ] = "ãÊæÇÒí ãÚ";
+ Text[ greek ] = "åßíáé ðáñÜëëçëï ðñïò";
+ Text[ korean ] = "¿¡ ÆòÇàÀ¸·Î";
+ Text[ turkish ] = "Paraleldir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XORTHOY ;
+ HelpId = HID_SMA_XORTHOY ;
+ Text = "ist orthogonal zu" ;
+ Text [ ENGLISH ] = "is orthogonal to" ;
+ Text [ english_us ] = "Is Orthogonal to" ;
+ Text [ portuguese_brazilian ] = "ist orthogonal zu" ;
+ Text [ swedish ] = "är ortogonal med" ;
+ Text [ danish ] = "ortogonal på" ;
+ Text [ italian ] = "ortogonale a" ;
+ Text [ spanish ] = "es ortogonal a" ;
+ Text [ french ] = "est perpendiculaire à" ;
+ Text [ dutch ] = "is orthogonaal met" ;
+ Text [ portuguese ] = "é hortogonal a" ;
+ Text[ chinese_simplified ] = "Ö±½ÇÓÚ";
+ Text[ russian ] = "îðòîãîíàëüíî";
+ Text[ polish ] = "jest prostopad³y do";
+ Text[ japanese ] = "’¼Œð‚·‚é‘ÎÛ";
+ Text[ chinese_traditional ] = "ª½¨¤¤_";
+ Text[ arabic ] = "ãÊÚÇãÏ Úáì";
+ Text[ greek ] = "ó÷çìáôßæåé ïñèÞ ãùíßá íå";
+ Text[ korean ] = "¿¡ Á÷°¢À¸·Î";
+ Text[ turkish ] = "dikgen";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XLESLANTY ;
+ HelpId = HID_SMA_XLESLANTY ;
+ /* ### ACHTUNG: Neuer Text in Resource? ist kleiner gleich (schräg) : ist keiner gleich */
+ Text = "ist kleiner gleich (schräg)" ;
+ Text [ ENGLISH ] = "is less than" ;
+ Text [ english_us ] = "Is Less Than or Equal to" ;
+ Text [ portuguese_brazilian ] = "ist keiner gleich" ;
+ Text [ swedish ] = "är mindre än eller lika med (sned)" ;
+ Text [ danish ] = "mindre end eller lig med (skrå)" ;
+ Text [ italian ] = "Minore uguale (barra)" ;
+ Text [ spanish ] = "es menor que o igual a (oblicuo)" ;
+ Text [ french ] = "est inférieur ou égal à (trait oblique)" ;
+ Text [ dutch ] = "is kleiner dan of gelijk aan (schuin)" ;
+ Text [ portuguese ] = "é menor que ou igual a (oblíquo)" ;
+ Text[ chinese_simplified ] = "СÓÚ»òµÈÓÚ";
+ Text[ russian ] = "ìåíüøå èëè ðàâíî (ïîä íàêëîíîì)";
+ Text[ polish ] = "jest mniejszy lub równy (ukoœny)";
+ Text[ japanese ] = "¬‚Ȃ貺°Ù";
+ Text[ chinese_traditional ] = "¤p©ó©Îµ¥©ó";
+ Text[ arabic ] = "ÃÕÛÑ ãä Ãæ íÓÇæí";
+ Text[ greek ] = "åßíáé ìéêñüôåñï Þ ßóï ìå (ìå êëßóç)";
+ Text[ korean ] = "ÀÌÇÏ";
+ Text[ turkish ] = "Küçüktür ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XGESLANTY ;
+ HelpId = HID_SMA_XGESLANTY ;
+ Text = "ist größer gleich (schräg)" ;
+ Text [ ENGLISH ] = "is greater than" ;
+ Text [ english_us ] = "Is Greater Than or Equal to" ;
+ Text [ portuguese_brazilian ] = "ist größer gleich" ;
+ Text [ swedish ] = "är större än eller lika med (sned)" ;
+ Text [ danish ] = "større end eller lig med (skrå)" ;
+ Text [ italian ] = "Maggiore uguale (obliquo)" ;
+ Text [ spanish ] = "es mayor que o igual a (oblicuo)" ;
+ Text [ french ] = "est supérieur ou égal à (trait oblique)" ;
+ Text [ dutch ] = "is groter dan of gelijk aan (schuin)" ;
+ Text [ portuguese ] = "é maior que ou igual a (oblíquo)" ;
+ Text[ chinese_simplified ] = "´óÓÚ»ò´óÓÚ";
+ Text[ russian ] = "áîëüøå èëè ðàâíî (ïîä íàêëîíîì)";
+ Text[ polish ] = "jest wiêkszy lub równy (ukoœny)";
+ Text[ japanese ] = "‘å‚Ȃ貺°Ù";
+ Text[ chinese_traditional ] = "¤j©ó©Î¤j©ó";
+ Text[ arabic ] = "ÃßÈÑ ãä Ãæ íÓÇæí (ãÇÆá)";
+ Text[ greek ] = "åßíáé ìåãáëýôåñï Þ ßóï ìå (ðëÜãéá)";
+ Text[ korean ] = "ÀÌ»ó";
+ Text[ turkish ] = "Büyüktür ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSIMY ;
+ HelpId = HID_SMA_XSIMY ;
+ Text = "ist ähnlich zu" ;
+ Text [ ENGLISH ] = "is similar to" ;
+ Text [ english_us ] = "Is Similar to" ;
+ Text [ portuguese_brazilian ] = "ist ähnlich zu" ;
+ Text [ swedish ] = "är liknade med" ;
+ Text [ danish ] = "ækvivalent med" ;
+ Text [ italian ] = "È simile a" ;
+ Text [ spanish ] = "es parecido a" ;
+ Text [ french ] = "est similaire à" ;
+ Text [ dutch ] = "is ongeveer gelijk met" ;
+ Text [ portuguese ] = "é idêntico a" ;
+ Text[ chinese_simplified ] = "ÏàËÆÓÚ";
+ Text[ russian ] = "ïîäîáíî";
+ Text[ polish ] = "jest podobny do";
+ Text[ japanese ] = "‘ŠŽ—";
+ Text[ chinese_traditional ] = "¬Û¦ü¤_";
+ Text[ arabic ] = "ãÔÇÈå á";
+ Text[ greek ] = "åßíáé üìïéï ìå";
+ Text[ korean ] = "¿¡ À¯»ç";
+ Text[ turkish ] = "Benzerdir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XEQUIVY ;
+ HelpId = HID_SMA_XEQUIVY ;
+ Text = "ist kongruent zu" ;
+ Text [ ENGLISH ] = "is congruent zu" ;
+ Text [ english_us ] = "Is congruent to" ;
+ Text [ portuguese_brazilian ] = "ist kongruent zu" ;
+ Text [ swedish ] = "är kongruent med" ;
+ Text [ danish ] = "identisk med" ;
+ Text [ italian ] = "Congruente a" ;
+ Text [ spanish ] = "es congruente con" ;
+ Text [ french ] = "est congru à" ;
+ Text [ dutch ] = "is congruent met" ;
+ Text [ portuguese ] = "congruente com" ;
+ Text[ chinese_simplified ] = "È«µÈÓÚ";
+ Text[ russian ] = "êîíãðóýíòíî";
+ Text[ polish ] = "jest równy to¿samoœciowo";
+ Text[ japanese ] = "‡“¯";
+ Text[ chinese_traditional ] = "¥þµ¥©ó";
+ Text[ arabic ] = "ãÑÇÏÝ á";
+ Text[ greek ] = "åßíáé éóïäýíáìï ìå";
+ Text[ korean ] = "¿¡ µî°¡";
+ Text[ turkish ] = "Örtüþür";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XLEY ;
+ HelpId = HID_SMA_XLEY ;
+ Text = "ist kleiner gleich" ;
+ Text [ ENGLISH ] = "is less than" ;
+ Text [ english_us ] = "Is Less Than or Equal to" ;
+ Text [ portuguese_brazilian ] = "ist kleiner gleich" ;
+ Text [ swedish ] = "är mindre än eller lika med" ;
+ Text [ danish ] = "mindre end eller lig med" ;
+ Text [ italian ] = "Minore uguale" ;
+ Text [ spanish ] = "es menor que o igual a" ;
+ Text [ french ] = "est inférieur ou égal à" ;
+ Text [ dutch ] = "is kleiner dan of gelijk aan" ;
+ Text [ portuguese ] = "é menor que ou igual a" ;
+ Text[ chinese_simplified ] = "СÓÚ»òµÈÓÚ";
+ Text[ russian ] = "ìåíüøå èëè ðàâíî";
+ Text[ polish ] = "jest mniejszy lub równy";
+ Text[ japanese ] = "¬‚Ȃ貺°Ù";
+ Text[ chinese_traditional ] = "¤p©ó©Îµ¥©ó";
+ Text[ arabic ] = "ÃÕÛÑ ãä Ãæ íÓÇæí";
+ Text[ greek ] = "åßíáé ìéêñüôåñï Þ ßóï ìå";
+ Text[ korean ] = "ÀÌÇÏ";
+ Text[ turkish ] = "Küçüktür ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XGEY ;
+ HelpId = HID_SMA_XGEY ;
+ Text = "ist größer gleich" ;
+ Text [ ENGLISH ] = "is greater than" ;
+ Text [ english_us ] = "Is Greater Than or Equal to" ;
+ Text [ portuguese_brazilian ] = "ist größer gleich" ;
+ Text [ swedish ] = "är större än eller lika med" ;
+ Text [ danish ] = "større end eller lig med" ;
+ Text [ italian ] = "Maggiore uguale" ;
+ Text [ spanish ] = "es mayor que o igual a" ;
+ Text [ french ] = "est supérieur ou égal à" ;
+ Text [ dutch ] = "is groter dan of gelijk aan" ;
+ Text [ portuguese ] = "é maior que ou igual a" ;
+ Text[ chinese_simplified ] = "´óÓÚ»òµÈÓÚ";
+ Text[ russian ] = "áîëüøå èëè ðàâíî";
+ Text[ polish ] = "jest wiêkszy lub równy";
+ Text[ japanese ] = "‘å‚Ȃ貺°Ù";
+ Text[ chinese_traditional ] = "¤j©ó©Îµ¥©ó";
+ Text[ arabic ] = "ÃßÈÑ ãä Ãæ íÓÇæí";
+ Text[ greek ] = "åßíáé ìåãáëýôåñï Þ ßóï ìå";
+ Text[ korean ] = "ÀÌ»ó";
+ Text[ turkish ] = "Büyük ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XPROPY ;
+ HelpId = HID_SMA_XPROPY ;
+ Text = "ist proportional zu" ;
+ Text [ ENGLISH ] = "is proportional to" ;
+ Text [ english_us ] = "Is Proportional To" ;
+ Text [ portuguese_brazilian ] = "ist proportional zu" ;
+ Text [ swedish ] = "är propotionell med" ;
+ Text [ danish ] = "proportional med" ;
+ Text [ italian ] = "Proporzionale a" ;
+ Text [ spanish ] = "es proporcional a" ;
+ Text [ french ] = "est proportionnel à" ;
+ Text [ dutch ] = "is proportioneel met" ;
+ Text [ portuguese ] = "é proporcional a" ;
+ Text[ chinese_simplified ] = "³É±ÈÀýÓÚ";
+ Text[ russian ] = "ïðîïîðöèîíàëüíî";
+ Text[ polish ] = "jest proporcjonalny do";
+ Text[ japanese ] = "ӊч";
+ Text[ chinese_traditional ] = "¦¨¤ñ¨Ò¤_";
+ Text[ arabic ] = "ãÊäÇÓÈ ãÚ";
+ Text[ greek ] = "åßíáé áíÜëïãï ðñïò";
+ Text[ korean ] = "¿¡ ºñ·Ê";
+ Text[ turkish ] = "Orantýlýdýr";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XTOWARDY ;
+ HelpId = HID_SMA_XTOWARDY ;
+ Text = "strebt gegen" ;
+ Text [ ENGLISH ] = "towards" ;
+ Text [ english_us ] = "Toward" ;
+ Text [ portuguese_brazilian ] = "strebt gegen" ;
+ Text [ swedish ] = "strävar mot" ;
+ Text [ danish ] = "går mod" ;
+ Text [ italian ] = "Tendente a" ;
+ Text [ spanish ] = "tiende a" ;
+ Text [ french ] = "tend vers" ;
+ Text [ dutch ] = "streeft naar" ;
+ Text [ portuguese ] = "tende a" ;
+ Text[ chinese_simplified ] = "½Ó½ü";
+ Text[ russian ] = "ñòðåìèòñÿ ê";
+ Text[ polish ] = "d¹¿y przeciw";
+ Text[ japanese ] = "ŒX‚­";
+ Text[ chinese_traditional ] = "±µªñ";
+ Text[ arabic ] = "ÈÇÊÌÇå";
+ Text[ greek ] = "ôåßíåé ðñïò";
+ Text[ korean ] = "ÁøÇà ¹æÇâ";
+ Text[ turkish ] = "Yönü";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DLARROW ;
+ HelpId = HID_SMA_DLARROW ;
+ Text = "doppelter Pfeil nach links" ;
+ Text [ ENGLISH ] = "Double left arrow" ;
+ TEXT[ italian ] = "Freccia doppia a sinistra";
+ TEXT[ portuguese_brazilian ] = "doppelter Pfeil nach links";
+ TEXT[ portuguese ] = "Seta dupla para a esquerda";
+ TEXT[ danish ] = "implikation mod venstre";
+ TEXT[ french ] = "double flèche vers la gauche";
+ TEXT[ swedish ] = "dubbelpil till vänster";
+ TEXT[ dutch ] = "dubbele pijl naar links";
+ TEXT[ spanish ] = "Flecha doble hacia la izquierda";
+ TEXT[ english_us ] = "Double Arrow Left";
+ TEXT[ chinese_simplified ] = "×óÏòË«¼ýÍ·";
+ TEXT[ russian ] = "Äâîéíàÿ ñòðåëêà âëåâî";
+ TEXT[ polish ] = "podwójna strza³ka w lewo";
+ TEXT[ japanese ] = "¶Œü‚«“ñd–îˆó";
+ TEXT[ chinese_traditional ] = "¥ª¦VÂù½bÀY";
+ TEXT[ arabic ] = "Óåã ãÒÏæÌ Åáì ÇáíÓÇÑ";
+ TEXT[ greek ] = "Äéðëü âÝëïò ðñïò ôá áñéóôåñÜ";
+ TEXT[ korean ] = "2Áß È­»ìÇ¥ ¿ÞÂÊ";
+ TEXT[ turkish ] = "Sola çift ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DLRARROW ;
+ HelpId = HID_SMA_DLRARROW ;
+ Text = "doppelter Pfeil nach links und rechts" ;
+ Text [ ENGLISH ] = "Double left-right arrow" ;
+ TEXT[ italian ] = "Freccia doppia verso sinistra e destra";
+ TEXT[ portuguese_brazilian ] = "doppelter Pfeil nach links und rechts";
+ TEXT[ portuguese ] = "Seta dupla para a esquerda e direita";
+ TEXT[ danish ] = "biimplikation";
+ TEXT[ french ] = "doubles flèches vers la gauche et la droite";
+ TEXT[ swedish ] = "dubbelpil till vänster och till höger";
+ TEXT[ dutch ] = "dubbele pijl naar links en rechts";
+ TEXT[ spanish ] = "Flecha doble hacia izquierda y derecha";
+ TEXT[ english_us ] = "Double Arrow Left and Right";
+ TEXT[ chinese_simplified ] = "×óÓÒÏòË«¼ýÍ·";
+ TEXT[ russian ] = "Äâîéíàÿ ñòðåëêà âëåâî è âïðàâî";
+ TEXT[ polish ] = "podwójna strza³ka w lewo i w prawo";
+ TEXT[ japanese ] = "¶‰EŒü‚«‚Ì“ñd–îˆó";
+ TEXT[ chinese_traditional ] = "¥ª¥k¦VÂù½bÀY";
+ TEXT[ arabic ] = "Óåã ãÒÏæÌ Åáì ÇáíÓÇÑ æÇáíãíä";
+ TEXT[ greek ] = "Äéðëü âÝëïò ðñïò ôá áñéóôåñÜ êáé äåîéÜ";
+ TEXT[ korean ] = "2Áß È­»ìÇ¥ ¿ÞÂÊ°ú ¿À¸¥ÂÊ";
+ TEXT[ turkish ] = "Sola ve saða çift ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DRARROW ;
+ HelpId = HID_SMA_DRARROW ;
+ Text = "doppelter Pfeil nach rechts" ;
+ Text [ ENGLISH ] = "Double right arrow" ;
+ TEXT[ italian ] = "Freccia doppia verso destra";
+ TEXT[ portuguese_brazilian ] = "doppelter Pfeil nach rechts";
+ TEXT[ portuguese ] = "seta dupla para a direita";
+ TEXT[ danish ] = "implikation mod højre";
+ TEXT[ french ] = "double flèche vers la droite";
+ TEXT[ swedish ] = "dubbelpil till höger";
+ TEXT[ dutch ] = "dubbele pijl naar rechts";
+ TEXT[ spanish ] = "Flecha doble hacia la derecha";
+ TEXT[ english_us ] = "Double Arrow Right";
+ TEXT[ chinese_simplified ] = "ÓÒÏòË«¼ýÍ·";
+ TEXT[ russian ] = "Äâîéíàÿ ñòðåëêà âïðàâî";
+ TEXT[ polish ] = "podwójna strza³ka w prawo";
+ TEXT[ japanese ] = "‰EŒü‚«“ñd–îˆó";
+ TEXT[ chinese_traditional ] = "¥k¦VÂù½bÀY";
+ TEXT[ arabic ] = "Óåã ãÒÏæÌ Åáì Çáíãíä";
+ TEXT[ greek ] = "Äéðëü âÝëïò ðñïò ôá äåîéÜ";
+ TEXT[ korean ] = "2Áß È­»ìÇ¥ ¿À¸¥ÂÊ";
+ TEXT[ turkish ] = "Saða çift ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 3
+ {
+ // set operations
+ HelpId = HID_SMA_SETOPERATIONS_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 5 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "oper.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_XINY ;
+ RID_XNOTINY ;
+ RID_XOWNSY ;
+ RID_XINTERSECTIONY ;
+ RID_XUNIONY ;
+ RID_XSETMINUSY ;
+ RID_XSLASHY ;
+ RID_XSUBSETY ;
+ RID_XSUBSETEQY ;
+ RID_XSUPSETY ;
+ RID_XSUPSETEQY ;
+ RID_XNSUBSETY ;
+ RID_XNSUBSETEQY ;
+ RID_XNSUPSETY ;
+ RID_XNSUPSETEQY ;
+ RID_EMPTYSET ;
+ RID_ALEPH ;
+ RID_SETN ;
+ RID_SETZ ;
+ RID_SETQ ;
+ RID_SETR ;
+ RID_SETC ;
+ };
+ IdCount =
+ {
+ 22 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_XINY ;
+ HelpId = HID_SMA_XINY ;
+ Text = "ist enthalten in" ;
+ Text [ ENGLISH ] = "is in" ;
+ Text [ english_us ] = "Is In" ;
+ Text [ portuguese_brazilian ] = "ist enthalten in" ;
+ Text [ swedish ] = "finns i" ;
+ Text [ danish ] = "tilhører" ;
+ Text [ italian ] = "Incluso in" ;
+ Text [ spanish ] = "está en" ;
+ Text [ french ] = "est inclus dans" ;
+ Text [ dutch ] = "is in" ;
+ Text [ portuguese ] = "contido em" ;
+ Text[ chinese_simplified ] = "°üº¬ÔÚ";
+ Text[ russian ] = "ñîäåðæèòñÿ â";
+ Text[ polish ] = "nale¿y do";
+ Text[ japanese ] = "ŠÜ‚Þ";
+ Text[ chinese_traditional ] = "¥]§t¦b";
+ Text[ arabic ] = "ãæÌæÏ Ýí";
+ Text[ greek ] = "ðåñéëáìâÜíåôáé óôï";
+ Text[ korean ] = "´ÙÀ½¿¡ Æ÷ÇԵǾî ÀÖÀ½";
+ Text[ turkish ] = "Ýçerir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNOTINY ;
+ HelpId = HID_SMA_XNOTINY ;
+ Text = "ist nicht enthalten in" ;
+ Text [ ENGLISH ] = "is not in" ;
+ Text [ english_us ] = "Is Not In" ;
+ Text [ portuguese_brazilian ] = "ist nicht enthalten in" ;
+ Text [ swedish ] = "finns ej i" ;
+ Text [ danish ] = "tihører ikke" ;
+ Text [ italian ] = "Non compreso in" ;
+ Text [ spanish ] = "no contenido en" ;
+ Text [ french ] = "n'est pas inclus dans" ;
+ Text [ dutch ] = "is niet in" ;
+ Text [ portuguese ] = "não contido em" ;
+ Text[ chinese_simplified ] = "²»°üº¬ÔÚ";
+ Text[ russian ] = "íå ñîäåðæèòñÿ â";
+ Text[ polish ] = "nie jest zawarty w";
+ Text[ japanese ] = "ŠÜ‚Ü‚È‚¢";
+ Text[ chinese_traditional ] = "¤£¥]§t¦b";
+ Text[ arabic ] = "ÛíÑ ãæÌæÏ Ýí";
+ Text[ greek ] = "äåí óõìðåñéëáìâÜíåôáé óôï";
+ Text[ korean ] = "Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ½";
+ Text[ turkish ] = "Elemandýr";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XOWNSY ;
+ HelpId = HID_SMA_XOWNSY ;
+ Text = "enthält" ;
+ Text [ ENGLISH ] = "owns" ;
+ Text [ english_us ] = "Owns" ;
+ Text [ portuguese_brazilian ] = "enthält" ;
+ Text [ swedish ] = "innehåller" ;
+ Text [ danish ] = "indeholder" ;
+ Text [ italian ] = "Contiene" ;
+ Text [ spanish ] = "contiene" ;
+ Text [ french ] = "contient" ;
+ Text [ dutch ] = "bevat" ;
+ Text [ portuguese ] = "contém" ;
+ Text[ chinese_simplified ] = "º¬ÓÐ";
+ Text[ russian ] = "ñîäåðæèò";
+ Text[ polish ] = "zawiera";
+ Text[ japanese ] = "ŠÜ‚Þ";
+ Text[ chinese_traditional ] = "§t¦³";
+ Text[ arabic ] = "íÍÊæí Úáì";
+ Text[ greek ] = "ðåñéëáìâÜíåé";
+ Text[ korean ] = "¼ÒÀ¯";
+ Text[ turkish ] = "Ýçerir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_EMPTYSET ;
+ HelpId = HID_SMA_EMPTYSET ;
+ Text = "leere Menge" ;
+ Text [ ENGLISH ] = "empty set" ;
+ TEXT[ italian ] = "Insieme vuoto";
+ TEXT[ portuguese_brazilian ] = "leere Menge";
+ TEXT[ portuguese ] = "conjunto vazio";
+ TEXT[ danish ] = "tom mængde";
+ TEXT[ french ] = "Ensemble vide";
+ TEXT[ swedish ] = "tom mängd";
+ TEXT[ dutch ] = "lege set";
+ TEXT[ spanish ] = "Conjunto vacío";
+ TEXT[ english_us ] = "Empty Set";
+ TEXT[ chinese_simplified ] = "¿Õ¼¯";
+ TEXT[ russian ] = "ïóñòîå ìíîæåñòâî";
+ TEXT[ polish ] = "Zbiór pusty";
+ TEXT[ japanese ] = "‹óW‡";
+ TEXT[ language_user1 ] = " ";
+ TEXT[ chinese_traditional ] = "ªÅ¶°";
+ TEXT[ arabic ] = "ãÌãæÚÉ ÝÇÑÛÉ";
+ TEXT[ greek ] = "êåíü óýíïëï";
+ TEXT[ korean ] = "°ø¹é ¼¼Æ®";
+ TEXT[ turkish ] = "Boþ küme";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XINTERSECTIONY ;
+ HelpId = HID_SMA_XINTERSECTIONY ;
+ Text = "Durchschnitt" ;
+ Text [ ENGLISH ] = "intersection" ;
+ Text [ english_us ] = "intersection" ;
+ Text [ portuguese_brazilian ] = "Durchschnitt" ;
+ Text [ swedish ] = "Genomsnitt" ;
+ Text [ danish ] = "fællesmængde" ;
+ Text [ italian ] = "Intersezione" ;
+ Text [ spanish ] = "Promedio" ;
+ Text [ french ] = "Moyenne" ;
+ Text [ dutch ] = "Gemiddelde" ;
+ Text [ portuguese ] = "Média" ;
+ Text[ chinese_simplified ] = "ƽ¾ùÖµ";
+ Text[ russian ] = "Ïåðåñå÷åíèå ìíîæåñòâ";
+ Text[ polish ] = "Iloczyn zbiorów";
+ Text[ japanese ] = "‹¤’Ê•”•ª";
+ Text[ chinese_traditional ] = "¥­§¡­È";
+ Text[ arabic ] = "ÇáÊÞÇØÚ";
+ Text[ greek ] = "ÌÝóïò üñïò";
+ Text[ korean ] = "±³Â÷Á¡";
+ Text[ turkish ] = "Kesiþme";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XUNIONY ;
+ HelpId = HID_SMA_XUNIONY ;
+ Text = "Vereinigung" ;
+ Text [ ENGLISH ] = "union" ;
+ Text [ english_us ] = "Union" ;
+ Text [ portuguese_brazilian ] = "Vereinigung" ;
+ Text [ swedish ] = "union" ;
+ Text [ danish ] = "foreningsmængde" ;
+ Text [ italian ] = "Unione" ;
+ Text [ spanish ] = "Unión" ;
+ Text [ french ] = "Union" ;
+ Text [ dutch ] = "Vereniging" ;
+ Text [ portuguese ] = "União" ;
+ Text[ chinese_simplified ] = "²¢¼¯";
+ Text[ russian ] = "Ñóììà ìíîæåñòâ";
+ Text[ polish ] = "Suma zbiorów";
+ Text[ japanese ] = "˜aW‡";
+ Text[ chinese_traditional ] = "¨Ö¶°";
+ Text[ arabic ] = "ÊæÍíÏ";
+ Text[ greek ] = "¸íùóç";
+ Text[ korean ] = "ÇÕÁýÇÕ";
+ Text[ turkish ] = "Birleþme";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSETMINUSY ;
+ HelpId = HID_SMA_XSETMINUSY ;
+ Text = "Differenz" ;
+ Text [ ENGLISH ] = "difference" ;
+ Text [ english_us ] = "Difference" ;
+ Text [ portuguese_brazilian ] = "Differenz" ;
+ Text [ swedish ] = "Differens" ;
+ Text [ danish ] = "differensmængde" ;
+ Text [ italian ] = "Differenza" ;
+ Text [ spanish ] = "Diferencia" ;
+ Text [ french ] = "Différence" ;
+ Text [ dutch ] = "verschil" ;
+ Text [ portuguese ] = "Diferença" ;
+ Text[ chinese_simplified ] = "²îÒìÖµ";
+ Text[ russian ] = "Ðàçíîñòü";
+ Text[ polish ] = "Ró¿nica";
+ Text[ japanese ] = "·";
+ Text[ chinese_traditional ] = "®t²§­È";
+ Text[ arabic ] = "ÇÎÊáÇÝ";
+ Text[ greek ] = "ÄéáöïñÜ";
+ Text[ korean ] = "Â÷ÀÌ";
+ Text[ turkish ] = "Fark";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSLASHY ;
+ HelpId = HID_SMA_XSLASHY ;
+ Text = "Quotientenmenge " ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Quotient Set " ;
+ Text [ portuguese_brazilian ] = "Quotientenmenge " ;
+ Text [ swedish ] = "Kvotmängd " ;
+ Text [ danish ] = "kvotientmængde " ;
+ Text [ italian ] = "Insieme quoziente " ;
+ Text [ spanish ] = "Conjunto cociente " ;
+ Text [ french ] = "Ensemble quotient de " ;
+ Text [ dutch ] = "Quotiëntenverzameling " ;
+ Text [ portuguese ] = "Conjunto de quociente " ;
+ Text[ chinese_simplified ] = "ÉÌÊý¼¯ ";
+ Text[ russian ] = "Ìíîæåñòâî ÷àñòíûõ ";
+ Text[ polish ] = "Zbiór ilorazów ";
+ Text[ japanese ] = "Žw”‚ÌW‡ ";
+ Text[ chinese_traditional ] = "°Ó¼Æ¶° ";
+ Text[ arabic ] = "ãÌãæÚÉ ÎÇÑÌ ÇáÞÓãÉ ";
+ Text[ greek ] = "Óýíïëï ðçëßêïõ ";
+ Text[ korean ] = "¸ò ¼³Á¤ ";
+ Text[ turkish ] = "Bölüm kümesi ";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ALEPH ;
+ HelpId = HID_SMA_ALEPH ;
+ Text = "aleph " ;
+ Text [ ENGLISH ] = "aleph" ;
+ TEXT[ italian ] = "Aleph ";
+ TEXT[ portuguese_brazilian ] = "aleph ";
+ TEXT[ portuguese ] = "aleph ";
+ TEXT[ danish ] = "aleph ";
+ TEXT[ french ] = "aleph.";
+ TEXT[ swedish ] = "alef ";
+ TEXT[ dutch ] = "aleph ";
+ TEXT[ spanish ] = "aleph ";
+ TEXT[ english_us ] = "aleph ";
+ TEXT[ chinese_simplified ] = "°¢¶û·¨ ";
+ TEXT[ russian ] = "Àëåô ";
+ TEXT[ polish ] = "Alef ";
+ TEXT[ japanese ] = "±ÚÌ ";
+ TEXT[ chinese_traditional ] = "ªüº¸ªk ";
+ TEXT[ arabic ] = "aleph ";
+ TEXT[ greek ] = "aleph ";
+ TEXT[ korean ] = "¾Ë·¹ÇÁ ";
+ TEXT[ turkish ] = "aleph ";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSUBSETY ;
+ HelpId = HID_SMA_XSUBSETY ;
+ Text = "Teilmenge" ;
+ Text [ ENGLISH ] = "subset" ;
+ Text [ english_us ] = "Subset" ;
+ Text [ portuguese_brazilian ] = "Teilmenge" ;
+ Text [ swedish ] = "delmängd" ;
+ Text [ danish ] = "ægte delmængde" ;
+ Text [ italian ] = "Insieme parziale" ;
+ Text [ spanish ] = "Conjunto parcial" ;
+ Text [ french ] = "Sous-ensemble" ;
+ Text [ dutch ] = "Deelverzameling" ;
+ Text [ portuguese ] = "Subconjunto" ;
+ Text[ chinese_simplified ] = "×Ó¼¯";
+ Text[ russian ] = "Ïîäìíîæåñòâî";
+ Text[ polish ] = "Podzbiór";
+ Text[ japanese ] = "•”•ªW‡";
+ Text[ chinese_traditional ] = "¤l¶°";
+ Text[ arabic ] = "ãÌãæÚÉ ÌÒÆíÉ";
+ Text[ greek ] = "Õðïóýíïëï";
+ Text[ korean ] = "ºÎºÐÁýÇÕ";
+ Text[ turkish ] = "Alt küme";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSUBSETEQY ;
+ HelpId = HID_SMA_XSUBSETEQY ;
+ Text = "Teilmenge oder gleich" ;
+ Text [ ENGLISH ] = "subset or equal" ;
+ Text [ english_us ] = "Subset or Equal to" ;
+ Text [ portuguese_brazilian ] = "Teilmenge oder gleich" ;
+ Text [ swedish ] = "delmängd eller lika" ;
+ Text [ danish ] = "delmængde" ;
+ Text [ italian ] = "Insieme parziale o uguale" ;
+ Text [ spanish ] = "Conjunto parcial o igual" ;
+ Text [ french ] = "est sous-ensemble de ou égal à" ;
+ Text [ dutch ] = "Subset of gelijk aan" ;
+ Text [ portuguese ] = "Parcial ou igual" ;
+ Text[ chinese_simplified ] = "×Ó¼¯»òµÈ¼¯";
+ Text[ russian ] = "Ïîäìíîæåñòâî èëè ðàâíî";
+ Text[ polish ] = "Podzbiór lub równy";
+ Text[ japanese ] = "•”•ªW‡¤‚ ‚é‚¢‚Í“™‚µ‚¢";
+ Text[ chinese_traditional ] = "¤l¶°©Îµ¥¶°";
+ Text[ arabic ] = "ãÌãæÚÉ ÌÒÆíÉ Ãæ íÓÇæí";
+ Text[ greek ] = "Õðïóýíïëï Þ ßóï";
+ Text[ korean ] = "¿¡ ºÎºÐÁýÇÕ ¶Ç´Â µ¿ÀÏ";
+ Text[ turkish ] = "Alt kümesi ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSUPSETY ;
+ HelpId = HID_SMA_XSUPSETY ;
+ Text = "Obermenge" ;
+ Text [ ENGLISH ] = "superset" ;
+ Text [ english_us ] = "Superset" ;
+ Text [ portuguese_brazilian ] = "Obermenge" ;
+ Text [ swedish ] = "grundmängd" ;
+ Text [ danish ] = "indeholder som ægte delmængde" ;
+ Text [ italian ] = "Insieme superiore" ;
+ Text [ spanish ] = "Conjunto superior" ;
+ Text [ french ] = "Sur-ensemble" ;
+ Text [ dutch ] = "Superset" ;
+ Text [ portuguese ] = "Conjunto superior" ;
+ Text[ chinese_simplified ] = "È«¼¯";
+ Text[ russian ] = "Íàäìíîæåñòâî";
+ Text[ polish ] = "Nadzbiór";
+ Text[ japanese ] = "W‡";
+ Text[ chinese_traditional ] = "¥þ¶°";
+ Text[ arabic ] = "ãÌãæÚÉ ÚÇáíÉ";
+ Text[ greek ] = "Õðåñóýíïëï";
+ Text[ korean ] = "À­Ã·ÀÚ";
+ Text[ turkish ] = "Üst küme";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XSUPSETEQY ;
+ HelpId = HID_SMA_XSUPSETEQY ;
+ Text = "Obermenge oder gleich" ;
+ Text [ ENGLISH ] = "superset or equal" ;
+ Text [ english_us ] = "Superset or Equal to" ;
+ Text [ portuguese_brazilian ] = "Obermenge oder gleich" ;
+ Text [ swedish ] = "grundmängd eller lika" ;
+ Text [ danish ] = "indeholder som delmængde" ;
+ Text [ italian ] = "Insieme superiore o uguale" ;
+ Text [ spanish ] = "Conjunto superior o igual" ;
+ Text [ french ] = "est sur-ensemble de ou égal à" ;
+ Text [ dutch ] = "Superset of gelijk aan" ;
+ Text [ portuguese ] = "Conjunto superior ou igual" ;
+ Text[ chinese_simplified ] = "È«¼¯»òµÈ¼¯";
+ Text[ russian ] = "Íàäìíîæåñòâî èëè ðàâíî";
+ Text[ polish ] = "Nadzbiór lub równy";
+ Text[ japanese ] = "W‡¤‚ ‚é‚¢‚Í“™‚µ‚¢";
+ Text[ chinese_traditional ] = "¥þ¶°©Îµ¥¶°";
+ Text[ arabic ] = "ãÌãæÚÉ ÚÇáíÉ Ãæ íÓÇæí";
+ Text[ greek ] = "Õðåñóýíïëï Þ ßóï";
+ Text[ korean ] = "À­Ã·ÀÚ ¶Ç´Â µ¿ÀÏ";
+ Text[ turkish ] = "Üst kümesi ya da eþittir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNSUBSETY ;
+ HelpId = HID_SMA_XNSUBSETY ;
+ Text = "nicht Teilmenge" ;
+ Text [ ENGLISH ] = "not subset" ;
+ Text [ english_us ] = "Not Subset" ;
+ Text [ portuguese_brazilian ] = "nicht Teilmenge" ;
+ Text [ swedish ] = "ej delmängd" ;
+ Text [ danish ] = "ikke ægte delmængde" ;
+ Text [ italian ] = "Insieme non parziale" ;
+ Text [ spanish ] = "Conjunto no parcial" ;
+ Text [ french ] = "n'est pas sous-ensemble de" ;
+ Text [ dutch ] = "niet subset" ;
+ Text [ portuguese ] = "não é subconjunto" ;
+ Text[ chinese_simplified ] = "·Ç×Ó¼¯";
+ Text[ russian ] = "íå ïîäìíîæåñòâî";
+ Text[ polish ] = "nie podzbiór";
+ Text[ japanese ] = "•”•ªW‡‚Å‚È‚¢";
+ Text[ chinese_traditional ] = "«D¤l¶°";
+ Text[ arabic ] = "áíÓ ãÌãæÚÉ ÌÒÆíÉ";
+ Text[ greek ] = "ü÷é õðïóýíïëï";
+ Text[ korean ] = "¾Æ·¡Ã·ÀÚ°¡ ¾Æ´Õ´Ï´Ù.";
+ Text[ turkish ] = "Alt kümesi deðil";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNSUBSETEQY ;
+ HelpId = HID_SMA_XNSUBSETEQY ;
+ Text = "nicht Teilmenge oder gleich" ;
+ Text [ ENGLISH ] = "not subset or equal" ;
+ Text [ english_us ] = "Not Subset or Equal" ;
+ Text [ portuguese_brazilian ] = "nicht Teilmenge oder gleich" ;
+ Text [ swedish ] = "ej delmängd eller lika" ;
+ Text [ danish ] = "ikke delmængde" ;
+ Text [ italian ] = "Insieme non parziale o uguale" ;
+ Text [ spanish ] = "Conjunto no parcial o igual" ;
+ Text [ french ] = "n'est pas sous-ensemble de ni égal à" ;
+ Text [ dutch ] = "niet subset of gelijk aan" ;
+ Text [ portuguese ] = "não é subconjunto nem igual" ;
+ Text[ chinese_simplified ] = "·Ç×Ó¼¯»òµÈ¼¯";
+ Text[ russian ] = "íå ïîäìíîæåñòâî èëè ðàâíî";
+ Text[ polish ] = "nie podzbiór lub równy";
+ Text[ japanese ] = "•”•ªW‡‚Å‚È‚¢¤‚ ‚é‚¢‚Í“™‚µ‚¢";
+ Text[ chinese_traditional ] = "«D¤l¶°©Îµ¥¶°";
+ Text[ arabic ] = "áíÓÊ ãÌãæÚÉ ÌÒÆíÉ Ãæ íÓÇæí";
+ Text[ greek ] = "ü÷é õðïóýíïëï Þ ßóï";
+ Text[ korean ] = "ºÎºÐÁýÇÕÀ̳ª µîÁýÇÕÀÌ ¾Æ´Ô";
+ Text[ turkish ] = "Alt kümesi ya da eþit deðil";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNSUPSETY ;
+ HelpId = HID_SMA_XNSUPSETY ;
+ Text = "nicht Obermenge" ;
+ Text [ ENGLISH ] = "not superset" ;
+ Text [ english_us ] = "Not Superset" ;
+ Text [ portuguese_brazilian ] = "nicht Obermenge" ;
+ Text [ swedish ] = "ej grundmängd" ;
+ Text [ danish ] = "indeholder ikke som ægte delmængde" ;
+ Text [ italian ] = "Insieme non superiore" ;
+ Text [ spanish ] = "Conjunto no superior" ;
+ Text [ french ] = "n'est pas sur-ensemble de" ;
+ Text [ dutch ] = "niet superset" ;
+ Text [ portuguese ] = "Conjunto não superior" ;
+ Text[ chinese_simplified ] = "²»ÊÇÈ«¼¯";
+ Text[ russian ] = "íå íàäìíîæåñòâî";
+ Text[ polish ] = "nie nadzbiór";
+ Text[ japanese ] = "W‡‚Å‚È‚¢";
+ Text[ chinese_traditional ] = "¤£¬O¥þ¶°";
+ Text[ arabic ] = "áíÓÊ ãÌãæÚÉ ÚÇáíÉ";
+ Text[ greek ] = "¼÷é õðåñóýíïëï";
+ Text[ korean ] = "À­ ÷ÀÚ°¡ ¾Æ´Õ´Ï´Ù.";
+ Text[ turkish ] = "Üst kümesi deðil";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XNSUPSETEQY ;
+ HelpId = HID_SMA_XNSUPSETEQY ;
+ Text = "nicht Obermenge oder gleich" ;
+ Text [ ENGLISH ] = "not superset or equal" ;
+ Text [ english_us ] = "Not Superset or Equal" ;
+ Text [ portuguese_brazilian ] = "nicht Obermenge oder gleich" ;
+ Text [ swedish ] = "ej grundmängd eller lika" ;
+ Text [ danish ] = "indeholder ikke som delmængde" ;
+ Text [ italian ] = "Insieme non superiore o uguale" ;
+ Text [ spanish ] = "Conjunto no superior o igual" ;
+ Text [ french ] = "n'est pas sur-ensemble de ni égal à" ;
+ Text [ dutch ] = "niet superset of gelijk aan" ;
+ Text [ portuguese ] = "Conjunto não superior ou igual" ;
+ Text[ chinese_simplified ] = "²»ÊÇÈ«¼¯»òµÈ¼¯";
+ Text[ russian ] = "íå íàäìíîæåñòâî èëè ðàâíî";
+ Text[ polish ] = "nie nadzbiór lub równy";
+ Text[ japanese ] = "W‡‚Å‚È‚¢¤‚ ‚é‚¢‚Í“™‚µ‚¢";
+ Text[ chinese_traditional ] = "¤£¬O¥þ¶°©Îµ¥¶°";
+ Text[ arabic ] = "áíÓÊ ãÌãæÚÉ ÚÇáíÉ Ãæ íÓÇæí";
+ Text[ greek ] = "¼÷é õðåñóýíïëï Þ ßóï";
+ Text[ korean ] = "»óÀ§ÁýÇÕ ¶Ç´Â µîÁýÇÕÀÌ ¾Æ´Ô";
+ Text[ turkish ] = "Üst kümesi ya da eþit deðil";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SETN ;
+ HelpId = HID_SMA_SETN ;
+ Text = "Menge der natürlichen Zahlen" ;
+ Text [ ENGLISH ] = "set of natural numbers" ;
+ TEXT[ italian ] = "Insieme dei numeri naturali";
+ TEXT[ portuguese_brazilian ] = "Menge der natürlichen Zahlen";
+ TEXT[ portuguese ] = "Conjunto de números naturais";
+ TEXT[ danish ] = "mængden af naturlige tal";
+ TEXT[ french ] = "Ensemble des nombres naturels";
+ TEXT[ swedish ] = "Mängd naturliga tal";
+ TEXT[ dutch ] = "Hoeveelheid natuurlijke getallen";
+ TEXT[ spanish ] = "Conjunto de números naturales";
+ TEXT[ english_us ] = "Natural Numbers Set";
+ TEXT[ chinese_simplified ] = "×ÔÈ»Êý¼¯";
+ TEXT[ russian ] = "Ìíîæåñòâî íàòóðàëüíûõ ÷èñåë";
+ TEXT[ polish ] = "Zbiór liczb naturalnych";
+ TEXT[ japanese ] = "Ž©‘R”‚ÌW‡";
+ TEXT[ chinese_traditional ] = "¦ÛµM¼Æ¶°";
+ TEXT[ arabic ] = "ãÌãæÚÉ ÃÑÞÇã ØÈíÚíÉ";
+ TEXT[ greek ] = "Óýíïëï öõóéêþí áñéèìþí";
+ TEXT[ korean ] = "ÀÏ¹Ý ¼ýÀÚ ¼³Á¤";
+ TEXT[ turkish ] = "Doðal sayýlar kümesi";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SETZ ;
+ HelpId = HID_SMA_SETZ ;
+ Text = "Menge der ganzen Zahlen" ;
+ Text [ ENGLISH ] = "set of integer numbers" ;
+ TEXT[ italian ] = "Insieme dei numeri interi";
+ TEXT[ portuguese_brazilian ] = "Menge der ganzen Zahlen";
+ TEXT[ portuguese ] = "Conjunto de números inteiros";
+ TEXT[ danish ] = "mængden af hele tal";
+ TEXT[ french ] = "Ensemble des nombres entiers";
+ TEXT[ swedish ] = "Heltalsmängd";
+ TEXT[ dutch ] = "Hoeveelheid hele getallen";
+ TEXT[ spanish ] = "Conjunto de números enteros";
+ TEXT[ english_us ] = "Integers Set";
+ TEXT[ chinese_simplified ] = "ÕûÊý¼¯ºÏ";
+ TEXT[ russian ] = "Ìíîæåñòâî öåëûõ ÷èñåë";
+ TEXT[ polish ] = "Zbiór liczb ca³kowitych";
+ TEXT[ japanese ] = "®”‚ÌW‡";
+ TEXT[ chinese_traditional ] = "¾ã¼Æ¶°¦X";
+ TEXT[ arabic ] = "ãÌãæÚÉ ÇáÃÚÏÇÏ ÇáÕÍíÍÉ";
+ TEXT[ greek ] = "Óýíïëï áêÝñáéùí áñéèìþí";
+ TEXT[ korean ] = "Integer ¼³Á¤";
+ TEXT[ turkish ] = "Tamsayýlar kümesi";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SETQ ;
+ HelpId = HID_SMA_SETQ ;
+ Text = "Menge der rationalen Zahlen" ;
+ Text [ ENGLISH ] = "set of rational numbers" ;
+ TEXT[ italian ] = "Insieme dei numeri razionali";
+ TEXT[ portuguese_brazilian ] = "Menge der rationalen Zahlen";
+ TEXT[ portuguese ] = "Conjunto de números racionais";
+ TEXT[ danish ] = "mængden af rationale tal";
+ TEXT[ french ] = "Ensemble des nombres rationnels";
+ TEXT[ swedish ] = "Mängd rationella tal";
+ TEXT[ dutch ] = "Hoeveelheid rationele getallen";
+ TEXT[ spanish ] = "Conjunto de números racionales";
+ TEXT[ english_us ] = "Relational Numbers Set";
+ TEXT[ chinese_simplified ] = "ÓÐÀíÊý¼¯";
+ TEXT[ russian ] = "Ìíîæåñòâî îòíîñèòåëüíûõ ÷èñåë";
+ TEXT[ polish ] = "Zbiór liczb wymiernych";
+ TEXT[ japanese ] = "—L—”‚ÌW‡";
+ TEXT[ chinese_traditional ] = "¦³²z¼Æ¶°";
+ TEXT[ arabic ] = "ãÌãæÚÉ ÇáÃÚÏÇÏ ÇáãõäúØóÞñÉ";
+ TEXT[ greek ] = "Óýíïëï ñçôþí áñéèìþí";
+ TEXT[ korean ] = "Áö¿ª ¼ýÀÚ ¼³Á¤";
+ TEXT[ turkish ] = "Rasyonel sayýlar kümesi";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SETR ;
+ HelpId = HID_SMA_SETR ;
+ Text = "Menge der reellen Zahlen" ;
+ Text [ ENGLISH ] = "set of real numbers" ;
+ TEXT[ italian ] = "Insieme dei numeri reali";
+ TEXT[ portuguese_brazilian ] = "Menge der reellen Zahlen";
+ TEXT[ portuguese ] = "Conjunto de números reais";
+ TEXT[ danish ] = "mængden af reelle tal";
+ TEXT[ french ] = "Ensemble des nombres réels";
+ TEXT[ swedish ] = "Mängd reella tal";
+ TEXT[ dutch ] = "Hoeveelheid reële getallen";
+ TEXT[ spanish ] = "Conjunto de números reales";
+ TEXT[ english_us ] = "Real Numbers Set";
+ TEXT[ chinese_simplified ] = "ʵÊý¼¯";
+ TEXT[ russian ] = "Ìíîæåñòâî äåéñòâèòåëüíûõ ÷èñåë";
+ TEXT[ polish ] = "Zbiór liczb rzeczywistych";
+ TEXT[ japanese ] = "ŽÀ”‚ÌW‡";
+ TEXT[ chinese_traditional ] = "¹ê¼Æ¶°";
+ TEXT[ arabic ] = "ãÌãæÚÉ ÇáÃÚÏÇÏ ÇáÍÞíÞíÉ";
+ TEXT[ greek ] = "Óýíïëï ðñáãìáôéêþí áñéèìþí";
+ TEXT[ korean ] = "½ÇÁ¦ ¼ýÀÚ ¼³Á¤";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SETC ;
+ HelpId = HID_SMA_SETC ;
+ Text = "Menge der komplexen Zahlen" ;
+ Text [ ENGLISH ] = "set of complex numbers" ;
+ TEXT[ italian ] = "Insieme dei numeri complessi";
+ TEXT[ portuguese_brazilian ] = "Menge der komplexen Zahlen";
+ TEXT[ portuguese ] = "Conjunto dos números complexos";
+ TEXT[ danish ] = "mængden af komplekse tal";
+ TEXT[ french ] = "Ensemble des nombres complexes";
+ TEXT[ swedish ] = "Mängd komplexa tal";
+ TEXT[ dutch ] = "Set complexe getallen";
+ TEXT[ spanish ] = "Conjunto de números complejos";
+ TEXT[ english_us ] = "Complex Numbers Set";
+ TEXT[ chinese_simplified ] = "¸´Êý¼¯";
+ TEXT[ russian ] = "Ìíîæåñòâî êîìïëåêñíûõ ÷èñåë";
+ TEXT[ polish ] = "Zbiór liczb zespolonych";
+ TEXT[ japanese ] = "•¡‘f”‚ÌW‡";
+ TEXT[ chinese_traditional ] = "½Æ¼Æ¶°";
+ TEXT[ arabic ] = "ãÌãæÚÉ ÇáÃÚÏÇÏ ÇáãÑßÈÉ";
+ TEXT[ greek ] = "Óýíïëï ìéãáäéêþí áñéèìþí";
+ TEXT[ korean ] = "º¹ÀâÇÑ ¼ýÀÚ ¼³Á¤";
+ TEXT[ turkish ] = "Karmaþýk sayýlar kümesi";
+ TEXT[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 4
+ {
+ // functions
+ HelpId = HID_SMA_FUNCTIONS_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 5 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "func.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_ABSX ;
+ RID_FACTX ;
+ RID_SQRTX ;
+ RID_NROOTXY ;
+ RID_EX ;
+ RID_LNX ;
+ RID_EXPX ;
+ RID_LOGX ;
+ RID_SINX ;
+ RID_COSX ;
+ RID_TANX ;
+ RID_COTX ;
+ RID_SINHX ;
+ RID_COSHX ;
+ RID_TANHX ;
+ RID_COTHX ;
+ RID_ARCSINX ;
+ RID_ARCCOSX ;
+ RID_ARCTANX ;
+ RID_ARCCOTX ;
+ RID_ARSINHX ;
+ RID_ARCOSHX ;
+ RID_ARTANHX ;
+ RID_ARCOTHX ;
+ RID_RSUPX ;
+ };
+ IdCount =
+ {
+ 25 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_EX ;
+ HelpId = HID_SMA_EX ;
+ /* ### ACHTUNG: Neuer Text in Resource? Exponentialfunktion : natürliche Exponentialfunktion */
+ Text = "Exponentialfunktion" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Exponential Function" ;
+ Text [ portuguese_brazilian ] = "natürliche Exponentialfunktion" ;
+ Text [ swedish ] = "exponentialfunktion" ;
+ Text [ danish ] = "eksponentialfunktion" ;
+ Text [ italian ] = "Funzione esponenziale" ;
+ Text [ spanish ] = "Función exponencial" ;
+ Text [ french ] = "Fonction exponentielle" ;
+ Text [ dutch ] = "Exponentiële functie" ;
+ Text [ portuguese ] = "Função exponencial" ;
+ Text[ chinese_simplified ] = "Ö¸Êýº¯Êý";
+ Text[ russian ] = "Ýêñïîíåíöèàëüíàÿ ôóíêöèÿ";
+ Text[ polish ] = "Funkcja wyk³adnicza";
+ Text[ japanese ] = "Žw”ŠÖ”";
+ Text[ chinese_traditional ] = "«ü¼Æ¨ç¼Æ";
+ Text[ arabic ] = "ÏÇáÉ ÃÓíÉ";
+ Text[ greek ] = "ÅêèåôéêÞ óõíÜñôçóç";
+ Text[ korean ] = "Áö¼ö ÇÔ¼ö";
+ Text[ turkish ] = "Üstel iþlev";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LNX ;
+ HelpId = HID_SMA_LNX ;
+ Text = "natürlicher Logarithmus" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Natural Logarithm" ;
+ Text [ portuguese_brazilian ] = "natürlicher Logarithmus" ;
+ Text [ swedish ] = "naturliga logaritmen" ;
+ Text [ danish ] = "naturlig logaritme" ;
+ Text [ italian ] = "Logaritmo naturale" ;
+ Text [ spanish ] = "Logaritmo natural" ;
+ Text [ french ] = "Logarithme naturel" ;
+ Text [ dutch ] = "natuurlijk logarithme" ;
+ Text [ portuguese ] = "Logoritmo natural" ;
+ Text[ chinese_simplified ] = "×ÔÈ»¶ÔÊý";
+ Text[ russian ] = "Íàòóðàëüíûé ëîãàðèôì";
+ Text[ polish ] = "Naturalny logarytm";
+ Text[ japanese ] = "Ž©‘R‘Δ";
+ Text[ chinese_traditional ] = "¦ÛµM¹ï¼Æ";
+ Text[ arabic ] = "áæÛÇÑíÊã ØÈíÚí";
+ Text[ greek ] = "Öõóéêüò ëïãÜñéèìïò";
+ Text[ korean ] = "ÀÏ¹Ý ·Î±×";
+ Text[ turkish ] = "Doðal logaritma";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_EXPX ;
+ HelpId = HID_SMA_EXPX ;
+ Text = "Exponentialfunktion" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Exponential Function" ;
+ Text [ portuguese_brazilian ] = "Exponentialfunktion" ;
+ Text [ swedish ] = "Exponentialfunktion" ;
+ Text [ danish ] = "eksponentialfunktion" ;
+ Text [ italian ] = "Funzione esponenziale" ;
+ Text [ spanish ] = "Función exponencial" ;
+ Text [ french ] = "Fonction exponentielle" ;
+ Text [ dutch ] = "Exponentiële functie" ;
+ Text [ portuguese ] = "Função exponencial" ;
+ Text[ chinese_simplified ] = "Ö¸Êýº¯Êý";
+ Text[ russian ] = "Ýêñïîíåíöèàëüíàÿ ôóíêöèÿ";
+ Text[ polish ] = "Funkcja wyk³adnicza";
+ Text[ japanese ] = "Žw”ŠÖ”";
+ Text[ chinese_traditional ] = "«ü¼Æ¨ç¼Æ";
+ Text[ arabic ] = "ÏÇáÉ ÃÓíÉ";
+ Text[ greek ] = "ÅêèåôéêÞ óõíÜñôçóç";
+ Text[ korean ] = "Áö¼ö ÇÔ¼ö";
+ Text[ turkish ] = "Üstel iþlev";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LOGX ;
+ HelpId = HID_SMA_LOGX ;
+ Text = "Logarithmus" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Logarithm" ;
+ Text [ portuguese_brazilian ] = "Logarithmus" ;
+ Text [ swedish ] = "Logaritm" ;
+ Text [ danish ] = "logaritme" ;
+ Text [ italian ] = "Logaritmo" ;
+ Text [ spanish ] = "Logaritmo" ;
+ Text [ french ] = "Logarithme" ;
+ Text [ dutch ] = "Logarithme" ;
+ Text [ portuguese ] = "Logoritmo" ;
+ Text[ chinese_simplified ] = "¶ÔÊý";
+ Text[ russian ] = "Ëîãàðèôì";
+ Text[ polish ] = "Logarytm";
+ Text[ japanese ] = "‘Δ";
+ Text[ chinese_traditional ] = "¹ï¼Æ";
+ Text[ arabic ] = "áæÛÇÑíÊã";
+ Text[ greek ] = "ËïãÜñéèìïò";
+ Text[ korean ] = "·Î±×";
+ Text[ turkish ] = "Logaritma";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_RSUPX ;
+ HelpId = HID_SMA_RSUPX ;
+ Text = "Potenz" ;
+ Text [ ENGLISH ] = "Power" ;
+ TEXT[ italian ] = "Potenza";
+ TEXT[ portuguese_brazilian ] = "Potenz";
+ TEXT[ portuguese ] = "Potência";
+ TEXT[ danish ] = "potens";
+ TEXT[ french ] = "Puissance";
+ TEXT[ swedish ] = "Potens";
+ TEXT[ dutch ] = "Potentie";
+ TEXT[ spanish ] = "Potencia";
+ TEXT[ english_us ] = "Power";
+ TEXT[ chinese_simplified ] = "³ËÃÝ";
+ TEXT[ russian ] = "Ñòåïåíü";
+ TEXT[ polish ] = "Potêga";
+ TEXT[ japanese ] = "—Ýæ";
+ TEXT[ chinese_traditional ] = "­¼¾­";
+ TEXT[ arabic ] = "ÇáÞæÉ";
+ TEXT[ greek ] = "Äýíáìç";
+ TEXT[ korean ] = "°ÅµìÁ¦°ö";
+ TEXT[ turkish ] = "Üs";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SINX ;
+ HelpId = HID_SMA_SINX ;
+ Text = "Sinus" ;
+ Text [ ENGLISH ] = "sinus" ;
+ Text [ english_us ] = "Sine" ;
+ Text [ portuguese_brazilian ] = "Sinus" ;
+ Text [ swedish ] = "sinus" ;
+ Text [ danish ] = "sinus" ;
+ Text [ italian ] = "Seno" ;
+ Text [ spanish ] = "Seno" ;
+ Text [ french ] = "Sinus" ;
+ Text [ dutch ] = "Sinus" ;
+ Text [ portuguese ] = "Seno" ;
+ Text[ chinese_simplified ] = "ÕýÏÒ";
+ Text[ russian ] = "Ñèíóñ";
+ Text[ polish ] = "Sinus";
+ Text[ japanese ] = "»²Ý";
+ Text[ chinese_traditional ] = "¥¿©¶";
+ Text[ arabic ] = "ÌíÈ ÇáÒÇæíÉ";
+ Text[ greek ] = "Çìßôïíï";
+ Text[ korean ] = "»çÀÎ";
+ Text[ turkish ] = "Sinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_COSX ;
+ HelpId = HID_SMA_COSX ;
+ Text = "Cosinus" ;
+ Text [ ENGLISH ] = "cosinus" ;
+ Text [ english_us ] = "Cosine" ;
+ Text [ portuguese_brazilian ] = "Cosinus" ;
+ Text [ swedish ] = "cosinus" ;
+ Text [ danish ] = "cosinus" ;
+ Text [ italian ] = "Coseno" ;
+ Text [ spanish ] = "Coseno" ;
+ Text [ french ] = "Cosinus" ;
+ Text [ dutch ] = "Cosinus" ;
+ Text [ portuguese ] = "Coseno" ;
+ Text[ chinese_simplified ] = "ÓàÏÒ";
+ Text[ russian ] = "Êîñèíóñ";
+ Text[ polish ] = "Cosinus";
+ Text[ japanese ] = "º»²Ý";
+ Text[ chinese_traditional ] = "§E©¶";
+ Text[ arabic ] = "ÌíÈ ÊãÇã";
+ Text[ greek ] = "Óõíçìßôïíï";
+ Text[ korean ] = "ÄÚ»çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Kosinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_TANX ;
+ HelpId = HID_SMA_TANX ;
+ Text = "Tangens" ;
+ Text [ ENGLISH ] = "tangens" ;
+ Text [ english_us ] = "Tangent" ;
+ Text [ portuguese_brazilian ] = "Tangens" ;
+ Text [ swedish ] = "tangens" ;
+ Text [ danish ] = "tangens" ;
+ Text [ italian ] = "Tangente" ;
+ Text [ spanish ] = "Tangente" ;
+ Text [ french ] = "Tangente" ;
+ Text [ dutch ] = "Tangens" ;
+ Text [ portuguese ] = "Tangente" ;
+ Text[ chinese_simplified ] = "ÕýÇÐ";
+ Text[ russian ] = "Òàíãåíñ";
+ Text[ polish ] = "Tangens";
+ Text[ japanese ] = "ÀݼުÝÄ";
+ Text[ chinese_traditional ] = "¥¿¤Á";
+ Text[ arabic ] = "Ùá";
+ Text[ greek ] = "ÅöáðôïìÝíç";
+ Text[ korean ] = "źÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Tanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_COTX ;
+ HelpId = HID_SMA_COTX ;
+ Text = "Cotangens" ;
+ Text [ ENGLISH ] = "cotangens" ;
+ Text [ english_us ] = "Cotangent" ;
+ Text [ portuguese_brazilian ] = "Cotangens" ;
+ Text [ swedish ] = "cotangens" ;
+ Text [ danish ] = "cotangens" ;
+ Text [ italian ] = "Cotangente" ;
+ Text [ spanish ] = "Cotangente" ;
+ Text [ french ] = "Cotangente" ;
+ Text [ dutch ] = "Cotangens" ;
+ Text [ portuguese ] = "Cotangente" ;
+ Text[ chinese_simplified ] = "ÓàÇÐ";
+ Text[ russian ] = "Êîòàíãåíñ";
+ Text[ polish ] = "Cotangens";
+ Text[ japanese ] = "ºÀݼުÝÄ";
+ Text[ chinese_traditional ] = "§E¤Á";
+ Text[ arabic ] = "Ùá ÇáÊãÇã";
+ Text[ greek ] = "ÓõíåöáðôïìÝíç";
+ Text[ korean ] = "ÄÚźÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Kotanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SQRTX ;
+ HelpId = HID_SMA_SQRTX ;
+ Text = "Quadratwurzel" ;
+ Text [ ENGLISH ] = "square root" ;
+ Text [ english_us ] = "Square Root" ;
+ Text [ portuguese_brazilian ] = "Quadratwurzel" ;
+ Text [ swedish ] = "kvadratrot" ;
+ Text [ danish ] = "kvadratrod" ;
+ Text [ italian ] = "Radice quadrata" ;
+ Text [ spanish ] = "Raíz cuadrada" ;
+ Text [ french ] = "Racine carrée" ;
+ Text [ dutch ] = "Vierkantswortel" ;
+ Text [ portuguese ] = "Raíz quadrada" ;
+ Text[ chinese_simplified ] = "ƽ·½¸ù";
+ Text[ russian ] = "Êîðåíü êâàäðàòíûé";
+ Text[ polish ] = "Pierwiastek drugiego stopnia";
+ Text[ japanese ] = "•½•ûª";
+ Text[ chinese_traditional ] = "¥­¤è®Ú";
+ Text[ arabic ] = "ÌÐÑ ÊÑÈíÚí";
+ Text[ greek ] = "ÔåôñáãùíéêÞ ñßæá";
+ Text[ korean ] = "Á¦°ö±Ù";
+ Text[ turkish ] = "Karekök";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARCSINX ;
+ HelpId = HID_SMA_ARCSINX ;
+ Text = "Arcussinus" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Arcsine" ;
+ Text [ portuguese_brazilian ] = "Arcussinus" ;
+ Text [ swedish ] = "arcussinus" ;
+ Text [ danish ] = "arcus sinus" ;
+ Text [ italian ] = "Arcoseno" ;
+ Text [ spanish ] = "Seno de arco" ;
+ Text [ french ] = "Arc sinus" ;
+ Text [ dutch ] = "Boogsinus" ;
+ Text [ portuguese ] = "Arcoseno" ;
+ Text[ chinese_simplified ] = "·´ÕýÏÒ";
+ Text[ russian ] = "Àðêñèíóñ";
+ Text[ polish ] = "Arcus sinus";
+ Text[ japanese ] = "±°¸»²Ý";
+ Text[ chinese_traditional ] = "¤Ï¥¿©¶";
+ Text[ arabic ] = "ãÞÇÈá ÇáÌíÈ";
+ Text[ greek ] = "Ôüîï çìéôüíïõ";
+ Text[ korean ] = "¾ÆÅ©»çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Arksinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARCCOSX ;
+ HelpId = HID_SMA_ARCCOSX ;
+ Text = "Arcuscosinus" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Arccosine" ;
+ Text [ portuguese_brazilian ] = "Arcuscosinus" ;
+ Text [ swedish ] = "arcuscosinus" ;
+ Text [ danish ] = "arcus cosinus" ;
+ Text [ italian ] = "Arcocoseno" ;
+ Text [ spanish ] = "Coseno de arco" ;
+ Text [ french ] = "Arc cosinus" ;
+ Text [ dutch ] = "Boogcosinus" ;
+ Text [ portuguese ] = "Arco-coseno" ;
+ Text[ chinese_simplified ] = "·´ÓàÏÒ";
+ Text[ russian ] = "Àðêêîñèíóñ";
+ Text[ polish ] = "Arcus cosinus";
+ Text[ japanese ] = "±°¸º»²Ý";
+ Text[ chinese_traditional ] = "¤Ï§E©¶";
+ Text[ arabic ] = "ãÞÇÈá ÌíÈ ÇáÊãÇã";
+ Text[ greek ] = "Ôüîï óõíçìéôüíïõ";
+ Text[ korean ] = "¾ÆÅ©ÄÚ»çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Arkkosinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARCTANX ;
+ HelpId = HID_SMA_ARCTANX ;
+ Text = "Arcustangens" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Arctangent" ;
+ Text [ portuguese_brazilian ] = "Arcustangens" ;
+ Text [ swedish ] = "arcustangens" ;
+ Text [ danish ] = "arcus tangens" ;
+ Text [ italian ] = "Arcotangente" ;
+ Text [ spanish ] = "Tangente de arco" ;
+ Text [ french ] = "Arc tangente" ;
+ Text [ dutch ] = "Boogtangens" ;
+ Text [ portuguese ] = "Arcotangente" ;
+ Text[ chinese_simplified ] = "·´ÕýÇÐ";
+ Text[ russian ] = "Àðêòàíãåíñ";
+ Text[ polish ] = "Arcus tangens";
+ Text[ japanese ] = "±°¸ÀݼުÝÄ";
+ Text[ chinese_traditional ] = "¤Ï¥¿¤Á";
+ Text[ arabic ] = "ãÞÇÈá ÇáÙá";
+ Text[ greek ] = "Ôüîï åöáðôïìÝíçò";
+ Text[ korean ] = "¾ÆũźÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Arktanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARCCOTX ;
+ HelpId = HID_SMA_ARCCOTX ;
+ Text = "Arcuscotangens" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Arccotangent" ;
+ Text [ portuguese_brazilian ] = "Arcuscotangens" ;
+ Text [ swedish ] = "arcuscotangens" ;
+ Text [ danish ] = "arcus cotangens" ;
+ Text [ italian ] = "Arcocotangente" ;
+ Text [ spanish ] = "Cotangente de arco" ;
+ Text [ french ] = "Arc cotangente" ;
+ Text [ dutch ] = "Boogcotangens" ;
+ Text [ portuguese ] = "Cotangente de arco" ;
+ Text[ chinese_simplified ] = "·´ÓàÇÐ";
+ Text[ russian ] = "Àðêêîòàíãåíñ";
+ Text[ polish ] = "Arcus cotangens";
+ Text[ japanese ] = "±°¸ºÀݼުÝÄ";
+ Text[ chinese_traditional ] = "¤Ï§E¤Á";
+ Text[ arabic ] = "ÞæÓ Ùá ÇáÊãÇã";
+ Text[ greek ] = "Ôüîï óõíåöáðôïìÝíçò";
+ Text[ korean ] = "¾ÆÅ©ÄÚźÁ¨Æ®";
+ Text[ turkish ] = "Arkkotanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_NROOTXY ;
+ HelpId = HID_SMA_NROOTXY ;
+ Text = "n-te Wurzel" ;
+ Text [ ENGLISH ] = "n-th root" ;
+ Text [ english_us ] = "n-th Root" ;
+ Text [ portuguese_brazilian ] = "n-te Wurzel" ;
+ Text [ swedish ] = "n-de roten" ;
+ Text [ danish ] = "n'te rod" ;
+ Text [ italian ] = "Radice n" ;
+ Text [ spanish ] = "Raíz n" ;
+ Text [ french ] = "Racine n-ième" ;
+ Text [ dutch ] = "n-de wortel" ;
+ Text [ portuguese ] = "Raíz n" ;
+ Text[ chinese_simplified ] = "n ´Î¸ù";
+ Text[ russian ] = "Êîðåíü ñòåïåíè";
+ Text[ polish ] = "Pierwiastek stopnia";
+ Text[ japanese ] = "‚Žæª";
+ Text[ chinese_traditional ] = "n ¦¸®Ú";
+ Text[ arabic ] = "ÌÐÑ ãÇ (n-th Root)";
+ Text[ greek ] = "n-ïóôÞ ñßæá";
+ Text[ korean ] = "n-¹ø° ±Ù";
+ Text[ turkish ] = "Kök n";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SINHX ;
+ HelpId = HID_SMA_SINHX ;
+ Text = "Hyperbelsinus" ;
+ Text [ ENGLISH ] = "sinus hyperbolicus" ;
+ Text [ english_us ] = "Hyperbolic Sine" ;
+ Text [ portuguese_brazilian ] = "Hyperbelsinus" ;
+ Text [ swedish ] = "sinus hyperbolicus" ;
+ Text [ danish ] = "hyperbolsk sinus" ;
+ Text [ italian ] = "Seno iperbolico" ;
+ Text [ spanish ] = "Seno hiperbólico" ;
+ Text [ french ] = "Sinus hyperbolique" ;
+ Text [ dutch ] = "Sinus hyperbolicus" ;
+ Text [ portuguese ] = "Seno hiperbólico" ;
+ Text[ chinese_simplified ] = "Ë«ÇúÕýÏÒ";
+ Text[ russian ] = "Ãèïåðáîëè÷åñêèé ñèíóñ";
+ Text[ polish ] = "Sinus hiperboliczny";
+ Text[ japanese ] = "‘o‹Èü»²Ý";
+ Text[ chinese_traditional ] = "Âù¦±¥¿©¶";
+ Text[ arabic ] = "ÌíÈ ÞØÚ ÒÇÆÏ";
+ Text[ greek ] = "Õðåñâïëéêü çìßôïíï";
+ Text[ korean ] = "½Ö°î¼± »çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Hiperbolik sinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_COSHX ;
+ HelpId = HID_SMA_COSHX ;
+ Text = "Hyperbelcosinus" ;
+ Text [ ENGLISH ] = "cosinus hyperbolicus" ;
+ Text [ english_us ] = "Hyperbolic Cosine" ;
+ Text [ portuguese_brazilian ] = "Hyperbelcosinus" ;
+ Text [ swedish ] = "cosinus hyperbolicus" ;
+ Text [ danish ] = "hyperbolsk cosinus" ;
+ Text [ italian ] = "Coseno iperbolico" ;
+ Text [ spanish ] = "Coseno hiperbólico" ;
+ Text [ french ] = "Cosinus hyperbolique" ;
+ Text [ dutch ] = "Cosinus hyperbolicus" ;
+ Text [ portuguese ] = "Coseno hiperbólico" ;
+ Text[ chinese_simplified ] = "ÓàÏÒË«ÇúÏß";
+ Text[ russian ] = "Ãèïåðáîëè÷åñêèé êîñèíóñ";
+ Text[ polish ] = "Cosinus hiperboliczny";
+ Text[ japanese ] = "‘o‹Èüº»²Ý";
+ Text[ chinese_traditional ] = "§E©¶Âù¦±½u";
+ Text[ arabic ] = "ÌíÈ ÊãÇã ÞØÚ ÒÇÆÏ";
+ Text[ greek ] = "Õðåñâïëéêü óõíçìßôïíï";
+ Text[ korean ] = "½Ö°î¼± ÄÚ»çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Hiperbolik kosinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_TANHX ;
+ HelpId = HID_SMA_TANHX ;
+ Text = "Hyperbeltangens" ;
+ Text [ ENGLISH ] = "tangens hyperbolicus" ;
+ Text [ english_us ] = "Hyperbolic Tangent" ;
+ Text [ portuguese_brazilian ] = "Hyperbeltangens" ;
+ Text [ swedish ] = "tangens hyperbolicus" ;
+ Text [ danish ] = "hyperbolsk tangens" ;
+ Text [ italian ] = "Tangente iperbolica" ;
+ Text [ spanish ] = "Tangente hiperbólica" ;
+ Text [ french ] = "Tangente hyperbolique" ;
+ Text [ dutch ] = "Tangens hyperbolicus" ;
+ Text [ portuguese ] = "Tangente hiperbólica" ;
+ Text[ chinese_simplified ] = "Ë«ÇúÕýÇÐ";
+ Text[ russian ] = "Ãèïåðáîëè÷åñêèé òàíãåíñ";
+ Text[ polish ] = "Tangens hiperboliczny";
+ Text[ japanese ] = "‘o‹ÈüÀݼުÝÄ";
+ Text[ chinese_traditional ] = "Âù¦±¥¿¤Á";
+ Text[ arabic ] = "Ùá ÞØÚ ÒÇÆÏ";
+ Text[ greek ] = "ÕðåñâïëéêÞ åöáðôïìÝíç";
+ Text[ korean ] = "½Ö°î¼± źÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Hiperbolik tanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_COTHX ;
+ HelpId = HID_SMA_COTHX ;
+ Text = "Hyperbelcotangens" ;
+ Text [ ENGLISH ] = "cotangens hyperbolicus" ;
+ Text [ english_us ] = "Hyperbolic Cotangent" ;
+ Text [ portuguese_brazilian ] = "Hyperbelcotangens" ;
+ Text [ swedish ] = "cotangens hyperbolicus" ;
+ Text [ danish ] = "hyperbolsk cotangens" ;
+ Text [ italian ] = "Cotangente iperbolica" ;
+ Text [ spanish ] = "Cotangente hiperbólica" ;
+ Text [ french ] = "Cotangente hyperbolique" ;
+ Text [ dutch ] = "Cotangens hyperbolicus" ;
+ Text [ portuguese ] = "Cotangente hiperbólica" ;
+ Text[ chinese_simplified ] = "ÓàÇÐË«ÇúÏß";
+ Text[ russian ] = "Ãèïåðáîëè÷åñêèé êîòàíãåíñ";
+ Text[ polish ] = "Cotangens hiperboliczny";
+ Text[ japanese ] = "‘o‹ÈüºÀݼުÝÄ";
+ Text[ chinese_traditional ] = "§E¤ÁÂù¦±½u";
+ Text[ arabic ] = "Ùá ÊãÇã ÇáÞØÚ ÇáÒÇÆÏ";
+ Text[ greek ] = "ÕðåñâïëéêÞ óõíåöáðôïìÝíç";
+ Text[ korean ] = "½Ö°î¼± ÄÚźÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Hiperbolik kotanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ABSX ;
+ HelpId = HID_SMA_ABSX ;
+ Text = "Absolutwert" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Absolute Value" ;
+ Text [ portuguese_brazilian ] = "Absolutwert" ;
+ Text [ swedish ] = "Absolutvärde" ;
+ Text [ danish ] = "absolut værdi" ;
+ Text [ italian ] = "Valore assoluto" ;
+ Text [ spanish ] = "Valor absoluto" ;
+ Text [ french ] = "Valeur absolue" ;
+ Text [ dutch ] = "Absolute waarde" ;
+ Text [ portuguese ] = "Valor absoluto" ;
+ Text[ chinese_simplified ] = "¾ø¶ÔÖµ";
+ Text[ russian ] = "Àáñîëþòíîå çíà÷åíèå";
+ Text[ polish ] = "Wartoœæ bezwzglêdna";
+ Text[ japanese ] = "â‘Î’l";
+ Text[ chinese_traditional ] = "µ´¹ï­È";
+ Text[ arabic ] = "ÇáÞíãÉ ÇáãØáÞÉ";
+ Text[ greek ] = "Áðüëõôç ôéìÞ";
+ Text[ korean ] = "Àý´ë °ª";
+ Text[ turkish ] = "Mutlak deðer";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARSINHX ;
+ HelpId = HID_SMA_ARSINHX ;
+ Text = "Areahyperbelsinus" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Area Hyperbolic Sine" ;
+ Text [ portuguese_brazilian ] = "Areahyperbelsinus" ;
+ Text [ swedish ] = "area sinus hyperbolicus" ;
+ Text [ danish ] = "invers hyperbolsk sinus" ;
+ Text [ italian ] = "Inversa del seno iperbolico" ;
+ Text [ spanish ] = "Seno hiperbólico de área" ;
+ Text [ french ] = "Argument sinus hyperbolique" ;
+ Text [ dutch ] = "Area sinus hyperbolicus" ;
+ Text [ portuguese ] = "Seno hiperbólico de área" ;
+ Text[ chinese_simplified ] = "ÕýÏÒË«ÇúÃæ";
+ Text[ russian ] = "Àðåà-ñèíóñ ãèïåðáîëè÷åñêèé";
+ Text[ polish ] = "Arcus sinus hiperboliczny";
+ Text[ japanese ] = "‘o‹Èü‹t»²Ý";
+ Text[ chinese_traditional ] = "¥¿©¶Âù¦±­±";
+ Text[ arabic ] = "ÌíÈ ÇáÒÇæíÉ áÞØÚ ÒÇÆÏ áãäØÞÉ";
+ Text[ greek ] = "Áíôßóôñïöï õðåñâïëéêü çìßôïíï";
+ Text[ korean ] = "½Ö°î¼± ¸éÀû »çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Alan hiperbolik sinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARCOSHX ;
+ HelpId = HID_SMA_ARCOSHX ;
+ Text = "Areahyperbelcosinus" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Area Hyperbolic Cosine" ;
+ Text [ portuguese_brazilian ] = "Areahyperbelcosinus" ;
+ Text [ swedish ] = "area cosinus hyperbolicus" ;
+ Text [ danish ] = "invers hyperbolsk cosinus" ;
+ Text [ italian ] = "Inversa del coseno iperbolico" ;
+ Text [ spanish ] = "Coseno hiperbólico de área" ;
+ Text [ french ] = "Argument cosinus hyperbolique" ;
+ Text [ dutch ] = "Area cosinus hyperbolicus" ;
+ Text [ portuguese ] = "Coseno hiperbólico de área" ;
+ Text[ chinese_simplified ] = "ÓàÏÒË«ÇúÃæ";
+ Text[ russian ] = "Àðåà-êîñèíóñ ãèïåðáîëè÷åñêèé";
+ Text[ polish ] = "Arcus cosinus hiperboliczny";
+ Text[ japanese ] = "‘o‹Èü‹tº»²Ý";
+ Text[ chinese_traditional ] = "§E©¶Âù¦±­±";
+ Text[ arabic ] = "ÌíÈ ÇáÊãÇã áÞØÚ ÒÇÆÏ áãäØÞÉ";
+ Text[ greek ] = "Áíôßóôñïöï õðåñâïëéêü óõíçìßôïíï";
+ Text[ korean ] = "½Ö°î¼± ¸éÀû ÄÚ»çÀÎ ÇÔ¼ö";
+ Text[ turkish ] = "Alan hiperbolik kosinüs";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARTANHX ;
+ HelpId = HID_SMA_ARTANHX ;
+ Text = "Areahyperbeltangens" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Area Hyperbolic Tangent" ;
+ Text [ portuguese_brazilian ] = "Areahyperbeltangens" ;
+ Text [ swedish ] = "area tangens hyperbolicus" ;
+ Text [ danish ] = "invers hyperbolsk tangens" ;
+ Text [ italian ] = "Inversa della tangente iperbolica" ;
+ Text [ spanish ] = "Tangente hiperbólica de área" ;
+ Text [ french ] = "Argument tangente hyperbolique" ;
+ Text [ dutch ] = "Area tangens hyperbolicus" ;
+ Text [ portuguese ] = "Tangente hiperbólica de área" ;
+ Text[ chinese_simplified ] = "ÕýÇÐË«ÇúÃæ";
+ Text[ russian ] = "Àðåà-òàíãåíñ ãèïåðáîëè÷åñêèé";
+ Text[ polish ] = "Arcus tangens hiperboliczny";
+ Text[ japanese ] = "‘o‹Èü‹tÀݼުÝÄ";
+ Text[ chinese_traditional ] = "¥¿¤ÁÂù¦±­±";
+ Text[ arabic ] = "Ùá ÇáÒÇæíÉ áÞØÚ ÒÇÆÏ áãäØÞÉ";
+ Text[ greek ] = "Áíôßóôñïöç õðåñâïëéêÞ åöáðôïìÝíç";
+ Text[ korean ] = "½Ö°î¼± ¸éÀû źÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Alan hiperbolik tanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ARCOTHX ;
+ HelpId = HID_SMA_ARCOTHX ;
+ Text = "Areahyperbelcotangens" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Area Hyperbolic Cotangent" ;
+ Text [ portuguese_brazilian ] = "Areahyperbelcotangens" ;
+ Text [ swedish ] = "area cotangens hyperbolicus" ;
+ Text [ danish ] = "invers hyperbolsk cotangens" ;
+ Text [ italian ] = "Inversa della cotangente iperbolica" ;
+ Text [ spanish ] = "Cotangente hiperbólica de área" ;
+ Text [ french ] = "Argument cotangente hyperbolique" ;
+ Text [ dutch ] = "Area cotangens hyperbolicus" ;
+ Text [ portuguese ] = "Cotangente hiperbólica de área" ;
+ Text[ chinese_simplified ] = "ÓàÇÐË«ÇúÃæ";
+ Text[ russian ] = "Àðåà-êîòàíãåíñ ãèïåðáîëè÷åñêèé";
+ Text[ polish ] = "Arcus cotangens hiperboliczny";
+ Text[ japanese ] = "‘o‹Èü‹tºÀݼުÝÄ";
+ Text[ chinese_traditional ] = "§E¤ÁÂù¦±­±";
+ Text[ arabic ] = "Ùá ÇáÊãÇã áÞØÚ ÒÇÆÏ áãäØÞÉ";
+ Text[ greek ] = "Áíôßóôñïöç õðåñâïëéêÞ óõíåöáðôïìÝíç";
+ Text[ korean ] = "½Ö°î¼± ¸éÀû ÄÚźÁ¨Æ® ÇÔ¼ö";
+ Text[ turkish ] = "Alan hiperbolik kotanjant";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FACTX ;
+ HelpId = HID_SMA_FACTX ;
+ Text = "Fakultät" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Factorial" ;
+ Text [ portuguese_brazilian ] = "Fakultät" ;
+ Text [ swedish ] = "Fakultet" ;
+ Text [ danish ] = "fakultet" ;
+ Text [ italian ] = "Fattoriale" ;
+ Text [ spanish ] = "Factorial" ;
+ Text [ french ] = "Factorielle" ;
+ Text [ dutch ] = "Faculteit" ;
+ Text [ portuguese ] = "Factorial" ;
+ Text[ chinese_simplified ] = "½×³Ë";
+ Text[ russian ] = "Ôàêòîðèàë";
+ Text[ polish ] = "Silnia";
+ Text[ japanese ] = "ŠKæ";
+ Text[ chinese_traditional ] = "¶¥­¼";
+ Text[ arabic ] = "ãÖÑæÈ";
+ Text[ greek ] = "Ðáñáãïíôéêü";
+ Text[ korean ] = "°è½Â";
+ Text[ turkish ] = "Çarpýným";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 5
+ {
+ // operators
+ HelpId = HID_SMA_OPERATORS_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 3 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "form.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_LIMX ;
+ RID_SUMX ;
+ RID_PRODX ;
+ RID_COPRODX ;
+ RID_INTX ;
+ RID_IINTX ;
+ RID_IIINTX ;
+ RID_LINTX ;
+ RID_LLINTX ;
+ RID_LLLINTX ;
+ RID_FROMXTOY ;
+ RID_FROMX ;
+ RID_TOX ;
+ };
+ IdCount =
+ {
+ 13 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_LIMX ;
+ HelpId = HID_SMA_LIMX ;
+ Text = "Limes" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Limes" ;
+ Text [ portuguese_brazilian ] = "Limes" ;
+ Text [ swedish ] = "Limes" ;
+ Text [ danish ] = "grænseværdi" ;
+ Text [ italian ] = "Limite" ;
+ Text [ spanish ] = "Límites" ;
+ Text [ french ] = "Limes" ;
+ Text [ dutch ] = "Limes" ;
+ Text [ portuguese ] = "Limites" ;
+ Text[ chinese_simplified ] = "¼«ÏÞ";
+ Text[ russian ] = "Ïðåäåë";
+ Text[ polish ] = "Limes";
+ Text[ japanese ] = "‹ÉŒÀ’l";
+ Text[ chinese_traditional ] = "·¥­­";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÞÕì";
+ Text[ greek ] = "¼ñéá";
+ Text[ korean ] = "¶óÀÓ";
+ Text[ turkish ] = "Lim";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SUMX ;
+ HelpId = HID_SMA_SUMX ;
+ Text = "Summe" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Sum" ;
+ Text [ portuguese_brazilian ] = "Summe" ;
+ Text [ swedish ] = "Summa" ;
+ Text [ danish ] = "sum" ;
+ Text [ italian ] = "Somma" ;
+ Text [ spanish ] = "Suma" ;
+ Text [ french ] = "Somme" ;
+ Text [ dutch ] = "Som" ;
+ Text [ portuguese ] = "Soma" ;
+ Text[ chinese_simplified ] = "×ܼÆ";
+ Text[ russian ] = "Ñóììà";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "‘˜a";
+ Text[ chinese_traditional ] = "Á`­p";
+ Text[ arabic ] = "ÇáãÌãæÚ";
+ Text[ greek ] = "¢èñïéóìá";
+ Text[ korean ] = "ÇÕ°è";
+ Text[ turkish ] = "Toplam";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_PRODX ;
+ HelpId = HID_SMA_PRODX ;
+ Text = "Produkt" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Product" ;
+ Text [ portuguese_brazilian ] = "Produkt" ;
+ Text [ swedish ] = "Produkt" ;
+ Text [ danish ] = "produkt" ;
+ Text [ italian ] = "Prodotto" ;
+ Text [ spanish ] = "Producto" ;
+ Text [ french ] = "Produit" ;
+ Text [ dutch ] = "Product" ;
+ Text [ portuguese ] = "Produto" ;
+ Text[ chinese_simplified ] = "³Ë»ý";
+ Text[ russian ] = "Ïðîèçâåäåíèå";
+ Text[ polish ] = "Iloczyn";
+ Text[ japanese ] = "Ï";
+ Text[ chinese_traditional ] = "­¼¿n";
+ Text[ arabic ] = "ÖÑÈ";
+ Text[ greek ] = "Ãéíüìåíï";
+ Text[ korean ] = "°ö";
+ Text[ turkish ] = "Çarpým";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_COPRODX ;
+ HelpId = HID_SMA_COPRODX ;
+ Text = "Coprodukt" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Coproduct" ;
+ Text [ portuguese_brazilian ] = "Coprodukt" ;
+ Text [ swedish ] = "Koprodukt" ;
+ Text [ danish ] = "coprodukt" ;
+ Text [ italian ] = "Coprodotto" ;
+ Text [ spanish ] = "Coproducto" ;
+ Text [ french ] = "Coproduit" ;
+ Text [ dutch ] = "Coproduct" ;
+ Text [ portuguese ] = "Coproduto" ;
+ Text[ chinese_simplified ] = "ºÏÊý";
+ Text[ russian ] = "Êîïðîèçâåäåíèå";
+ Text[ polish ] = "Suma";
+ Text[ japanese ] = "’¼˜a";
+ Text[ chinese_traditional ] = "¦X¼Æ";
+ Text[ arabic ] = "ÖÑÈ ãÔÊÑß";
+ Text[ greek ] = "Óõìðëçñùìáôéêü ãéíüìåíï";
+ Text[ korean ] = "ÄÚÇÁ·Î´öÆ®";
+ Text[ turkish ] = "Yan sonuç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FROMXTOY ;
+ HelpId = HID_SMA_FROMXTOY ;
+ Text = "untere und obere Grenze" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Upper and Lower Limit" ;
+ Text [ portuguese_brazilian ] = "untere und obere Grenze" ;
+ Text [ swedish ] = "nedre och övre gräns" ;
+ Text [ danish ] = "nedre og øvre grænse" ;
+ Text [ italian ] = "Limite inferiore e superiore" ;
+ Text [ spanish ] = "Límites superior e inferior" ;
+ Text [ french ] = "Limites inférieure et supérieure" ;
+ Text [ dutch ] = "onderste en bovenste grens" ;
+ Text [ portuguese ] = "Limites inferior e superior" ;
+ Text[ chinese_simplified ] = "ÉÏϽçÏÞ";
+ Text[ russian ] = "Âåðõíèé è íèæíèé ïðåäåë";
+ Text[ polish ] = "dolna i górna granica";
+ Text[ japanese ] = "㉺‹ÉŒÀ’l";
+ Text[ chinese_traditional ] = "¤W¤U¬É­­";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÏäì æÇáÃÞÕì";
+ Text[ greek ] = "¢íù êáé êÜôù üñéï";
+ Text[ korean ] = "ÇÏÀ§ ¹× »óÀ§ ±ØÇÑ";
+ Text[ turkish ] = "Alt ve üst limit";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_INTX ;
+ HelpId = HID_SMA_INTX ;
+ Text = "Integral" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Integral" ;
+ Text [ portuguese_brazilian ] = "Integral" ;
+ Text [ swedish ] = "Integral" ;
+ Text [ danish ] = "integral" ;
+ Text [ italian ] = "Integrale" ;
+ Text [ spanish ] = "Integral" ;
+ Text [ french ] = "Intégrale" ;
+ Text [ dutch ] = "Integraal" ;
+ Text [ portuguese ] = "Integral" ;
+ Text[ chinese_simplified ] = "»ý·Ö";
+ Text[ russian ] = "Èíòåãðàë";
+ Text[ polish ] = "Ca³ka";
+ Text[ japanese ] = "쥻";
+ Text[ chinese_traditional ] = "¿n¤À";
+ Text[ arabic ] = "ÊßÇãá";
+ Text[ greek ] = "ÏëïêëÞñùìá";
+ Text[ korean ] = "ÀûºÐ";
+ Text[ turkish ] = "Ýntegral";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_IINTX ;
+ HelpId = HID_SMA_IINTX ;
+ Text = "doppeltes Integral" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Double Integral" ;
+ Text [ portuguese_brazilian ] = "doppeltes Integral" ;
+ Text [ swedish ] = "dubbel integral" ;
+ Text [ danish ] = "dobbelt integral" ;
+ Text [ italian ] = "Integrale doppio" ;
+ Text [ spanish ] = "Integral doble" ;
+ Text [ french ] = "Double intégrale" ;
+ Text [ dutch ] = "dubbele integraal" ;
+ Text [ portuguese ] = "Integral dupla" ;
+ Text[ chinese_simplified ] = "Ë«ÖØ»ý·Ö";
+ Text[ russian ] = "Äâîéíîé èíòåãðàë";
+ Text[ polish ] = "Ca³ka podwójna";
+ Text[ japanese ] = "Җd쥻";
+ Text[ chinese_traditional ] = "Âù­«¿n¤À";
+ Text[ arabic ] = "ÊßÇãá ãÒÏæÌ";
+ Text[ greek ] = "Äéðëü ïëïêëÞñùìá";
+ Text[ korean ] = "2ÁßÀûºÐ";
+ Text[ turkish ] = "Çift integral";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_IIINTX ;
+ HelpId = HID_SMA_IIINTX ;
+ Text = "dreifaches Integral" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Triple Integral" ;
+ Text [ portuguese_brazilian ] = "dreifaches Integral" ;
+ Text [ swedish ] = "trippelintegral" ;
+ Text [ danish ] = "tredobbelt integral" ;
+ Text [ italian ] = "Integrale triplo" ;
+ Text [ spanish ] = "Integral triple" ;
+ Text [ french ] = "Triple intégrale" ;
+ Text [ dutch ] = "drievoudige integraal" ;
+ Text [ portuguese ] = "Integral tripla" ;
+ Text[ chinese_simplified ] = "ÈýÖØ»ý·Ö";
+ Text[ russian ] = "Òðîéíîé èíòåãðàë";
+ Text[ polish ] = "Potrójna ca³ka";
+ Text[ japanese ] = "ŽOdÏ•ª";
+ Text[ chinese_traditional ] = "¤T­«¿n¤À";
+ Text[ arabic ] = "ÊßÇãá ËáÇËí";
+ Text[ greek ] = "Ôñéðëü ïëïêëÞñùìá";
+ Text[ korean ] = "3ÁßÀûºÐ";
+ Text[ turkish ] = "Üçlü integral";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FROMX ;
+ HelpId = HID_SMA_FROMX ;
+ Text = "untere Grenze" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Lower Limit" ;
+ Text [ portuguese_brazilian ] = "untere Grenze" ;
+ Text [ swedish ] = "nedre gräns" ;
+ Text [ danish ] = "nedre grænse" ;
+ Text [ italian ] = "Limite inferiore" ;
+ Text [ spanish ] = "Límite inferior" ;
+ Text [ french ] = "Limite inférieure" ;
+ Text [ dutch ] = "onderste grens" ;
+ Text [ portuguese ] = "Limite inferior" ;
+ Text[ chinese_simplified ] = "ÏÂÏÞ";
+ Text[ russian ] = "Íèæíèé ïðåäåë";
+ Text[ polish ] = "Dolna granica";
+ Text[ japanese ] = "‰º‹ÉŒÀ’l";
+ Text[ chinese_traditional ] = "¤U­­";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÏäì";
+ Text[ greek ] = "ÊÜôù üñéï";
+ Text[ korean ] = "ÃÖ¼Ò ±ØÇÑ";
+ Text[ turkish ] = "Alt limit";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LINTX ;
+ HelpId = HID_SMA_LINTX ;
+ Text = "Kurvenintegral" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Curve Integral" ;
+ Text [ portuguese_brazilian ] = "Kurvenintegral" ;
+ Text [ swedish ] = "Kurvintegral" ;
+ Text [ danish ] = "kurveintegral" ;
+ Text [ italian ] = "Integrale curvilineo" ;
+ Text [ spanish ] = "Integral curvilínea" ;
+ Text [ french ] = "Intégrale de courbe" ;
+ Text [ dutch ] = "Boogintegraal" ;
+ Text [ portuguese ] = "Integral curvilínea" ;
+ Text[ chinese_simplified ] = "ÇúÏß»ý·Ö";
+ Text[ russian ] = "Êðèâîëèíåéíûé èíòåãðàë";
+ Text[ polish ] = "Ca³ka krzywoliniowa";
+ Text[ japanese ] = "üÏ•ª";
+ Text[ chinese_traditional ] = "¦±½u¿n¤À";
+ Text[ arabic ] = "ÊßÇãá ãäÍäì";
+ Text[ greek ] = "Åðéêáìðýëéï ïëïêëÞñùìá";
+ Text[ korean ] = "¼±ÀûºÐ";
+ Text[ turkish ] = "Eðri integrali";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LLINTX ;
+ HelpId = HID_SMA_LLINTX ;
+ Text = "doppeltes Kurvenintegral" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Double Curve Integral" ;
+ Text [ portuguese_brazilian ] = "doppeltes Kurvenintegral" ;
+ Text [ swedish ] = "dubbel kurvintegral" ;
+ Text [ danish ] = "dobbelt kurveintegral" ;
+ Text [ italian ] = "Integrale curvilineo doppio" ;
+ Text [ spanish ] = "Doble integral curvilínea" ;
+ Text [ french ] = "Double intégrale de courbe" ;
+ Text [ dutch ] = "dubbele boogintegraal" ;
+ Text [ portuguese ] = "Dupla integral curvilínea" ;
+ Text[ chinese_simplified ] = "Ë«ÖØÇúÏß»ý·Ö";
+ Text[ russian ] = "Äâîéíîé êðèâîëèíåéíûé èíòåãðàë";
+ Text[ polish ] = "Podwójna ca³ka krzywoliniowa";
+ Text[ japanese ] = "–ÊÏ•ª";
+ Text[ chinese_traditional ] = "Âù­«¦±½u¿n¤À";
+ Text[ arabic ] = "ÊßÇãá ãäÍäì ãÒÏæÌ";
+ Text[ greek ] = "Äéðëü åðéêáìðýëéï ïëïêëÞñùìá";
+ Text[ korean ] = "2Áß ¼±ÀûºÐ";
+ Text[ turkish ] = "Çift eðri integrali";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LLLINTX ;
+ HelpId = HID_SMA_LLLINTX ;
+ Text = "dreifaches Kurvenintegral" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Triple Curve Integral" ;
+ Text [ portuguese_brazilian ] = "dreifaches Kurvenintegral" ;
+ Text [ swedish ] = "trippel kurvintegral" ;
+ Text [ danish ] = "tredobbelt kurveintegral" ;
+ Text [ italian ] = "Integrale curvilineo triplo" ;
+ Text [ spanish ] = "Triple integral curvilínea" ;
+ Text [ french ] = "Triple intégrale de courbe" ;
+ Text [ dutch ] = "drievoudige boogintegraal" ;
+ Text [ portuguese ] = "Tripla integral curvilínea" ;
+ Text[ chinese_simplified ] = "ÈýÖØÇúÏß»ý·Ö";
+ Text[ russian ] = "Òðîéíîé êðèâîëèíåéíûé èíòåãðàë";
+ Text[ polish ] = "Potrójna ca³ka krzywoliniowa";
+ Text[ japanese ] = "‘ÌÏ•ª";
+ Text[ chinese_traditional ] = "¤T­«¦±½u¿n¤À";
+ Text[ arabic ] = "ÊßÇãá ãäÍäì ËáÇËí";
+ Text[ greek ] = "Ôñéðëü åðéêáìðýëéï ïëïêëÞñùìá";
+ Text[ korean ] = "3Áß ¼±ÀûºÐ";
+ Text[ turkish ] = "Üçlü eðri integrali";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_TOX ;
+ HelpId = HID_SMA_TOX ;
+ Text = "obere Grenze" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Upper Limit" ;
+ Text [ portuguese_brazilian ] = "obere Grenze" ;
+ Text [ swedish ] = "övre gräns" ;
+ Text [ danish ] = "øvre grænse" ;
+ Text [ italian ] = "Limite superiore" ;
+ Text [ spanish ] = "Límite superior" ;
+ Text [ french ] = "Limite supérieure" ;
+ Text [ dutch ] = "bovenste grens" ;
+ Text [ portuguese ] = "Limite superior" ;
+ Text[ chinese_simplified ] = "ÉÏÏÞ";
+ Text[ russian ] = "Âåðõíèé ïðåäåë";
+ Text[ polish ] = "Górna granica";
+ Text[ japanese ] = "ã‹ÉŒÀ’l";
+ Text[ chinese_traditional ] = "¤W­­";
+ Text[ arabic ] = "ÇáÍÏ ÇáÃÞÕì";
+ Text[ greek ] = "¢íù üñéï";
+ Text[ korean ] = "ÃÖ´ë ±ØÇÑ";
+ Text[ turkish ] = "Üst limit";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 6
+ {
+ // attributs
+ HelpId = HID_SMA_ATTRIBUTES_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 5 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "attr.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_ACUTEX ;
+ RID_GRAVEX ;
+ RID_CHECKX ;
+ RID_BREVEX ;
+ RID_BARX ;
+ RID_VECX ;
+ RID_HATX ;
+ RID_TILDEX ;
+ RID_CIRCLEX ;
+ RID_DOTX ;
+ RID_DDOTX ;
+ RID_DDDOTX ;
+ RID_OVERLINEX ;
+ RID_UNDERLINEX ;
+ RID_OVERSTRIKEX ;
+ RID_PHANTOMX ;
+ RID_BOLDX ;
+ RID_ITALX ;
+ RID_SIZEXY ;
+ RID_FONTXY ;
+ RID_WIDEHATX ;
+ RID_WIDETILDEX ;
+ RID_WIDEVECX ;
+ };
+ IdCount =
+ {
+ 23 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_ACUTEX ;
+ HelpId = HID_SMA_ACUTEX ;
+ Text = "Accent nach rechts" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Accent to the Right" ;
+ Text [ portuguese_brazilian ] = "Accent nach rechts" ;
+ Text [ swedish ] = "Accent till höger" ;
+ Text [ danish ] = "accent aigu" ;
+ Text [ italian ] = "Accento verso destra" ;
+ Text [ spanish ] = "Acento hacia la derecha" ;
+ Text [ french ] = "Accent aigu" ;
+ Text [ dutch ] = "Accent naar rechts" ;
+ Text [ portuguese ] = "Acento para a direita" ;
+ Text[ chinese_simplified ] = "ÓÒÏòÖØÒô×Öĸ";
+ Text[ russian ] = "Àêöåíò âïðàâî";
+ Text[ polish ] = "Akcent w prawo";
+ Text[ japanese ] = "±¸¾ÝĉEã‚è";
+ Text[ chinese_traditional ] = "¥k¦V­«­µ¦r¥À";
+ Text[ arabic ] = "ÍÑßÉ ÇáÃÍÑÝ Åáì Çáíãíä";
+ Text[ greek ] = "Ôüíïò ðñïò ôá äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊÀ¸·Î ¾Ç¼¾Æ®";
+ Text[ turkish ] = "Saða vurgu";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_GRAVEX ;
+ HelpId = HID_SMA_GRAVEX ;
+ Text = "Accent nach links" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Accent to the Left" ;
+ Text [ portuguese_brazilian ] = "Accent nach links" ;
+ Text [ swedish ] = "Accent till vänster" ;
+ Text [ danish ] = "accent grave" ;
+ Text [ italian ] = "Accento verso sinistra" ;
+ Text [ spanish ] = "Acento hacia la izquierda" ;
+ Text [ french ] = "Accent grave" ;
+ Text [ dutch ] = "Accent naar links" ;
+ Text [ portuguese ] = "Acento grave" ;
+ Text[ chinese_simplified ] = "×óÏòÖØÒô·ûºÅ";
+ Text[ russian ] = "Àêöåíò âëåâî";
+ Text[ polish ] = "Akcent w prawo";
+ Text[ japanese ] = "±¸¾ÝĉE‰º‚ª‚è";
+ Text[ chinese_traditional ] = "¥ª¦V­«­µ²Å¸¹";
+ Text[ arabic ] = "ÇáÚáÇãÉ ÇáäØÞíÉ Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "Ôüíïò ðñïò ôá áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ °­Á¶";
+ Text[ turkish ] = "Sola vurgu";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_CHECKX ;
+ HelpId = HID_SMA_CHECKX ;
+ Text = "umgekehrtes Dach" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Reverse Circumflex" ;
+ Text [ portuguese_brazilian ] = "umgekehrtes Dach" ;
+ Text [ swedish ] = "omvänd cirkumflex" ;
+ Text [ danish ] = "omvendt cirkumfleks" ;
+ Text [ italian ] = "Accento circonflesso rovesciato" ;
+ Text [ spanish ] = "circunflejo inverso" ;
+ Text [ french ] = "Accent circonflexe inversé" ;
+ Text [ dutch ] = "omgekeerd circumflex" ;
+ Text [ portuguese ] = "Circunflexo invertido" ;
+ Text[ chinese_simplified ] = "·´ÏòÒÖÑï·ûºÅ";
+ Text[ russian ] = "Ïåðåâåðíóòûé öèðêóìôëåêñ";
+ Text[ polish ] = "Odwrócony daszek";
+ Text[ japanese ] = "‹tʯÄ";
+ Text[ chinese_traditional ] = "¤Ï¦V§í´­²Å¸¹";
+ Text[ arabic ] = "ÚáÇãÉ (^) ÚßÓíÉ";
+ Text[ greek ] = "Áíôßóôñïöç ãáëëéêÞ ðåñéóðùìÝíç";
+ Text[ korean ] = "°­Á¶±âÈ£¸¦ ¿ªÀ¸·Î";
+ Text[ turkish ] = "Ters þapka";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_BREVEX ;
+ HelpId = HID_SMA_BREVEX ;
+ Text = "Breve" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Breve" ;
+ Text [ portuguese_brazilian ] = "Breve" ;
+ Text [ swedish ] = "Breve" ;
+ Text [ danish ] = "breve" ;
+ Text [ italian ] = "Breve" ;
+ Text [ spanish ] = "Breve" ;
+ Text [ french ] = "Breve" ;
+ Text [ dutch ] = "Breve" ;
+ Text [ portuguese ] = "Breve" ;
+ Text[ chinese_simplified ] = "¶ÌÒô·û";
+ Text[ russian ] = "Äóãà íàä çíàêîì";
+ Text[ polish ] = "Breve";
+ Text[ japanese ] = "¶¯Ìß";
+ Text[ chinese_traditional ] = "µu­µ²Å";
+ Text[ arabic ] = "ÇáãõÞóÕøÑÉ (Breve)";
+ Text[ greek ] = "Breve";
+ Text[ korean ] = "¾àÇÏ°Ô Ç¥½Ã";
+ Text[ turkish ] = "Kýsaltma iþareti";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_CIRCLEX ;
+ HelpId = HID_SMA_CIRCLEX ;
+ Text = "Kreis" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Circle" ;
+ Text [ portuguese_brazilian ] = "Kreis" ;
+ Text [ swedish ] = "Cirkel" ;
+ Text [ danish ] = "cirkel" ;
+ Text [ italian ] = "Cerchio" ;
+ Text [ spanish ] = "Círculo" ;
+ Text [ french ] = "Cercle" ;
+ Text [ dutch ] = "Cirkel" ;
+ Text [ portuguese ] = "Círculo" ;
+ Text[ chinese_simplified ] = "Ô²";
+ Text[ russian ] = "Êðóæîê";
+ Text[ polish ] = "Ko³o";
+ Text[ japanese ] = "‰~";
+ Text[ chinese_traditional ] = "¶ê";
+ Text[ arabic ] = "ÏÇÆÑÉ";
+ Text[ greek ] = "Êýêëïò";
+ Text[ korean ] = "¿ø";
+ Text[ turkish ] = "Daire";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_VECX ;
+ HelpId = HID_SMA_VECX ;
+ Text = "Vektorpfeil" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Vector Arrow" ;
+ Text [ portuguese_brazilian ] = "Vektorpfeil" ;
+ Text [ swedish ] = "Vektorpil" ;
+ Text [ danish ] = "vektorpil" ;
+ Text [ italian ] = "Freccia vettoriale" ;
+ Text [ spanish ] = "Flecha vectorial" ;
+ Text [ french ] = "Flèche vectorielle" ;
+ Text [ dutch ] = "Vectorpijl" ;
+ Text [ portuguese ] = "Seta vectorial" ;
+ Text[ chinese_simplified ] = "ʸÁ¿¼ýÍ·";
+ Text[ russian ] = "Âåêòîðíàÿ ñòðåëêà";
+ Text[ polish ] = "Strza³ka wektora";
+ Text[ japanese ] = "ÍÞ¸ÄÙ–îˆó";
+ Text[ chinese_traditional ] = "¥Ú¶q½bÀY";
+ Text[ arabic ] = "Óåã ÇÊÌÇåí";
+ Text[ greek ] = "ÂÝëïò äéáíýóìáôïò";
+ Text[ korean ] = "º¤ÅÍ È­»ìÇ¥";
+ Text[ turkish ] = "Vektör oku";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_TILDEX ;
+ HelpId = HID_SMA_TILDEX ;
+ Text = "Tilde" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Tilde" ;
+ Text [ portuguese_brazilian ] = "Tilde" ;
+ Text [ swedish ] = "Tilde" ;
+ Text [ danish ] = "tilde" ;
+ Text [ italian ] = "Tilde" ;
+ Text [ spanish ] = "Tilde" ;
+ Text [ french ] = "Tilde" ;
+ Text [ dutch ] = "Tilde" ;
+ Text [ portuguese ] = "Til" ;
+ Text[ chinese_simplified ] = "¼ÓÔÚÎ÷°àÑÀÓïn_×ÖÉϵķ¢Òô·ûºÅ";
+ Text[ russian ] = "Òèëüäà";
+ Text[ polish ] = "Tylda";
+ Text[ japanese ] = "ÁÙÀÞ";
+ Text[ chinese_traditional ] = "¥[¦b¦è¯Z¤ú»yn_¦r¤Wªºµo­µ²Å¸¹";
+ Text[ arabic ] = "ÇáÊáÏÉ";
+ Text[ greek ] = "ÐåñéóðùìÝíç";
+ Text[ korean ] = "Æ¿µå";
+ Text[ turkish ] = "Tilde";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_HATX ;
+ HelpId = HID_SMA_HATX ;
+ Text = "Dach" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Circumflex" ;
+ Text [ portuguese_brazilian ] = "Dach" ;
+ Text [ swedish ] = "Cirkumflex" ;
+ Text [ danish ] = "cirkumfleks" ;
+ Text [ italian ] = "Accento circonflesso" ;
+ Text [ spanish ] = "Circunflejo" ;
+ Text [ french ] = "Accent circonflexe" ;
+ Text [ dutch ] = "Circumflex" ;
+ Text [ portuguese ] = "Circunflexo" ;
+ Text[ chinese_simplified ] = "ÒÖÑï·ûºÅ";
+ Text[ russian ] = "Öèðêóìôëåêñ";
+ Text[ polish ] = "Daszek";
+ Text[ japanese ] = "ʯÄ";
+ Text[ chinese_traditional ] = "§í´­²Å¸¹";
+ Text[ arabic ] = "Circumflex";
+ Text[ greek ] = "ÃáëëéêÞ ðåñéóðùìÝíç";
+ Text[ korean ] = "°­Á¶±âÈ£";
+ Text[ turkish ] = "Þapka";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_BARX ;
+ HelpId = HID_SMA_BARX ;
+ Text = "Überstrich" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Line Above" ;
+ Text [ portuguese_brazilian ] = "Überstrich" ;
+ Text [ swedish ] = "Linje över" ;
+ Text [ danish ] = "overstreg" ;
+ Text [ italian ] = "Linea superiore" ;
+ Text [ spanish ] = "Línea superior" ;
+ Text [ french ] = "Surlignage" ;
+ Text [ dutch ] = "Streepje op" ;
+ Text [ portuguese ] = "Linha superior" ;
+ Text[ chinese_simplified ] = "ÉÏ»®Ïß";
+ Text[ russian ] = "Ëèíèÿ ñâåðõó";
+ Text[ polish ] = "Kreska górna";
+ Text[ japanese ] = "ÊÞ°";
+ Text[ chinese_traditional ] = "¤W¹º½u";
+ Text[ arabic ] = "ÎØ ÝæÞ";
+ Text[ greek ] = "ÃñáììÞ Üíù";
+ Text[ korean ] = "»óÀ§ ¼±";
+ Text[ turkish ] = "Üst çizgi";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOTX ;
+ HelpId = HID_SMA_DOTX ;
+ Text = "Punkt" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Dot" ;
+ Text [ portuguese_brazilian ] = "Punkt" ;
+ Text [ swedish ] = "Punkt" ;
+ Text [ danish ] = "punkt" ;
+ Text [ italian ] = "Punto" ;
+ Text [ spanish ] = "Punto" ;
+ Text [ french ] = "Point" ;
+ Text [ dutch ] = "Punt" ;
+ Text [ portuguese ] = "Ponto" ;
+ Text[ chinese_simplified ] = "µã";
+ Text[ russian ] = "Òî÷êà";
+ Text[ polish ] = "Punkt";
+ Text[ japanese ] = "¼Ý¸ÞÙ ÄÞ¯Ä";
+ Text[ chinese_traditional ] = "ÂI";
+ Text[ arabic ] = "äÞØÉ";
+ Text[ greek ] = "Êïõêêßäá";
+ Text[ korean ] = "µµÆ®";
+ Text[ turkish ] = "Nokta";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_WIDEVECX ;
+ HelpId = HID_SMA_WIDEVECX ;
+ Text = "breiter Vektorpfeil" ;
+ Text [ ENGLISH ] = "wide vector arrow" ;
+ TEXT[ italian ] = "Freccia vettoriale ampia";
+ TEXT[ portuguese_brazilian ] = "breiter Vektorpfeil";
+ TEXT[ portuguese ] = "Seta vectorial ampla";
+ TEXT[ danish ] = "bred vektorpil";
+ TEXT[ french ] = "Flèche vectorielle large";
+ TEXT[ swedish ] = "bred vektorpil";
+ TEXT[ dutch ] = "brede vektorpijl";
+ TEXT[ spanish ] = "Flecha vectorial ancha";
+ TEXT[ english_us ] = "Large Vector Arrow";
+ TEXT[ chinese_simplified ] = "´óʸÁ¿¼ýÍ·";
+ TEXT[ russian ] = "Äëèííàÿ âåêòîðíàÿ ñòåëêà";
+ TEXT[ polish ] = "Szeroka strza³ka wektora";
+ TEXT[ japanese ] = "’·‚¢ÍÞ¸ÄÙ–îˆó";
+ TEXT[ chinese_traditional ] = "¤j¥Ú¶q½bÀY";
+ TEXT[ arabic ] = "Óåã ÇÊÌÇåí ÚÑíÖ";
+ TEXT[ greek ] = "Ðëáôý âÝëïò äéáíýóìáôïò";
+ TEXT[ korean ] = "Å« º¤ÅÍ È­»ìÇ¥";
+ TEXT[ turkish ] = "Geniþ vektör oku";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_WIDETILDEX ;
+ HelpId = HID_SMA_WIDETILDEX ;
+ Text = "breite Tilde" ;
+ Text [ ENGLISH ] = "wide tilde" ;
+ TEXT[ italian ] = "Tilde ampia";
+ TEXT[ portuguese_brazilian ] = "breite Tilde";
+ TEXT[ portuguese ] = "Til largo";
+ TEXT[ danish ] = "bred tilde";
+ TEXT[ french ] = "Tilde large";
+ TEXT[ swedish ] = "bred tilde";
+ TEXT[ dutch ] = "brede tilde";
+ TEXT[ spanish ] = "Tilde ancha";
+ TEXT[ english_us ] = "Large Tilde";
+ TEXT[ chinese_simplified ] = "¿íµÄ¼ÓÔÚÎ÷°àÑÀÓïn_×ÖÉϵķ¢Òô·ûºÅ";
+ TEXT[ russian ] = "Äëèííàÿ òèëüäà";
+ TEXT[ polish ] = "Szeroka tylda";
+ TEXT[ japanese ] = "’·‚¢ÁÙÀÞ";
+ TEXT[ chinese_traditional ] = "¼eªº¥[¦b¦è¯Z¤ú»yn_¦r¤Wªºµo­µ²Å¸¹";
+ TEXT[ arabic ] = "ÊáÏÉ ÚÑíÖÉ";
+ TEXT[ greek ] = "ÌåãÜëç ðåñéóðùìÝíç";
+ TEXT[ korean ] = "Å« Æ¿µå";
+ TEXT[ turkish ] = "Geniþ tilde";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_WIDEHATX ;
+ HelpId = HID_SMA_WIDEHATX ;
+ Text = "breites Dach" ;
+ Text [ ENGLISH ] = "wide circumflex" ;
+ TEXT[ italian ] = "Accento circonflesso ampio";
+ TEXT[ portuguese_brazilian ] = "breites Dach";
+ TEXT[ portuguese ] = "Circunflexo largo";
+ TEXT[ danish ] = "bred cirkumfleks";
+ TEXT[ french ] = "Accent circonflexe large";
+ TEXT[ swedish ] = "bred cirkumflex";
+ TEXT[ dutch ] = "breed circumflex";
+ TEXT[ spanish ] = "Circunflejo ancho";
+ TEXT[ english_us ] = "Large Circumflex";
+ TEXT[ chinese_simplified ] = "¿íµÄÒÖÑï·ûºÅ";
+ TEXT[ russian ] = "Øèðîêèé öèðêóìôëåêñ";
+ TEXT[ polish ] = "Szeroki daszek";
+ TEXT[ japanese ] = "’·‚¢Ê¯Ä";
+ TEXT[ chinese_traditional ] = "¼eªº§í´­²Å¸¹";
+ TEXT[ arabic ] = "ÚáÇãÉ (^) ÚÑíÖÉ";
+ TEXT[ greek ] = "ÌåãÜëç ãáëëéêÞ ðåñéóðùìÝíç";
+ TEXT[ korean ] = "Å« °­Á¶ ±âÈ£";
+ TEXT[ turkish ] = "Geniþ þapka";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DDOTX ;
+ HelpId = HID_SMA_DDOTX ;
+ Text = "doppelter Punkt" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Double Dot" ;
+ Text [ portuguese_brazilian ] = "doppelter Punkt" ;
+ Text [ swedish ] = "dubbel punkt" ;
+ Text [ danish ] = "dobbelte punkter" ;
+ Text [ italian ] = "Due punti" ;
+ Text [ spanish ] = "punto doble" ;
+ Text [ french ] = "Deux points" ;
+ Text [ dutch ] = "dubbele punt" ;
+ Text [ portuguese ] = "Ponto duplo" ;
+ Text[ chinese_simplified ] = "Ë«µã";
+ Text[ russian ] = "Äâîåòî÷èå (ãîðèçîíòàëüíî)";
+ Text[ polish ] = "Dwukropek";
+ Text[ japanese ] = "ÀÞÌÞÙ ÄÞ¯Ä";
+ Text[ chinese_traditional ] = "ÂùÂI";
+ Text[ arabic ] = "äÞØÉ ãÒÏæÌÉ";
+ Text[ greek ] = "ÄéðëÞ êïõêêßäá";
+ Text[ korean ] = "ÀÌÁß Á¡";
+ Text[ turkish ] = "Çift nokta";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_OVERLINEX ;
+ HelpId = HID_SMA_OVERLINEX ;
+ Text = "Linie über" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Line Over" ;
+ Text [ portuguese_brazilian ] = "Linie über" ;
+ Text [ swedish ] = "Linje över" ;
+ Text [ danish ] = "streg over" ;
+ Text [ italian ] = "Linea sopra" ;
+ Text [ spanish ] = "Línea sobre" ;
+ Text [ french ] = "Ligne au dessus" ;
+ Text [ dutch ] = "Streep boven" ;
+ Text [ portuguese ] = "Linha sobre" ;
+ Text[ chinese_simplified ] = "ÉÏ»®Ïß";
+ Text[ russian ] = "Ëèíèÿ ñâåðõó";
+ Text[ polish ] = "Linia nad";
+ Text[ japanese ] = "ãü";
+ Text[ chinese_traditional ] = "¤W¹º½u";
+ Text[ arabic ] = "ÎØ ÝæÞ";
+ Text[ greek ] = "ÃñáììÞ áðü ðÜíù";
+ Text[ korean ] = "À­¼±";
+ Text[ turkish ] = "Üzerinde çizgi";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_UNDERLINEX ;
+ HelpId = HID_SMA_UNDERLINEX ;
+ Text = "Linie unter" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Line Below" ;
+ Text [ portuguese_brazilian ] = "Linie unter" ;
+ Text [ swedish ] = "Linje under" ;
+ Text [ danish ] = "streg under" ;
+ Text [ italian ] = "Linea sotto" ;
+ Text [ spanish ] = "Línea debajo" ;
+ Text [ french ] = "Ligne au dessous" ;
+ Text [ dutch ] = "Streep onder" ;
+ Text [ portuguese ] = "Linha por baixo" ;
+ Text[ chinese_simplified ] = "Ï»®Ïß";
+ Text[ russian ] = "Ëèíèÿ ñíèçó";
+ Text[ polish ] = "Linia pod";
+ Text[ japanese ] = "伟";
+ Text[ chinese_traditional ] = "¤U¹º½u";
+ Text[ arabic ] = "ÎØ ÊÍÊ";
+ Text[ greek ] = "ÃñáììÞ áðü êÜôù";
+ Text[ korean ] = "¾Æ·¡ ¼±";
+ Text[ turkish ] = "Altýnda çizgi";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_OVERSTRIKEX ;
+ HelpId = HID_SMA_OVERSTRIKEX ;
+ Text = "Linie durch" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Line Through" ;
+ Text [ portuguese_brazilian ] = "Linie durch" ;
+ Text [ swedish ] = "Linje genom" ;
+ Text [ danish ] = "streg gennem" ;
+ Text [ italian ] = "Linea attraverso" ;
+ Text [ spanish ] = "Línea a través" ;
+ Text [ french ] = "Ligne à travers" ;
+ Text [ dutch ] = "Streep door" ;
+ Text [ portuguese ] = "Linha através" ;
+ Text[ chinese_simplified ] = "»®Ïß";
+ Text[ russian ] = "Ïåðå÷åðêèâàþùàÿ ëèíèÿ";
+ Text[ polish ] = "Linia przez";
+ Text[ japanese ] = "Žæ‚èÁ‚µü";
+ Text[ chinese_traditional ] = "¹º½u";
+ Text[ arabic ] = "ÎØ ÚÈÑ";
+ Text[ greek ] = "ÃñáììÞ äéá ìÝóïõ";
+ Text[ korean ] = "Åë°ú¼±";
+ Text[ turkish ] = "Üstü çizili";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DDDOTX ;
+ HelpId = HID_SMA_DDDOTX ;
+ Text = "dreifacher Punkt" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Triple Dot" ;
+ Text [ portuguese_brazilian ] = "dreifacher Punkt" ;
+ Text [ swedish ] = "trippelpunkt" ;
+ Text [ danish ] = "tredobbelte punkter" ;
+ Text [ italian ] = "Punto triplo" ;
+ Text [ spanish ] = "Punto triple" ;
+ Text [ french ] = "Triple point" ;
+ Text [ dutch ] = "drievoudige punt" ;
+ Text [ portuguese ] = "Ponto triplo" ;
+ Text[ chinese_simplified ] = "Èýµã";
+ Text[ russian ] = "Ìíîãîòî÷èå";
+ Text[ polish ] = "potrójny punkt";
+ Text[ japanese ] = "ÄØÌßÙ ÄÞ¯Ä";
+ Text[ chinese_traditional ] = "¤TÂI";
+ Text[ arabic ] = "äÞØÉ ËáÇËíÉ";
+ Text[ greek ] = "ÔñéðëÞ êïõêêßäá";
+ Text[ korean ] = "3Áß Á¡";
+ Text[ turkish ] = "Üç nokta";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_PHANTOMX ;
+ HelpId = HID_SMA_PHANTOMX ;
+ Text = "transparent" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Transparent" ;
+ Text [ portuguese_brazilian ] = "transparent" ;
+ Text [ swedish ] = "transparent" ;
+ Text [ danish ] = "transparent" ;
+ Text [ italian ] = "Trasparente" ;
+ Text [ spanish ] = "transparente" ;
+ Text [ french ] = "transparent" ;
+ Text [ dutch ] = "transparant" ;
+ Text [ portuguese ] = "Transparente" ;
+ Text[ chinese_simplified ] = "͸Ã÷";
+ Text[ russian ] = "Ïðîçðà÷íî";
+ Text[ polish ] = "przezroczysty";
+ Text[ japanese ] = "“§‰ß«";
+ Text[ chinese_traditional ] = "³z©ú";
+ Text[ arabic ] = "ÔÝÇÝ";
+ Text[ greek ] = "äéáöáíÝò";
+ Text[ korean ] = "Åõ¸í";
+ Text[ turkish ] = "Saydam";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_BOLDX ;
+ HelpId = HID_SMA_BOLDX ;
+ Text = "Fettschrift" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Bold Font" ;
+ Text [ portuguese_brazilian ] = "Fettschrift" ;
+ Text [ swedish ] = "Fett teckensnitt" ;
+ Text [ danish ] = "fed skrift" ;
+ Text [ italian ] = "Grassetto" ;
+ Text [ spanish ] = "Negrita" ;
+ Text [ french ] = "Caractères gras" ;
+ Text [ dutch ] = "Vet" ;
+ Text [ portuguese ] = "Negrito" ;
+ Text[ chinese_simplified ] = "¼Ó´Ö×ÖÌå";
+ Text[ russian ] = "Æèðíûé øðèôò";
+ Text[ polish ] = "Czcionka pogrubiona";
+ Text[ japanese ] = "‘¾Žš";
+ Text[ chinese_traditional ] = "¥[²Ê¦r«¬";
+ Text[ arabic ] = "ÎØ ÚÑíÖ";
+ Text[ greek ] = "¸íôïíá ãñÜììáôá";
+ Text[ korean ] = "±Û²Ã °­Á¶";
+ Text[ turkish ] = "Kalýn yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ITALX ;
+ HelpId = HID_SMA_ITALX ;
+ Text = "kursive Schrift" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Italic Font" ;
+ Text [ portuguese_brazilian ] = "kursive Schrift" ;
+ Text [ swedish ] = "kursiv skrift" ;
+ Text [ danish ] = "kursiv skrift" ;
+ Text [ italian ] = "Corsivo" ;
+ Text [ spanish ] = "Cursiva" ;
+ Text [ french ] = "Caractères italiques" ;
+ Text [ dutch ] = "cursief" ;
+ Text [ portuguese ] = "Letra itálica" ;
+ Text[ chinese_simplified ] = "б×ÖÌå";
+ Text[ russian ] = "Íàêëîííûé øðèôò";
+ Text[ polish ] = "Kursywa";
+ Text[ japanese ] = "ŽÎ‘Ì";
+ Text[ chinese_traditional ] = "±×¦r«¬";
+ Text[ arabic ] = "ÎØ ãÇÆá";
+ Text[ greek ] = "ÐëÜãéïé ÷áñáêôÞñåò";
+ Text[ korean ] = "ÀÌÅŸ¯Ã¼";
+ Text[ turkish ] = "Ýtalik yazýtipi";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SIZEXY ;
+ HelpId = HID_SMA_SIZEXY ;
+ Text = "Größe ändern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Resize" ;
+ Text [ portuguese_brazilian ] = "Größe ändern" ;
+ Text [ swedish ] = "Ändra storlek" ;
+ Text [ danish ] = "modificer størrelse" ;
+ Text [ italian ] = "Cambia dimensione" ;
+ Text [ spanish ] = "Modificar tamaño" ;
+ Text [ french ] = "Modifier la taille" ;
+ Text [ dutch ] = "Grootte wijzigen" ;
+ Text [ portuguese ] = "Modificar tamanho" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä´óС";
+ Text[ russian ] = "Èçìåíèòü ðàçìåð";
+ Text[ polish ] = "Zmieñ rozmiar";
+ Text[ japanese ] = "•¶Žš»²½Þ•ÏX";
+ Text[ chinese_traditional ] = "Åܧó¤j¤p";
+ Text[ arabic ] = "ÊÛííÑ ÇáÍÌã";
+ Text[ greek ] = "ÁëëáãÞ ìåãÝèïõò";
+ Text[ korean ] = "Å©±â Á¶Á¤";
+ Text[ turkish ] = "Boyutu deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FONTXY ;
+ HelpId = HID_SMA_FONTXY ;
+ Text = "Font ändern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Change Font" ;
+ Text [ portuguese_brazilian ] = "Font ändern" ;
+ Text [ swedish ] = "Ändra teckensnitt" ;
+ Text [ danish ] = "modificer skrifttype" ;
+ Text [ italian ] = "Cambia font" ;
+ Text [ spanish ] = "Cambiar fuente" ;
+ Text [ french ] = "Modifier la fonte" ;
+ Text [ dutch ] = "Lettertype veranderen" ;
+ Text [ portuguese ] = "Modificar tipo de letra" ;
+ Text[ chinese_simplified ] = "¸ü¸Ä×ÖÌå";
+ Text[ russian ] = "Èçìåíèòü øðèôò";
+ Text[ polish ] = "Zmieñ czcionkê";
+ Text[ japanese ] = "Ì«ÝÄ•ÏŠ·";
+ Text[ chinese_traditional ] = "Åܧó¦r«¬";
+ Text[ arabic ] = "ÊÛííÑ ÇáÎØ";
+ Text[ greek ] = "ÁëëáãÞ ãñáììáôïóåéñÜò";
+ Text[ korean ] = "±Û²Ã º¯È¯";
+ Text[ turkish ] = "Yazýtipini deðiþtir";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 7
+ {
+ // parentheses
+ HelpId = HID_SMA_BRACKETS_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 5 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "algn.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_LRPARENTX ;
+ RID_LRBRACKETX ;
+ RID_LRANGLEX ;
+ RID_LRBRACEX ;
+ RID_LRLINEX ;
+ RID_LRDLINEX ;
+ RID_LMRANGLEXY ;
+ RID_LRGROUPX ;
+ RID_SLRPARENTX ;
+ RID_SLRBRACKETX ;
+ RID_SLRANGLEX ;
+ RID_SLRBRACEX ;
+ RID_SLRLINEX ;
+ RID_SLRDLINEX ;
+ RID_SLMRANGLEXY ;
+ RID_LRDBRACKETX ;
+ RID_SLRDBRACKETX ;
+ RID_XOVERBRACEY ;
+ RID_XUNDERBRACEY ;
+ };
+ IdCount =
+ {
+ 19 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_LRPARENTX ;
+ HelpId = HID_SMA_LRPARENTX ;
+ Text = "runde Klammern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Round Brackets" ;
+ Text [ portuguese_brazilian ] = "runde Klammern" ;
+ Text [ swedish ] = "Parenteser" ;
+ Text [ danish ] = "almindelige parenteser" ;
+ Text [ italian ] = "Parentesi tonde" ;
+ Text [ spanish ] = "paréntesis" ;
+ Text [ french ] = "Parenthèses arrondies" ;
+ Text [ dutch ] = "ronde haken" ;
+ Text [ portuguese ] = "Parênteses curvos" ;
+ Text[ chinese_simplified ] = "Ô²À¨ºÅ";
+ Text[ russian ] = "Êðóãëûå ñêîáêè";
+ Text[ polish ] = "Nawiasy okr¹g³e";
+ Text[ japanese ] = "¬‚©‚Á‚±";
+ Text[ chinese_traditional ] = "¶ê¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ãÓÊÏíÑÉ";
+ Text[ greek ] = "ÓôñïããõëÝò ðáñåíèÝóåéò";
+ Text[ korean ] = "µÕ±Ù °ýÈ£";
+ Text[ turkish ] = "Yuvarlak ayraç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRBRACKETX ;
+ HelpId = HID_SMA_LRBRACKETX ;
+ Text = "eckige Klammern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Square Brackets" ;
+ Text [ portuguese_brazilian ] = "eckige Klammern" ;
+ Text [ swedish ] = "hakparenteser" ;
+ Text [ danish ] = "kantede parenteser" ;
+ Text [ italian ] = "Parentesi quadre" ;
+ Text [ spanish ] = "Corchetes" ;
+ Text [ french ] = "Crochets" ;
+ Text [ dutch ] = "rechte haakjes" ;
+ Text [ portuguese ] = "Parênteses rectos" ;
+ Text[ chinese_simplified ] = "·½À¨ºÅ";
+ Text[ russian ] = "Êâàäðàòíûå ñêîáêè";
+ Text[ polish ] = "Nawiasy kwadratowe";
+ Text[ japanese ] = "‘å‚©‚Á‚±";
+ Text[ chinese_traditional ] = "¤è¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ÞÇÆãÉ ÇáÒÇæíÉ";
+ Text[ greek ] = "áãêýëåò";
+ Text[ korean ] = "´ë°ýÈ£";
+ Text[ turkish ] = "Köþeli ayraç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRDBRACKETX ;
+ HelpId = HID_SMA_LRDBRACKETX ;
+ Text = "doppelte eckige Klammern" ;
+ Text [ ENGLISH ] = "Double square brackets" ;
+ Text[ english_us ] = "Double square brackets";
+ Text[ portuguese ] = "Parênteses rectos duplos";
+ Text[ russian ] = "äâîéíûå êâàäðàòíûå ñêîáêè";
+ Text[ greek ] = "äéðëÝò áãêýëåò";
+ Text[ dutch ] = "dubbele rechthoekige haakjes";
+ Text[ french ] = "Doubles crochets";
+ Text[ spanish ] = "corchetes dobles";
+ Text[ italian ] = "Parentesi quadre doppie";
+ Text[ danish ] = "dobbelte kantede parenteser";
+ Text[ swedish ] = "dubbla hakparenteser";
+ Text[ polish ] = "podwójne nawiasy kwadratowe";
+ Text[ portuguese_brazilian ] = "Double square brackets";
+ Text[ japanese ] = "“ñd‚©‚¬‚©‚Á‚±";
+ Text[ korean ] = "°¢Áø ÀÌÁß °ýÈ£";
+ Text[ chinese_simplified ] = "Ë«ÖØ·½À¨ºÅ";
+ Text[ chinese_traditional ] = "Âù¦y§Î¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ãÒÏæÌÉ ÞÇÆãÉ ÇáÒÇæíÉý";
+ Text[ turkish ] = "Köþeli çift ayraç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRLINEX ;
+ HelpId = HID_SMA_LRLINEX ;
+ Text = "einfache Linien" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Single Lines" ;
+ Text [ portuguese_brazilian ] = "einfache Linien" ;
+ Text [ swedish ] = "enkla linjer" ;
+ Text [ danish ] = "enkelte streger" ;
+ Text [ italian ] = "Linee semplici" ;
+ Text [ spanish ] = "Líneas simples" ;
+ Text [ french ] = "Lignes simples" ;
+ Text [ dutch ] = "enkele lijnen" ;
+ Text [ portuguese ] = "Linhas simples" ;
+ Text[ chinese_simplified ] = "µ¥Ïß";
+ Text[ russian ] = "Îáû÷íûå ëèíèè";
+ Text[ polish ] = "Pojedyncze linie";
+ Text[ japanese ] = "cü";
+ Text[ chinese_traditional ] = "³æ½u";
+ Text[ arabic ] = "ÎØ ÈÓíØ";
+ Text[ greek ] = "áðëÝò ãñáììÝò";
+ Text[ korean ] = "ÇÑ ¼±";
+ Text[ turkish ] = "Tek çizgiler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRDLINEX ;
+ HelpId = HID_SMA_LRDLINEX ;
+ Text = "doppelte Linien" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Double Lines" ;
+ Text [ portuguese_brazilian ] = "doppelte Linien" ;
+ Text [ swedish ] = "dubbla linjer" ;
+ Text [ danish ] = "dobbelte streger" ;
+ Text [ italian ] = "Linee doppie" ;
+ Text [ spanish ] = "Líneas dobles" ;
+ Text [ french ] = "Lignes doubles" ;
+ Text [ dutch ] = "dubbele lijnen" ;
+ Text [ portuguese ] = "Linhas duplas" ;
+ Text[ chinese_simplified ] = "Ë«Ïß";
+ Text[ russian ] = "Äâîéíûå ëèíèè";
+ Text[ polish ] = "Podwójne linie";
+ Text[ japanese ] = "“ñdcü";
+ Text[ chinese_traditional ] = "Âù½u";
+ Text[ arabic ] = "ÎØæØ ãÒÏæÌÉ";
+ Text[ greek ] = "ÄéðëÝò ãñáììÝò";
+ Text[ korean ] = "2Áß ¼±";
+ Text[ turkish ] = "Çift çizgiler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRBRACEX ;
+ HelpId = HID_SMA_LRBRACEX ;
+ Text = "geschweifte Klammern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Braces" ;
+ Text [ portuguese_brazilian ] = "geschweifte Klammern" ;
+ Text [ swedish ] = "klammerparenteser" ;
+ Text [ danish ] = "klammeparenteser" ;
+ Text [ italian ] = "Parentesi graffe" ;
+ Text [ spanish ] = "Llaves" ;
+ Text [ french ] = "Accolades" ;
+ Text [ dutch ] = "Accolades" ;
+ Text [ portuguese ] = "Chavetas" ;
+ Text[ chinese_simplified ] = "»¨À¨ºÅ";
+ Text[ russian ] = "Ôèãóðíûå ñêîáêè";
+ Text[ polish ] = "Nawiasy klamrowe";
+ Text[ japanese ] = "’†‚©‚Á‚±";
+ Text[ chinese_traditional ] = "ªá¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ãÊãæÌÉ";
+ Text[ greek ] = "¢ãêéóôñá";
+ Text[ korean ] = "Áß°ýÈ£";
+ Text[ turkish ] = "Kavisli ayraç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRANGLEX ;
+ HelpId = HID_SMA_LRANGLEX ;
+ Text = "spitze Klammern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Pointed Brackets" ;
+ Text [ portuguese_brazilian ] = "spitze Klammern" ;
+ Text [ swedish ] = "vinkelparenteser" ;
+ Text [ danish ] = "vinkelparenteser" ;
+ Text [ italian ] = "Parentesi uncinate" ;
+ Text [ spanish ] = "Paréntesis angulares" ;
+ Text [ french ] = "Parenthèses pointues" ;
+ Text [ dutch ] = "spitse haakjes" ;
+ Text [ portuguese ] = "Parênteses pontiagudos" ;
+ Text[ chinese_simplified ] = "½ÇÀ¨ºÅ";
+ Text[ russian ] = "Óãëîâûå ñêîáêè";
+ Text[ polish ] = "Ostre nawiasy";
+ Text[ japanese ] = "ŽR‚©‚Á‚±";
+ Text[ chinese_traditional ] = "¨¤¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ãÏÈÈÉ";
+ Text[ greek ] = "ÌõôåñÝò ðáñåíèÝóåéò";
+ Text[ korean ] = "»ÏÁ·ÇÑ °ýÈ£";
+ Text[ turkish ] = "Sivri ayraç";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LMRANGLEXY ;
+ HelpId = HID_SMA_LMRANGLEXY ;
+ Text = "Operator Klammern" ;
+ Text [ ENGLISH ] = "Operator Brackets" ;
+ Text[ english_us ] = "Operator Brackets";
+ Text[ portuguese ] = "Parêntesis de operador";
+ Text[ russian ] = "Ñêîáêè îïåðàòîðà";
+ Text[ dutch ] = "Operator-haken";
+ Text[ french ] = "Parenthèses d'opérateur";
+ Text[ spanish ] = "Paréntesis de operador";
+ Text[ italian ] = "Parentesi operatore";
+ Text[ danish ] = "operatorparenteser";
+ Text[ swedish ] = "Operatorparenteser";
+ Text[ polish ] = "Nawiasy operatora";
+ Text[ portuguese_brazilian ] = "Operator Brackets";
+ Text[ japanese ] = "‰‰ŽZŽq‚©‚Á‚±";
+ Text[ chinese_simplified ] = "ÔËËã·ûÀ¨ºÅ";
+ Text[ chinese_traditional ] = "¹Bºâ²Å¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ÚÇãá ÇáÊÔÛíá";
+ Text[ greek ] = "Áãêýëåò ôåëåóôÞ";
+ Text[ korean ] = "¿¬»êÀÚ °ýÈ£";
+ Text[ turkish ] = "Ýþleç ayraçlarý";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LRGROUPX ;
+ HelpId = HID_SMA_LRGROUPX ;
+ Text = "Gruppierungs Klammern" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Group Brackets" ;
+ Text [ portuguese_brazilian ] = "Gruppierungs Klammern" ;
+ Text [ swedish ] = "Grupperingsparenteser" ;
+ Text [ danish ] = "grupperingsparenteser" ;
+ Text [ italian ] = "Parentesi di raggruppamento" ;
+ Text [ spanish ] = "Paréntesis de agrupamiento" ;
+ Text [ french ] = "Parenthèses de groupement" ;
+ Text [ dutch ] = "Groeperingshaken" ;
+ Text [ portuguese ] = "Parênteses de agrupamento" ;
+ Text[ chinese_simplified ] = "С×éÀ¨ºÅ";
+ Text[ russian ] = "Ãðóïïîâûå ôèãóðíûå ñêîáêè";
+ Text[ polish ] = "Nawiasy grupuj¹ce";
+ Text[ japanese ] = "’†‚©‚Á‚±";
+ Text[ chinese_traditional ] = "¤p²Õ¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ÊÌãíÚ";
+ Text[ greek ] = "ÐáñåíèÝóåéò ïìáäïðïßçóçò";
+ Text[ korean ] = "±×·ì °ýÈ£";
+ Text[ turkish ] = "Gruplama ayraçlarý";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRPARENTX ;
+ HelpId = HID_SMA_SLRPARENTX ;
+ Text = "runde Klammern (skalierbar)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Round Brackets (Scaleable)" ;
+ Text [ portuguese_brazilian ] = "runde Klammern (skalierbar)" ;
+ Text [ swedish ] = "parenteser (skalbara)" ;
+ Text [ danish ] = "almindelige parenteser (skalerbare)" ;
+ Text [ italian ] = "Parentesi tonde (in scala)" ;
+ Text [ spanish ] = "paréntesis (graduables)" ;
+ Text [ french ] = "Parenthèses arrondies (modifiables graduellement)" ;
+ Text [ dutch ] = "ronde haakjes (scaleerbaar)" ;
+ Text [ portuguese ] = "Parênteses redondos (graduáveis)" ;
+ Text[ chinese_simplified ] = "Ô²À¨ºÅ(¿É±ä)";
+ Text[ russian ] = "Êðóãëûå ñêîáêè (èçìåíÿåìûå)";
+ Text[ polish ] = "Nawiasy okr¹g³e (zmieniaj¹ce rozmiar)";
+ Text[ japanese ] = "¬‚©‚Á‚±(½¹°Ù‰Â)";
+ Text[ chinese_traditional ] = "¶ê¬A¸¹(¥iÅÜ)";
+ Text[ arabic ] = "ÃÞæÇÓ ÏÇÆÑíÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "ÓôñïããõëÝò ðáñåíèÝóåéò (äõíáôüôçôá êëéìÜêùóçò)";
+ Text[ korean ] = "µÕ±Ù °ýÈ£ (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ turkish ] = "Yuvarlak ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRBRACKETX ;
+ HelpId = HID_SMA_SLRBRACKETX ;
+ Text = "eckige Klammern (skalierbar)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Square Brackets (Scaleable)" ;
+ Text [ portuguese_brazilian ] = "eckige Klammern (skalierbar)" ;
+ Text [ swedish ] = "hakparenteser (skalbara)" ;
+ Text [ danish ] = "kantede parenteser (skalerbare)" ;
+ Text [ italian ] = "Parentesi quadre (in scala)" ;
+ Text [ spanish ] = "Corchetes (graduables)" ;
+ Text [ french ] = "Crochets (modifiables graduellement)" ;
+ Text [ dutch ] = "rechthoekige haakjes (scaleerbaar)" ;
+ Text [ portuguese ] = "Parênteses rectos (graduáveis)" ;
+ Text[ chinese_simplified ] = "·½À¨ºÅ(¿É±ä)";
+ Text[ russian ] = "Êâàäðàòíûå ñêîáêè (èçìåíÿåìûå)";
+ Text[ polish ] = "Nawiasy kwadratowe (zmieniaj¹ce rozmiar)";
+ Text[ japanese ] = "‘å‚©‚Á‚±(½¹°Ù‰Â)";
+ Text[ chinese_traditional ] = "¤è¬A¸¹(¥iÅÜ)";
+ Text[ arabic ] = "ÃÞæÇÓ ÞÇÆãÉ ÇáÒÇæíÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "áãêýëåò (êëéìáêþìåíåò)";
+ Text[ korean ] = "°¢Áø °ýÈ£(¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ turkish ] = "Köþeli ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRDBRACKETX ;
+ HelpId = HID_SMA_SLRDBRACKETX ;
+ Text = "eckige Klammern (skalierbar)" ;
+ Text [ ENGLISH ] = "Double square brackets (scaleable)" ;
+ Text[ english_us ] = "Square brackets (scalable)";
+ Text[ portuguese ] = "Parênteses rectos (ajustáveis)";
+ Text[ russian ] = "êâàäðàòíûå ñêîáêè (èçì.)";
+ Text[ greek ] = "áãêýëåò (êëéìáêþìåíåò)";
+ Text[ dutch ] = "Dubbele hoekige haakjes (uitbreidbaar)";
+ Text[ french ] = "Crochets (modifiables graduellement)";
+ Text[ spanish ] = "corchetes (ajustables)";
+ Text[ italian ] = "Parentesi quadre (in scala)";
+ Text[ danish ] = "kantede parenteser (skalerbare)";
+ Text[ swedish ] = "dubbla hakparenteser (skalbara)";
+ Text[ polish ] = "nawiasy kwadratowe (zmieniaj¹ce rozmiar)";
+ Text[ portuguese_brazilian ] = "Double square brackets (scaleable)";
+ Text[ japanese ] = "‚©‚¬‚©‚Á‚±(½¹°Ù‰Â)";
+ Text[ korean ] = "°¢Áø °ýÈ£ (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ chinese_simplified ] = "·½À¨ºÅ(¿É±ä)";
+ Text[ chinese_traditional ] = "Âù¦y§Î¬A¸¹(¥i¦ùÁY)";
+ Text[ arabic ] = "ÃÞæÇÓ ÞÇÆãÉ ÇáÒÇæíÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ turkish ] = "Köþeli ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRLINEX ;
+ HelpId = HID_SMA_SLRLINEX ;
+ Text = "einfache Linien (skalierbar)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "single Lines (Scaleable)" ;
+ Text [ portuguese_brazilian ] = "einfache Linien (skalierbar)" ;
+ Text [ swedish ] = "enkla linjer (skalbara)" ;
+ Text [ danish ] = "enkelte streger (skalerbare)" ;
+ Text [ italian ] = "Linee semplici (in scala)" ;
+ Text [ spanish ] = "líneas simples (graduables)" ;
+ Text [ french ] = "Lignes simples (modifiables graduellement)" ;
+ Text [ dutch ] = "enkele lijnen (scaleerbaar)" ;
+ Text [ portuguese ] = "Linhas simples (graduáveis)" ;
+ Text[ chinese_simplified ] = "µ¥Ïß(¿É±ä)";
+ Text[ russian ] = "Îáû÷íûå ëèíèè (èçìåíÿåìûå)";
+ Text[ polish ] = "Pojedyncze linie (zmieniaj¹ce rozmiar)";
+ Text[ japanese ] = "cü(½¹°Ù‰Â)";
+ Text[ chinese_traditional ] = "³æ½u(¥iÅÜ)";
+ Text[ arabic ] = "ÎØæØ ÈÓíØÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "áðëÝò ãñáììÝò (äõíáôüôçôá êëéìÜêùóçò)";
+ Text[ korean ] = "´ÜÀϼ± (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ turkish ] = "Tek çizgiler (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRDLINEX ;
+ HelpId = HID_SMA_SLRDLINEX ;
+ Text = "doppelte Linien (skalierbar)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Double Lines (Scaleable)" ;
+ Text [ portuguese_brazilian ] = "doppelte Linien (skalierbar)" ;
+ Text [ swedish ] = "dubbla linjer (skalbara)" ;
+ Text [ danish ] = "dobbelte streger (skalerbare)" ;
+ Text [ italian ] = "Linee doppie (in scala)" ;
+ Text [ spanish ] = "líneas dobles (graduables)" ;
+ Text [ french ] = "Lignes doubles (modifiables graduellement)" ;
+ Text [ dutch ] = "dubbele lijnen (scaleerbaar)" ;
+ Text [ portuguese ] = "Linhas duplas (graduáveis)" ;
+ Text[ chinese_simplified ] = "Ë«Ïß(¿É±ä)";
+ Text[ russian ] = "Äâîéíûå ëèíèè (èçìåíÿåìûå)";
+ Text[ polish ] = "Podwójne linie (zmieniaj¹ce rozmiar)";
+ Text[ japanese ] = "“ñdcü(½¹°Ù‰Â)";
+ Text[ chinese_traditional ] = "Âù½u(¥iÅÜ)";
+ Text[ arabic ] = "ÎØæØ ãÒÏæÌÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "ÄéðëÝò ãñáììÝò (êëéìáêþìåíåò)";
+ Text[ korean ] = "ÀÌÁß¼± (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ turkish ] = "Çift çizgiler (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRBRACEX ;
+ HelpId = HID_SMA_SLRBRACEX ;
+ Text = "geschweifte Klammern (skalierbar)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Braces (scalable)" ;
+ Text [ portuguese_brazilian ] = "geschweifte Klammern (skalierbar)" ;
+ Text [ swedish ] = "klammerparenteser (skalbara)" ;
+ Text [ danish ] = "klammeparenteser (skalerbare)" ;
+ Text [ italian ] = "Parentesi graffe (in scala)" ;
+ Text [ spanish ] = "Llaves (graduables)" ;
+ Text [ french ] = "Accolades (modifiables graduellement)" ;
+ Text [ dutch ] = "Accolades (scaleerbaar)" ;
+ Text [ portuguese ] = "Chavetas (graduáveis)" ;
+ Text[ chinese_simplified ] = "»¨À¨ºÅ(¿É±ä)";
+ Text[ russian ] = "Ôèãóðíûå ñêîáêè (èçìåíÿåìûå)";
+ Text[ polish ] = "Nawiasy klamrowe (zmieniaj¹ce rozmiar)";
+ Text[ japanese ] = "’†‚©‚Á‚±(½¹°Ù‰Â)";
+ Text[ chinese_traditional ] = "ªá¬A¸¹(¥iÅÜ)";
+ Text[ arabic ] = "ÃÞæÇÓ ãÊãæÌÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "¢ãêéóôñá (êëéìáêþìåíá)";
+ Text[ korean ] = "ÈÖ¾îÁø °ýÈ£ (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ turkish ] = "Kavisli ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLRANGLEX ;
+ HelpId = HID_SMA_SLRANGLEX ;
+ Text = "spitze Klammern (skalierbar)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Pointed Brackets (Scaleable)" ;
+ Text [ portuguese_brazilian ] = "spitze Klammern (skalierbar)" ;
+ Text [ swedish ] = "vinkelparenteser (skalbara)" ;
+ Text [ danish ] = "vinkelparenteser (skalerbare)" ;
+ Text [ italian ] = "Parentesi uncinate (in scala)" ;
+ Text [ spanish ] = "Paréntesis angulares (graduables)" ;
+ Text [ french ] = "Parenthèses pointues (modifiables graduellement)" ;
+ Text [ dutch ] = "spitse haakjes (scaleerbaar)" ;
+ Text [ portuguese ] = "Parênteses pontiagudos (graduáveis)" ;
+ Text[ chinese_simplified ] = "½ÇÀ¨ºÅ(¿É±ä)";
+ Text[ russian ] = "Óãëîâûå ñêîáêè (èçìåíÿåìûå)";
+ Text[ polish ] = "Nawiasy k¹towe (zmieniaj¹ce rozmiar)";
+ Text[ japanese ] = "ŽR‚©‚Á‚±(½¹°Ù‰Â)";
+ Text[ chinese_traditional ] = "¨¤¬A¸¹(¥iÅÜ)";
+ Text[ arabic ] = "ÃÞæÇÓ ãÏÈÈÉ (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "ÌõôåñÝò ðáñåíèÝóåéò (äõíáôüôçôá êëéìÜêùóçò)";
+ Text[ korean ] = "»ÏÁ·ÇÑ °ýÈ£ (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ turkish ] = "Sivri ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SLMRANGLEXY ;
+ HelpId = HID_SMA_SLMRANGLEXY ;
+ Text = "Operator Klammern (skalierbar)" ;
+ Text [ ENGLISH ] = "Operator Brackets" ;
+ Text[ english_us ] = "Operator Brackets";
+ Text[ portuguese ] = "Parêntesis de operador (escalonável)";
+ Text[ russian ] = "Ñêîáêè îïåðàòîðà (èçìåíÿåìûå)";
+ Text[ dutch ] = "Operator-haken";
+ Text[ french ] = "Parenthèses d'opérateur (modifiables graduellement)";
+ Text[ spanish ] = "Paréntesis de operador (ajustable)";
+ Text[ italian ] = "Parentesi operatore (in scala)";
+ Text[ danish ] = "operatorparenteser (skalerbare)";
+ Text[ swedish ] = "Operatorparenteser (skalbara)";
+ Text[ polish ] = "Nawiasy operatora";
+ Text[ portuguese_brazilian ] = "Operator Brackets";
+ Text[ japanese ] = "‰‰ŽZŽq‚©‚Á‚±(½¹°Ù‰Â)";
+ Text[ chinese_simplified ] = "ÔËËã·ûÀ¨ºÅ";
+ Text[ chinese_traditional ] = "¹Bºâ²Å¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ ÚÇãá ÇáÊÔÛíá (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ greek ] = "Áãêýëåò ôåëåóôÞ (äõíáôüôçôá êëéìÜêùóçò)";
+ Text[ korean ] = "¿¬»êÀÚ °ýÈ£";
+ Text[ turkish ] = "Ýþleç ayraçlarý (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XOVERBRACEY ;
+ HelpId = HID_SMA_XOVERBRACEY ;
+ Text = "geschweifte Klammer oben (skalierbar)" ;
+ Text [ ENGLISH ] = "curly bracket above (scaleable)" ;
+ Text[ english_us ] = "Braces top (scalable)";
+ Text[ portuguese ] = "chaveta em cima (ajustável)";
+ Text[ russian ] = "ôèãóðíàÿ ñêîáêà ñâåðõó (èçì.)";
+ Text[ greek ] = "¢ãêéóôñï Üíù (êëéìáêþìåíá)";
+ Text[ dutch ] = "accolade boven (uitbreidbaar)";
+ Text[ french ] = "Accolades en haut (modifiables graduellement)";
+ Text[ spanish ] = "llaves arriba (ajustables)";
+ Text[ italian ] = "Parentesi tonda in alto (in scala)";
+ Text[ danish ] = "klammeparenteser foroven (skalerbare)";
+ Text[ swedish ] = "klammerparenteser uppe (skalbara)";
+ Text[ polish ] = "nawias klamrowy u góry (zmieniaj¹cy rozmiar)";
+ Text[ portuguese_brazilian ] = "curly bracket above (scaleable)";
+ Text[ japanese ] = "’†‚©‚Á‚±ã(½¹°Ù‰Â)";
+ Text[ korean ] = "ÈÖ¾îÁø °ýÈ£¸¦ À§¿¡ (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ chinese_simplified ] = "»¨À¨ºÅÉϲ¿(¿É±ä)";
+ Text[ chinese_traditional ] = "¨÷¦±¦¡¬A¸¹¤W¤è(¥i¦ùÁY)";
+ Text[ arabic ] = "ÃÞæÇÓ ãÊãæÌÉ ÈÇáÃÚáì (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ turkish ] = "Üst kavisli ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_XUNDERBRACEY ;
+ HelpId = HID_SMA_XUNDERBRACEY ;
+ Text = "geschweifte Klammer unten (skalierbar)" ;
+ Text [ ENGLISH ] = "curly bracket below (scaleable)" ;
+ Text[ english_us ] = "Braces bottom (scalable)";
+ Text[ portuguese ] = "chaveta em baixo (ajustável)";
+ Text[ russian ] = "ôèãóðíàÿ ñêîáêà ñíèçó (èçì.)";
+ Text[ greek ] = "¢ãêéóôñï êÜôù (êëéìáêþìåíá)";
+ Text[ dutch ] = "accolade beneden (uitbreidbaar)";
+ Text[ french ] = "Accolades en bas (modifiables graduellement)";
+ Text[ spanish ] = "llaves abajo (ajustables)";
+ Text[ italian ] = "Parentesi tonda in basso (in scala)";
+ Text[ danish ] = "klammeparenteser forneden (skalerbare)";
+ Text[ swedish ] = "klammerparenteser nere (skalbara)";
+ Text[ polish ] = "nawias klamrowy u do³u (zmieniaj¹cy rozmiar)";
+ Text[ portuguese_brazilian ] = "curly bracket below (scaleable)";
+ Text[ japanese ] = "’†‚©‚Á‚±‰º(½¹°Ù‰Â)";
+ Text[ korean ] = "ÈÖ¾îÁø °ýÈ£¸¦ ¾Æ·¡¿¡ (¹èÀ²Á¶Á¤ °¡´É)";
+ Text[ chinese_simplified ] = "·½À¨ºÅϲ¿(¿É±ä)";
+ Text[ chinese_traditional ] = "¨÷¦±¦¡¬A¸¹¤U¤è(¥i¦ùÁY)";
+ Text[ arabic ] = "ÃÞæÇÓ ãÊãæÌÉ ÈÇáÃÓÝá (ÇáÍÌã ÞÇÈá ááÊÛííÑ)";
+ Text[ turkish ] = "Alt kavisli ayraç (ölçeklendirilebilir)";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 8
+ {
+ // format
+ HelpId = HID_SMA_FORMAT_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 3 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "colr.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_NEWLINE ;
+ RID_SBLANK ;
+ RID_BLANK ;
+ RID_BINOMXY ;
+ RID_STACK ;
+ RID_MATRIX ;
+ RID_ALIGNLX ;
+ RID_ALIGNCX ;
+ RID_ALIGNRX ;
+ RID_RSUBX ;
+ RID_RSUPX ;
+ RID_LSUBX ;
+ RID_LSUPX ;
+ RID_CSUBX ;
+ RID_CSUPX ;
+ };
+ IdCount =
+ {
+ 15 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_LSUPX ;
+ HelpId = HID_SMA_LSUPX ;
+ Text = "Superscript links" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Superscript Left" ;
+ Text [ portuguese_brazilian ] = "Superscript links" ;
+ Text [ swedish ] = "Exponent till vänster" ;
+ Text [ danish ] = "superscript til venstre" ;
+ Text [ italian ] = "Apice sinistro" ;
+ Text [ spanish ] = "Superíndice a la izquierda" ;
+ Text [ french ] = "Exposant à gauche" ;
+ Text [ dutch ] = "Superscript links" ;
+ Text [ portuguese ] = "Expoente à esquerda" ;
+ Text[ chinese_simplified ] = "×ó×Ö½ÇÎÄ×Ö";
+ Text[ russian ] = "Âåðõíèé èíäåêñ ñëåâà";
+ Text[ polish ] = "Indeks górny z lewej";
+ Text[ japanese ] = "¶ã•t‚«";
+ Text[ chinese_traditional ] = "¥ª¦r¨¤¤å¦r";
+ Text[ arabic ] = "ãÑÊÝÚ ÃíÓÑ";
+ Text[ greek ] = "ÅêèÝôçò áñéóôåñÜ";
+ Text[ korean ] = "À§Ã·ÀÚ¸¦ ¿ÞÂÊ¿¡";
+ Text[ turkish ] = "Üst simge (sol)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_CSUPX ;
+ HelpId = HID_SMA_CSUPX ;
+ Text = "Superscript oben" ;
+ Text [ ENGLISH ] = "Superscript top" ;
+ TEXT[ italian ] = "Apice";
+ TEXT[ portuguese_brazilian ] = "Superscript oben";
+ TEXT[ portuguese ] = "Expoente em cima";
+ TEXT[ danish ] = "superscript ovenover";
+ TEXT[ french ] = "Exposant en haut";
+ TEXT[ swedish ] = "Exponent uppe";
+ TEXT[ dutch ] = "Superscript boven";
+ TEXT[ spanish ] = "Superíndice arriba";
+ TEXT[ english_us ] = "Superscript Top";
+ TEXT[ chinese_simplified ] = "Éϱê";
+ TEXT[ russian ] = "Âåðõíèé èíäåêñ ñâåðõó";
+ TEXT[ polish ] = "Indeks górny w górze";
+ TEXT[ japanese ] = "ã•t‚«•¶Žš";
+ TEXT[ chinese_traditional ] = "¤W¼Ð";
+ TEXT[ arabic ] = "ãÑÊÝÚ ÃÚáì";
+ TEXT[ greek ] = "ÅêèÝôçò ðÜíù";
+ TEXT[ korean ] = "À§Ã·ÀÚ¸¦ À§¿¡";
+ TEXT[ turkish ] = "Üst simge (üst)";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_RSUPX ;
+ HelpId = HID_SMA_RSUPX ;
+ Text = "Superscript rechts" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Superscript Right" ;
+ Text [ portuguese_brazilian ] = "Superscript rechts" ;
+ Text [ swedish ] = "Exponent till höger" ;
+ Text [ danish ] = "superscript til højre" ;
+ Text [ italian ] = "Apice destro" ;
+ Text [ spanish ] = "Superíndice derecha" ;
+ Text [ french ] = "Exposant à droite" ;
+ Text [ dutch ] = "Superscript rechts" ;
+ Text [ portuguese ] = "Expoente à direita" ;
+ Text[ chinese_simplified ] = "ÓÒÉϱê";
+ Text[ russian ] = "Âåðõíèé èíäåêñ ñïðàâà";
+ Text[ polish ] = "Indeks górny z prawej";
+ Text[ japanese ] = "‰Eã•t‚«•¶Žš";
+ Text[ chinese_traditional ] = "¥k¤W¼Ð";
+ Text[ arabic ] = "ãÑÊÝÚ íãíä";
+ Text[ greek ] = "ÅêèÝôçò äåîéÜ";
+ Text[ korean ] = "À§Ã·ÀÚ¸¦ ¿À¸¥ÂÊ¿¡";
+ Text[ turkish ] = "Üst simge (sað)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_BINOMXY ;
+ HelpId = HID_SMA_BINOMXY ;
+ Text = "vertikale Anordnung (2 Elemente)" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Vertical Stack (2 Elements)" ;
+ Text [ portuguese_brazilian ] = "vertikale Anordnung (2 Elemente)" ;
+ Text [ swedish ] = "vertikal ordning (2 element)" ;
+ Text [ danish ] = "lodret placering (2 elementer)" ;
+ Text [ italian ] = "Disposizione verticale (2 elementi)" ;
+ Text [ spanish ] = "disposición vertical (2 elementos)" ;
+ Text [ french ] = "Disposition verticale (deux éléments)" ;
+ Text [ dutch ] = "verticale gerangschikt (2 elementen)" ;
+ Text [ portuguese ] = "Disposição vertical (2 elementos)" ;
+ Text[ chinese_simplified ] = "´¹Ö±±àÅÅ(2¸öÔªËØ)";
+ Text[ russian ] = "Âåðòèêàëüíîå ðàñïîëîæåíèå (2 ýëåìåíòà)";
+ Text[ polish ] = "Rozmieszczenie pionowe (2 elementy)";
+ Text[ japanese ] = "㉺”z—ñ(2—v‘f)";
+ Text[ chinese_traditional ] = "««ª½½s±Æ(2­Ó¤¸¯À)";
+ Text[ arabic ] = "ÊÑÊíÈ ÃÝÞí (ÚäÕÑÇä)";
+ Text[ greek ] = "Êáôáêüñõöç äéÜôáîç (2 Óôïé÷åßá)";
+ Text[ korean ] = "¼öÁ÷ ¹è¿­ (2 ¿ä¼Ò)";
+ Text[ turkish ] = "Dikey sýralama (2 öðe)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_NEWLINE ;
+ HelpId = HID_SMA_NEWLINE ;
+ Text = "neue Zeile beginnen" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "New Line" ;
+ Text [ portuguese_brazilian ] = "neue Zeile beginnen" ;
+ Text [ swedish ] = "börja ny rad" ;
+ Text [ danish ] = "begynd på ny linje" ;
+ Text [ italian ] = "Inizia riga nuova" ;
+ Text [ spanish ] = "Empezar línea nueva" ;
+ Text [ french ] = "Aller à la ligne" ;
+ Text [ dutch ] = "met een nieuwe regel beginnen" ;
+ Text [ portuguese ] = "Começar nova linha" ;
+ Text[ chinese_simplified ] = "ÐÂÐпªÊ¼";
+ Text[ russian ] = "Ñ íîâîé ñòðîêè";
+ Text[ polish ] = "Rozpocznij now¹ liniê";
+ Text[ japanese ] = "V‚µ‚¢sŠJŽn";
+ Text[ chinese_traditional ] = "·s¦æ¶}©l";
+ Text[ arabic ] = "ÓØÑ ÌÏíÏ";
+ Text[ greek ] = "áñ÷Þ íÝáò ãñáììÞò";
+ Text[ korean ] = "»õ·Î¿î ¼± ½ÃÀÛ";
+ Text[ turkish ] = "Yeni satýr";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LSUBX ;
+ HelpId = HID_SMA_LSUBX ;
+ Text = "Subscript links" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Subscript Left" ;
+ Text [ portuguese_brazilian ] = "Subscript links" ;
+ Text [ swedish ] = "Index till vänster" ;
+ Text [ danish ] = "subcript til venstre" ;
+ Text [ italian ] = "Pedice sinistro" ;
+ Text [ spanish ] = "Subíndice izquierda" ;
+ Text [ french ] = "Indice à gauche" ;
+ Text [ dutch ] = "Subscript links" ;
+ Text [ portuguese ] = "Inferior à linha, esquerda" ;
+ Text[ chinese_simplified ] = "×óϱê";
+ Text[ russian ] = "Íèæíèé èíäåêñ ñëåâà";
+ Text[ polish ] = "Indeks dolny z lewej";
+ Text[ japanese ] = "¶‰º•t‚«•¶Žš";
+ Text[ chinese_traditional ] = "¥ª¤U¼Ð";
+ Text[ arabic ] = "ãäÎÝÖ íÓÇÑ";
+ Text[ greek ] = "Äåßêôçò áñéóôåñÜ";
+ Text[ korean ] = "¾Æ·¡Ã·ÀÚ¸¦ ¿ÞÂÊ¿¡";
+ Text[ turkish ] = "Alt simge (sol)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_CSUBX ;
+ HelpId = HID_SMA_CSUBX ;
+ Text = "Subscript unten" ;
+ Text [ ENGLISH ] = "Subscript bottom" ;
+ TEXT[ italian ] = "pedice";
+ TEXT[ portuguese_brazilian ] = "Subscript unten";
+ TEXT[ portuguese ] = "Inferior à linha, em baixo";
+ TEXT[ danish ] = "subcript nedenunder";
+ TEXT[ french ] = "Indice en bas";
+ TEXT[ swedish ] = "Index nere";
+ TEXT[ dutch ] = "Subscript beneden";
+ TEXT[ spanish ] = "Subíndice abajo";
+ TEXT[ english_us ] = "Subscript Bottom";
+ TEXT[ chinese_simplified ] = "µ×ϱê";
+ TEXT[ russian ] = "Íèæíèé èíäåêñ ñíèçó";
+ TEXT[ polish ] = "Indeks dolny w dole";
+ TEXT[ japanese ] = "‰º•t‚«•¶Žš";
+ TEXT[ chinese_traditional ] = "©³¤U¼Ð";
+ TEXT[ arabic ] = "ãäÎÝÖ ÃÓÝá";
+ TEXT[ greek ] = "Äåßêôçò êÜôù";
+ TEXT[ korean ] = "¾Æ·¡Ã·ÀÚ¸¦ ¹Ø¿¡";
+ TEXT[ turkish ] = "Alt simge (alt)";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_RSUBX ;
+ HelpId = HID_SMA_RSUBX ;
+ Text = "Subscript rechts" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Subscript Right" ;
+ Text [ portuguese_brazilian ] = "Subscript rechts" ;
+ Text [ swedish ] = "Index till höger" ;
+ Text [ danish ] = "subcript til højre" ;
+ Text [ italian ] = "Pedice destro" ;
+ Text [ spanish ] = "Subíndice derecha" ;
+ Text [ french ] = "Indice à droite" ;
+ Text [ dutch ] = "Subscript rechts" ;
+ Text [ portuguese ] = "Inferior à linha, direita" ;
+ Text[ chinese_simplified ] = "ÓÒϱê";
+ Text[ russian ] = "Íèæíèé èíäåêñ ñïðàâà";
+ Text[ polish ] = "Indeks dolny z prawej";
+ Text[ japanese ] = "‰E‰º•t‚«•¶Žš";
+ Text[ chinese_traditional ] = "¥k¤U¼Ð";
+ Text[ arabic ] = "ãäÎÝÖ íãíä";
+ Text[ greek ] = "Äåßêôçò äåîéÜ";
+ Text[ korean ] = "¾Æ·¡Ã·ÀÚ¸¦ ¿À¸¥ÂÊ¿¡";
+ Text[ turkish ] = "Alt simge (sað)";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_STACK ;
+ HelpId = HID_SMA_STACK ;
+ Text = "vertikale Anordnung" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Vertical Stack" ;
+ Text [ portuguese_brazilian ] = "vertikale Anordnung" ;
+ Text [ swedish ] = "vertikal ordning" ;
+ Text [ danish ] = "lodret placering" ;
+ Text [ italian ] = "Disposizione verticale" ;
+ Text [ spanish ] = "Disposición vertical" ;
+ Text [ french ] = "Disposition verticale" ;
+ Text [ dutch ] = "verticale gerangschikt" ;
+ Text [ portuguese ] = "Disposição vertical" ;
+ Text[ chinese_simplified ] = "´¹Ö±·½Ïò±àÅÅ";
+ Text[ russian ] = "Âåðòèêàëüíîå ðàñïîëîæåíèå";
+ Text[ polish ] = "Rozmieszczenie pionowe";
+ Text[ japanese ] = "㉺‚É”z—ñ";
+ Text[ chinese_traditional ] = "««ª½¤è¦V½s±Æ";
+ Text[ arabic ] = "ÊÑÊíÈ ÃÝÞí";
+ Text[ greek ] = "Êáôáêüñõöç äéÜôáîç";
+ Text[ korean ] = "¼öÁ÷ ¹è¿­";
+ Text[ turkish ] = "Dikey sýralama";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SBLANK ;
+ HelpId = HID_SMA_SBLANK ;
+ Text = "kleiner Zwischenraum" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Small Gap" ;
+ Text [ portuguese_brazilian ] = "kleiner Zwischenraum" ;
+ Text [ swedish ] = "Litet mellanrum" ;
+ Text [ danish ] = "lille mellemrum" ;
+ Text [ italian ] = "Spazio intermedio piccolo" ;
+ Text [ spanish ] = "Espacio pequeño" ;
+ Text [ french ] = "Petit espace" ;
+ Text [ dutch ] = "kleine spatie" ;
+ Text [ portuguese ] = "Intervalo pequeno" ;
+ Text[ chinese_simplified ] = "Small Gap";
+ Text[ russian ] = "Êîðîòêèé ïðîáåë";
+ Text[ polish ] = "Ma³y odstêp miêdzy ramkami";
+ Text[ japanese ] = "½Íß°½¬";
+ Text[ chinese_traditional ] = "¤p¶¡¹j";
+ Text[ arabic ] = "ÊÈÇÚÏ ÕÛíÑ";
+ Text[ greek ] = "ìéêñü äéÜêåíï";
+ Text[ korean ] = "ÀÛÀº °£°Ý";
+ Text[ turkish ] = "Küçük aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ALIGNLX ;
+ HelpId = HID_SMA_ALIGNLX ;
+ Text = "linksbündig ausrichten" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Align Left" ;
+ Text [ portuguese_brazilian ] = "linksbündig ausrichten" ;
+ Text [ swedish ] = "justera mot vänsterkant" ;
+ Text [ danish ] = "venstrejusteret" ;
+ Text [ italian ] = "Allinea a sinistra" ;
+ Text [ spanish ] = "alinear a la izquierda" ;
+ Text [ french ] = "Aligner à gauche" ;
+ Text [ dutch ] = "links uitlijnen" ;
+ Text [ portuguese ] = "Alinhar à esquerda" ;
+ Text[ chinese_simplified ] = "×ó¶ÔÆë";
+ Text[ russian ] = "Âûðîâíÿòü ïî ëåâîìó êðàþ";
+ Text[ polish ] = "Wyrównaj do lewej";
+ Text[ japanese ] = "¶‘µ‚¦";
+ Text[ chinese_traditional ] = "¥ª¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì ÇáíÓÇÑ";
+ Text[ greek ] = "Óôïß÷éóç áñéóôåñÜ";
+ Text[ korean ] = "¿ÞÂÊ¿¡ ¸ÂÃã";
+ Text[ turkish ] = "Sola hizala";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ALIGNCX ;
+ HelpId = HID_SMA_ALIGNCX ;
+ /* ### ACHTUNG: Neuer Text in Resource? zentriert ausrichten : zentriert (horizontal) ausrichten */
+ Text = "zentriert ausrichten" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Align Center" ;
+ Text [ portuguese_brazilian ] = "zentriert (horizontal) ausrichten" ;
+ Text [ swedish ] = "justera centrerat (horisontellt)" ;
+ Text [ danish ] = "centreret" ;
+ Text [ italian ] = "Allinea al centro" ;
+ Text [ spanish ] = "alinear al centro" ;
+ Text [ french ] = "Centrer" ;
+ Text [ dutch ] = "gecentreerd uitlijnen" ;
+ Text [ portuguese ] = "Alinhar ao centro" ;
+ Text[ chinese_simplified ] = "¾ÓÖжÔÆë";
+ Text[ russian ] = "Âûðîâíÿòü ïî öåíòðó";
+ Text[ polish ] = "Wyrównaj do œrodka";
+ Text[ japanese ] = "’†‰›‘µ‚¦";
+ Text[ chinese_traditional ] = "¸m¤¤¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì ÇáæÓØ";
+ Text[ greek ] = "êåíôñáñéóìÝíç óôïß÷éóç";
+ Text[ korean ] = "°¡¿îµ¥ ¸ÂÃã";
+ Text[ turkish ] = "Ortala";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ALIGNRX ;
+ HelpId = HID_SMA_ALIGNRX ;
+ Text = "rechtsbündig ausrichten" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Align Right" ;
+ Text [ portuguese_brazilian ] = "rechtsbündig ausrichten" ;
+ Text [ swedish ] = "justera mot högerkant" ;
+ Text [ danish ] = "højrejusteret" ;
+ Text [ italian ] = "Allinea a destra" ;
+ Text [ spanish ] = "alinear a la derecha" ;
+ Text [ french ] = "Aligner à droite" ;
+ Text [ dutch ] = "rechts uitlijnen" ;
+ Text [ portuguese ] = "Alinhar à direita" ;
+ Text[ chinese_simplified ] = "ÓÒ¶ÔÆë";
+ Text[ russian ] = "Âûðîâíÿòü ïî ïðàâîìó êðàþ";
+ Text[ polish ] = "Wyrównaj do prawej";
+ Text[ japanese ] = "‰E‘µ‚¦";
+ Text[ chinese_traditional ] = "¥k¹ï»ô";
+ Text[ arabic ] = "ãÍÇÐÇÉ Åáì Çáíãíä";
+ Text[ greek ] = "Óôïß÷éóç äåîéÜ";
+ Text[ korean ] = "¿À¸¥ÂÊ¿¡ ¸ÂÃã";
+ Text[ turkish ] = "Saða hizala";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_MATRIX ;
+ HelpId = HID_SMA_MATRIX ;
+ Text = "Matrix Anordnung" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Matrix Stack" ;
+ Text [ portuguese_brazilian ] = "Matrix Anordnung" ;
+ Text [ swedish ] = "Matris ordning" ;
+ Text [ danish ] = "matrixstablet" ;
+ Text [ italian ] = "Disposizione matrice" ;
+ Text [ spanish ] = "Disposición matriz" ;
+ Text [ french ] = "Disposition type matrice" ;
+ Text [ dutch ] = "Matrix rangschikking" ;
+ Text [ portuguese ] = "Dispor em forma de matriz" ;
+ Text[ chinese_simplified ] = "±àÅžØÕó";
+ Text[ russian ] = "Ðàñïîëîæåíèå ìàòðèöû";
+ Text[ polish ] = "Rozmieszczenie macierzy";
+ Text[ japanese ] = "s—ñ‚Ì”z’u";
+ Text[ chinese_traditional ] = "½s±Æ¯x°}";
+ Text[ arabic ] = "ÊÑÊíÈ ãÕÝæÝÉ";
+ Text[ greek ] = "ÄéÜôáîç ìÞôñáò";
+ Text[ korean ] = "Çà·Ä ¹è¿­";
+ Text[ turkish ] = "Matris sýralamasý";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_BLANK ;
+ HelpId = HID_SMA_BLANK ;
+ Text = "Zwischenraum" ;
+ Text [ ENGLISH ] = "???" ;
+ Text [ english_us ] = "Gap" ;
+ Text [ portuguese_brazilian ] = "Zwischenraum" ;
+ Text [ swedish ] = "mellanrum" ;
+ Text [ danish ] = "mellemrum" ;
+ Text [ italian ] = "Spazio intermedio" ;
+ Text [ spanish ] = "Espacio" ;
+ Text [ french ] = "Espace" ;
+ Text [ dutch ] = "Spatie" ;
+ Text [ portuguese ] = "Intervalo" ;
+ Text[ chinese_simplified ] = "Gap";
+ Text[ russian ] = "Ïðîáåë";
+ Text[ polish ] = "Odstêp ramek";
+ Text[ japanese ] = "½Íß°½";
+ Text[ chinese_traditional ] = "¶¡¹j";
+ Text[ arabic ] = "ÊÈÇÚÏ";
+ Text[ greek ] = "ÄéÜêåíï";
+ Text[ korean ] = "°£°Ý";
+ Text[ turkish ] = "Aralýk";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 9
+ {
+ // misc
+ HelpId = HID_SMA_FORMAT_TBX ;
+ Pos = MAP_APPFONT ( 0 , 41 ) ;
+ Size = MAP_APPFONT ( 65 , 95 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+ LineCount = 4 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "misc.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_INFINITY ;
+ RID_PARTIAL ;
+ RID_NABLA ;
+ RID_EXISTS ;
+ RID_FORALL ;
+ RID_HBAR;
+ RID_LAMBDABAR ;
+ RID_RE ;
+ RID_IM ;
+ RID_WP ;
+ RID_LEFTARROW ;
+ RID_RIGHTARROW ;
+ RID_UPARROW ;
+ RID_DOWNARROW ;
+ RID_DOTSLOW ;
+ RID_DOTSAXIS ;
+ RID_DOTSVERT ;
+ RID_DOTSUP ;
+ RID_DOTSDOWN ;
+ };
+ IdCount =
+ {
+ 19 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_INFINITY ;
+ HelpId = HID_SMA_INFINITY ;
+ Text = "unendlich" ;
+ Text [ ENGLISH ] = "infinity" ;
+ TEXT[ italian ] = "Infinito";
+ TEXT[ portuguese_brazilian ] = "unendlich";
+ TEXT[ portuguese ] = "infinito";
+ TEXT[ danish ] = "uendelig";
+ TEXT[ french ] = "infini";
+ TEXT[ swedish ] = "oändlig";
+ TEXT[ dutch ] = "oneindig";
+ TEXT[ spanish ] = "infinito";
+ TEXT[ english_us ] = "Infinit";
+ TEXT[ chinese_simplified ] = "ÎÞÏÞ";
+ TEXT[ russian ] = "Áåñêîíå÷íî";
+ TEXT[ polish ] = "nieskoñczonoœæ";
+ TEXT[ japanese ] = "–³ŒÀ‘å";
+ TEXT[ chinese_traditional ] = "µL­­";
+ TEXT[ arabic ] = "áÇäåÇÆí";
+ TEXT[ greek ] = "¢ðåéñï";
+ TEXT[ korean ] = "¹«ÇÑ´ë";
+ TEXT[ turkish ] = "Sonsuz";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_PARTIAL ;
+ HelpId = HID_SMA_PARTIAL ;
+ Text = "partial" ;
+ Text [ ENGLISH ] = "partial" ;
+ TEXT[ italian ] = "Parziale";
+ TEXT[ portuguese_brazilian ] = "partial";
+ TEXT[ portuguese ] = "parcial";
+ TEXT[ danish ] = "partiel";
+ TEXT[ french ] = "partiel";
+ TEXT[ swedish ] = "partial";
+ TEXT[ dutch ] = "partieel";
+ TEXT[ spanish ] = "parcial";
+ TEXT[ english_us ] = "Partial";
+ TEXT[ chinese_simplified ] = "²¿·Ö";
+ TEXT[ russian ] = "×àñòíûé äèôôåðåíöèàë";
+ TEXT[ polish ] = "czêœciowy";
+ TEXT[ japanese ] = "•Î”÷•ª";
+ TEXT[ chinese_traditional ] = "³¡¥÷";
+ TEXT[ arabic ] = "ÌÒÆí";
+ TEXT[ greek ] = "ôìÞìá";
+ TEXT[ korean ] = "Æíµµ ÇÔ¼ö";
+ TEXT[ turkish ] = "Kýsmi";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_NABLA ;
+ HelpId = HID_SMA_NABLA ;
+ Text = "Nabla" ;
+ Text [ ENGLISH ] = "Nabla" ;
+ TEXT[ italian ] = "Nabla";
+ TEXT[ portuguese_brazilian ] = "Nabla";
+ TEXT[ portuguese ] = "Nabla";
+ TEXT[ danish ] = "nabla";
+ TEXT[ french ] = "Nabla";
+ TEXT[ swedish ] = "Nabla";
+ TEXT[ dutch ] = "Nabla";
+ TEXT[ spanish ] = "Nabla";
+ TEXT[ english_us ] = "Nabla";
+ TEXT[ chinese_simplified ] = "Nabla";
+ TEXT[ russian ] = "Íàáëà";
+ TEXT[ polish ] = "Nabla";
+ TEXT[ japanese ] = "Œù”z";
+ TEXT[ chinese_traditional ] = "Nabla";
+ TEXT[ arabic ] = "Nabla";
+ TEXT[ greek ] = "Nabla";
+ TEXT[ korean ] = "Nabla";
+ TEXT[ turkish ] = "Nabla vektörü";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_EXISTS ;
+ HelpId = HID_SMA_EXISTS ;
+ Text = "Es existiert" ;
+ Text [ ENGLISH ] = "exists" ;
+ TEXT[ italian ] = "Esiste";
+ TEXT[ portuguese_brazilian ] = "Es existiert";
+ TEXT[ portuguese ] = "Existe";
+ TEXT[ danish ] = "der eksisterer";
+ TEXT[ french ] = "Il existe";
+ TEXT[ swedish ] = "Det finns";
+ TEXT[ dutch ] = "Er bestaat";
+ TEXT[ spanish ] = "Existe";
+ TEXT[ english_us ] = "There Exists";
+ TEXT[ chinese_simplified ] = "´æÔÚ";
+ TEXT[ russian ] = "Ñóùåñòâóåò";
+ TEXT[ polish ] = "Istnieje";
+ TEXT[ japanese ] = "‘¶Ýì—p‘f";
+ TEXT[ chinese_traditional ] = "¦s¦b";
+ TEXT[ arabic ] = "ãæÌæÏ";
+ TEXT[ greek ] = "ÕðÜñ÷åé";
+ TEXT[ korean ] = "ÀÖ½À´Ï´Ù";
+ TEXT[ turkish ] = "Mevcut";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FORALL ;
+ HelpId = HID_SMA_FORALL ;
+ Text = "Für alle" ;
+ Text [ ENGLISH ] = "forall" ;
+ TEXT[ italian ] = "Per tutti";
+ TEXT[ portuguese_brazilian ] = "Für alle";
+ TEXT[ portuguese ] = "Para todos";
+ TEXT[ danish ] = "for ethvert";
+ TEXT[ french ] = "Pour tous";
+ TEXT[ swedish ] = "För alla";
+ TEXT[ dutch ] = "Voor alle";
+ TEXT[ spanish ] = "Para todos";
+ TEXT[ english_us ] = "For All";
+ TEXT[ chinese_simplified ] = "ÓÃÓÚÈ«²¿";
+ TEXT[ russian ] = "Äëÿ âñåõ";
+ TEXT[ polish ] = "Dla wszystkich";
+ TEXT[ japanese ] = "‘SÌì—p‘f";
+ TEXT[ chinese_traditional ] = "Óì¥Î¥þ³¡";
+ TEXT[ arabic ] = "ááßá";
+ TEXT[ greek ] = "Ãéá üëá";
+ TEXT[ korean ] = "Àüü¿¡";
+ TEXT[ turkish ] = "Tümü için";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_HBAR ;
+ HelpId = HID_SMA_HBAR ;
+ Text = "h quer" ;
+ Text [ ENGLISH ] = "h bar" ;
+ TEXT[ italian ] = "h barra";
+ TEXT[ portuguese_brazilian ] = "h quer";
+ TEXT[ portuguese ] = "h tranversal";
+ TEXT[ danish ] = "h-streg";
+ TEXT[ french ] = "h horizontal";
+ TEXT[ swedish ] = "strukna h";
+ TEXT[ dutch ] = "h liggend";
+ TEXT[ spanish ] = "h barra";
+ TEXT[ english_us ] = "h Bar";
+ TEXT[ chinese_simplified ] = "ºáÖÃµÄ h";
+ TEXT[ russian ] = "h ñ ïîïåðå÷íîé ÷åðòîé";
+ TEXT[ polish ] = "h kreœlone";
+ TEXT[ japanese ] = "h ÊÞ°";
+ TEXT[ chinese_traditional ] = "¾î¸mªº h";
+ TEXT[ arabic ] = "h ÃÝÞí";
+ TEXT[ greek ] = "ÐëÜãéï h";
+ TEXT[ korean ] = "h °¡·Î";
+ TEXT[ turkish ] = "h yatay";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LAMBDABAR ;
+ HelpId = HID_SMA_LAMBDABAR ;
+ Text = "lambda quer" ;
+ Text [ ENGLISH ] = "lambda bar" ;
+ TEXT[ italian ] = "Lambda barra";
+ TEXT[ portuguese_brazilian ] = "lambda quer";
+ TEXT[ portuguese ] = "lambda transversal";
+ TEXT[ danish ] = "lambda-streg";
+ TEXT[ french ] = "Lambda transversal";
+ TEXT[ swedish ] = "strukna lambda";
+ TEXT[ dutch ] = "lambda liggend";
+ TEXT[ spanish ] = "lambda barra";
+ TEXT[ english_us ] = "Lambda Bar";
+ TEXT[ chinese_simplified ] = "ºáÖõÄÀ¼²¼´ï (lambda)";
+ TEXT[ russian ] = "Ëàìáäà ñ ïîïåðå÷íîé ÷åðòîé";
+ TEXT[ polish ] = "lambda kreœlona";
+ TEXT[ japanese ] = "×ÑÀÞ ÊÞ°";
+ TEXT[ chinese_traditional ] = "¾î¸mªºÄõ§G¹F (lambda)";
+ TEXT[ arabic ] = "Lambda ÃÝÞí";
+ TEXT[ greek ] = "ÐëÜãéï ë";
+ TEXT[ korean ] = "¶÷´Ù °¡·Î";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_RE ;
+ HelpId = HID_SMA_RE ;
+ Text = "Realteil" ;
+ Text [ ENGLISH ] = "real part" ;
+ TEXT[ italian ] = "Parte reale";
+ TEXT[ portuguese_brazilian ] = "Realteil";
+ TEXT[ portuguese ] = "Parte real";
+ TEXT[ danish ] = "realdel";
+ TEXT[ french ] = "Partie réelle";
+ TEXT[ swedish ] = "Realdel";
+ TEXT[ dutch ] = "Reëel gedeelte";
+ TEXT[ spanish ] = "Parte real";
+ TEXT[ english_us ] = "Real Part";
+ TEXT[ chinese_simplified ] = "ʵÊý²¿·Ö";
+ TEXT[ russian ] = "Âåùåñòâåííàÿ ÷àñòü";
+ TEXT[ polish ] = "Czêœæ rzeczywista";
+ TEXT[ japanese ] = "ŽÀ”•”";
+ TEXT[ chinese_traditional ] = "¹ê¼Æ³¡¥÷";
+ TEXT[ arabic ] = "ÌÒÁ ÍÞíÞí";
+ TEXT[ greek ] = "Ðñáãìáôéêü ìÝñïò";
+ TEXT[ korean ] = "½Ç¼ö";
+ TEXT[ turkish ] = "Gerçek kýsým";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_IM ;
+ HelpId = HID_SMA_IM ;
+ Text = "Imaginärteil" ;
+ Text [ ENGLISH ] = "imaginary part" ;
+ TEXT[ italian ] = "Parte immaginaria";
+ TEXT[ portuguese_brazilian ] = "Imaginärteil";
+ TEXT[ portuguese ] = "Parte imaginária";
+ TEXT[ danish ] = "imaginærdel";
+ TEXT[ french ] = "Partie imaginaire";
+ TEXT[ swedish ] = "Imaginär del";
+ TEXT[ dutch ] = "Imaginair gedeelte";
+ TEXT[ spanish ] = "Parte imaginaria";
+ TEXT[ english_us ] = "Imaginary Part";
+ TEXT[ chinese_simplified ] = "ÐéÊý²¿·Ö";
+ TEXT[ russian ] = "Ìíèìàÿ ÷àñòü";
+ TEXT[ polish ] = "Czêœæ urojona";
+ TEXT[ japanese ] = "‹•”•”";
+ TEXT[ chinese_traditional ] = "µê¼Æ³¡¥÷";
+ TEXT[ arabic ] = "ÌÒÁ ÎíÇáí";
+ TEXT[ greek ] = "Öáíôáóôéêü ìÝñïò";
+ TEXT[ korean ] = "Çã¼ö";
+ TEXT[ turkish ] = "Sanal kýsým";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_WP ;
+ HelpId = HID_SMA_WP ;
+ Text = "Weierstrass p" ;
+ Text [ ENGLISH ] = "Weierstrass p" ;
+ TEXT[ italian ] = "p di Weierstrass";
+ TEXT[ portuguese_brazilian ] = "Weierstrass p";
+ TEXT[ portuguese ] = "Weierstrass p";
+ TEXT[ danish ] = "Weierstrass p";
+ TEXT[ french ] = "Weierstrass p";
+ TEXT[ swedish ] = "Weierstrass p";
+ TEXT[ dutch ] = "Weierstrass p";
+ TEXT[ spanish ] = "p de Weierstrass";
+ TEXT[ english_us ] = "Weierstrass p";
+ TEXT[ chinese_simplified ] = "Weierstrass p";
+ TEXT[ russian ] = "Ýëëèïòè÷åñêèé ñèìâîë Âåéåðøòðàññà";
+ TEXT[ polish ] = "p Weierstrassa";
+ TEXT[ japanese ] = "ܲ´Ù¼­Ä×½‚̑ȉ~ŠÖ” p";
+ TEXT[ chinese_traditional ] = "Weierstrass p";
+ TEXT[ arabic ] = "Weierstrass p";
+ TEXT[ greek ] = "Weierstrass p";
+ TEXT[ korean ] = "Weierstrass p";
+ TEXT[ turkish ] = "Weierstrass p";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_LEFTARROW ;
+ HelpId = HID_SMA_LEFTARROW ;
+ Text = "Pfeil nach links" ;
+ Text [ ENGLISH ] = "arrow left" ;
+ TEXT[ italian ] = "Freccia a sinistra";
+ TEXT[ portuguese_brazilian ] = "Pfeil nach links";
+ TEXT[ portuguese ] = "Seta para a esquerda";
+ TEXT[ danish ] = "pil mod venstre";
+ TEXT[ french ] = "Flèche vers la gauche";
+ TEXT[ swedish ] = "Pil till vänster";
+ TEXT[ dutch ] = "Pijl naar links";
+ TEXT[ spanish ] = "Flecha hacia la izquierda";
+ TEXT[ english_us ] = "Left Arrow";
+ TEXT[ chinese_simplified ] = "×óÏò¼ýÍ·";
+ TEXT[ russian ] = "Ñòðåëêà âëåâî";
+ TEXT[ polish ] = "Strza³ka w lewo";
+ TEXT[ japanese ] = "¶–îˆó";
+ TEXT[ chinese_traditional ] = "¥ª¦V½bÀY";
+ TEXT[ arabic ] = "Óåã Åáì ÇáíÓÇÑ";
+ TEXT[ greek ] = "ÂÝëïò ðñïò ôá áñéóôåñÜ";
+ TEXT[ korean ] = "¿ÞÂÊ È­»ìÇ¥";
+ TEXT[ turkish ] = "Sola ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_RIGHTARROW ;
+ HelpId = HID_SMA_RIGHTARROW ;
+ Text = "Pfeil nach rechts" ;
+ Text [ ENGLISH ] = "arrow right" ;
+ TEXT[ italian ] = "Freccia a destra";
+ TEXT[ portuguese_brazilian ] = "Pfeil nach rechts";
+ TEXT[ portuguese ] = "Seta para a direita";
+ TEXT[ danish ] = "pil mod højre";
+ TEXT[ french ] = "Flèche vers la droite";
+ TEXT[ swedish ] = "Pil till höger";
+ TEXT[ dutch ] = "Pijl naar rechts";
+ TEXT[ spanish ] = "Flecha hacia la derecha";
+ TEXT[ english_us ] = "Right Arrow";
+ TEXT[ chinese_simplified ] = "ÓÒÏò¼ýÍ·";
+ TEXT[ russian ] = "Ñòðåëêà âïðàâî";
+ TEXT[ polish ] = "Strza³ka w prawo";
+ TEXT[ japanese ] = "‰E–îˆó";
+ TEXT[ chinese_traditional ] = "¥k¦V½bÀY";
+ TEXT[ arabic ] = "Óåã Åáì ÇáíÓÇÑ";
+ TEXT[ greek ] = "ÂÝëïò ðñïò ôá äåîéÜ";
+ TEXT[ korean ] = "¿À¸¥ÂÊ È­»ìÇ¥";
+ TEXT[ turkish ] = "Saða ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_UPARROW ;
+ HelpId = HID_SMA_UPARROW ;
+ Text = "Pfeil nach oben" ;
+ Text [ ENGLISH ] = "arrow up" ;
+ TEXT[ italian ] = "Freccia in alto";
+ TEXT[ portuguese_brazilian ] = "Pfeil nach oben";
+ TEXT[ portuguese ] = "Seta para cima";
+ TEXT[ danish ] = "pil opad";
+ TEXT[ french ] = "Flèche vers le haut";
+ TEXT[ swedish ] = "Pil uppåt";
+ TEXT[ dutch ] = "Pijl naar boven";
+ TEXT[ spanish ] = "Flecha hacia arriba";
+ TEXT[ english_us ] = "Up Arrow";
+ TEXT[ chinese_simplified ] = "¼ýÍ·ÏòÉÏ";
+ TEXT[ russian ] = "Ñòðåëêà ââåðõ";
+ TEXT[ polish ] = "Strza³ka w górê";
+ TEXT[ japanese ] = "ã–îˆó";
+ TEXT[ chinese_traditional ] = "½bÀY¦V¤W";
+ TEXT[ arabic ] = "Óåã Åáì ÃÚáì";
+ TEXT[ greek ] = "ÂÝëïò ðñïò ôá ðÜíù";
+ TEXT[ korean ] = "À­ È­»ìÇ¥";
+ TEXT[ turkish ] = "Yukarý ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOWNARROW ;
+ HelpId = HID_SMA_DOWNARROW ;
+ Text = "Pfeil nach unten" ;
+ Text [ ENGLISH ] = "arrow down" ;
+ TEXT[ italian ] = "Freccia in basso";
+ TEXT[ portuguese_brazilian ] = "Pfeil nach unten";
+ TEXT[ portuguese ] = "Seta para baixo";
+ TEXT[ danish ] = "pil nedad";
+ TEXT[ french ] = "Flèche vers le bas";
+ TEXT[ swedish ] = "Pil nedåt";
+ TEXT[ dutch ] = "Pijl naar beneden";
+ TEXT[ spanish ] = "Flecha hacia abajo";
+ TEXT[ english_us ] = "Down Arrow";
+ TEXT[ chinese_simplified ] = "ÏÂÏò¼ýÍ·";
+ TEXT[ russian ] = "Ñòðåëêà âíèç";
+ TEXT[ polish ] = "Strza³ka w górê";
+ TEXT[ japanese ] = "‰º–îˆó";
+ TEXT[ chinese_traditional ] = "¤U¦V½bÀY";
+ TEXT[ arabic ] = "Óåã Åáì ÃÓÝá";
+ TEXT[ greek ] = "ÂÝëïò ðñïò ôá êÜôù";
+ TEXT[ korean ] = "¾Æ·¡ È­»ìÇ¥";
+ TEXT[ turkish ] = "Aþaðý ok";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOTSLOW ;
+ HelpId = HID_SMA_DOTSLOW ;
+ Text = "Punkte unten" ;
+ Text [ ENGLISH ] = "dots low" ;
+ TEXT[ italian ] = "Punti sotto";
+ TEXT[ portuguese_brazilian ] = "Punkte unten";
+ TEXT[ portuguese ] = "Pontos em baixo";
+ TEXT[ danish ] = "prikker nederst";
+ TEXT[ french ] = "Points en bas";
+ TEXT[ swedish ] = "Punkter nere";
+ TEXT[ dutch ] = "Punten beneden";
+ TEXT[ spanish ] = "Puntos abajo";
+ TEXT[ english_us ] = "Dots Bottom";
+ TEXT[ chinese_simplified ] = "µãÏòÏÂ";
+ TEXT[ russian ] = "Òî÷êè ñíèçó";
+ TEXT[ polish ] = "Punkty na dole";
+ TEXT[ japanese ] = "Äޯĉº";
+ TEXT[ chinese_traditional ] = "ÂI¦V¤U";
+ TEXT[ arabic ] = "äÞÇØ ÃÓÝá";
+ TEXT[ greek ] = "Êïõêêßäåò êÜôù";
+ TEXT[ korean ] = "Á¡ ¾Æ·¡";
+ TEXT[ turkish ] = "Noktalar (alt)";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOTSAXIS ;
+ HelpId = HID_SMA_DOTSAXIS ;
+ Text = "Punkte mittig" ;
+ Text [ ENGLISH ] = "dots mid" ;
+ TEXT[ italian ] = "Punti al centro";
+ TEXT[ portuguese_brazilian ] = "Punkte mittig";
+ TEXT[ portuguese ] = "Pontos ao centro";
+ TEXT[ danish ] = "prikker centreret";
+ TEXT[ french ] = "Points au milieu";
+ TEXT[ swedish ] = "Punkter i mitten";
+ TEXT[ dutch ] = "Punten in de midden";
+ TEXT[ spanish ] = "Puntos en el medio";
+ TEXT[ english_us ] = "Center dots";
+ TEXT[ chinese_simplified ] = "ÖÐÏòµã";
+ TEXT[ russian ] = "Òî÷êè ïî öåíòðó";
+ TEXT[ polish ] = "Punkty w œrodku";
+ TEXT[ japanese ] = "ÄޯĒ†‰›";
+ TEXT[ chinese_traditional ] = "¤¤¦VÂI";
+ TEXT[ arabic ] = "äÞÇØ Ýí ÇáæÓØ";
+ TEXT[ greek ] = "Êïõêêßäåò êåíôñáñéóìÝíá";
+ TEXT[ korean ] = "°¡¿îµ¥ Á¡";
+ TEXT[ turkish ] = "Noktalar (orta)";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOTSVERT ;
+ HelpId = HID_SMA_DOTSVERT ;
+ Text = "Punkte vertikal" ;
+ Text [ ENGLISH ] = "dots vertical" ;
+ TEXT[ italian ] = "Punti verticali";
+ TEXT[ portuguese_brazilian ] = "Punkte vertikal";
+ TEXT[ portuguese ] = "Pontos na vertical";
+ TEXT[ danish ] = "prikker lodret";
+ TEXT[ french ] = "Points verticalement";
+ TEXT[ swedish ] = "Punkter vertikalt";
+ TEXT[ dutch ] = "Punten verticaal";
+ TEXT[ spanish ] = "Puntos verticalmente";
+ TEXT[ english_us ] = "Dots Vertically";
+ TEXT[ chinese_simplified ] = "´¹Ö±µãÏß";
+ TEXT[ russian ] = "Òî÷êè âåðòèêàëüíî";
+ TEXT[ polish ] = "Punkty w pionie";
+ TEXT[ japanese ] = "ÄÞ¯Ä㉺";
+ TEXT[ chinese_traditional ] = "««ª½ÂI½u";
+ TEXT[ arabic ] = "äÞÇØ ÑÃÓíÉ";
+ TEXT[ greek ] = "Êïõêêßäåò êáôáêüñõöá";
+ TEXT[ korean ] = "Á¡À» ¼öÁ÷À¸·Î";
+ TEXT[ turkish ] = "Noktalar (dikey)";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOTSUP ;
+ HelpId = HID_SMA_DOTSUP ;
+ Text = "Punkte nach oben" ;
+ Text [ ENGLISH ] = "dots up" ;
+ TEXT[ italian ] = "Punti in alto";
+ TEXT[ portuguese_brazilian ] = "Punkte nach oben";
+ TEXT[ portuguese ] = "Pontos para cima";
+ TEXT[ danish ] = "prikker opad";
+ TEXT[ french ] = "Points vers le haut";
+ TEXT[ swedish ] = "Punkter uppåt";
+ TEXT[ dutch ] = "Punten naar boven";
+ TEXT[ spanish ] = "Puntos hacia arriba";
+ TEXT[ english_us ] = "Dots to Top";
+ TEXT[ chinese_simplified ] = "µãÏòÉÏ";
+ TEXT[ russian ] = "Òî÷êè ââåðõ";
+ TEXT[ polish ] = "Punkty w górê";
+ TEXT[ japanese ] = "ÄޯĉEオ‚è";
+ TEXT[ chinese_traditional ] = "ÂI¦V¤W";
+ TEXT[ arabic ] = "äÞÇØ Åáì ÃÚáì";
+ TEXT[ greek ] = "Êïõêêßäåò ðñïò ôá ðÜíù";
+ TEXT[ korean ] = "Á¡À» À§·Î";
+ TEXT[ turkish ] = "Noktalar (üst)";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_DOTSDOWN ;
+ HelpId = HID_SMA_DOTSDOWN ;
+ Text = "Punkte nach unten" ;
+ Text [ ENGLISH ] = "dots down" ;
+ TEXT[ italian ] = "Punti in basso";
+ TEXT[ portuguese_brazilian ] = "Punkte nach unten";
+ TEXT[ portuguese ] = "Pontos para baixo";
+ TEXT[ danish ] = "prikker nedad";
+ TEXT[ french ] = "Points vers le bas";
+ TEXT[ swedish ] = "Punkter nedåt";
+ TEXT[ dutch ] = "Punten naar beneden";
+ TEXT[ spanish ] = "Puntos hacia abajo";
+ TEXT[ english_us ] = "Align dots down";
+ TEXT[ chinese_simplified ] = "µãÏòÏÂ";
+ TEXT[ russian ] = "Òî÷êè âíèç";
+ TEXT[ polish ] = "Punkty w dó³";
+ TEXT[ japanese ] = "ÄޯĉE‰º‚ª‚è";
+ TEXT[ chinese_traditional ] = "ÂI¦V¤U";
+ TEXT[ arabic ] = "äÞÇØ Åáì ÃÓÝá";
+ TEXT[ greek ] = "Êïõêêßäåò ðñïò ôá êÜôù";
+ TEXT[ korean ] = "Á¡À» ¾Æ·¡·Î";
+ TEXT[ turkish ] = "Noktalar (alt)";
+ TEXT[ language_user1 ] = " ";
+ };
+ };
+ };
+ ToolBox 10
+ {
+ // main menu of selection-window
+ HelpId = HID_SMA_SELECTION_TBX ;
+ Pos = MAP_APPFONT ( 0 , 0 ) ;
+ Size = MAP_APPFONT ( 65 , 38 ) ;
+ SVLook = TRUE ;
+ LineCount = 2 ;
+ ItemImageList = ImageList
+ {
+ ImageBitmap = Bitmap
+ {
+ FILE = "img.bmp" ; // image-list bitmap
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ RID_UNBINOPS_CAT ;
+ RID_RELATIONS_CAT ;
+ RID_SETOPERATIONS_CAT ;
+ RID_FUNCTIONS_CAT ;
+ RID_OPERATORS_CAT ;
+ RID_ATTRIBUTES_CAT ;
+ RID_MISC_CAT ;
+ RID_BRACKETS_CAT ;
+ RID_FORMAT_CAT ;
+ };
+ IdCount =
+ {
+ 9 ;
+ };
+ };
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = RID_UNBINOPS_CAT ;
+ HelpId = HID_SMA_UNBINOPS_CAT ;
+ Text = "Unäre/Binäre Operatoren" ;
+ Text [ ENGLISH ] = "unary/binary operators" ;
+ Text [ english_us ] = "Unary/Binary Operators" ;
+ Text [ portuguese_brazilian ] = "Unäre/Binäre Operatoren" ;
+ Text [ swedish ] = "Monära/Binära operatorer" ;
+ Text [ danish ] = "Monadiske/binære operatorer" ;
+ Text [ italian ] = "Operatori unari/binari" ;
+ Text [ spanish ] = "Operadores unarios/binarios" ;
+ Text [ french ] = "Opérateurs unaires/binaires" ;
+ Text [ dutch ] = "Unaire/Binaire operatoren" ;
+ Text [ portuguese ] = "Operadores unários/binários" ;
+ Text[ chinese_simplified ] = "Ò»Ôª/¶þÔªÔËËã·û";
+ Text[ russian ] = "Óíàðíûå/Áèíàðíûå îïåðàòîðû";
+ Text[ polish ] = "Unarne/Binarne Operatory";
+ Text[ japanese ] = "¼Þ­°ÅØ/ÊÞ²Å؉‰ŽZŽq";
+ Text[ chinese_traditional ] = "¤@¤¸/¤G¤¸¹Bºâ²Å";
+ Text[ arabic ] = "ÚæÇãá ÊÔÛíá ËäÇÆíÉ/ÃÍÇÏíÉ";
+ Text[ greek ] = "Åíáäéêïß/Äõáäéêïß ôåëåóôÝò";
+ Text[ korean ] = "´ÜÇ×/2Áø ¿¬»êÀÚ";
+ Text[ turkish ] = "Birli/ikili iþleçler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_RELATIONS_CAT ;
+ HelpId = HID_SMA_RELATIONS_CAT ;
+ Text = "Relationen" ;
+ Text [ ENGLISH ] = "relations" ;
+ Text [ english_us ] = "Relations" ;
+ Text [ portuguese_brazilian ] = "Relationen" ;
+ Text [ swedish ] = "relationer" ;
+ Text [ danish ] = "Relationer" ;
+ Text [ italian ] = "Relazioni" ;
+ Text [ spanish ] = "Relaciones" ;
+ Text [ french ] = "Relations" ;
+ Text [ dutch ] = "Relaties" ;
+ Text [ portuguese ] = "Relações" ;
+ Text[ chinese_simplified ] = "¹Øϵ";
+ Text[ russian ] = "Îòíîøåíèÿ";
+ Text[ polish ] = "Relacje";
+ Text[ japanese ] = "ŠÖŒW‰‰ŽZ‹L†";
+ Text[ chinese_traditional ] = "Ãö«Y";
+ Text[ arabic ] = "ÇáÚáÇÞÇÊ";
+ Text[ greek ] = "Ó÷Ýóåéò";
+ Text[ korean ] = "°ü°è";
+ Text[ turkish ] = "Ýliþkiler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_SETOPERATIONS_CAT ;
+ HelpId = HID_SMA_SETOPERATIONS_CAT ;
+ Text = "Mengenoperationen" ;
+ Text [ ENGLISH ] = "set operations" ;
+ Text [ english_us ] = "Set-Operations" ;
+ Text [ portuguese_brazilian ] = "Mengenoperationen" ;
+ Text [ swedish ] = "Mängdoperationer" ;
+ Text [ danish ] = "Mængdeoperationer" ;
+ Text [ italian ] = "Operazioni degli insiemi" ;
+ Text [ spanish ] = "Operaciones de conjuntos" ;
+ Text [ french ] = "Opérations quantitatives" ;
+ Text [ dutch ] = "Definities" ;
+ Text [ portuguese ] = "Operações de conjuntos" ;
+ Text[ chinese_simplified ] = "ÊýÁ¿ÔËËã";
+ Text[ russian ] = "Îïåðàöèè ìíîæåñòâ";
+ Text[ polish ] = "Operacje na zbiorach";
+ Text[ japanese ] = "W‡‰‰ŽZ";
+ Text[ chinese_traditional ] = "¼Æ¶q¹Bºâ";
+ Text[ arabic ] = "ãÌãæÚÉ ÚãáíÇÊ";
+ Text[ greek ] = "ÓõíáñôÞóåéò óõíüëùí";
+ Text[ korean ] = "ÁýÇÕ ¿¬»ê";
+ Text[ turkish ] = "Küme iþlemleri";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FUNCTIONS_CAT ;
+ HelpId = HID_SMA_FUNCTIONS_CAT ;
+ Text = "Funktionen" ;
+ Text [ ENGLISH ] = "functions" ;
+ Text [ english_us ] = "Functions" ;
+ Text [ portuguese_brazilian ] = "Funktionen" ;
+ Text [ swedish ] = "Funktioner" ;
+ Text [ danish ] = "Funktioner" ;
+ Text [ italian ] = "Funzioni" ;
+ Text [ spanish ] = "Funciones" ;
+ Text [ french ] = "Fonctions" ;
+ Text [ dutch ] = "Functies" ;
+ Text [ portuguese ] = "Funções" ;
+ Text[ chinese_simplified ] = "º¯Êý";
+ Text[ russian ] = "Ôóíêöèè";
+ Text[ polish ] = "Funkcje";
+ Text[ japanese ] = "ŠÖ”";
+ Text[ chinese_traditional ] = "¨ç¼Æ";
+ Text[ arabic ] = "ÏÇáÇÊ";
+ Text[ greek ] = "ÓõíáñôÞóåéò";
+ Text[ korean ] = "ÇÔ¼ö";
+ Text[ turkish ] = "Ýþlevler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_OPERATORS_CAT ;
+ HelpId = HID_SMA_OPERATORS_CAT ;
+ Text = "Operatoren" ;
+ Text [ ENGLISH ] = "operators" ;
+ Text [ english_us ] = "Operators" ;
+ Text [ portuguese_brazilian ] = "Operatoren" ;
+ Text [ swedish ] = "Operatorer" ;
+ Text [ danish ] = "Operatorer" ;
+ Text [ italian ] = "Operatori" ;
+ Text [ spanish ] = "Operadores" ;
+ Text [ french ] = "Opérateurs" ;
+ Text [ dutch ] = "Operatoren" ;
+ Text [ portuguese ] = "Operadores" ;
+ Text[ chinese_simplified ] = "ÔËËã·û";
+ Text[ russian ] = "Îïåðàòîðû";
+ Text[ polish ] = "Operatory";
+ Text[ japanese ] = "‰‰ŽZŽq";
+ Text[ chinese_traditional ] = "¹Bºâ²Å";
+ Text[ arabic ] = "ÚæÇãá ÇáÊÔÛíá";
+ Text[ greek ] = "ÔåëåóôÝò";
+ Text[ korean ] = "¿¬»êÀÚ";
+ Text[ turkish ] = "Ýþleçler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_BREAK ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_ATTRIBUTES_CAT ;
+ HelpId = HID_SMA_ATTRIBUTES_CAT ;
+ Text = "Attribute" ;
+ Text [ ENGLISH ] = "attributs" ;
+ Text [ english_us ] = "Attributes" ;
+ Text [ portuguese_brazilian ] = "Attribute" ;
+ Text [ swedish ] = "Attribut" ;
+ Text [ danish ] = "Attributter" ;
+ Text [ italian ] = "Attributo" ;
+ Text [ spanish ] = "Atributos" ;
+ Text [ french ] = "Attributs" ;
+ Text [ dutch ] = "Attributen" ;
+ Text [ portuguese ] = "Atributos" ;
+ Text[ chinese_simplified ] = "ÊôÐÔ";
+ Text[ russian ] = "Àòðèáóòû";
+ Text[ polish ] = "Atrybuty";
+ Text[ japanese ] = "‘®«";
+ Text[ chinese_traditional ] = "ÄÝ©Ê";
+ Text[ arabic ] = "ÓãÇÊ";
+ Text[ greek ] = "Éäéüôçôåò";
+ Text[ korean ] = "¼Ó¼º";
+ Text[ turkish ] = "Öznitelikler";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_MISC_CAT ;
+ HelpId = HID_SMA_MISC_CAT ;
+ Text = "Sonstiges" ;
+ Text [ ENGLISH ] = "Misc" ;
+ TEXT[ italian ] = "Altro";
+ TEXT[ portuguese_brazilian ] = "Sonstiges";
+ TEXT[ portuguese ] = "Outros";
+ TEXT[ danish ] = "Andet";
+ TEXT[ french ] = "Autres";
+ TEXT[ swedish ] = "Övrigt";
+ TEXT[ dutch ] = "Diversen";
+ TEXT[ spanish ] = "Otros";
+ TEXT[ english_us ] = "Others";
+ TEXT[ chinese_simplified ] = "ÆäËû";
+ TEXT[ russian ] = "Ïðî÷åå";
+ TEXT[ polish ] = "Inne";
+ TEXT[ japanese ] = "‚»‚Ì‘¼";
+ TEXT[ chinese_traditional ] = "¨ä¥L";
+ TEXT[ arabic ] = "ÛíÑ Ðáß";
+ TEXT[ greek ] = "¢ëëá";
+ TEXT[ korean ] = "±âŸ";
+ TEXT[ turkish ] = "Diðer";
+ TEXT[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SPACE ;
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_BRACKETS_CAT ;
+ HelpId = HID_SMA_BRACKETS_CAT ;
+ Text = "Klammern" ;
+ Text [ ENGLISH ] = "parentheses" ;
+ Text [ english_us ] = "Brackets" ;
+ Text [ portuguese_brazilian ] = "Klammern" ;
+ Text [ swedish ] = "Parenteser" ;
+ Text [ danish ] = "Parenteser" ;
+ Text [ italian ] = "Parentesi" ;
+ Text [ spanish ] = "Paréntesis" ;
+ Text [ french ] = "Parenthèses" ;
+ Text [ dutch ] = "Haakjes" ;
+ Text [ portuguese ] = "Parênteses" ;
+ Text[ chinese_simplified ] = "À¨ºÅ";
+ Text[ russian ] = "Ñêîáêè";
+ Text[ polish ] = "Nawiasy";
+ Text[ japanese ] = "Š‡ŒÊ";
+ Text[ chinese_traditional ] = "¬A¸¹";
+ Text[ arabic ] = "ÃÞæÇÓ";
+ Text[ greek ] = "ÐáñåíèÝóåéò";
+ Text[ korean ] = "°ýÈ£";
+ Text[ turkish ] = "Ayraçlar";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = RID_FORMAT_CAT ;
+ HelpId = HID_SMA_FORMAT_CAT ;
+ Text = "Formatierungen" ;
+ Text [ ENGLISH ] = "format" ;
+ Text [ english_us ] = "Format" ;
+ Text [ portuguese_brazilian ] = "Formatierungen" ;
+ Text [ swedish ] = "Formateringar" ;
+ Text [ danish ] = "Formateringer" ;
+ Text [ italian ] = "Formattazioni" ;
+ Text [ spanish ] = "Formatos" ;
+ Text [ french ] = "Formatage" ;
+ Text [ dutch ] = "Opmaak" ;
+ Text [ portuguese ] = "Formatações" ;
+ Text[ chinese_simplified ] = "¸ñʽ";
+ Text[ russian ] = "Ôîðìàò";
+ Text[ polish ] = "Formatowania";
+ Text[ japanese ] = "‘Ž®";
+ Text[ chinese_traditional ] = "®æ¦¡";
+ Text[ arabic ] = "ÊäÓíÞ";
+ Text[ greek ] = "ÌïñöïðïéÞóåéò";
+ Text[ korean ] = "¼­½Ä";
+ Text[ turkish ] = "Format";
+ Text[ language_user1 ] = " ";
+ };
+ };
+ };
+ Text [ portuguese ] = "Selecção" ;
+ Text [ english_us ] = "Selection" ;
+ Text [ portuguese_brazilian ] = "Operands" ;
+ Text [ swedish ] = "Urval" ;
+ Text [ danish ] = "Udvalg" ;
+ Text [ italian ] = "Selezione" ;
+ Text [ spanish ] = "Selección" ;
+ Text [ french ] = "Sélection" ;
+ Text [ dutch ] = "Selectie" ;
+ Text[ chinese_simplified ] = "Ñ¡Ôñ";
+ Text[ russian ] = "Âûáîð";
+ Text[ polish ] = "Wybór";
+ Text[ japanese ] = "‘I‘ð";
+ Text[ chinese_traditional ] = "¿ï¾Ü";
+ Text[ arabic ] = "ÊÍÏíÏ";
+ Text[ language_user1 ] = " ";
+ Text[ greek ] = "ÅðéëïãÞ";
+ Text[ korean ] = "¼±ÅÃ";
+ Text[ turkish ] = "Seçim";
+};
+
+
+DockingWindow RID_CMDBOXWINDOW
+{
+ HelpId = HID_SMA_COMMAND_WIN ;
+ Moveable = TRUE ;
+ Closeable = FALSE ;
+ Sizeable = TRUE ;
+ OutputSize = TRUE ;
+ HideWhenDeactivate = FALSE ;
+ SVLook = TRUE ;
+ Size = MAP_APPFONT ( 292 , 94 ) ;
+ Dockable = TRUE ;
+ Text = "Kommandos" ;
+ Text [ ENGLISH ] = "Commands" ;
+ Text [ norwegian ] = "Kommandoer" ;
+ Text [ italian ] = "Comandi" ;
+ Text [ portuguese_brazilian ] = "Comandos" ;
+ Text [ portuguese ] = "Comandos" ;
+ Text [ finnish ] = "Komennot" ;
+ Text [ danish ] = "Kommandoer" ;
+ Text [ french ] = "Commandes" ;
+ Text [ swedish ] = "Kommandon" ;
+ Text [ dutch ] = "Commando´s" ;
+ Text [ spanish ] = "Comandos" ;
+ Text [ english_us ] = "Commands" ;
+ Text[ chinese_simplified ] = "ÃüÁî";
+ Text[ russian ] = "Êîìàíäû";
+ Text[ polish ] = "Polecenia";
+ Text[ japanese ] = "ºÏÝÄÞ";
+ Text[ chinese_traditional ] = "©R¥O";
+ Text[ arabic ] = "ÃæÇãÑ";
+ Text[ greek ] = "ÅíôïëÝò";
+ Text[ korean ] = "¸í·É";
+ Text[ turkish ] = "Komutlar";
+ Text[ language_user1 ] = " ";
+};
+
+ImageList RID_DEFAULTIMAGELIST_LC
+{
+ ImageBitmap = Bitmap
+ {
+ File = "lc_out.bmp" ;
+ File [ ENGLISH ] = "lc_out01.bmp" ;
+ File [ DANISH ] = "lc_out45.bmp" ;
+ File [ ENGLISH_US ] = "lc_out01.bmp" ;
+ File [ SPANISH ] = "lc_out34.bmp" ;
+ File [ FRENCH ] = "lc_out33.bmp" ;
+ File [ ITALIAN ] = "lc_out39.bmp" ;
+ File [ DUTCH ] = "lc_out31.bmp" ;
+ File [ SWEDISH ] = "lc_out46.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ SID_NEXTERR ;
+ SID_PREVERR ;
+ SID_VIEW050 ;
+ SID_VIEW100 ;
+ SID_VIEW200 ;
+ SID_ZOOMIN ;
+ SID_ZOOMOUT ;
+ SID_ADJUST ;
+ SID_DRAW ;
+ SID_TOOLBOX ;
+ SID_FONT ;
+ SID_FONTSIZE ;
+ SID_DISTANCE ;
+ SID_ALIGN ;
+ SID_FORMULACURSOR ;
+ SID_SYMBOLS_CATALOGUE ;
+ };
+ IdCount =
+ {
+ 16;
+ };
+};
+
+ImageList RID_DEFAULTIMAGELIST_SC
+{
+ ImageBitmap = Bitmap
+ {
+ File = "sc_out.bmp" ;
+ File [ ENGLISH ] = "sc_out01.bmp" ;
+ File [ DANISH ] = "sc_out45.bmp" ;
+ File [ ENGLISH_US ] = "sc_out01.bmp" ;
+ File [ SPANISH ] = "sc_out34.bmp" ;
+ File [ FRENCH ] = "sc_out33.bmp" ;
+ File [ ITALIAN ] = "sc_out39.bmp" ;
+ File [ DUTCH ] = "sc_out31.bmp" ;
+ File [ SWEDISH ] = "sc_out46.bmp" ;
+ };
+ MaskColor = IMAGE_STDBTN_COLOR ;
+ IdList =
+ {
+ SID_NEXTERR ;
+ SID_PREVERR ;
+ SID_VIEW050 ;
+ SID_VIEW100 ;
+ SID_VIEW200 ;
+ SID_ZOOMIN ;
+ SID_ZOOMOUT ;
+ SID_ADJUST ;
+ SID_DRAW ;
+ SID_TOOLBOX ;
+ SID_FONT ;
+ SID_FONTSIZE ;
+ SID_DISTANCE ;
+ SID_ALIGN ;
+ SID_FORMULACURSOR ;
+ SID_SYMBOLS_CATALOGUE ;
+ };
+ IdCount =
+ {
+ 16;
+ };
+};
+
+String RID_DOCUMENTSTR
+{
+ Text = "Formel" ;
+ Text [ ENGLISH ] = "Formula" ;
+ Text [ english_us ] = "Formula" ;
+ Text [ dutch ] = "Formule" ;
+ Text [ swedish ] = "Formel" ;
+ Text [ danish ] = "Formel" ;
+ Text [ italian ] = "Formula" ;
+ Text [ spanish ] = "Fórmula" ;
+ Text [ french ] = "Formule" ;
+ Text [ portuguese ] = "Fórmula" ;
+ Text [ portuguese_brazilian ] = "Formel" ;
+ Text[ chinese_simplified ] = "¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà";
+ Text[ polish ] = "Formu³a";
+ Text[ japanese ] = "”Ž®";
+ Text[ chinese_traditional ] = "¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò";
+ Text[ korean ] = "¼ö½Ä";
+ Text[ turkish ] = "Formül";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_MATH_DOCUMENT_FULLTYPE_50
+{
+ Text = "StarOffice 5.0 Formel" ;
+ Text [ ENGLISH ] = "StarOffice 5.0 Formula" ;
+ Text [ english_us ] = "StarOffice 5.0 Formula" ;
+ Text [ swedish ] = "StarOffice 5.0 Formel" ;
+ Text [ danish ] = "StarOffice 5.0 formel" ;
+ Text [ italian ] = "Formula StarOffice 5.0" ;
+ Text [ spanish ] = "Fórmula StarOffice 5.0" ;
+ Text [ french ] = "Formule StarOffice 5.0" ;
+ Text [ dutch ] = "StarOffice 5.0 Formule" ;
+ Text [ portuguese_brazilian ] = "StarOffice 5.0 Formel" ;
+ Text [ portuguese ] = "Fórmula StarOffice 5.0" ;
+ Text[ chinese_simplified ] = "StarOffice 5.0 ¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà StarOffice 5.0";
+ Text[ polish ] = "Formu³a StarOffice 5.0";
+ Text[ japanese ] = "StarOffice 5.0 ”Ž®";
+ Text[ chinese_traditional ] = "StarOffice 5.0 ¤½¦¡";
+ Text[ arabic ] = "StarOffice 5.0 ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò (StarOffice 5.0)";
+ Text[ korean ] = "StarOffice 5.0 ¼ö½Ä";
+ Text[ turkish ] = "StarOffice 5.0 - Formül";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_MATH_DOCUMENT_FULLTYPE_40
+{
+ Text = "StarOffice 4.0 Formel" ;
+ Text [ ENGLISH ] = "StarOffice 4.0 Formula" ;
+ Text [ english_us ] = "StarOffice 4.0 Formula" ;
+ Text [ swedish ] = "StarOffice 4.0 Formel" ;
+ Text [ danish ] = "StarOffice 4.0 formel" ;
+ Text [ italian ] = "Formula StarOffice 4.0" ;
+ Text [ spanish ] = "Fórmula StarOffice 4.0" ;
+ Text [ french ] = "Formule StarOffice 4.0" ;
+ Text [ dutch ] = "StarOffice 4.0 Formule" ;
+ Text [ portuguese_brazilian ] = "StarOffice 4.0 Formel" ;
+ Text [ portuguese ] = "Fórmula StarOffice 4.0" ;
+ Text[ chinese_simplified ] = "StarOffice 4.0 ¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà StarOffice 4.0";
+ Text[ polish ] = "Formu³a StarOffice 4.0";
+ Text[ japanese ] = "StarOffice 4.0 ”Ž®";
+ Text[ chinese_traditional ] = "StarOffice 4.0 ¤½¦¡";
+ Text[ arabic ] = "StarOffice 4.0 ÕíÛÉ";
+ Text[ greek ] = "Ôýðïò (StarOffice 4.0)";
+ Text[ korean ] = "StarOffice 4.0 ¼ö½Ä";
+ Text[ turkish ] = "StarOffice 4.0 - Formül";
+ Text[ language_user1 ] = " ";
+};
+
+String STR_MATH_DOCUMENT_FULLTYPE_31
+{
+ Text = "StarOffice 3.0 Formel" ;
+ Text [ ENGLISH ] = "StarOffice 3.0 Formula" ;
+ Text [ english_us ] = "StarOffice 3.0 Formula" ;
+ Text [ swedish ] = "StarOffice 3.0 Formel" ;
+ Text [ danish ] = "StarOffice 3.0 formel" ;
+ Text [ italian ] = "Formula StarOffice 3.0" ;
+ Text [ spanish ] = "Fórmula StarOffice 3.0" ;
+ Text [ french ] = "Formule StarOffice 3.0" ;
+ Text [ dutch ] = "StarOffice 3.0 Formule" ;
+ Text [ portuguese_brazilian ] = "StarOffice 3.0 Formel" ;
+ Text [ portuguese ] = "Fórmula StarOffice 3.0" ;
+ Text[ chinese_simplified ] = "StarOffice 3.0 ¹«Ê½";
+ Text[ russian ] = "Ôîðìóëà StarOffice 3.0";
+ Text[ polish ] = "Formu³a StarOffice 3.0";
+ Text[ japanese ] = "StarOffice 3.0 ”Ž®";
+ Text[ chinese_traditional ] = "StarOffice 3.0 ¤½¦¡";
+ Text[ arabic ] = "StarOffice 3.0 ÕíÛÉ";
+ Text[ greek ] = "StarOffice 3.0 - Ôýðïò";
+ Text[ korean ] = "StarOffice 3.0 ¼ö½Ä";
+ Text[ turkish ] = "StarOffice 3.0 - Formül";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_SYMBOLFILESSTR
+{
+ Text = "Symboldateien (*.sms)" ;
+ Text [ ENGLISH ] = "Symbolfiles (*.sms)" ;
+ Text [ english_us ] = "Symbol files (*.sms)" ;
+ Text [ swedish ] = "Symbolfiler (*.sms)" ;
+ Text [ danish ] = "Symbolfiler (*.sms)" ;
+ Text [ italian ] = "File simbolo (*.sms)" ;
+ Text [ spanish ] = "Archivos de símbolos (*.sms)" ;
+ Text [ french ] = "Fichiers de symboles (*.sms)" ;
+ Text [ dutch ] = "Symboolbestanden (*.sms)" ;
+ Text [ portuguese_brazilian ] = "Symboldateien (*.sms)" ;
+ Text [ portuguese ] = "Ficheiros de símbolos (*.sms)" ;
+ Text[ russian ] = "Ôàéëû ñèìâîëîâ (*.sms)";
+ Text[ polish ] = "Pliki symboli (*.sms)";
+ Text[ japanese ] = "¼ÝÎÞ٠̧²Ù(*.sms)";
+ Text[ chinese_simplified ] = "ͼ±êÎļþ(*.sms)";
+ Text[ chinese_traditional ] = "¹Ï¥ÜÀÉ®×(*.sms)";
+ Text[ arabic ] = "(*.sms) ãáÝÇÊ ÇáÑãæÒ";
+ Text[ greek ] = "Áñ÷åßá óõìâüëùí (*.sms)";
+ Text[ korean ] = "±âÈ£ ÆÄÀÏ (*.sms)";
+ Text[ turkish ] = "Simge dosyalarý (*.sms)";
+};
+
+String RID_ALLFILESSTR
+{
+ Text = "Alle Dateien (*.*)" ;
+ Text [ ENGLISH ] = "All Files (*.*)" ;
+ Text [ dutch ] = "Alle bestanden (*.*)" ;
+ Text [ english_us ] = "All files (*.*)" ;
+ Text [ swedish ] = "Alla filer (*.*)" ;
+ Text [ danish ] = "Alle filer (*.*)" ;
+ Text [ italian ] = "Tutti i file (*.*)" ;
+ Text [ spanish ] = "Todos los archivos (*.*)" ;
+ Text [ french ] = "Tous les fichiers (*.*)" ;
+ Text [ portuguese ] = "Ficheiros todos (*.*)" ;
+ Text [ portuguese_brazilian ] = "Alle Dateien (*.*)" ;
+ Text[ russian ] = "Âñå ôàéëû (*.*)";
+ Text[ polish ] = "Wszystkie pliki (*.*)";
+ Text[ japanese ] = "‚·‚ׂĂÌ̧²Ù(*.*)";
+ Text[ chinese_simplified ] = "È«²¿µÄÎļþ(*.*)";
+ Text[ chinese_traditional ] = "¥þ³¡ªºÀÉ®×(*.*)";
+ Text[ arabic ] = "(*.*) ßá ÇáãáÝÇÊ";
+ Text[ greek ] = "¼ëá ôá áñ÷åßá (*.*)";
+ Text[ korean ] = "¸ðµç ÆÄÀÏ (*.*)";
+ Text[ turkish ] = "Tüm dosyalar (*.*)";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_IDENT
+{
+ Text = "FEHLER : " ;
+ Text [ ENGLISH ] = "ERROR : " ;
+ Text [ english_us ] = "ERROR : " ;
+ Text [ italian ] = "ERRORE: " ;
+ Text [ spanish ] = "ERROR : " ;
+ Text [ french ] = "ERREUR : " ;
+ Text [ dutch ] = "FOUT: " ;
+ Text [ swedish ] = "FEL : " ;
+ Text [ danish ] = "FEJL : " ;
+ Text [ portuguese_brazilian ] = "FEHLER : " ;
+ Text [ portuguese ] = "ERRO : " ;
+ Text[ chinese_simplified ] = "´íÎó£º ";
+ Text[ russian ] = "ÎØÈÁÊÀ : ";
+ Text[ polish ] = "B£¥D : ";
+ Text[ japanese ] = "ERROR: ";
+ Text[ chinese_traditional ] = "¿ù»~¡G ";
+ Text[ arabic ] = ": ÎØÃ";
+ Text[ greek ] = "ÓÖÁËÌÁ : ";
+ Text[ korean ] = "ERROR : ";
+ Text[ turkish ] = "HATA : ";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_UNKOWN
+{
+ Text = "Ein unbekannter Fehler ist aufgetreten" ;
+ Text [ ENGLISH ] = "Unknown error occured" ;
+ Text [ english_us ] = "Unknown error occurred" ;
+ Text [ italian ] = "Si è avuto un errore sconosciuto" ;
+ Text [ spanish ] = "Se ha producido un error desconocido" ;
+ Text [ french ] = "Une erreur inconnue est survenue." ;
+ Text [ dutch ] = "Er is een onbekende fout opgetreden" ;
+ Text [ swedish ] = "Ett okänt fel har uppstått" ;
+ Text [ danish ] = "Der er optået en ukendt fejl" ;
+ Text [ portuguese_brazilian ] = "Ein unbekannter Fehler ist aufgetreten" ;
+ Text [ portuguese ] = "Surgiu um erro desconhecido." ;
+ Text[ chinese_simplified ] = "·¢ÉúÒ»¸ö²»Ã÷µÄ´íÎó¡£";
+ Text[ russian ] = "Ïðîèçîøëà íåèçâåñòíàÿ îøèáêà";
+ Text[ polish ] = "Wyst¹pi³ nieznany b³¹d";
+ Text[ japanese ] = "•s–¾‚È´×°‚ª”­¶";
+ Text[ chinese_traditional ] = "µo¥Í¤@­Ó¤£©úªº¿ù»~¡C";
+ Text[ arabic ] = "ÍÏË ÎØà ÛíÑ ãÚÑæÝ";
+ Text[ greek ] = "ÐáñïõóéÜóôçêå Üãíùóôï óöÜëìá";
+ Text[ korean ] = "¾Ë·ÁÁöÁö ¾ÊÀº ¿À·ù ¹ß»ý";
+ Text[ turkish ] = "Bilinmeyen bir hata oluþtu";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_UNEXPECTEDCHARACTER
+{
+ Text = "Unerwartetes Zeichen" ;
+ Text [ ENGLISH ] = "Unexpected character" ;
+ Text [ dutch ] = "Onverwacht teken" ;
+ Text [ english_us ] = "Unexpected character" ;
+ Text [ italian ] = "Carattere inatteso" ;
+ Text [ spanish ] = "Carácter no esperado" ;
+ Text [ french ] = "Caractère imprévu" ;
+ Text [ swedish ] = "Oväntat tecken" ;
+ Text [ danish ] = "Uventet tegn" ;
+ Text [ portuguese_brazilian ] = "Unerwartetes Zeichen" ;
+ Text [ portuguese ] = "Caracter não esperado" ;
+ Text[ chinese_simplified ] = "ÒâÍâµÄ×Ö·û";
+ Text[ russian ] = "Íåîæèäàííûé çíàê";
+ Text[ polish ] = "Nieoczekiwany znak";
+ Text[ japanese ] = "•s“K“–‚È•¶Žš";
+ Text[ chinese_traditional ] = "·N¥~ªº¦r¤¸";
+ Text[ arabic ] = "ÍÑÝ ÛíÑ ãÊæÞÚ";
+ Text[ greek ] = "Ìç áíáìåíüìåíïò ÷áñáêôÞñáò";
+ Text[ korean ] = "¿¹»óÄ¡ ¾ÊÀº ¹®ÀÚ";
+ Text[ turkish ] = "Beklenmeyen karakter";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_OVERFLOW
+{
+ Text = "Formeleingabe zu umfangreich" ;
+ Text [ ENGLISH ] = "Formula too big" ;
+ Text [ dutch ] = "Formule te omvangrijk" ;
+ Text [ english_us ] = "Formula entry too complex" ;
+ Text [ italian ] = "Formula digitata troppo complessa" ;
+ Text [ spanish ] = "La fórmula es muy compleja" ;
+ Text [ french ] = "Entrée de formules trop complexe" ;
+ Text [ swedish ] = "Formelinmatning alltför komplex" ;
+ Text [ danish ] = "Formelinput for omfangsrigt" ;
+ Text [ portuguese_brazilian ] = "Formeleingabe zu umfangreich" ;
+ Text [ portuguese ] = "Fórmula demasiado complexa" ;
+ Text[ chinese_simplified ] = "ÊäÈëµÄ¹«Ê½Ì«¸´ºÏ";
+ Text[ russian ] = "Ââîä ôîðìóëû ñëèøêîì îáúåìíûé";
+ Text[ polish ] = "Wprowadzenie formu³y zbyt kompleksowe";
+ Text[ japanese ] = "”Ž®‚Ì“ü—Í‚ª‘½‚·‚¬‚Ü‚·";
+ Text[ chinese_traditional ] = "¿é¤Jªº¤½¦¡¤Ó½Æ¦X";
+ Text[ arabic ] = "ÅÏÎÇá ÇáÕíÛÉ ãÚÞÏ ááÛÇíÉ";
+ Text[ greek ] = "Ï ôýðïò ðïõ Ý÷åôå åéóÜãåé åßíáé õðåñâïëéêÜ ðåñßðëïêïò";
+ Text[ korean ] = "ÀÔ·ÂÇÑ ¼ö½ÄÀÌ ³Ê¹« ±¤¹üÀ§ÇÔ";
+ Text[ turkish ] = "Formül giriþi çok karmaþýk";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_LGROUPEXPECTED
+{
+ Text = "'{' erwartet" ;
+ Text [ ENGLISH ] = "'{' expected" ;
+ Text [ dutch ] = "'{' verwacht" ;
+ Text [ english_us ] = "'{' expected" ;
+ Text [ italian ] = "Atteso '{'" ;
+ Text [ spanish ] = "Se requiere '{'" ;
+ Text [ french ] = "'{' requis" ;
+ Text [ swedish ] = "'{' förväntad" ;
+ Text [ danish ] = "'{' forventes" ;
+ Text [ portuguese_brazilian ] = "'{' erwartet" ;
+ Text [ portuguese ] = "Necessário '{'" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý '{'";
+ Text[ russian ] = "'{' îæèäàåòñÿ";
+ Text[ polish ] = "'{' powinien wyst¹piæ";
+ Text[ japanese ] = "'{'‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý '{'";
+ Text[ arabic ] = "ãØáæÈ '{'";
+ Text[ greek ] = "'{' áíáìÝíåôáé";
+ Text[ korean ] = "'{' ÇÊ¿äÇÔ";
+ Text[ turkish ] = "'{' gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_RGROUPEXPECTED
+{
+ Text = "'}' erwartet" ;
+ Text [ ENGLISH ] = "'}' expected" ;
+ Text [ english_us ] = "'}' expected" ;
+ Text [ italian ] = "'}' atteso" ;
+ Text [ spanish ] = "Se requiere '}'" ;
+ Text [ french ] = "'}' requis" ;
+ Text [ dutch ] = "'}' verwacht" ;
+ Text [ swedish ] = "'}' förväntad" ;
+ Text [ danish ] = "'}' forventes" ;
+ Text [ portuguese_brazilian ] = "'}' erwartet" ;
+ Text [ portuguese ] = "'}' necessária" ;
+ Text[ russian ] = "'}' îæèäàåòñÿ";
+ Text[ polish ] = "'}' oczekiwany";
+ Text[ japanese ] = "'}'‚ð–]‚Þ";
+ Text[ chinese_simplified ] = "ÆÚ´ý '}'";
+ Text[ chinese_traditional ] = "´Á«Ý '}'";
+ Text[ arabic ] = "ãÊæÞÚ '}'";
+ Text[ greek ] = "'}' áíáìÝíåôáé";
+ Text[ korean ] = "'}' °¡ ÇÊ¿äÇÔ";
+ Text[ turkish ] = "'}' gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_LBRACEEXPECTED
+{
+ Text = "'(' erwartet" ;
+ Text [ ENGLISH ] = "'(' expected" ;
+ Text [ dutch ] = "'(' verwacht" ;
+ Text [ english_us ] = "'(' expected" ;
+ Text [ italian ] = "Atteso '('" ;
+ Text [ spanish ] = "Se requiere '(' " ;
+ Text [ french ] = "'(' requis" ;
+ Text [ swedish ] = "'(' förväntad" ;
+ Text [ danish ] = "'(' forventes" ;
+ Text [ portuguese_brazilian ] = "'(' erwartet" ;
+ Text [ portuguese ] = "Necessário '('" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý '('";
+ Text[ russian ] = "'(' îæèäàåòñÿ";
+ Text[ polish ] = "'('powinien wyst¹piæ";
+ Text[ japanese ] = "'('‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý '('";
+ Text[ arabic ] = "ãØáæÈ'('";
+ Text[ greek ] = "'(' áíáìÝíåôáé";
+ Text[ korean ] = "'(' ÇÊ¿äÇÔ";
+ Text[ turkish ] = "'(' gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_RBRACEEXPECTED
+{
+ Text = "')' erwartet" ;
+ Text [ ENGLISH ] = "')' expected" ;
+ Text [ english_us ] = "')' expected" ;
+ Text [ italian ] = "Atteso ')'" ;
+ Text [ spanish ] = "Se requiere ')'" ;
+ Text [ french ] = "')' requis" ;
+ Text [ dutch ] = "')' verwacht" ;
+ Text [ swedish ] = "')' förväntad" ;
+ Text [ danish ] = "')' forventes" ;
+ Text [ portuguese_brazilian ] = "')' erwartet" ;
+ Text [ portuguese ] = "Necessário ')'" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý ')'";
+ Text[ russian ] = "')' îæèäàåòñÿ";
+ Text[ polish ] = "')' powinien wyst¹piæ";
+ Text[ japanese ] = "')'‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý ')'";
+ Text[ arabic ] = "ãØáæÈ ')'";
+ Text[ greek ] = "')' áíáìÝíåôáé";
+ Text[ korean ] = "')' ÇÊ¿äÇÔ";
+ Text[ turkish ] = "')' gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_FUNCEXPECTED
+{
+ Text = "Funktion erwartet" ;
+ Text [ ENGLISH ] = "Function expected" ;
+ Text [ dutch ] = "Functie verwacht" ;
+ Text [ english_us ] = "Function expected" ;
+ Text [ italian ] = "Attesa funzione" ;
+ Text [ spanish ] = "Se requiere una función" ;
+ Text [ french ] = "Fonction requise" ;
+ Text [ swedish ] = "Funktion förväntad" ;
+ Text [ danish ] = "Funktion forventes" ;
+ Text [ portuguese_brazilian ] = "Funktion erwartet" ;
+ Text [ portuguese ] = "Necessário função" ;
+ Text[ chinese_simplified ] = "ÆÚ´ýº¯Êý";
+ Text[ russian ] = "Îæèäàåòñÿ ôóíêöèÿ";
+ Text[ polish ] = "Oczekiwana funkcja";
+ Text[ japanese ] = "ŠÖ”‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý¨ç¼Æ";
+ Text[ arabic ] = "ãØáæÈ ÏÇáÉ";
+ Text[ greek ] = "ÁíáìÝíåôáé óõíÜñôçóç";
+ Text[ korean ] = "ÇÔ¼ö ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Ýþlev gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_UNOPEREXPECTED
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Unärer Operator erwartet : Un§rer Operator erwartet */
+ Text = "Unärer Operator erwartet" ;
+ Text [ ENGLISH ] = "Unary operator expected" ;
+ Text [ english_us ] = "Unary operator expected" ;
+ Text [ italian ] = "Atteso operatore unario" ;
+ Text [ spanish ] = "Se espera un operador unario" ;
+ Text [ french ] = "Opérateur unaire requis" ;
+ Text [ dutch ] = "Monade verwacht" ;
+ Text [ swedish ] = "Monär operator förväntad" ;
+ Text [ danish ] = "Monadisk operator forventes" ;
+ Text [ portuguese_brazilian ] = "Unõrer Operator erwartet" ;
+ Text [ portuguese ] = "Necessário operador unário" ;
+ Text[ chinese_simplified ] = "ÆÚ´ýÔËËã·û¡£";
+ Text[ russian ] = "Îæèäàåòñÿ óíàðíûé îïåðàòîð";
+ Text[ polish ] = "W tym miejscu powinien wyst¹piæ unarny operator";
+ Text[ japanese ] = "¼Þ­°Å؉‰ŽZŽq‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý¹Bºâ²Å¡C";
+ Text[ arabic ] = "ãÊæÞÚ ÚÇãá ÊÔÛíá ÃÍÇÏí";
+ Text[ greek ] = "ÁíáìÝíåôáé åíáäéêüò ôåëåóôÞò";
+ Text[ korean ] = "´ÜÇ× ¿¬»êÀÚ ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Birli iþleç gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_BINOPEREXPECTED
+{
+ /* ### ACHTUNG: Neuer Text in Resource? Binärer Operator erwartet : Bin§rer Operator erwartet */
+ Text = "Binärer Operator erwartet" ;
+ Text [ ENGLISH ] = "Binary operator expected" ;
+ Text [ dutch ] = "Binaire operator verwacht" ;
+ Text [ english_us ] = "Binary operator expected" ;
+ Text [ italian ] = "Operatore binario atteso" ;
+ Text [ spanish ] = "Se espera un operador binario" ;
+ Text [ french ] = "Opérateur binaire requis" ;
+ Text [ swedish ] = "Binär operator förväntad" ;
+ Text [ danish ] = "Binær operator forventes" ;
+ Text [ portuguese ] = "Necessário operador binário" ;
+ Text [ portuguese_brazilian ] = "Binõrer Operator erwartet" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý¶þÔªÔËËã·û";
+ Text[ russian ] = "Îæèäåòñÿ áèíàðíûé îïåðàòîð";
+ Text[ polish ] = "Oczekiwany binarny operator";
+ Text[ japanese ] = "ÊÞ²Å؉‰ŽZŽq‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý¤G¤¸¹Bºâ²Å";
+ Text[ arabic ] = "ãÊæÞÚ ÚÇãá ÊÔÛíá ËäÇÆí";
+ Text[ greek ] = "ÁíáìÝíåôáé äõáäéêüò ôåëåóôÞò";
+ Text[ korean ] = "2Áø ¿¬»êÀÚ ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Ýkili iþleç gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_SYMBOLEXPECTED
+{
+ Text = "Symbol erwartet" ;
+ Text [ ENGLISH ] = "Symbol expected" ;
+ Text [ english_us ] = "Symbol expected" ;
+ Text [ italian ] = "Atteso simbolo" ;
+ Text [ spanish ] = "Se necesita un símbolo" ;
+ Text [ french ] = "Symbole requis" ;
+ Text [ dutch ] = "Symbool verwacht" ;
+ Text [ swedish ] = "Symbol förväntad" ;
+ Text [ danish ] = "Symbol forventes" ;
+ Text [ portuguese_brazilian ] = "Symbol erwartet" ;
+ Text [ portuguese ] = "Necessário símbolo" ;
+ Text[ chinese_simplified ] = "ÆÚ´ýͼ±ê";
+ Text[ russian ] = "Îæèäàåòñÿ ñèìâîë";
+ Text[ polish ] = "Oczekiwany symbol";
+ Text[ japanese ] = "¼ÝÎÞÙ‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý¹Ï¥Ü";
+ Text[ arabic ] = "ãØáæÈ ÑãÒ";
+ Text[ greek ] = "ÁíáìÝíåôáé óýìâïëï";
+ Text[ korean ] = "±âÈ£ ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Simge gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_IDENTEXPECTED
+{
+ Text = "Identifier erwartet" ;
+ Text [ ENGLISH ] = "Identifier expected" ;
+ Text [ dutch ] = "Identifier verwacht" ;
+ Text [ english_us ] = "Identifier expected" ;
+ Text [ italian ] = "Atteso identifier" ;
+ Text [ spanish ] = "Se requiere un identificador" ;
+ Text [ french ] = "Identificateur requis" ;
+ Text [ swedish ] = "Identifier förväntad" ;
+ Text [ danish ] = "Identifikator forventes" ;
+ Text [ portuguese_brazilian ] = "Identifier erwartet" ;
+ Text [ portuguese ] = "Necessário identificador" ;
+ Text[ chinese_simplified ] = "ÆÚ´ýʶ±ð·û";
+ Text[ russian ] = "Îæèàåòñÿ èäåíòèôèêàòîð";
+ Text[ polish ] = "W tym miejscu powinien wyst¹piæ identyfikator";
+ Text[ japanese ] = "Ž¯•ÊŽq‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«ÝÃѧO²Å";
+ Text[ arabic ] = "ãØáæÈ ãÚÑøÝ";
+ Text[ greek ] = "ÁíáìÝíåôáé áíáãíùñéóôéêü";
+ Text[ korean ] = "È®ÀÎÀÚ ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Tanýtýcý bekleniyor";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_POUNDEXPECTED
+{
+ Text = "'#' erwartet" ;
+ Text [ ENGLISH ] = "'#' expected" ;
+ Text [ english_us ] = "'#' expected" ;
+ Text [ italian ] = "Atteso '#'" ;
+ Text [ spanish ] = "Se requiere '#'" ;
+ Text [ french ] = "'#' requis" ;
+ Text [ dutch ] = "'#' verwacht" ;
+ Text [ swedish ] = "'#' förväntad" ;
+ Text [ danish ] = "'#' forventes" ;
+ Text [ portuguese_brazilian ] = "'#' erwartet" ;
+ Text [ portuguese ] = "Necessário '#'" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý '#'";
+ Text[ russian ] = "'#' îæèäàåòñÿ";
+ Text[ polish ] = "'#' powinien wyst¹piæ";
+ Text[ japanese ] = "'#'‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý '#'";
+ Text[ arabic ] = "ãØáæÈ '#'";
+ Text[ greek ] = "'#' áíáìÝíåôáé";
+ Text[ korean ] = "'#' ÇÊ¿äÇÔ";
+ Text[ turkish ] = "'#' gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_COLOREXPECTED
+{
+ Text = "Farbe erwartet" ;
+ Text [ ENGLISH ] = "Color expected" ;
+ Text [ dutch ] = "Kleur verwacht" ;
+ Text [ english_us ] = "Color required" ;
+ Text [ italian ] = "Atteso colore" ;
+ Text [ spanish ] = "Se requiere un color" ;
+ Text [ french ] = "Couleur requise" ;
+ Text [ swedish ] = "Färg förväntad" ;
+ Text [ danish ] = "Farve forventes" ;
+ Text [ portuguese_brazilian ] = "Farbe erwartet" ;
+ Text [ portuguese ] = "Necessário cor" ;
+ Text[ chinese_simplified ] = "ÆÚ´ýÑÕÉ«";
+ Text[ russian ] = "Îæèäàåòñÿ öâåò";
+ Text[ polish ] = "Oczekiwany kolor";
+ Text[ japanese ] = "F‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«ÝÃC¦â";
+ Text[ arabic ] = "ãØáæÈ áæä";
+ Text[ greek ] = "Áðáéôåßôáé ÷ñþìá";
+ Text[ korean ] = "»ö ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Renk gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_LPARENTEXPECTED
+{
+ Text = "Linke Begrenzung erwartet" ;
+ Text [ ENGLISH ] = "Left delimiter expected" ;
+ Text [ english_us ] = "Left limit expected" ;
+ Text [ italian ] = "Atteso limite sinisto" ;
+ Text [ spanish ] = "Se requiere el límite izquierdo" ;
+ Text [ french ] = "Limite gauche requise" ;
+ Text [ dutch ] = "Linker begrenzing verwacht" ;
+ Text [ swedish ] = "Vänsterparentes förväntad" ;
+ Text [ danish ] = "Venstre begrænsning forventes" ;
+ Text [ portuguese_brazilian ] = "Linke Begrenzung erwartet" ;
+ Text [ portuguese ] = "Necessário limite esquerdo" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý×ó·Ö½ç";
+ Text[ russian ] = "Îæèäàåòñÿ ëåâîå îãðàíè÷åíèå";
+ Text[ polish ] = "Oczekiwana lewa krawêdŸ";
+ Text[ japanese ] = "¶‘¤‚Ì‹«ŠEü‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý¥ª¤À¬É";
+ Text[ arabic ] = "ãØáæÈ ÍÏ ÃíÓÑ";
+ Text[ greek ] = "ÁíáìÝíåôáé áñéóôåñü üñéï";
+ Text[ korean ] = "¿ÞÂÊ °æ°è ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Sol sýnýrlayýcý gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_RPARENTEXPECTED
+{
+ Text = "Rechte Begrenzung erwartet" ;
+ Text [ ENGLISH ] = "Right delimiter expected" ;
+ Text [ english_us ] = "Right limit expected" ;
+ Text [ italian ] = "Atteso limite destro" ;
+ Text [ spanish ] = "Se requiere el límite derecho" ;
+ Text [ french ] = "Limite droite requise" ;
+ Text [ dutch ] = "Rechter begrenzing verwacht" ;
+ Text [ swedish ] = "Högerparentes förväntad" ;
+ Text [ danish ] = "Højre begrænsning forventes" ;
+ Text [ portuguese_brazilian ] = "Rechte Begrenzung erwartet" ;
+ Text [ portuguese ] = "Necessário limite direito" ;
+ Text[ chinese_simplified ] = "ÆÚ´ýÓÒ·Ö½ç";
+ Text[ russian ] = "Îæèäàåòñÿ ïðàâîå îãðàíè÷åíèå";
+ Text[ polish ] = "Oczekiwana prawa krawêdŸ";
+ Text[ japanese ] = "‰E‘¤‚É‹«ŠEü‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý¥k¤À¬É";
+ Text[ arabic ] = "ãØáæÈ ÍÏ Ãíãä";
+ Text[ greek ] = "ÁíáìÝíåôáé äåîéü üñéï";
+ Text[ korean ] = "¿À¸¥ÂÊ °æ°è ÇÊ¿äÇÔ";
+ Text[ turkish ] = "Sað sýnýrlama gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_ERR_RIGHTEXPECTED
+{
+ Text = "'RIGHT' erwartet" ;
+ Text [ ENGLISH ] = "'RIGHT' expected" ;
+ Text [ dutch ] = "'RIGHT' verwacht" ;
+ Text [ english_us ] = "'RIGHT' expected" ;
+ Text [ italian ] = "Atteso 'RIGHT'" ;
+ Text [ spanish ] = "Se requiere 'RIGHT'" ;
+ Text [ french ] = "'RIGHT' requis" ;
+ Text [ swedish ] = "'RIGHT' förväntat" ;
+ Text [ danish ] = "'RIGHT' forventes" ;
+ Text [ portuguese_brazilian ] = "'RIGHT' erwartet" ;
+ Text [ portuguese ] = "Necessário 'RIGHT'" ;
+ Text[ chinese_simplified ] = "ÆÚ´ý 'RIGHT'";
+ Text[ russian ] = "Îæèäàåòñÿ 'RIGHT'";
+ Text[ polish ] = "Powinien wyst¹piæ 'RIGHT'";
+ Text[ japanese ] = "'RIGHT'‚ª•K—v‚Å‚·";
+ Text[ chinese_traditional ] = "´Á«Ý 'RIGHT'";
+ Text[ arabic ] = "'RIGHT' ãØáæÈ";
+ Text[ greek ] = "ÁíáìÝíåôáé 'RIGHT'";
+ Text[ korean ] = "'RIGHT' ÇÊ¿äÇÔ";
+ Text[ turkish ] = "'RIGHT' gerekli";
+ Text[ language_user1 ] = " ";
+};
+
+String RID_PLUGINTOOLBOX
+{
+ Text = "PlugInleiste" ;
+ Text [ ENGLISH ] = "Plugin toolbox" ;
+ Text [ english_us ] = "Plug-In Bar" ;
+ Text [ italian ] = "Barra degli oggetti per i PlugIn" ;
+ Text [ spanish ] = "Barra de Plug-ins" ;
+ Text [ french ] = "Barre de Plug-Ins" ;
+ Text [ dutch ] = "PlugIn-balk" ;
+ Text [ swedish ] = "Funktionslist för PlugIns" ;
+ Text [ danish ] = "PlugInlinje" ;
+ Text [ portuguese_brazilian ] = "PlugInleiste" ;
+ Text [ portuguese ] = "Barra de Plugins" ;
+ Text[ chinese_simplified ] = "Plug-In À¸";
+ Text[ russian ] = "Ïàíåëü Plug-In";
+ Text[ polish ] = "Pasek dodatków PlugIn";
+ Text[ japanese ] = "Ìß×¸Þ²Ý ÊÞ°";
+ Text[ chinese_traditional ] = "Plug-In ¦C";
+ Text[ arabic ] = "ÔÑíØ Plug-In";
+ Text[ greek ] = "ÃñáììÞ Plug-In";
+ Text[ korean ] = "Ç÷¯±×ÀÎ ¸ðÀ½";
+ Text[ turkish ] = "Plug-in çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+#include "menu.src"
+
+ToolBox RID_MATH_TOOLBOX
+{
+ HelpId = RID_MATH_TOOLBOX ;
+ Customize = TRUE ;
+ LineSpacing = TRUE ;
+ Dockable = TRUE ;
+ Moveable = TRUE ;
+ Sizeable = TRUE ;
+ Closeable = TRUE ;
+ Zoomable = TRUE ;
+ Scroll = TRUE ;
+ HideWhenDeactivate = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Align = BOXALIGN_LEFT ;
+ Size = MAP_APPFONT ( 0 , 0 ) ;
+ MenuStrings = TRUE ;
+ ItemList =
+ {
+ ToolBoxItem
+ {
+ Identifier = SID_ZOOMIN ;
+ HelpID = SID_ZOOMIN ;
+ /* ### ACHTUNG: Neuer Text in Resource? Größer : Größer */
+ Text = "Größer" ;
+ Text [ ENGLISH ] = "Zoom in" ;
+ Text [ english_us ] = "Zoom In" ;
+ Text [ dutch ] = "Groter" ;
+ Text [ swedish ] = "Större" ;
+ Text [ danish ] = "Større" ;
+ Text [ italian ] = "Ingrandisci" ;
+ Text [ spanish ] = "Aumentar" ;
+ Text [ french ] = "Agrandir" ;
+ Text [ portuguese ] = "Aproximar" ;
+ Text [ portuguese_brazilian ] = "Größer" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Stellt den Ausschnitt vergrößert dar : Stellt den Ausschnitt vergrößert dar */
+ Text[ chinese_simplified ] = "·Å´ó";
+ Text[ russian ] = "Óâåëè÷èòü";
+ Text[ polish ] = "Powiêksz";
+ Text[ japanese ] = "Šg‘å";
+ Text[ chinese_traditional ] = "©ñ¤j";
+ Text[ arabic ] = "ÊßÈíÑ";
+ Text[ greek ] = "ÌåãÝèõíóç";
+ Text[ korean ] = "È®´ë";
+ Text[ turkish ] = "Büyüt";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ZOOMOUT ;
+ HelpID = SID_ZOOMOUT ;
+ Text = "Kleiner" ;
+ Text [ ENGLISH ] = "Zoom out" ;
+ Text [ english_us ] = "Zoom Out" ;
+ Text [ dutch ] = "Uitzoomen" ;
+ Text [ swedish ] = "Mindre" ;
+ Text [ danish ] = "Mindre" ;
+ Text [ italian ] = "Riduci" ;
+ Text [ spanish ] = "Reducir" ;
+ Text [ french ] = "Réduire" ;
+ Text [ portuguese ] = "Afastar" ;
+ Text [ portuguese_brazilian ] = "Kleiner" ;
+ Text[ chinese_simplified ] = "ËõС";
+ Text[ russian ] = "Óìåíüøèòü";
+ Text[ polish ] = "Mniejszy";
+ Text[ japanese ] = "k¬";
+ Text[ chinese_traditional ] = "ÁY¤p";
+ Text[ arabic ] = "ÊÕÛíÑ";
+ Text[ greek ] = "Óìßêñõíóç";
+ Text[ korean ] = "Ãà¼Ò";
+ Text[ turkish ] = "Küçült";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_VIEW100 ;
+ HelpID = SID_VIEW100 ;
+ Text = "Zoom 100%" ;
+ Text [ ENGLISH ] = "Zooms on 100%" ;
+ Text [ english_us ] = "Zoom 100%" ;
+ Text [ dutch ] = "Zoom 100%" ;
+ Text [ swedish ] = "Zoom 100%" ;
+ Text [ danish ] = "Zoom 100%" ;
+ Text [ italian ] = "Zoom 100%" ;
+ Text [ spanish ] = "Escala 100%" ;
+ Text [ french ] = "Zoom 100 %" ;
+ Text [ portuguese ] = "Zoom 100%" ;
+ Text [ portuguese_brazilian ] = "Zoom 100%" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Stellt den Ausschnitt in tatsächlicher Größe dar : Stellt den Ausschnitt in tatsächlicher GröÃe dar */
+ Text[ chinese_simplified ] = "ÏÔʾ±ÈÀý 100%";
+ Text[ russian ] = "100%";
+ Text[ polish ] = "Powiêkszenie 100%";
+ Text[ japanese ] = "½Þ°Ñ 100%";
+ Text[ chinese_traditional ] = "Åã¥Ü¤ñ¨Ò 100%";
+ Text[ arabic ] = "%Òæã 100";
+ Text[ greek ] = "ÌåãÝíèõóç 100%";
+ Text[ korean ] = "È®´ë/Ãà¼Ò100%";
+ Text[ turkish ] = "%100 yakýnlaþtýr";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_ADJUST ;
+ HelpID = SID_ADJUST ;
+ Text = "Ganze Formel" ;
+ Text [ ENGLISH ] = "Shows all" ;
+ Text [ english_us ] = "Entire Formula" ;
+ Text [ dutch ] = "Hele formule" ;
+ Text [ swedish ] = "Hela formeln" ;
+ Text [ danish ] = "Hele formlen" ;
+ Text [ italian ] = "Formula intera" ;
+ Text [ spanish ] = "Fórmula completa" ;
+ Text [ french ] = "Formule complète" ;
+ Text [ portuguese ] = "Fórmula inteira" ;
+ Text [ portuguese_brazilian ] = "Ganze Formel" ;
+ Text[ chinese_simplified ] = "Õû¸ö¹«Ê½";
+ Text[ russian ] = "Âñÿ ôîðìóëà";
+ Text[ polish ] = "Ca³a formu³a";
+ Text[ japanese ] = "”Ž®‘S‘Ì";
+ Text[ chinese_traditional ] = "¾ã­Ó¤½¦¡";
+ Text[ arabic ] = "ÕíÛÉ ßÇãáÉ";
+ Text[ greek ] = "Ïëüêëçñïò ôýðïò";
+ Text[ korean ] = "Àüü ¼ö½Ä";
+ Text[ turkish ] = "Tüm formül";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Type = TOOLBOXITEM_SEPARATOR ;
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_DRAW ;
+ HelpID = SID_DRAW ;
+ Text = "Aktualisieren" ;
+ Text [ ENGLISH ] = "Draw" ;
+ Text [ norwegian ] = "Draw" ;
+ Text [ italian ] = "Aggiorna" ;
+ Text [ portuguese_brazilian ] = "Desenhar" ;
+ Text [ portuguese ] = "Actualizar" ;
+ Text [ finnish ] = "Piirrä" ;
+ Text [ danish ] = "Opdater" ;
+ Text [ french ] = "Actualiser" ;
+ Text [ swedish ] = "Uppdatera" ;
+ Text [ dutch ] = "Actualiseren" ;
+ Text [ spanish ] = "Actualizar" ;
+ Text [ english_us ] = "Refresh" ;
+ Text[ chinese_simplified ] = "¸üÐÂ";
+ Text[ russian ] = "Îáíîâèòü";
+ Text[ polish ] = "Aktualizuj";
+ Text[ japanese ] = "XV";
+ Text[ chinese_traditional ] = "§ó·s";
+ Text[ arabic ] = "ÊÍÏíË";
+ Text[ greek ] = "ÅíçìÝñùóç";
+ Text[ korean ] = "»õ·Î °íħ";
+ Text[ turkish ] = "Güncelle";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_FORMULACURSOR ;
+ HelpID = SID_FORMULACURSOR ;
+ Text = "Formel Cursor" ;
+ Text [ ENGLISH ] = "Formula cursor" ;
+ Text[ italian ] = "Cursore-formula";
+ Text[ portuguese_brazilian ] = "Formula cursor";
+ Text[ portuguese ] = "Fórmula cursor";
+ Text[ danish ] = "Formelmarkør";
+ Text[ french ] = "Curseur de formule";
+ Text[ swedish ] = "Formelmarkör";
+ Text[ dutch ] = "Formule-cursor";
+ Text[ spanish ] = "Cursor de fórmula";
+ Text[ english_us ] = "Formula Cursor";
+ Text[ chinese_simplified ] = "¹«Ê½¹â±ê";
+ Text[ russian ] = "Êóðñîð ôîðìóëû";
+ Text[ polish ] = "Kursor formu³y";
+ Text[ japanese ] = "”Ž®¶°¿Ù";
+ Text[ chinese_traditional ] = "¤½¦¡¥ú¼Ð";
+ Text[ arabic ] = "ãÄÔÑ ÇáÕíÛÉ";
+ Text[ greek ] = "ÄñïìÝáò ôýðïõ";
+ Text[ korean ] = "¼ö½Ä Ä¿¼­";
+ Text[ turkish ] = "Formül imleci";
+ Text[ language_user1 ] = " ";
+ };
+ ToolBoxItem
+ {
+ Identifier = SID_SYMBOLS_CATALOGUE ;
+ HelpID = SID_SYMBOLS_CATALOGUE ;
+ Text = "Symbole" ;
+ Text [ ENGLISH ] = "Symbols" ;
+ Text [ norwegian ] = "Symboler" ;
+ Text [ italian ] = "Simboli" ;
+ Text [ portuguese_brazilian ] = "Símbolos" ;
+ Text [ portuguese ] = "Símbolos" ;
+ Text [ finnish ] = "Symbolit" ;
+ Text [ danish ] = "Symboler" ;
+ Text [ french ] = "Symboles" ;
+ Text [ swedish ] = "Symboler" ;
+ Text [ dutch ] = "Symbolen" ;
+ Text [ spanish ] = "Símbolos" ;
+ Text [ english_us ] = "Symbols" ;
+ /* ### ACHTUNG: Neuer Text in Resource? Symbole einfügen und bearbeiten : Symbole einf³gen und bearbeiten */
+ Text[ chinese_simplified ] = "ͼ±ê";
+ Text[ russian ] = "Ñèìâîëû";
+ Text[ polish ] = "Symbole";
+ Text[ japanese ] = "¼ÝÎÞÙ";
+ Text[ chinese_traditional ] = "¹Ï¥Ü";
+ Text[ arabic ] = "ÑãæÒ";
+ Text[ greek ] = "Óýìâïëá";
+ Text[ korean ] = "±âÈ£";
+ Text[ turkish ] = "Simgeler";
+ Text[ language_user1 ] = " ";
+ };
+ };
+};
+
+String RID_MATH_TOOLBOX
+{
+ Text = "Werkzeugleiste" ;
+ Text [ ENGLISH ] = "Toolbar" ;
+ Text [ english_us ] = "Main Toolbar" ;
+ Text [ dutch ] = "Werktuigbalk" ;
+ Text [ swedish ] = "Verktygslist" ;
+ Text [ danish ] = "Værktøjslinje" ;
+ Text [ italian ] = "Barra degli strumenti" ;
+ Text [ spanish ] = "Barra de herramientas" ;
+ Text [ french ] = "Barre d'instruments" ;
+ Text [ portuguese ] = "Barra de ferramentas" ;
+ Text [ portuguese_brazilian ] = "Werkzeugleiste" ;
+ Text[ chinese_simplified ] = "Ö÷¹¤¾ßÀ¸";
+ Text[ russian ] = "Ïàíåëü èíñòðóìåíòîâ";
+ Text[ polish ] = "Pasek narzêdziowy";
+ Text[ japanese ] = "•W€Â°ÙÊÞ°";
+ Text[ chinese_traditional ] = "¥D¤u¨ã¦C";
+ Text[ arabic ] = "ÔÑíØ ÇáÃÏæÇÊ";
+ Text[ greek ] = "ÃñáììÞ åñãáëåßùí";
+ Text[ korean ] = "ÁÖ µµ±¸¸ðÀ½";
+ Text[ turkish ] = "Ana araç çubuðu";
+ Text[ language_user1 ] = " ";
+};
+
+
diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx
new file mode 100644
index 000000000000..15aecab7c153
--- /dev/null
+++ b/starmath/source/symbol.cxx
@@ -0,0 +1,657 @@
+/*************************************************************************
+ *
+ * $RCSfile: symbol.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _UCBHELPER_CONTENT_HXX
+#include <ucbhelper/content.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFX_INIMGR_HXX //autogen
+#include <sfx2/inimgr.hxx>
+#endif
+
+#include "symbol.hxx"
+#include "view.hxx"
+#include "utility.hxx"
+#include "dialog.hxx"
+#include "config.hxx"
+#include "smmod.hxx"
+#include "starmath.hrc"
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::ucb;
+using namespace ::com::sun::star::uno;
+using namespace ::rtl;
+
+// Das hier muss auch mal alles "uberarbeitet werden. Insbesondere die nicht
+// funktionierende und bei l"oschen/"andern von Symbolen nicht gepflegte
+// Hash Tabelle!!! Diese aktualisert sich erst im Wertzuweisungsoperator
+// beim Verlassen des 'SmSymDefineDialog's!
+
+/**************************************************************************/
+/*
+**
+** MACRO DEFINTION
+**
+**/
+
+#define SF_SM20IDENT 0x03031963L
+#define SF_IDENT 0x30334D53L
+
+
+/**************************************************************************/
+/*
+**
+** DATA DEFINITION
+**
+**/
+
+long SF_Ident = SF_IDENT;
+
+
+/**************************************************************************/
+/*
+**
+** CLASS IMPLEMENTATION
+**
+**/
+
+SmSym::SmSym() :
+ Name(C2S("unknown")),
+ Character('\0'),
+ pHashNext(0),
+ pSymSetManager(0)
+{
+ Face.SetTransparent(TRUE);
+}
+
+SmSym::SmSym(const SmSym& rSymbol)
+{
+ Name = rSymbol.Name;
+ Face = rSymbol.Face;
+ Character = rSymbol.Character;
+
+ pHashNext = 0;
+ pSymSetManager = 0;
+}
+
+SmSym::SmSym(const String& rName, const Font& rFont, sal_Unicode aChar)
+{
+ Name = rName;
+ Face = rFont;
+ Character = aChar;
+
+ pHashNext = 0;
+ pSymSetManager = 0;
+}
+
+
+SmSym& SmSym::operator = (const SmSym& rSymbol)
+{
+ Name = rSymbol.Name;
+ Face = rSymbol.Face;
+ Character = rSymbol.Character;
+
+ pHashNext = 0;
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+
+ return *this;
+}
+
+void SmSym::SetSymbolName(const String& rName)
+{
+ Name = rName;
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+}
+
+SvStream& operator << (SvStream& rStream, const SmSym& rSymbol)
+{
+ rStream.WriteByteString(ExportString(rSymbol.Name));
+ rStream << rSymbol.Face;
+
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ rStream << ByteString::ConvertFromUnicode( rSymbol.Character, eEnc );
+
+ return rStream;
+}
+
+SvStream& operator >> (SvStream& rStream, SmSym& rSymbol)
+{
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ rStream.ReadByteString(rSymbol.Name, eEnc);
+ if (SF_Ident == SF_SM20IDENT)
+ ReadSM20Font(rStream, rSymbol.Face);
+ else
+ rStream >> rSymbol.Face;
+ sal_Char cTemp;
+ rStream >> cTemp;
+ rSymbol.Character = ByteString::ConvertToUnicode( cTemp, eEnc );
+
+ return rStream;
+}
+
+/**************************************************************************/
+
+SmSymSet::SmSymSet() :
+ Name(C2S("unknown")),
+ pSymSetManager(0)
+{
+ SymbolList.Clear();
+}
+
+SmSymSet::SmSymSet(const SmSymSet& rSymbolSet)
+{
+ Name = rSymbolSet.Name;
+ SymbolList.Clear();
+
+ pSymSetManager = 0;
+
+ for (int i = 0; i < rSymbolSet.GetCount(); i++)
+ AddSymbol(new SmSym(rSymbolSet.GetSymbol(i)));
+}
+
+SmSymSet::SmSymSet(const String& rName)
+{
+ Name = rName;
+ SymbolList.Clear();
+
+ pSymSetManager = 0;
+}
+
+SmSymSet::~SmSymSet()
+{
+ for (int i = 0; i < GetCount(); i++)
+ delete SymbolList.GetObject(i);
+}
+
+SmSymSet& SmSymSet::operator = (const SmSymSet& rSymbolSet)
+{
+ int i;
+ for (i = 0; i < GetCount(); i++)
+ delete SymbolList.GetObject(i);
+
+ Name = rSymbolSet.Name;
+ SymbolList.Clear();
+
+ for (i = 0; i < rSymbolSet.GetCount(); i++)
+ AddSymbol(new SmSym(rSymbolSet.GetSymbol(i)));
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+
+ return *this;
+}
+
+void SmSymSet::SetName(String& rName)
+{
+ Name = rName;
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+}
+
+USHORT SmSymSet::AddSymbol(SmSym* pSymbol)
+{
+ DBG_ASSERT(pSymbol, "Kein Symbol");
+
+ SymbolList.Insert(pSymbol, LIST_APPEND);
+ DBG_ASSERT(SymbolList.GetPos(pSymbol) == SymbolList.Count() - 1,
+ "Sm : ... ergibt falschen return Wert");
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+
+ return (USHORT) SymbolList.Count() - 1;
+}
+
+void SmSymSet::DeleteSymbol(USHORT SymbolNo)
+{
+ delete RemoveSymbol(SymbolNo);
+}
+
+SmSym * SmSymSet::RemoveSymbol(USHORT SymbolNo)
+{
+ DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden");
+
+ SmSym *pSym = SymbolList.GetObject(SymbolNo);
+ SymbolList.Remove(SymbolNo);
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+
+ return pSym;
+}
+
+
+void SmSymSet::RenameSymbol(USHORT SymbolNo, String& rName)
+{
+ DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden");
+
+ SymbolList.GetObject(SymbolNo)->SetSymbolName(rName);
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+}
+
+void SmSymSet::ReplaceSymbol(USHORT SymbolNo, SmSym& rSymbol)
+{
+ DBG_ASSERT(SymbolList.GetObject(SymbolNo), "Symbol nicht vorhanden");
+
+ *SymbolList.GetObject(SymbolNo) = rSymbol;
+
+ if (pSymSetManager)
+ pSymSetManager->SetModified(TRUE);
+}
+
+USHORT SmSymSet::GetSymbolPos(const String& rName)
+{
+ for (USHORT i = 0; i < GetCount(); i++)
+ if (SymbolList.GetObject(i)->GetName() == rName)
+ return (i);
+
+ return SYMBOL_NONE;
+}
+
+SvStream& operator << (SvStream& rStream, const SmSymSet& rSymbolSet)
+{
+ rStream.WriteByteString(ExportString(rSymbolSet.Name));
+ rStream << rSymbolSet.GetCount();
+
+ for (int i = 0; i < rSymbolSet.GetCount(); i++)
+ rStream << rSymbolSet.GetSymbol(i);
+
+ return rStream;
+}
+
+
+SvStream& operator >> (SvStream& rStream, SmSymSet& rSymbolSet)
+{
+ USHORT n;
+ SmSym *pSymbol;
+
+ rStream.ReadByteString(rSymbolSet.Name, gsl_getSystemTextEncoding());
+ rStream >> n;
+
+ for (int i = 0; i < n; i++)
+ {
+ if ((pSymbol = new SmSym) == 0)
+ break;
+
+ rStream >> *pSymbol;
+ rSymbolSet.AddSymbol(pSymbol);
+ }
+
+ return rStream;
+}
+
+/**************************************************************************/
+
+void SmSymSetManager::SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType,
+ const SfxHint& rHint, const TypeId& rHintType)
+{
+ if (((SfxSimpleHint&)rHint).GetId() == HINT_CONFIGCHANGED)
+ {
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ {
+ SfxDispatcher &rDis = *pViewSh->GetViewFrame()->GetDispatcher();
+ rDis.Execute(SID_SAVESYMBOLS);
+ rDis.Execute(SID_LOADSYMBOLS);
+ }
+ }
+}
+
+UINT32 SmSymSetManager::GetHashIndex(const String& rSymbolName)
+{
+ UINT32 x = 0;
+ for (xub_StrLen i = 0; i < rSymbolName.Len(); i++)
+ x += x * rSymbolName.GetChar(i);
+
+ return x % NoHashEntries;
+}
+
+void SmSymSetManager::EnterHashTable(SmSymSet& rSymbolSet)
+{
+ for (int i = 0; i < rSymbolSet.GetCount(); i++)
+ {
+ int j = GetHashIndex(rSymbolSet.GetSymbol(i).GetName());
+ if (HashEntries[j] == 0)
+ HashEntries[j] = rSymbolSet.SymbolList.GetObject(i);
+ else
+ {
+ SmSym *p = HashEntries[j];
+ while (p->pHashNext)
+ p = p->pHashNext;
+ p->pHashNext = rSymbolSet.SymbolList.GetObject(i);
+ }
+ rSymbolSet.SymbolList.GetObject(i)->pHashNext = 0;
+ }
+}
+
+void SmSymSetManager::FillHashTable()
+{
+ if (HashEntries)
+ {
+ memset(HashEntries, 0, NoHashEntries * sizeof(SmSym *));
+
+ for (int i = 0; i < NoSymbolSets; i++)
+ EnterHashTable(*GetSymbolSet(i));
+ }
+}
+
+void SmSymSetManager::Init()
+{
+ SfxModule *p = SM_MOD1();
+ SmModule *pp = (SmModule *) p;
+ StartListening(*pp->GetConfig());
+}
+
+void SmSymSetManager::Exit()
+{
+ SfxModule *p = SM_MOD1();
+ SmModule *pp = (SmModule *) p;
+ EndListening(*pp->GetConfig());
+}
+
+SmSymSetManager::SmSymSetManager(UINT32 HashTableSize)
+{
+ SymbolSets.Clear();
+ NoSymbolSets = 0;
+ NoHashEntries = HashTableSize;
+ HashEntries = new SmSym *[NoHashEntries];
+ memset(HashEntries, 0, sizeof(SmSym *) * NoHashEntries);
+ Modified = FALSE;
+}
+
+SmSymSetManager::SmSymSetManager(const SmSymSetManager& rSymbolSetManager)
+{
+ SymbolSets.Clear();
+ NoSymbolSets = 0;
+ NoHashEntries = rSymbolSetManager.NoHashEntries;
+ HashEntries = new SmSym *[NoHashEntries];
+ memset(HashEntries, 0, sizeof(SmSym *) * NoHashEntries);
+
+ for (int i = 0; i < rSymbolSetManager.GetCount(); i++)
+ AddSymbolSet(new SmSymSet(*rSymbolSetManager.GetSymbolSet(i)));
+
+ Modified = rSymbolSetManager.Modified;
+}
+
+SmSymSetManager::~SmSymSetManager()
+{
+ for (int i = 0; i< NoSymbolSets; i++)
+ delete SymbolSets.Get(i);
+
+ delete HashEntries;
+}
+
+SmSymSetManager& SmSymSetManager::operator = (const SmSymSetManager& rSymbolSetManager)
+{
+ int i;
+ for (i = 0; i< NoSymbolSets; i++)
+ delete SymbolSets.Get(i);
+
+ SymbolSets.Clear();
+ NoSymbolSets = 0;
+
+ for (i = 0; i < rSymbolSetManager.GetCount(); i++)
+ AddSymbolSet(new SmSymSet(*rSymbolSetManager.GetSymbolSet(i)));
+
+ Modified = rSymbolSetManager.Modified;
+
+ return *this;
+}
+
+USHORT SmSymSetManager::AddSymbolSet(SmSymSet* pSymbolSet)
+{
+ if (NoSymbolSets >= SymbolSets.GetSize())
+ SymbolSets.SetSize(NoSymbolSets + 1);
+
+ SymbolSets.Put(NoSymbolSets++, pSymbolSet);
+
+ pSymbolSet->pSymSetManager = this;
+
+ for (int i = 0; i < pSymbolSet->GetCount(); i++)
+ pSymbolSet->SymbolList.GetObject(i)->pSymSetManager = this;
+
+ FillHashTable();
+ Modified = TRUE;
+
+ return NoSymbolSets - 1;
+}
+
+void SmSymSetManager::ChangeSymbolSet(SmSymSet* pSymbolSet)
+{
+ if (pSymbolSet)
+ {
+ FillHashTable();
+ Modified = TRUE;
+ }
+}
+
+void SmSymSetManager::DeleteSymbolSet(USHORT SymbolSetNo)
+{
+ delete SymbolSets.Get(SymbolSetNo);
+ NoSymbolSets--;
+
+ for (int i = SymbolSetNo; i < NoSymbolSets; i++)
+ SymbolSets.Put(i, SymbolSets.Get(i + 1));
+
+ FillHashTable();
+
+ Modified = TRUE;
+}
+
+
+USHORT SmSymSetManager::GetSymbolSetPos(const String& rSymbolSetName) const
+{
+ for (USHORT i = 0; i < NoSymbolSets; i++)
+ if (SymbolSets.Get(i)->GetName() == rSymbolSetName)
+ return (i);
+
+ return SYMBOLSET_NONE;
+}
+
+
+SmSym *SmSymSetManager::GetSymbol(const String& rSymbolName)
+{
+ SmSym *p = HashEntries[GetHashIndex(rSymbolName)];
+ while (p)
+ {
+ if (p->Name == rSymbolName)
+ break;
+ p = p->pHashNext;
+ }
+ return p;
+}
+
+void SmSymSetManager::Load(const String &rURL)
+{
+ if (aStreamName != rURL)
+ {
+ for (int i = 0; i< NoSymbolSets; i++)
+ delete SymbolSets.Get(i);
+
+ SymbolSets.Clear();
+ NoSymbolSets = 0;
+
+ aStreamName = rURL;
+
+ BOOL bExist = FALSE;
+ try
+ {
+ bExist = ::ucb::Content( aStreamName, uno::Reference< XCommandEnvironment >()).isDocument();
+ }
+ catch(...){}
+ if (bExist)
+ {
+ SvFileStream aStream(aStreamName, STREAM_READ);
+
+ if (aStream.IsOpen())
+ {
+ aStream >> *this;
+ Modified = FALSE;
+ return;
+ }
+ }
+
+ SfxModule *p = SM_MOD1();
+ SmModule *pp = (SmModule *) p;
+
+ if ( pp->GetConfig()->IsWarnNoSymbols() )
+ {
+ ErrorBox aErrorBox( NULL, SmResId( RID_READSYMBOLERROR ) );
+ String aString( aErrorBox.GetMessText() );
+ String aIniFile = SFX_INIMANAGER()->SubstPathVars( aStreamName );
+ aString.SearchAndReplaceAscii( "%FILE%", aIniFile );
+ aErrorBox.SetMessText( aString );
+ aErrorBox.Execute();
+
+ Modified = FALSE;
+ pp->GetConfig()->SetWarnNoSymbols(FALSE);
+ }
+ }
+}
+
+void SmSymSetManager::Save()
+{
+ if (Modified)
+ {
+ SvFileStream aStream(aStreamName, STREAM_WRITE);
+
+ if (aStream.IsOpen())
+ {
+ aStream << *this;
+ Modified = FALSE;
+ }
+ else
+ {
+ ErrorBox aErrorBox( NULL, SmResId(RID_WRITESYMBOLERROR));
+ String aString (aErrorBox.GetMessText());
+ USHORT nPos = aString.SearchAscii("%FILE%");
+
+ aString.Erase(nPos, 6);
+ aString.Insert(aStreamName, nPos);
+ aErrorBox.SetMessText(aString);
+ aErrorBox.Execute();
+ }
+ }
+}
+
+
+SvStream& operator << (SvStream& rStream, SmSymSetManager& rSymbolSetManager)
+{
+ rStream << (long)SF_IDENT << (USHORT) rSymbolSetManager.NoSymbolSets;
+
+ for (int i = 0; i < rSymbolSetManager.NoSymbolSets; i++)
+ rStream << *rSymbolSetManager.GetSymbolSet(i);
+
+ return rStream;
+}
+
+SvStream& operator >> (SvStream& rStream, SmSymSetManager& rSymbolSetManager)
+{
+ rStream >> SF_Ident;
+ if (SF_Ident == SF_IDENT || SF_Ident == SF_SM20IDENT)
+ {
+ USHORT n;
+ rStream >> n;
+
+ if (rSymbolSetManager.HashEntries)
+ memset(rSymbolSetManager.HashEntries, 0,
+ rSymbolSetManager.NoHashEntries * sizeof(SmSym *));
+
+ for (int i = 0; i < n; i++)
+ {
+ SmSymSet *pSymbolSet;
+
+ if ((pSymbolSet = new SmSymSet) == 0)
+ break;
+
+ rStream >> *pSymbolSet;
+ rSymbolSetManager.AddSymbolSet(pSymbolSet);
+ }
+ }
+
+ SF_Ident = SF_IDENT;
+
+ return rStream;
+}
+
+void ReadSM20SymSet(SvStream *pStream, SmSymSet *pSymbolSet)
+{
+ SF_Ident = SF_SM20IDENT;
+ *pStream >> *pSymbolSet;
+ SF_Ident = SF_IDENT;
+}
+
+
diff --git a/starmath/source/toolbox.cxx b/starmath/source/toolbox.cxx
new file mode 100644
index 000000000000..b215e8bd4717
--- /dev/null
+++ b/starmath/source/toolbox.cxx
@@ -0,0 +1,274 @@
+/*************************************************************************
+ *
+ * $RCSfile: toolbox.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXIMGMGR_HXX //autogen
+#include <sfx2/imgmgr.hxx>
+#endif
+
+#ifndef TOOLBOX_HXX
+#include "toolbox.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+#include "view.hxx"
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+
+
+SmToolBoxWindow::SmToolBoxWindow(SfxBindings *pBindings,
+ SfxChildWindow *pChildWindow,
+ Window *pParent) :
+ SfxFloatingWindow(pBindings, pChildWindow, pParent, SmResId(RID_TOOLBOXWINDOW)),
+ aToolBoxCat(this, ResId(NUM_TBX_CATEGORIES + 1))
+{
+ nActiveCategory = -1;
+
+ SfxImageManager *pImgMan = SFX_APP()->GetImageManager();
+
+ aToolBoxCat.SetClickHdl(LINK(this, SmToolBoxWindow, CategoryClickHdl));
+ pImgMan->RegisterToolBox( &aToolBoxCat );
+
+ for (int i = 0; i < NUM_TBX_CATEGORIES; i++)
+ {
+ ToolBox *pBox = new ToolBox(this, ResId (i+1));
+ pImgMan->RegisterToolBox( pBox );
+ vToolBoxCategories[i] = pBox;
+ pBox->SetSelectHdl(LINK(this, SmToolBoxWindow, CmdSelectHdl));
+ }
+ pToolBoxCmd = vToolBoxCategories [0];
+
+ FreeResource();
+}
+
+SmToolBoxWindow::~SmToolBoxWindow()
+{
+ SfxImageManager *pImgMan = SFX_APP()->GetImageManager();
+ pImgMan->ReleaseToolBox( &aToolBoxCat );
+
+ for (int i = 0; i < NUM_TBX_CATEGORIES; i++)
+ {
+ ToolBox *pBox = vToolBoxCategories[i];
+ pImgMan->ReleaseToolBox( pBox );
+ delete pBox;
+ }
+}
+
+
+void SmToolBoxWindow::StateChanged( StateChangedType nStateChange )
+{
+ if (STATE_CHANGE_INITSHOW == nStateChange)
+ AdjustPosition( Point() );
+ else
+ SfxFloatingWindow::StateChanged( nStateChange );
+}
+
+
+void SmToolBoxWindow::AdjustPosition(const Point &rPoint)
+{
+ Size CatSize (31 * 5, 31 * 2);
+ Size CmdSize (31 * 5, 31 * 5);
+ Size WndSize (31 * 5, CatSize.Height() + 10 + CmdSize.Height());
+ Point aPoint;
+
+ aToolBoxCat.SetPosSizePixel(aPoint, CatSize);
+
+ aPoint.Y() = 66;
+ for (int i = 0; i < NUM_TBX_CATEGORIES; i++)
+ vToolBoxCategories [i]->SetPosSizePixel(aPoint, CmdSize);
+
+ SetOutputSizePixel(WndSize);
+ SetPosPixel( rPoint );
+
+ Point aPt;
+ const Rectangle aRect( aPt, GetParent()->GetOutputSizePixel() );
+ const Rectangle aSelf( rPoint, WndSize );
+ if ( !rPoint.X() || !rPoint.Y() || !aRect.IsInside( aSelf ) )
+ {
+ Point aTopLeft( Point( aRect.Right() - WndSize.Width(), aRect.Top() ) );
+ Point aPos( GetParent()->OutputToScreenPixel( aTopLeft ) );
+ if (aPos.X() < 0)
+ aPos.X() = 0;
+ if (aPos.Y() < 0)
+ aPos.Y() = 0;
+ SetPosPixel( aPos );
+ }
+
+ SetCategory(RID_UNBINOPS_CAT);
+}
+
+
+BOOL SmToolBoxWindow::Close()
+{
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_TOOLBOX, SFX_CALLMODE_STANDARD,
+ new SfxBoolItem(SID_TOOLBOX, FALSE), 0L);
+ return TRUE;
+}
+
+
+void SmToolBoxWindow::SetCategory(USHORT nCategory)
+{
+ if (nCategory != nActiveCategory)
+ {
+ USHORT nLines,
+ nWhatBox;
+
+ // check for valid resource id
+ switch (nCategory)
+ {
+ case RID_UNBINOPS_CAT : nWhatBox = 0; nLines = 4; break;
+ case RID_RELATIONS_CAT: nWhatBox = 1; nLines = 5; break;
+ case RID_SETOPERATIONS_CAT: nWhatBox = 2; nLines = 5; break;
+ case RID_FUNCTIONS_CAT: nWhatBox = 3; nLines = 5; break;
+ case RID_OPERATORS_CAT: nWhatBox = 4; nLines = 3; break;
+ case RID_ATTRIBUTES_CAT: nWhatBox = 5; nLines = 5; break;
+ case RID_MISC_CAT: nWhatBox = 8; nLines = 4; break;
+ case RID_BRACKETS_CAT: nWhatBox = 6; nLines = 5; break;
+ case RID_FORMAT_CAT: nWhatBox = 7; nLines = 3; break;
+ default:
+ // nothing to be done
+ return;
+ }
+
+ pToolBoxCmd->Hide();
+
+ pToolBoxCmd = vToolBoxCategories [nWhatBox];
+
+ Size CatSize (31 * 5, 31 * 2);
+ Size CmdSize (31 * 5, 31 * nLines);
+ Size WndSize (31 * 5, CatSize.Height() + 10 + CmdSize.Height());
+
+ aToolBoxCat.SetPosSizePixel(Point(0, 3), CatSize);
+ vToolBoxCategories [nWhatBox]->SetPosSizePixel(Point(0, 70), CmdSize);
+ SetOutputSizePixel(WndSize);
+
+ if (nActiveCategory)
+ aToolBoxCat.CheckItem(nActiveCategory, FALSE);
+ nActiveCategory = nCategory;
+ aToolBoxCat.CheckItem(nActiveCategory, TRUE);
+
+ pToolBoxCmd->Show();
+ }
+}
+
+
+IMPL_LINK_INLINE_START( SmToolBoxWindow, CategoryClickHdl, ToolBox*, pToolBox)
+{
+ SetCategory(pToolBox->GetCurItemId());
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmToolBoxWindow, CategoryClickHdl, ToolBox*, pToolBox)
+
+
+IMPL_LINK_INLINE_START( SmToolBoxWindow, CmdSelectHdl, ToolBox*, pToolBox)
+{
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_INSERTCOMMAND, SFX_CALLMODE_STANDARD,
+ new SfxInt16Item(SID_INSERTCOMMAND, pToolBox->GetCurItemId()), 0L);
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmToolBoxWindow, CmdSelectHdl, ToolBox*, pToolBox)
+
+
+void SmToolBoxWindow::ShowWindows()
+{
+ if ( SM_MOD1()->GetConfig()->IsToolBoxVisible() )
+ Show();
+}
+
+/**************************************************************************/
+
+SFX_IMPL_FLOATINGWINDOW(SmToolBoxWrapper, SID_TOOLBOXWINDOW);
+
+SmToolBoxWrapper::SmToolBoxWrapper(Window *pParentWindow,
+ USHORT nId, SfxBindings* pBindings,
+ SfxChildWinInfo *pInfo) :
+ SfxChildWindow(pParentWindow, nId)
+{
+ eChildAlignment = SFX_ALIGN_NOALIGNMENT;
+ pWindow = new SmToolBoxWindow(pBindings, this, pParentWindow);
+
+ ((SmToolBoxWindow *)pWindow)->ShowWindows();
+
+}
+
+
diff --git a/starmath/source/typemap.cxx b/starmath/source/typemap.cxx
new file mode 100644
index 000000000000..acfcd447816d
--- /dev/null
+++ b/starmath/source/typemap.cxx
@@ -0,0 +1,190 @@
+/*************************************************************************
+ *
+ * $RCSfile: typemap.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#define ITEMID_PTR 0
+#define ITEMID_SHADOW 0
+#define ITEMID_PAGE 0
+#define ITEMID_SETITEM 0
+#define ITEMID_HORJUSTIFY 0
+#define ITEMID_VERJUSTIFY 0
+#define ITEMID_ORIENTATION 0
+#define ITEMID_MARGIN 0
+#define ITEMID_AUTHOR 0
+#define ITEMID_DATE 0
+#define ITEMID_TEXT 0
+#define ITEMID_SPELLCHECK 0
+#define ITEMID_HYPHENREGION 0
+#define ITEMID_FONT 0
+#define ITEMID_FONTHEIGHT 0
+#define ITEMID_COLOR 0
+#define ITEMID_BRUSH 0
+#define ITEMID_BRUSH 0
+#define ITEMID_BOX 0
+#define ITEMID_LINE 0
+#define ITEMID_BRUSH 0
+#define ITEMID_SPELLCHECK 0
+#define ITEMID_HYPHENREGION 0
+#define ITEMID_LINESPACING 0
+#define ITEMID_ADJUST 0
+#define ITEMID_WIDOWS 0
+#define ITEMID_ORPHANS 0
+#define ITEMID_HYPHENZONE 0
+#define ITEMID_TABSTOP 0
+#define ITEMID_FMTSPLIT 0
+#define ITEMID_PAGEMODEL 0
+#define ITEMID_FONTLIST 0
+#define ITEMID_FONT 0
+#define ITEMID_POSTURE 0
+#define ITEMID_WEIGHT 0
+#define ITEMID_FONTHEIGHT 0
+#define ITEMID_FONTWIDTH 0
+#define ITEMID_UNDERLINE 0
+#define ITEMID_CROSSEDOUT 0
+#define ITEMID_SHADOWED 0
+#define ITEMID_AUTOKERN 0
+#define ITEMID_WORDLINEMODE 0
+#define ITEMID_CONTOUR 0
+#define ITEMID_PROPSIZE 0
+#define ITEMID_COLOR 0
+#define ITEMID_CHARSETCOLOR 0
+#define ITEMID_KERNING 0
+#define ITEMID_CASEMAP 0
+#define ITEMID_ESCAPEMENT 0
+#define ITEMID_LANGUAGE 0
+#define ITEMID_NOLINEBREAK 0
+#define ITEMID_NOHYPHENHERE 0
+#define ITEMID_COLOR 0
+#define ITEMID_FONT 0
+#define ITEMID_FONTHEIGHT 0
+#define ITEMID_SEARCH 0
+#define ITEMID_COLOR_TABLE 0
+#define ITEMID_GRADIENT_LIST 0
+#define ITEMID_HATCH_LIST 0
+#define ITEMID_BITMAP_LIST 0
+#define ITEMID_DASH_LIST 0
+#define ITEMID_LINEEND_LIST 0
+#define ITEMID_NUMBERINFO 0
+#define ITEMID_CHARTSTYLE 0
+#define ITEMID_CHARTDATADESCR 0
+#define ITEMID_CHARTLEGENDPOS 0
+#define ITEMID_CHARTTEXTORDER 0
+#define ITEMID_CHARTTEXTORIENT 0
+#define ITEMID_DOUBLE 0
+#define ITEMID_TABSTOP 0
+#define ITEMID_PAPERBIN 0
+#define ITEMID_SIZE 0
+#define ITEMID_LRSPACE 0
+#define ITEMID_ULSPACE 0
+#define ITEMID_PRINT 0
+#define ITEMID_OPAQUE 0
+#define ITEMID_PROTECT 0
+#define ITEMID_MACRO 0
+#define ITEMID_BOX 0
+#define ITEMID_BOXINFO 0
+#define ITEMID_FMTBREAK 0
+#define ITEMID_FMTKEEP 0
+#define ITEMID_LINE 0
+#define ITEMID_BRUSH 0
+
+#define CharSetItem SfxVoidItem
+#define FontFamilyItem SfxVoidItem
+#define FontPitchItem SfxVoidItem
+#define FontAlignItem SfxVoidItem
+#define FontWeightItem SfxVoidItem
+#define FontUnderlineItem SfxVoidItem
+#define FontStrikeoutItem SfxVoidItem
+#define FontItalicItem SfxVoidItem
+#define SvxDbTypeItem SfxVoidItem
+#define SvxLineSpaceItem SfxVoidItem
+#define SvxInterLineSpaceItem SfxVoidItem
+#define SvxBreakItem SfxVoidItem
+#define BrushStyleItem SfxVoidItem
+#define SvxNumTypeItem SfxVoidItem
+#define SvxShadowLocationItem SfxVoidItem
+#define SvxLanguage SfxVoidItem
+#define SvxChooseControlEnumItem SfxVoidItem
+#define SvxDrawToolEnumItem SfxVoidItem
+#define SvxChooseControlItem SfxVoidItem
+#define SvxDrawToolItem SfxVoidItem
+#define SvxCellHorJustifyEnumItem SfxVoidItem
+#define SvxCellVerJustifyEnumItem SfxVoidItem
+#define SvxCellOrientationEnumItem SfxVoidItem
+
+#ifndef _SFXMSG_HXX //autogen
+#include <sfx2/msg.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+
+#define SFX_TYPEMAP
+#include "smslots.hxx"
+
+
+
diff --git a/starmath/source/unomodel.cxx b/starmath/source/unomodel.cxx
new file mode 100644
index 000000000000..cead1651c647
--- /dev/null
+++ b/starmath/source/unomodel.cxx
@@ -0,0 +1,782 @@
+/*************************************************************************
+ *
+ * $RCSfile: unomodel.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _VOS_MUTEX_HXX_
+#include <vos/mutex.hxx>
+#endif
+#ifndef _OSL_MUTEX_HXX_
+#include <osl/mutex.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SV_SVAPP_HXX
+#include <vcl/svapp.hxx>
+#endif
+#ifndef _CTRLTOOL_HXX
+#include <svtools/ctrltool.hxx>
+#endif
+#ifndef _SFX_ITEMPROP_HXX
+#include <svtools/itemprop.hxx>
+#endif
+#ifndef UNOMODEL_HXX
+#include "unomodel.hxx"
+#endif
+#ifndef DOCUMENT_HXX
+#include "document.hxx"
+#endif
+
+using namespace vos;
+using namespace rtl;
+using namespace ::com::sun::star;
+
+#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
+#define MM100_TO_TWIP(MM100) ((MM100) >= 0 ? (((MM100)*72L+63L)/127L) : (((MM100)*72L-63L)/127L))
+
+#define C2U(cChar) rtl::OUString::createFromAscii(cChar)
+
+////////////////////////////////////////
+//
+// class SmModel
+//
+#define PROPERTY_NONE 0
+
+#define FID_FORMULA 0
+#define FID_FONT_NAME_VARIABLES 1
+#define FID_FONT_NAME_FUNCTIONS 2
+#define FID_FONT_NAME_NUMBERS 3
+#define FID_FONT_NAME_TEXT 4
+#define FID_CUSTOM_FONT_NAME_SERIF 5
+#define FID_CUSTOM_FONT_NAME_SANS 6
+#define FID_CUSTOM_FONT_NAME_FIXED 7
+#define FID_CUSTOM_FONT_FIXED_POSTURE 8
+#define FID_CUSTOM_FONT_FIXED_WEIGHT 9
+#define FID_CUSTOM_FONT_SANS_POSTURE 10
+#define FID_CUSTOM_FONT_SANS_WEIGHT 11
+#define FID_CUSTOM_FONT_SERIF_POSTURE 12
+#define FID_CUSTOM_FONT_SERIF_WEIGHT 13
+#define FID_FONT_VARIABLES_POSTURE 14
+#define FID_FONT_VARIABLES_WEIGHT 15
+#define FID_FONT_FUNCTIONS_POSTURE 16
+#define FID_FONT_FUNCTIONS_WEIGHT 17
+#define FID_FONT_NUMBERS_POSTURE 18
+#define FID_FONT_NUMBERS_WEIGHT 19
+#define FID_FONT_TEXT_POSTURE 20
+#define FID_FONT_TEXT_WEIGHT 21
+#define FID_BASE_FONT_HEIGHT 22
+#define FID_RELATIVE_FONT_HEIGHT_TEXT 23
+#define FID_RELATIVE_FONT_HEIGHT_INDICES 24
+#define FID_RELATIVE_FONT_HEIGHT_FUNCTIONS 25
+#define FID_RELATIVE_FONT_HEIGHT_OPERATORS 26
+#define FID_RELATIVE_FONT_HEIGHT_LIMITS 27
+#define FID_IS_TEXT_MODE 28
+#define FID_ALIGNMENT 29
+#define FID_RELATIVE_SPACING 30
+#define FID_RELATIVE_LINE_SPACING 31
+#define FID_RELATIVE_ROOT_SPACING 32
+#define FID_RELATIVE_INDEX_SUPERSCRIPT 33
+#define FID_RELATIVE_INDEX_SUBSCRIPT 34
+#define FID_RELATIVE_FRACTION_NUMERATOR_HEIGHT 35
+#define FID_RELATIVE_FRACTION_DENOMINATOR_DEPTH 36
+#define FID_RELATIVE_FRACTION_BAR_EXCESS_LENGTH 37
+#define FID_RELATIVE_FRACTION_BAR_LINE_WEIGHT 38
+#define FID_RELATIVE_UPPER_LIMIT_DISTANCE 39
+#define FID_RELATIVE_LOWER_LIMIT_DISTANCE 40
+#define FID_RELATIVE_BRACKET_EXCESS_SIZE 41
+#define FID_RELATIVE_BRACKET_DISTANCE 42
+#define FID_IS_SCALE_ALL_BRACKETS 43
+#define FID_RELATIVE_SCALE_BRACKET_EXCESS_SIZE 44
+#define FID_RELATIVE_MATRIX_LINE_SPACING 45
+#define FID_RELATIVE_MATRIX_COLUMN_SPACING 46
+#define FID_RELATIVE_SYMBOL_PRIMARY_HEIGHT 47
+#define FID_RELATIVE_SYMBOL_MINIMUM_HEIGHT 48
+#define FID_RELATIVE_OPERATOR_EXCESS_SIZE 49
+#define FID_RELATIVE_OPERATOR_SPACING 50
+#define FID_LEFT_MARGIN 51
+#define FID_RIGHT_MARGIN 52
+#define FID_TOP_MARGIN 53
+#define FID_BOTTOM_MARGIN 54
+
+#define UNO_NAME_FORMULA "Formula"
+#define UNO_NAME_FONT_NAME_VARIABLES "FontNameVariables"
+#define UNO_NAME_CUSTOM_FONT_VARIABLES_IS_ITALIC "FontVariablesIsItalic"
+#define UNO_NAME_CUSTOM_FONT_VARIABLES_IS_BOLD "FontVariablesIsBold"
+#define UNO_NAME_FONT_NAME_FUNCTIONS "FontNameFunctions"
+#define UNO_NAME_CUSTOM_FONT_FUNCTIONS_IS_ITALIC "FontFunctionsIsItalic"
+#define UNO_NAME_CUSTOM_FONT_FUNCTIONS_IS_BOLD "FontFunctionsIsBold"
+#define UNO_NAME_FONT_NAME_NUMBERS "FontNameNumbers"
+#define UNO_NAME_CUSTOM_FONT_NUMBERS_IS_ITALIC "FontNumbersIsItalic"
+#define UNO_NAME_CUSTOM_FONT_NUMBERS_IS_BOLD "FontNumbersIsBold"
+#define UNO_NAME_FONT_NAME_TEXT "FontNameText"
+#define UNO_NAME_CUSTOM_FONT_TEXT_IS_ITALIC "FontTextIsItalic"
+#define UNO_NAME_CUSTOM_FONT_TEXT_IS_BOLD "FontTextIsBold"
+#define UNO_NAME_CUSTOM_FONT_NAME_SERIF "CustomFontNameSerif"
+#define UNO_NAME_CUSTOM_FONT_SERIF_IS_ITALIC "FontSerifIsItalic"
+#define UNO_NAME_CUSTOM_FONT_SERIF_IS_BOLD "FontSerifIsBold"
+#define UNO_NAME_CUSTOM_FONT_NAME_SANS "CustomFontNameSans"
+#define UNO_NAME_CUSTOM_FONT_SANS_IS_ITALIC "FontSansIsItalic"
+#define UNO_NAME_CUSTOM_FONT_SANS_IS_BOLD "FontSansIsBold"
+#define UNO_NAME_CUSTOM_FONT_NAME_FIXED "CustomFontNameFixed"
+#define UNO_NAME_CUSTOM_FONT_FIXED_IS_ITALIC "FontFixedIsItalic"
+#define UNO_NAME_CUSTOM_FONT_FIXED_IS_BOLD "FontFixedIsBold"
+#define UNO_NAME_BASE_FONT_HEIGHT "BaseFontHeight"
+#define UNO_NAME_RELATIVE_FONT_HEIGHT_TEXT "RelativeFontHeightText"
+#define UNO_NAME_RELATIVE_FONT_HEIGHT_INDICES "RelativeFontHeightIndices"
+#define UNO_NAME_RELATIVE_FONT_HEIGHT_FUNCTIONS "RelativeFontHeightFunctions"
+#define UNO_NAME_RELATIVE_FONT_HEIGHT_OPERATORS "RelativeFontHeightOperators"
+#define UNO_NAME_RELATIVE_FONT_HEIGHT_LIMITS "RelativeFontHeightLimits"
+#define UNO_NAME_IS_TEXT_MODE "IsTextMode"
+#define UNO_NAME_ALIGNMENT "Alignment"
+#define UNO_NAME_RELATIVE_SPACING "RelativeSpacing"
+#define UNO_NAME_RELATIVE_LINE_SPACING "RelativeLineSpacing"
+#define UNO_NAME_RELATIVE_ROOT_SPACING "RelativeRootSpacing"
+#define UNO_NAME_RELATIVE_INDEX_SUPERSCRIPT "RelativeIndexSuperscript"
+#define UNO_NAME_RELATIVE_INDEX_SUBSCRIPT "RelativeIndexSubscript"
+#define UNO_NAME_RELATIVE_FRACTION_NUMERATOR_HEIGHT "RelativeFractionNumeratorHeight"
+#define UNO_NAME_RELATIVE_FRACTION_DENOMINATOR_DEPTH "RelativeFractionDenominatorDepth"
+#define UNO_NAME_RELATIVE_FRACTION_BAR_EXCESS_LENGTH "RelativeFractionBarExcessLength"
+#define UNO_NAME_RELATIVE_FRACTION_BAR_LINE_WEIGHT "RelativeFractionBarLineWeight"
+#define UNO_NAME_RELATIVE_UPPER_LIMIT_DISTANCE "RelativeUpperLimitDistance"
+#define UNO_NAME_RELATIVE_LOWER_LIMIT_DISTANCE "RelativeLowerLimitDistance"
+#define UNO_NAME_RELATIVE_BRACKET_EXCESS_SIZE "RelativeBracketExcessSize"
+#define UNO_NAME_RELATIVE_BRACKET_DISTANCE "RelativeBracketDistance"
+#define UNO_NAME_IS_SCALE_ALL_BRACKETS "IsScaleAllBrackets"
+#define UNO_NAME_RELATIVE_SCALE_BRACKET_EXCESS_SIZE "RelativeScaleBracketExcessSize"
+#define UNO_NAME_RELATIVE_MATRIX_LINE_SPACING "RelativeMatrixLineSpacing"
+#define UNO_NAME_RELATIVE_MATRIX_COLUMN_SPACING "RelativeMatrixColumnSpacing"
+#define UNO_NAME_RELATIVE_SYMBOL_PRIMARY_HEIGHT "RelativeSymbolPrimaryHeight"
+#define UNO_NAME_RELATIVE_SYMBOL_MINIMUM_HEIGHT "RelativeSymbolMinimumHeight"
+#define UNO_NAME_RELATIVE_OPERATOR_EXCESS_SIZE "RelativeOperatorExcessSize"
+#define UNO_NAME_RELATIVE_OPERATOR_SPACING "RelativeOperatorSpacing"
+#define UNO_NAME_LEFT_MARGIN "LeftMargin"
+#define UNO_NAME_RIGHT_MARGIN "RightMargin"
+#define UNO_NAME_TOP_MARGIN "TopMargin"
+#define UNO_NAME_BOTTOM_MARGIN "BottomMargin"
+
+
+//must be sorted by names!
+SfxItemPropertyMap aMathModelMap_Impl[] =
+{
+ { MAP_CHAR_LEN(UNO_NAME_ALIGNMENT ), FID_ALIGNMENT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { MAP_CHAR_LEN(UNO_NAME_BASE_FONT_HEIGHT ), FID_BASE_FONT_HEIGHT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, 0},
+ { MAP_CHAR_LEN(UNO_NAME_BOTTOM_MARGIN ), FID_BOTTOM_MARGIN , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_BOTTOMSPACE },
+
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_NAME_FIXED ), FID_CUSTOM_FONT_NAME_FIXED , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_FIXED },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_FIXED_IS_ITALIC), FID_CUSTOM_FONT_FIXED_POSTURE , &::getBooleanCppuType(), PROPERTY_NONE, FNT_FIXED},
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_FIXED_IS_BOLD), FID_CUSTOM_FONT_FIXED_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, FNT_FIXED},
+
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_NAME_SANS ), FID_CUSTOM_FONT_NAME_SANS , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_SANS },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_SANS_IS_ITALIC), FID_CUSTOM_FONT_SANS_POSTURE , &::getBooleanCppuType(), PROPERTY_NONE, FNT_SANS},
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_SANS_IS_BOLD), FID_CUSTOM_FONT_SANS_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, FNT_SANS},
+
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_NAME_SERIF ), FID_CUSTOM_FONT_NAME_SERIF , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_SERIF },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_SERIF_IS_ITALIC), FID_CUSTOM_FONT_SERIF_POSTURE , &::getBooleanCppuType(), PROPERTY_NONE, FNT_SERIF},
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_SERIF_IS_BOLD), FID_CUSTOM_FONT_SERIF_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, FNT_SERIF},
+
+ { MAP_CHAR_LEN(UNO_NAME_FONT_NAME_FUNCTIONS ), FID_FONT_NAME_FUNCTIONS , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_FUNCTION },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_FUNCTIONS_IS_ITALIC), FID_FONT_FUNCTIONS_POSTURE , &::getBooleanCppuType(), PROPERTY_NONE, FNT_FUNCTION},
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_FUNCTIONS_IS_BOLD), FID_FONT_FUNCTIONS_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, FNT_FUNCTION},
+
+ { MAP_CHAR_LEN(UNO_NAME_FONT_NAME_NUMBERS ), FID_FONT_NAME_NUMBERS , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_NUMBER },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_NUMBERS_IS_ITALIC), FID_FONT_NUMBERS_POSTURE , &::getBooleanCppuType(), PROPERTY_NONE, FNT_NUMBER},
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_NUMBERS_IS_BOLD), FID_FONT_NUMBERS_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, FNT_NUMBER},
+
+ { MAP_CHAR_LEN(UNO_NAME_FONT_NAME_TEXT ), FID_FONT_NAME_TEXT , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_TEXT },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_TEXT_IS_ITALIC), FID_FONT_TEXT_POSTURE , &::getBooleanCppuType(), PROPERTY_NONE, },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_TEXT_IS_BOLD), FID_FONT_TEXT_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, },
+
+ { MAP_CHAR_LEN(UNO_NAME_FONT_NAME_VARIABLES ), FID_FONT_NAME_VARIABLES , &::getCppuType((const OUString*)0), PROPERTY_NONE, FNT_VARIABLE },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_VARIABLES_IS_ITALIC), FID_FONT_VARIABLES_POSTURE, &::getBooleanCppuType(), PROPERTY_NONE, },
+ { MAP_CHAR_LEN(UNO_NAME_CUSTOM_FONT_VARIABLES_IS_BOLD), FID_FONT_VARIABLES_WEIGHT , &::getBooleanCppuType(), PROPERTY_NONE, },
+
+ { MAP_CHAR_LEN(UNO_NAME_FORMULA ), FID_FORMULA , &::getCppuType((const OUString*)0), PROPERTY_NONE, 0},
+ { MAP_CHAR_LEN(UNO_NAME_IS_SCALE_ALL_BRACKETS ), FID_IS_SCALE_ALL_BRACKETS , &::getBooleanCppuType(), PROPERTY_NONE, 0},
+ { MAP_CHAR_LEN(UNO_NAME_IS_TEXT_MODE ), FID_IS_TEXT_MODE , &::getBooleanCppuType(), PROPERTY_NONE, 0},
+ { MAP_CHAR_LEN(UNO_NAME_LEFT_MARGIN ), FID_LEFT_MARGIN , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_LEFTSPACE },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_BRACKET_DISTANCE ), FID_RELATIVE_BRACKET_DISTANCE , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_BRACKETSPACE },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_BRACKET_EXCESS_SIZE ), FID_RELATIVE_BRACKET_EXCESS_SIZE , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_BRACKETSIZE },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FONT_HEIGHT_FUNCTIONS ), FID_RELATIVE_FONT_HEIGHT_FUNCTIONS , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, SIZ_FUNCTION},
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FONT_HEIGHT_INDICES ), FID_RELATIVE_FONT_HEIGHT_INDICES , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, SIZ_INDEX },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FONT_HEIGHT_LIMITS ), FID_RELATIVE_FONT_HEIGHT_LIMITS , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, SIZ_LIMITS },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FONT_HEIGHT_OPERATORS ), FID_RELATIVE_FONT_HEIGHT_OPERATORS , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, SIZ_OPERATOR},
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FONT_HEIGHT_TEXT ), FID_RELATIVE_FONT_HEIGHT_TEXT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, SIZ_TEXT },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FRACTION_BAR_EXCESS_LENGTH), FID_RELATIVE_FRACTION_BAR_EXCESS_LENGTH, &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_FRACTION },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FRACTION_BAR_LINE_WEIGHT ), FID_RELATIVE_FRACTION_BAR_LINE_WEIGHT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_STROKEWIDTH },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FRACTION_DENOMINATOR_DEPTH), FID_RELATIVE_FRACTION_DENOMINATOR_DEPTH, &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_DENOMINATOR },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_FRACTION_NUMERATOR_HEIGHT ), FID_RELATIVE_FRACTION_NUMERATOR_HEIGHT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_NUMERATOR },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_INDEX_SUBSCRIPT ), FID_RELATIVE_INDEX_SUBSCRIPT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_SUBSCRIPT },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_INDEX_SUPERSCRIPT ), FID_RELATIVE_INDEX_SUPERSCRIPT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_SUPERSCRIPT },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_LINE_SPACING ), FID_RELATIVE_LINE_SPACING , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_VERTICAL },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_LOWER_LIMIT_DISTANCE ), FID_RELATIVE_LOWER_LIMIT_DISTANCE , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_LOWERLIMIT },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_MATRIX_COLUMN_SPACING ), FID_RELATIVE_MATRIX_COLUMN_SPACING , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_MATRIXCOL},
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_MATRIX_LINE_SPACING ), FID_RELATIVE_MATRIX_LINE_SPACING , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_MATRIXROW},
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_OPERATOR_EXCESS_SIZE ), FID_RELATIVE_OPERATOR_EXCESS_SIZE , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_OPERATORSIZE },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_OPERATOR_SPACING ), FID_RELATIVE_OPERATOR_SPACING , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_OPERATORSPACE},
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_ROOT_SPACING ), FID_RELATIVE_ROOT_SPACING , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_ROOT },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_SCALE_BRACKET_EXCESS_SIZE ), FID_RELATIVE_SCALE_BRACKET_EXCESS_SIZE , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_NORMALBRACKETSIZE},
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_SPACING ), FID_RELATIVE_SPACING , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_HORIZONTAL },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_SYMBOL_MINIMUM_HEIGHT ), FID_RELATIVE_SYMBOL_MINIMUM_HEIGHT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_ORNAMENTSPACE },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_SYMBOL_PRIMARY_HEIGHT ), FID_RELATIVE_SYMBOL_PRIMARY_HEIGHT , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_ORNAMENTSIZE },
+ { MAP_CHAR_LEN(UNO_NAME_RELATIVE_UPPER_LIMIT_DISTANCE ), FID_RELATIVE_UPPER_LIMIT_DISTANCE , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_UPPERLIMIT },
+ { MAP_CHAR_LEN(UNO_NAME_RIGHT_MARGIN ), FID_RIGHT_MARGIN , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_RIGHTSPACE },
+ { MAP_CHAR_LEN(UNO_NAME_TOP_MARGIN ), FID_TOP_MARGIN , &::getCppuType((const sal_Int16*)0), PROPERTY_NONE, DIS_TOPSPACE },
+ {0,0,0,0}
+};
+//-----------------------------------------------------------------------
+SmModel::SmModel( SfxObjectShell *pObjSh ) :
+ SfxBaseModel(pObjSh),
+ _pMap(aMathModelMap_Impl)
+{
+}
+//-----------------------------------------------------------------------
+SmModel::~SmModel()
+{
+}
+/*-- 28.03.00 14:18:17---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SAL_CALL SmModel::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException)
+{
+ uno::Any aRet = SmModelBaseClass::queryInterface(rType);
+ if(!aRet.hasValue())
+ {
+ aRet = SfxBaseModel::queryInterface(rType);
+ }
+ return aRet;
+}
+/*-- 28.03.00 14:18:18---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SAL_CALL SmModel::acquire() throw(uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SmModelBaseClass::acquire();
+}
+/*-- 28.03.00 14:18:18---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SAL_CALL SmModel::release() throw(uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+ SmModelBaseClass::release();
+}
+/*-- 28.03.00 14:18:19---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Sequence< uno::Type > SAL_CALL SmModel::getTypes( ) throw(uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+
+ uno::Sequence< uno::Type > aBaseTypes = SmModelBaseClass::getTypes();
+ uno::Sequence< uno::Type > aSfxTypes = SfxBaseModel::getTypes();
+ long nIndex = aBaseTypes.getLength();
+ aBaseTypes.realloc(aBaseTypes.getLength() + aSfxTypes.getLength());
+ uno::Type* pBaseTypes = aBaseTypes.getArray();
+ const uno::Type* pSfxTypes = aSfxTypes.getConstArray();
+ for(long nSfx = 0; nSfx < aSfxTypes.getLength(); nSfx++)
+ pBaseTypes[nIndex++] = pSfxTypes[nSfx];
+ return aBaseTypes;
+}
+/* -----------------------------28.03.00 14:23--------------------------------
+
+ ---------------------------------------------------------------------------*/
+const uno::Sequence< sal_Int8 > & SmModel::getUnoTunnelId()
+{
+ static osl::Mutex aCreateMutex;
+ osl::Guard<osl::Mutex> aGuard( aCreateMutex );
+
+ static uno::Sequence< sal_Int8 > aSeq;
+ if(!aSeq.getLength())
+ {
+ aSeq.realloc( 16 );
+ rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
+ }
+ return aSeq;
+}
+/* -----------------------------28.03.00 14:23--------------------------------
+
+ ---------------------------------------------------------------------------*/
+sal_Int64 SAL_CALL SmModel::getSomething( const uno::Sequence< sal_Int8 >& rId )
+ throw(uno::RuntimeException)
+{
+ if( rId.getLength() == 16
+ && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(),
+ rId.getConstArray(), 16 ) )
+ {
+ return (sal_Int64)this;
+ }
+ return 0;
+}
+
+/*-- 07.01.00 16:32:59---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Reference< beans::XPropertySetInfo > SAL_CALL SmModel::getPropertySetInfo(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+
+ static uno::Reference< beans::XPropertySetInfo > xRet = new SfxItemPropertySetInfo( _pMap );
+ return xRet;
+}
+/*-- 07.01.00 16:33:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Int16 lcl_AnyToINT16(const uno::Any& rAny)
+{
+ uno::TypeClass eType = rAny.getValueType().getTypeClass();
+
+ sal_Int16 nRet = 0;
+ if( eType == uno::TypeClass_DOUBLE )
+ nRet = (sal_Int16)*(double*)rAny.getValue();
+ else if( eType == uno::TypeClass_FLOAT )
+ nRet = (sal_Int16)*(float*)rAny.getValue();
+ else
+ rAny >>= nRet;
+ return nRet;
+}
+//-----------------------------------------------------------------------------
+void SmModel::setPropertyValue(const OUString& rPropertyName, const uno::Any& aValue)
+ throw( beans::UnknownPropertyException, beans::PropertyVetoException,
+ lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException)
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+
+ SfxObjectShell* pObjShell = GetObjectShell();
+ if(!pObjShell)
+ throw uno::RuntimeException();
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ SmFormat& aFormat = ((SmDocShell*)pObjShell)->GetFormat();
+ switch(pMap->nWID)
+ {
+ case FID_FORMULA:
+ {
+ OUString aText;
+ aValue >>= aText;
+ ((SmDocShell*)pObjShell)->SetText(aText);
+ }
+ break;
+ case FID_FONT_NAME_VARIABLES :
+ case FID_FONT_NAME_FUNCTIONS :
+ case FID_FONT_NAME_NUMBERS :
+ case FID_FONT_NAME_TEXT :
+ case FID_CUSTOM_FONT_NAME_SERIF :
+ case FID_CUSTOM_FONT_NAME_SANS :
+ case FID_CUSTOM_FONT_NAME_FIXED :
+ {
+ OUString aText;
+ aValue >>= aText;
+ String sFontName = aText;
+ if(!sFontName.Len())
+ throw lang::IllegalArgumentException();
+ if(aFormat.GetFont(pMap->nMemberId).GetName() != sFontName)
+ {
+ OutputDevice *pDev = ((SmDocShell*)pObjShell)->GetPrinter();
+ if (!pDev || pDev->GetDevFontCount() == 0)
+ pDev = (OutputDevice *) GetpApp()->GetDefaultDevice();
+
+ FontList aFontList(pDev);
+
+ sal_uInt16 nCount = aFontList.GetFontNameCount();
+ sal_Bool bSet = sal_False;
+ for (sal_uInt16 i = 0; i < nCount; i++)
+ {
+ const FontInfo& rInfo = aFontList.GetFontName( i );
+ if(rInfo.GetName() == sFontName)
+ {
+ SmFace aSet(rInfo);
+ const SmFace rOld = aFormat.GetFont(pMap->nMemberId);
+ aSet.SetBorderWidth(rOld.GetBorderWidth());
+ aSet.SetSize(rOld.GetSize());
+ aSet.SetAlign(ALIGN_BASELINE);
+ aFormat.SetFont(pMap->nMemberId, aSet);
+ bSet = sal_True;
+ break;
+ }
+ }
+ if(!bSet)
+ throw lang::IllegalArgumentException();
+ }
+ }
+ break;
+ case FID_CUSTOM_FONT_FIXED_POSTURE:
+ case FID_CUSTOM_FONT_SANS_POSTURE :
+ case FID_CUSTOM_FONT_SERIF_POSTURE:
+ case FID_FONT_VARIABLES_POSTURE :
+ case FID_FONT_FUNCTIONS_POSTURE :
+ case FID_FONT_NUMBERS_POSTURE :
+ case FID_FONT_TEXT_POSTURE :
+ {
+ if(aValue.getValueType() != ::getBooleanCppuType())
+ throw lang::IllegalArgumentException();
+ BOOL bVal = *(sal_Bool*)aValue.getValue();
+ Font aNewFont(aFormat.GetFont(pMap->nMemberId));
+ aNewFont.SetItalic((bVal) ? ITALIC_NORMAL : ITALIC_NONE);
+ aFormat.SetFont(pMap->nMemberId, aNewFont);
+ }
+ break;
+ case FID_CUSTOM_FONT_FIXED_WEIGHT :
+ case FID_CUSTOM_FONT_SANS_WEIGHT :
+ case FID_CUSTOM_FONT_SERIF_WEIGHT :
+ case FID_FONT_VARIABLES_WEIGHT :
+ case FID_FONT_FUNCTIONS_WEIGHT :
+ case FID_FONT_NUMBERS_WEIGHT :
+ case FID_FONT_TEXT_WEIGHT :
+ {
+ if(aValue.getValueType() != ::getBooleanCppuType())
+ throw lang::IllegalArgumentException();
+ BOOL bVal = *(sal_Bool*)aValue.getValue();
+ Font aNewFont(aFormat.GetFont(pMap->nMemberId));
+ aNewFont.SetWeight((bVal) ? WEIGHT_BOLD : WEIGHT_NORMAL);
+ aFormat.SetFont(pMap->nMemberId, aNewFont);
+ }
+ break;
+ case FID_BASE_FONT_HEIGHT :
+ {
+ // Point!
+ sal_Int16 nVal = lcl_AnyToINT16(aValue);
+ if(nVal < 1)
+ throw lang::IllegalArgumentException();
+ Size aSize = aFormat.GetBaseSize();
+ nVal *= 20;
+ nVal = TWIP_TO_MM100(nVal);
+ aSize.Height() = nVal;
+ aFormat.SetBaseSize(aSize);
+ }
+ break;
+ case FID_RELATIVE_FONT_HEIGHT_TEXT :
+ case FID_RELATIVE_FONT_HEIGHT_INDICES :
+ case FID_RELATIVE_FONT_HEIGHT_FUNCTIONS :
+ case FID_RELATIVE_FONT_HEIGHT_OPERATORS :
+ case FID_RELATIVE_FONT_HEIGHT_LIMITS :
+ {
+ sal_Int16 nVal;
+ aValue >>= nVal;
+ if(nVal < 1)
+ throw lang::IllegalArgumentException();
+ aFormat.SetRelSize(pMap->nMemberId, nVal);
+ }
+ break;
+
+ case FID_IS_TEXT_MODE :
+ {
+ aFormat.SetTextmode(*(sal_Bool*)aValue.getValue());
+ }
+ break;
+
+ case FID_ALIGNMENT :
+ {
+ // SmHorAlign uses the same values as HorizontalAlignment
+ sal_Int16 nVal;
+ aValue >>= nVal;
+ if(nVal < 0 || nVal > 2)
+ throw lang::IllegalArgumentException();
+ aFormat.SetHorAlign((SmHorAlign)nVal);
+ }
+ break;
+
+ case FID_RELATIVE_SPACING :
+ case FID_RELATIVE_LINE_SPACING :
+ case FID_RELATIVE_ROOT_SPACING :
+ case FID_RELATIVE_INDEX_SUPERSCRIPT :
+ case FID_RELATIVE_INDEX_SUBSCRIPT :
+ case FID_RELATIVE_FRACTION_NUMERATOR_HEIGHT :
+ case FID_RELATIVE_FRACTION_DENOMINATOR_DEPTH:
+ case FID_RELATIVE_FRACTION_BAR_EXCESS_LENGTH:
+ case FID_RELATIVE_FRACTION_BAR_LINE_WEIGHT :
+ case FID_RELATIVE_UPPER_LIMIT_DISTANCE :
+ case FID_RELATIVE_LOWER_LIMIT_DISTANCE :
+ case FID_RELATIVE_BRACKET_EXCESS_SIZE :
+ case FID_RELATIVE_BRACKET_DISTANCE :
+ case FID_RELATIVE_SCALE_BRACKET_EXCESS_SIZE :
+ case FID_RELATIVE_MATRIX_LINE_SPACING :
+ case FID_RELATIVE_MATRIX_COLUMN_SPACING :
+ case FID_RELATIVE_SYMBOL_PRIMARY_HEIGHT :
+ case FID_RELATIVE_SYMBOL_MINIMUM_HEIGHT :
+ case FID_RELATIVE_OPERATOR_EXCESS_SIZE :
+ case FID_RELATIVE_OPERATOR_SPACING :
+ case FID_LEFT_MARGIN :
+ case FID_RIGHT_MARGIN :
+ case FID_TOP_MARGIN :
+ case FID_BOTTOM_MARGIN :
+ {
+ sal_Int16 nVal;
+ aValue >>= nVal;
+ if(nVal < 0)
+ throw lang::IllegalArgumentException();
+ aFormat.SetDistance(pMap->nMemberId, nVal);
+ }
+ break;
+ case FID_IS_SCALE_ALL_BRACKETS :
+ aFormat.SetScaleNormalBrackets(*(sal_Bool*)aValue.getValue());
+ break;
+ }
+ if(pMap->nWID)
+ {
+ ((SmDocShell*)pObjShell)->SetFormat(aFormat);
+ aFormat.RequestApplyChanges();
+ }
+ }
+ else
+ throw beans::UnknownPropertyException();
+}
+/*-- 07.01.00 16:33:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Any SmModel::getPropertyValue(const OUString& rPropertyName)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+
+ uno::Any aRet;
+ SfxObjectShell* pObjShell = GetObjectShell();
+ if(!pObjShell)
+ throw uno::RuntimeException();
+ const SfxItemPropertyMap* pMap = SfxItemPropertyMap::GetByName(
+ _pMap, rPropertyName);
+ if(pMap)
+ {
+ const SmFormat& rFormat = ((SmDocShell*)pObjShell)->GetFormat();
+ switch(pMap->nWID)
+ {
+ case FID_FORMULA:
+ aRet <<= OUString(((SmDocShell*)pObjShell)->GetText());
+ break;
+ case FID_FONT_NAME_VARIABLES :
+ case FID_FONT_NAME_FUNCTIONS :
+ case FID_FONT_NAME_NUMBERS :
+ case FID_FONT_NAME_TEXT :
+ case FID_CUSTOM_FONT_NAME_SERIF :
+ case FID_CUSTOM_FONT_NAME_SANS :
+ case FID_CUSTOM_FONT_NAME_FIXED :
+ {
+ const SmFace & rFace = rFormat.GetFont(pMap->nMemberId);
+ aRet <<= OUString(rFace.GetName());
+ }
+ break;
+ case FID_CUSTOM_FONT_FIXED_POSTURE:
+ case FID_CUSTOM_FONT_SANS_POSTURE :
+ case FID_CUSTOM_FONT_SERIF_POSTURE:
+ case FID_FONT_VARIABLES_POSTURE :
+ case FID_FONT_FUNCTIONS_POSTURE :
+ case FID_FONT_NUMBERS_POSTURE :
+ case FID_FONT_TEXT_POSTURE :
+ {
+ const SmFace & rFace = rFormat.GetFont(pMap->nMemberId);
+ BOOL bVal = (rFace.GetItalic() != ITALIC_NONE);
+ aRet.setValue(&bVal, *pMap->pType);
+ }
+ break;
+ case FID_CUSTOM_FONT_FIXED_WEIGHT :
+ case FID_CUSTOM_FONT_SANS_WEIGHT :
+ case FID_CUSTOM_FONT_SERIF_WEIGHT :
+ case FID_FONT_VARIABLES_WEIGHT :
+ case FID_FONT_FUNCTIONS_WEIGHT :
+ case FID_FONT_NUMBERS_WEIGHT :
+ case FID_FONT_TEXT_WEIGHT :
+ {
+ const SmFace & rFace = rFormat.GetFont(pMap->nMemberId);
+ BOOL bVal = (rFace.GetWeight() == WEIGHT_BOLD);
+ aRet.setValue(&bVal, *pMap->pType);
+ }
+ break;
+ case FID_BASE_FONT_HEIGHT :
+ {
+ // Point!
+ sal_Int16 nVal = rFormat.GetBaseSize().Height();
+ nVal = MM100_TO_TWIP(nVal);
+ nVal = (nVal + 10) / 20;
+ aRet <<= nVal;
+ }
+ break;
+ case FID_RELATIVE_FONT_HEIGHT_TEXT :
+ case FID_RELATIVE_FONT_HEIGHT_INDICES :
+ case FID_RELATIVE_FONT_HEIGHT_FUNCTIONS :
+ case FID_RELATIVE_FONT_HEIGHT_OPERATORS :
+ case FID_RELATIVE_FONT_HEIGHT_LIMITS :
+ aRet <<= (sal_Int16) rFormat.GetRelSize(pMap->nMemberId);
+ break;
+
+ case FID_IS_TEXT_MODE :
+ {
+ sal_Bool bVal = rFormat.IsTextmode();
+ aRet.setValue(&bVal, ::getBooleanCppuType());
+ }
+ break;
+
+ case FID_ALIGNMENT :
+ // SmHorAlign uses the same values as HorizontalAlignment
+ aRet <<= (sal_Int16)rFormat.GetHorAlign();
+ break;
+
+ case FID_RELATIVE_SPACING :
+ case FID_RELATIVE_LINE_SPACING :
+ case FID_RELATIVE_ROOT_SPACING :
+ case FID_RELATIVE_INDEX_SUPERSCRIPT :
+ case FID_RELATIVE_INDEX_SUBSCRIPT :
+ case FID_RELATIVE_FRACTION_NUMERATOR_HEIGHT :
+ case FID_RELATIVE_FRACTION_DENOMINATOR_DEPTH:
+ case FID_RELATIVE_FRACTION_BAR_EXCESS_LENGTH:
+ case FID_RELATIVE_FRACTION_BAR_LINE_WEIGHT :
+ case FID_RELATIVE_UPPER_LIMIT_DISTANCE :
+ case FID_RELATIVE_LOWER_LIMIT_DISTANCE :
+ case FID_RELATIVE_BRACKET_EXCESS_SIZE :
+ case FID_RELATIVE_BRACKET_DISTANCE :
+ case FID_RELATIVE_SCALE_BRACKET_EXCESS_SIZE :
+ case FID_RELATIVE_MATRIX_LINE_SPACING :
+ case FID_RELATIVE_MATRIX_COLUMN_SPACING :
+ case FID_RELATIVE_SYMBOL_PRIMARY_HEIGHT :
+ case FID_RELATIVE_SYMBOL_MINIMUM_HEIGHT :
+ case FID_RELATIVE_OPERATOR_EXCESS_SIZE :
+ case FID_RELATIVE_OPERATOR_SPACING :
+ case FID_LEFT_MARGIN :
+ case FID_RIGHT_MARGIN :
+ case FID_TOP_MARGIN :
+ case FID_BOTTOM_MARGIN :
+ aRet <<= (sal_Int16)rFormat.GetDistance(pMap->nMemberId);
+ break;
+ case FID_IS_SCALE_ALL_BRACKETS :
+ sal_Bool bVal = rFormat.IsScaleNormalBrackets();
+ aRet.setValue(&bVal, ::getBooleanCppuType());
+ break;
+ }
+ }
+ else
+ throw beans::UnknownPropertyException();
+ return aRet;
+}
+/*-- 07.01.00 16:33:00---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SmModel::addPropertyChangeListener(const OUString& PropertyName,
+ const uno::Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 07.01.00 16:33:01---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SmModel::removePropertyChangeListener(const OUString& PropertyName,
+ const uno::Reference< beans::XPropertyChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 07.01.00 16:33:01---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SmModel::addVetoableChangeListener(const OUString& PropertyName,
+ const uno::Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 07.01.00 16:33:01---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+void SmModel::removeVetoableChangeListener(const OUString& PropertyName,
+ const uno::Reference< beans::XVetoableChangeListener > & aListener)
+ throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException )
+{
+}
+/*-- 07.02.00 13:24:08---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+OUString SmModel::getImplementationName(void) throw( uno::RuntimeException )
+{
+ return C2U("SmModel");
+}
+/*-- 07.02.00 13:24:09---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+sal_Bool SmModel::supportsService(const OUString& rServiceName) throw( uno::RuntimeException )
+{
+ return rServiceName == C2U("com.sun.star.formula.FormulaProperties");
+}
+/*-- 07.02.00 13:24:09---------------------------------------------------
+
+ -----------------------------------------------------------------------*/
+uno::Sequence< OUString > SmModel::getSupportedServiceNames(void) throw( uno::RuntimeException )
+{
+ ::vos::OGuard aGuard(Application::GetSolarMutex());
+
+ uno::Sequence< OUString > aRet(1);
+ OUString* pArray = aRet.getArray();
+ pArray[0] = C2U("com.sun.star.formula.FormulaProperties");
+ return aRet;
+}
+/* -----------------------------20.06.00 10:47--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void * SAL_CALL SmModel::operator new( size_t t ) throw()
+{
+ return SmModelBaseClass::operator new( t );
+}
+/* -----------------------------20.06.00 10:47--------------------------------
+
+ ---------------------------------------------------------------------------*/
+void SAL_CALL SmModel::operator delete( void * p ) throw()
+{
+ SmModelBaseClass::operator delete( p );
+}
+
diff --git a/starmath/source/utility.cxx b/starmath/source/utility.cxx
new file mode 100644
index 000000000000..920602ce3a4d
--- /dev/null
+++ b/starmath/source/utility.cxx
@@ -0,0 +1,651 @@
+/*************************************************************************
+ *
+ * $RCSfile: utility.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SV_VIRDEV_HXX //autogen
+#include <vcl/virdev.hxx>
+#endif
+#ifndef NOOLDSV //autogen
+#include <vcl/system.hxx>
+#endif
+
+#include "starmath.hrc"
+
+#include "utility.hxx"
+#include "dialog.hxx"
+#include "view.hxx"
+#include "smdll.hxx"
+
+
+SmViewShell * SmGetActiveView()
+ // return pointer to active SmViewShell, if this is not possible
+ // return 0 instead.
+{
+ SfxViewShell *pView = SfxViewShell::Current();
+ return PTR_CAST(SmViewShell, pView);
+}
+
+
+////////////////////////////////////////
+
+
+SvStream& operator << (SvStream& rStream, const SmFace& rFont)
+{
+ rStream.WriteByteString(ExportString(rFont.GetName()));
+ rStream << (ULONG)rFont.GetFamily();
+ rStream << (ULONG)rFont.GetCharSet();
+ rStream << (ULONG)rFont.GetWeight();
+ rStream << (ULONG)rFont.GetItalic();
+
+ return rStream;
+}
+
+SvStream& operator >> (SvStream& rStream, SmFace& rFont)
+{
+ ULONG nData;
+ String aString;
+
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ rStream.ReadByteString(aString);
+ rFont.SetName(aString);
+ rStream >> nData;
+ rFont.SetFamily((FontFamily)nData);
+ rStream >> nData;
+ rFont.SetCharSet((CharSet)nData);
+ rStream >> nData;
+ rFont.SetWeight((FontWeight)nData);
+ rStream >> nData;
+ rFont.SetItalic((FontItalic)nData);
+
+ return rStream;
+}
+
+void ReadSM20Font(SvStream& rStream, Font& rFont)
+{
+ BOOL bData;
+ ULONG nData;
+ String aString;
+
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+ rStream.ReadByteString(aString);
+ rFont.SetName(aString);
+ rStream >> nData;
+ rFont.SetFamily((FontFamily)nData);
+ rStream >> nData;
+ rFont.SetCharSet((CharSet)nData);
+ rStream >> nData;
+ rFont.SetWeight((FontWeight)nData);
+ rStream >> bData;
+ if (bData)
+ rFont.SetItalic(ITALIC_NORMAL);
+ else
+ rFont.SetItalic(ITALIC_NONE);
+}
+
+
+////////////////////////////////////////////////////////////
+//
+// SmRectCache
+//
+
+
+SmRectCache::Key::Key(const XubString &rText, const Font &rFont)
+{
+}
+
+
+BOOL SmRectCache::Key::operator < (const Key &rKey) const
+{
+#ifdef never
+ BOOL bRes = FALSE;
+
+ if (aText < rKey.aText)
+ bRes = TRUE;
+ else if ()
+
+ return aText < rKey.aText
+ || aText == rKey.aText && aFontName < rKey.aFontName
+ || aFontName == rKey.aFontname && aFontSize < rKey.aFontSize
+ || aFontSize == rKey.aFontSize && eFontWeight < rKey.eFontWeight
+ || eFontWeight == rKey.eFontWeight && eFontItalic < rKey.eFontItalic;
+#endif
+ return FALSE;
+}
+
+
+BOOL SmRectCache::Key::operator == (const Key &rKey) const
+{
+ return aText == rKey.aText
+ && aFontName == rKey.aFontName
+ && aFontSize == rKey.aFontSize
+ && eFontWeight == rKey.eFontWeight
+ && eFontItalic == rKey.eFontItalic;
+}
+
+
+SmRectCache::SmRectCache()
+{
+ pVirDev = 0;
+}
+
+
+SmRectCache::~SmRectCache()
+{
+ delete pVirDev;
+}
+
+
+const SmRect * SmRectCache::Search(const Key &rKey) const
+{
+ return 0;
+}
+
+
+const SmRect * SmRectCache::Add(const Key &rKey, const SmRect &rRect)
+{
+ return (const SmRect *)-1;
+}
+
+
+VirtualDevice * SmRectCache::GetVirDev()
+{
+ if (!pVirDev)
+ {
+ SmViewShell *pView = SmGetActiveView();
+ if (pView)
+ pVirDev = new VirtualDevice( pView->GetGraphicWindow() );
+ else
+ pVirDev = new VirtualDevice;
+ pVirDev->SetMapMode( MapMode(MAP_100TH_MM) );
+ }
+ DBG_ASSERT(pVirDev->GetMapMode().GetMapUnit() == MAP_100TH_MM,
+ "Sm : falscher MapMode");
+
+ return pVirDev;
+}
+
+
+void SmRectCache::Reset()
+{
+}
+
+
+////////////////////////////////////////////////////////////
+
+ByteString ConvertUnknownCharacter(sal_Unicode ch)
+{
+ ByteString aString("<?");
+ aString += "UCS2(";
+ aString += ByteString::CreateFromInt32(ch);
+ aString += ")>";
+
+ return aString;
+}
+
+const ByteString ExportString(const String& rString)
+{
+ ByteString aString;
+
+ rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
+
+ for (xub_StrLen i = 0; i < rString.Len(); i++)
+ {
+ sal_Unicode ch = rString.GetChar(i);
+
+ sal_Char cChar = ByteString::ConvertFromUnicode( ch, eEnc );
+ if ((ch != '\r') && (ch != '\n') && (ch != '\t'))
+ {
+// ch = String::Convert(rString[i], eSet, CHARSET_ANSI);
+
+ if (ch == 0)
+ aString += ConvertUnknownCharacter(ch);
+ else
+ aString += cChar;
+ }
+ else
+ aString += ch;
+ }
+
+ aString.ConvertLineEnd(LINEEND_CRLF);
+
+ return (aString);
+}
+
+////////////////////////////////////////////////////////////
+
+
+/**************************************************************************/
+
+SmPickList::SmPickList(USHORT nInitSize, USHORT nMaxSize) :
+ SfxPtrArr((BYTE) nInitSize, 1)
+{
+ nSize = nMaxSize;
+}
+
+
+SmPickList::~SmPickList()
+{
+ Clear();
+}
+
+
+SmPickList& SmPickList::operator=(const SmPickList& rList)
+{
+ USHORT nPos;
+
+ Clear();
+ nSize = rList.nSize;
+ for (nPos = 0; nPos < rList.Count(); nPos++)
+ InsertPtr(nPos, CreateItem(rList.Get(nPos)));
+
+ return *this;
+}
+
+
+void SmPickList::Insert(const void *pItem)
+{
+ Remove(pItem);
+ InsertPtr(0, CreateItem(pItem));
+
+ if (Count() > nSize)
+ {
+ DestroyItem(GetPtr(nSize));
+ RemovePtr(nSize, 1);
+ }
+}
+
+
+void SmPickList::Update(const void *pItem, const void *pNewItem)
+{
+ USHORT nPos;
+
+ for (nPos = 0; nPos < Count(); nPos++)
+ if (CompareItem(GetPtr(nPos), pItem))
+ {
+ DestroyItem(GetPtr(nPos));
+ GetPtr(nPos) = CreateItem(pNewItem);
+ break;
+ }
+}
+
+void SmPickList::Remove(const void *pItem)
+{
+ USHORT nPos;
+
+ for (nPos = 0; nPos < Count(); nPos++)
+ if (CompareItem(GetPtr(nPos), pItem))
+ {
+ DestroyItem(GetPtr(nPos));
+ RemovePtr(nPos, 1);
+ break;
+ }
+}
+
+void SmPickList::SetSize(USHORT nNewSize)
+{
+ nSize = nNewSize;
+
+ while (Count() > nSize)
+ {
+ DestroyItem(GetPtr(Count() - 1));
+ RemovePtr(Count() - 1, 1);
+ }
+}
+
+
+BOOL SmPickList::Contains(const void *pItem) const
+{
+ USHORT nPos;
+
+ for (nPos = 0; nPos < Count(); nPos++)
+ if (CompareItem(GetPtr(nPos), pItem))
+ return TRUE;
+
+ return FALSE;
+}
+
+
+void SmPickList::Clear()
+{
+ USHORT nPos;
+
+ for (nPos = 0; nPos < Count(); nPos++)
+ DestroyItem(GetPtr(nPos));
+
+ RemovePtr(0, Count());
+}
+
+
+SvStream& operator << (SvStream& rStream, const SmPickList& rPickList)
+{
+ USHORT nPos;
+
+ rStream << 'p';
+ rStream << rPickList.nSize;
+ rStream << rPickList.Count();
+
+ for (nPos = 0; nPos < rPickList.Count(); nPos++)
+ rPickList.SaveItem(rStream, rPickList.GetObject(nPos));
+
+ return rStream;
+}
+
+SvStream& operator >> (SvStream& rStream, SmPickList& rPickList)
+{
+ char cTag;
+ USHORT nCount, nPos;
+ void *pItem;
+
+ rPickList.Clear();
+
+ rStream >> cTag;
+ if (cTag == 'p')
+ {
+ rStream >> rPickList.nSize;
+ rStream >> nCount;
+
+ for (nPos = 0; nPos < nCount; nPos++)
+ {
+ pItem = rPickList.CreateItem(String());
+ rPickList.LoadItem(rStream, pItem);
+ rPickList.InsertPtr(nPos, pItem);
+ }
+ }
+
+ return rStream;
+}
+
+
+/**************************************************************************/
+/**************************************************************************/
+
+void * SmFontPickList::CreateItem(const String& rString)
+{
+ return new Font();
+}
+
+void * SmFontPickList::CreateItem(const void *pItem)
+{
+ return new Font(*((Font *) pItem));
+}
+
+void SmFontPickList::DestroyItem(void *pItem)
+{
+ delete (Font *)pItem;
+}
+
+BOOL SmFontPickList::CompareItem(const void *pFirstItem, const void *pSecondItem) const
+{
+ Font *pFirstFont, *pSecondFont;
+
+ pFirstFont = (Font *)pFirstItem;
+ pSecondFont = (Font *)pSecondItem;
+
+ if (pFirstFont->GetName() == pSecondFont->GetName())
+ if ((pFirstFont->GetFamily() == pSecondFont->GetFamily()) &&
+ (pFirstFont->GetCharSet() == pSecondFont->GetCharSet()) &&
+ (pFirstFont->GetWeight() == pSecondFont->GetWeight()) &&
+ (pFirstFont->GetItalic() == pSecondFont->GetItalic()))
+ return (TRUE);
+
+ return FALSE;
+}
+
+String SmFontPickList::GetStringItem(void *pItem)
+{
+ Font *pFont;
+ String aString;
+
+ pFont = (Font *)pItem;
+
+ aString = pFont->GetName();
+
+ if (pFont->GetItalic() != ITALIC_NONE)
+ aString += String(SmResId(RID_FONTITALIC));
+ if (pFont->GetWeight() == WEIGHT_BOLD)
+ aString += String(SmResId(RID_FONTBOLD));
+
+ return (aString);
+}
+
+void SmFontPickList::LoadItem(SvStream& rStream, void *pItem)
+{
+ rStream >> *((Font *)pItem);
+}
+
+void SmFontPickList::SaveItem(SvStream& rStream, const void *pItem) const
+{
+ rStream << *(const Font *) pItem;
+}
+
+void SmFontPickList::Insert(const Font &rFont)
+{
+ SmPickList::Insert((void *)&rFont);
+}
+
+void SmFontPickList::Update(const Font &rFont, const Font &rNewFont)
+{
+ SmPickList::Update((void *)&rFont, (void *)&rNewFont);
+}
+
+void SmFontPickList::Remove(const Font &rFont)
+{
+ SmPickList::Remove((void *)&rFont);
+}
+
+
+void SmFontPickList::ReadFrom(const SmFontDialog& rDialog)
+{
+ Insert(rDialog.GetFont());
+}
+
+void SmFontPickList::WriteTo(SmFontDialog& rDialog) const
+{
+ rDialog.SetFont(Get());
+}
+
+
+/**************************************************************************/
+
+
+/**************************************************************************/
+
+IMPL_LINK( SmFontPickListBox, SelectHdl, ListBox *, pListBox )
+{
+ USHORT nPos;
+ String aString;
+
+ nPos = GetSelectEntryPos();
+
+ if (nPos != 0)
+ {
+ SmFontPickList::Insert(Get(nPos));
+ aString = GetEntry(nPos);
+ RemoveEntry(nPos);
+ InsertEntry(aString, 0);
+ }
+
+ SelectEntryPos(0);
+
+ return 0;
+}
+
+
+SmFontPickListBox::SmFontPickListBox(Window* pParent, WinBits nWinStyle, USHORT nMax) :
+ SmFontPickList(nMax, nMax),
+ ListBox(pParent, nWinStyle)
+{
+ SetSelectHdl(LINK(this, SmFontPickListBox, SelectHdl));
+}
+
+
+SmFontPickListBox::SmFontPickListBox(Window* pParent, const ResId& rResId, USHORT nMax) :
+ SmFontPickList(nMax, nMax),
+ ListBox(pParent, rResId)
+{
+ SetSelectHdl(LINK(this, SmFontPickListBox, SelectHdl));
+}
+
+
+SmFontPickListBox& SmFontPickListBox::operator=(const SmFontPickList& rList)
+{
+ USHORT nPos;
+
+ *(SmFontPickList *)this = rList;
+
+ for (nPos = 0; nPos < Count(); nPos++)
+ InsertEntry(GetStringItem(GetPtr(nPos)), nPos);
+
+ if (Count() > 0)
+ SelectEntry(GetStringItem(GetPtr(0)));
+
+ return *this;
+}
+
+void SmFontPickListBox::Insert(const Font &rFont)
+{
+ SmFontPickList::Insert(rFont);
+
+ RemoveEntry(GetStringItem(GetPtr(0)));
+ InsertEntry(GetStringItem(GetPtr(0)), 0);
+ SelectEntry(GetStringItem(GetPtr(0)));
+
+ while (GetEntryCount() > nSize)
+ RemoveEntry(GetEntryCount() - 1);
+
+ return;
+}
+
+
+void SmFontPickListBox::Update(const Font &rFont, const Font &rNewFont)
+{
+ SmFontPickList::Update(rFont, rNewFont);
+
+ // ********************** hier fehlt noch was
+
+ return;
+}
+
+
+void SmFontPickListBox::Remove(const Font &rFont)
+{
+ SmFontPickList::Remove(rFont);
+
+ // ********************** hier fehlt noch was
+
+ return;
+}
+
+////////////////////////////////////////
+
+
+void SmFace::SetSize(const Size& rSize)
+{
+ Size aSize (rSize);
+
+ // check the requested size against minimum value
+ static int __READONLY_DATA nMinVal = SmPtsTo100th_mm(2);
+
+ if (aSize.Height() < nMinVal)
+ aSize.Height() = nMinVal;
+
+ //! we don't force a maximum value here because this may prevent eg the
+ //! parentheses in "left ( ... right )" from matching up with large
+ //! bodies (eg stack{...} with many entries).
+ //! Of course this is holds only if characters are used and not polygons.
+
+ Font::SetSize(aSize);
+}
+
+
+long SmFace::GetBorderWidth() const
+{
+ if (nBorderWidth < 0)
+ return GetDefaultBorderWidth();
+ else
+ return nBorderWidth;
+}
+
+SmFace & SmFace::operator = (const SmFace &rFace)
+{
+ Font::operator = (rFace);
+ nBorderWidth = -1;
+ return *this;
+}
+
+
+SmFace & operator *= (SmFace &rFace, const Fraction &rFrac)
+ // scales the width and height of 'rFace' by 'rFrac' and returns a
+ // reference to 'rFace'.
+ // It's main use is to make scaling fonts look easier.
+{ const Size &rFaceSize = rFace.GetSize();
+
+ rFace.SetSize(Size(Fraction(rFaceSize.Width()) *= rFrac,
+ Fraction(rFaceSize.Height()) *= rFrac));
+ return rFace;
+}
+
+
+
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
new file mode 100644
index 000000000000..81ada46c8bb3
--- /dev/null
+++ b/starmath/source/view.cxx
@@ -0,0 +1,1559 @@
+/*************************************************************************
+ *
+ * $RCSfile: view.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#pragma hdrstop
+
+
+#ifndef _SV_MENU_HXX //autogen
+#include <vcl/menu.hxx>
+#endif
+#ifndef _SV_DECOVIEW_HXX //autogen
+#include <vcl/decoview.hxx>
+#endif
+#ifndef _SV_CLIP_HXX //autogen
+#include <vcl/clip.hxx>
+#endif
+#ifndef _SV_MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+
+#ifndef _SFX_WHITER_HXX //autogen
+#include <svtools/whiter.hxx>
+#endif
+#ifndef _UNDO_HXX //autogen
+#include <svtools/undo.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXPTITEM_HXX //autogen
+#include <svtools/ptitem.hxx>
+#endif
+#ifndef _SFXSTRITEM_HXX //autogen
+#include <svtools/stritem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXITEMSET_HXX //autogen
+#include <svtools/itemset.hxx>
+#endif
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SFXMSG_HXX //autogen
+#include <sfx2/msg.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SFXAPP_HXX //autogen
+#include <sfx2/app.hxx>
+#endif
+#ifndef _SFX_PRINTER_HXX //autogen
+#include <sfx2/printer.hxx>
+#endif
+#ifndef _SFXREQUEST_HXX //autogen
+#include <sfx2/request.hxx>
+#endif
+
+#ifndef _SVX_ZOOMITEM_HXX //autogen
+#include <svx/zoomitem.hxx>
+#endif
+#ifndef _SVX_ZOOM_HXX //autogen
+#include <svx/zoom.hxx>
+#endif
+#ifndef _SV_WRKWIN_HXX //autogen
+#include <vcl/wrkwin.hxx>
+#endif
+
+
+#ifndef VIEW_HXX
+#include "view.hxx"
+#endif
+#ifndef DOCUMENT_HXX
+#include "document.hxx"
+#endif
+#ifndef CONFIG_HXX
+#include "config.hxx"
+#endif
+#ifndef TOOLBOX_HXX
+#include "toolbox.hxx"
+#endif
+#ifndef DIALOG_HXX
+#include "dialog.hxx"
+#endif
+#ifndef _STARMATH_HRC
+#include "starmath.hrc"
+#endif
+
+
+#define MINWIDTH 200
+#define MINHEIGHT 200
+#define MINSPLIT 40
+#define SPLITTERWIDTH 2
+
+#define MINZOOM 25
+#define MAXZOOM 800
+
+#define SmViewShell
+#include "smslots.hxx"
+
+
+SmGraphicWindow::SmGraphicWindow(SmViewShell* pShell):
+ ScrollableWindow(&pShell->GetViewFrame()->GetWindow(), 0),
+ pViewShell(pShell),
+ nZoom(100),
+ bIsCursorVisible(FALSE)
+{
+ Hide();
+ const Fraction aFraction (1,1);
+ SetMapMode( MapMode(MAP_100TH_MM, Point(), aFraction, aFraction));
+ SetBackground( GetSettings().GetStyleSettings().GetWindowColor() );
+ SetTotalSize();
+
+ SetHelpId(HID_SMA_WIN_DOCUMENT);
+ SetUniqueId(HID_SMA_WIN_DOCUMENT);
+}
+
+
+void SmGraphicWindow::StateChanged( StateChangedType eType )
+{
+ if ( eType == STATE_CHANGE_INITSHOW )
+ Show();
+ ScrollableWindow::StateChanged( eType );
+}
+
+
+void SmGraphicWindow::DataChanged( const DataChangedEvent& rEvt )
+{
+ SetBackground( GetSettings().GetStyleSettings().GetWindowColor() );
+ ScrollableWindow::DataChanged( rEvt );
+}
+
+
+void SmGraphicWindow::MouseButtonDown(const MouseEvent& rMEvt)
+{
+// GrabFocus();
+
+ ScrollableWindow::MouseButtonDown(rMEvt);
+
+ //
+ // set formula-cursor and selection of edit window according to the
+ // position clicked at
+ //
+ DBG_ASSERT(rMEvt.GetClicks() > 0, "Sm : 0 clicks");
+ if ( rMEvt.IsLeft() && pViewShell->GetEditWindow() )
+ {
+ const SmNode *pTree = pViewShell->GetDoc()->GetFormulaTree();
+ //! kann NULL sein! ZB wenn bereits beim laden des Dokuments (bevor der
+ //! Parser angeworfen wurde) ins Fenster geklickt wird.
+ if (!pTree)
+ return;
+
+ // get click position relativ to formula
+ Point aPos (PixelToLogic(rMEvt.GetPosPixel())
+ - GetFormulaDrawPos());
+
+ // if it was clicked inside the formula then get the appropriate node
+ const SmNode *pNode = 0;
+ if (pTree->OrientedDist(aPos) <= 0)
+ pNode = pTree->FindRectClosestTo(aPos);
+
+ if (pNode)
+ { SmEditWindow *pEdit = pViewShell->GetEditWindow();
+ const SmToken aToken (pNode->GetToken());
+
+#ifdef notnow
+ // include introducing symbols of special char and text
+ // (ie '%' and '"')
+ USHORT nExtra = (aToken.eType == TSPECIAL || aToken.eType == TTEXT) ? 1 : 0;
+
+ // set selection to the beginning of the token
+ ESelection aSel (aToken.nRow - 1, aToken.nCol - 1 - nExtra);
+
+ if (rMEvt.GetClicks() != 1)
+ { // select whole token
+ // for text include terminating symbol (ie '"')
+ aSel.nEndPos += aToken.aText.Len() + nExtra
+ + (aToken.eType == TTEXT ? 1 : 0);
+ }
+#endif
+ // set selection to the beginning of the token
+ ESelection aSel (aToken.nRow - 1, aToken.nCol - 1);
+
+ if (rMEvt.GetClicks() != 1)
+ aSel.nEndPos += aToken.aText.Len();
+
+ pEdit->SetSelection(aSel);
+ SetCursor(pNode);
+
+ // allow for immediate editing and
+ //! implicitly synchronize the cursor position mark in this window
+ pEdit->GrabFocus();
+ }
+ }
+}
+
+
+void SmGraphicWindow::ShowCursor(BOOL bShow)
+ // shows or hides the formula-cursor depending on 'bShow' is TRUE or not
+{
+ BOOL bInvert = bShow != IsCursorVisible();
+
+ if (bInvert)
+ InvertTracking(aCursorRect, SHOWTRACK_SMALL | SHOWTRACK_WINDOW);
+
+ SetIsCursorVisible(bShow);
+}
+
+
+void SmGraphicWindow::SetCursor(const SmNode *pNode)
+{
+ const SmNode *pTree = pViewShell->GetDoc()->GetFormulaTree();
+
+ // get appropriate rectangle
+ Point aOffset (pNode->GetTopLeft() - pTree->GetTopLeft()),
+ aTLPos (GetFormulaDrawPos() + aOffset);
+ aTLPos.X() -= pNode->GetItalicLeftSpace();
+ Size aSize (pNode->GetItalicSize());
+ Point aBRPos (aTLPos.X() + aSize.Width(), aTLPos.Y() + aSize.Height());
+
+ SetCursor(Rectangle(aTLPos, aSize));
+}
+
+void SmGraphicWindow::SetCursor(const Rectangle &rRect)
+ // sets cursor to new position (rectangle) 'rRect'.
+ // The old cursor will be removed, and the new one will be shown if
+ // that is activated in the ConfigItem
+{
+ SmModule *pp = SM_MOD1();
+
+ if (IsCursorVisible())
+ ShowCursor(FALSE); // clean up remainings of old cursor
+ aCursorRect = rRect;
+ if (pp->GetConfig()->IsShowFormulaCursor())
+ ShowCursor(TRUE); // draw new cursor
+}
+
+const SmNode * SmGraphicWindow::SetCursorPos(USHORT nRow, USHORT nCol)
+ // looks for a VISIBLE node in the formula tree with it's token at
+ // (or around) the position 'nRow', 'nCol' in the edit window
+ // (row and column numbering starts with 1 there!).
+ // If there is such a node the formula-cursor is set to cover that nodes
+ // rectangle. If not the formula-cursor will be hidden.
+ // In any case the search result is being returned.
+{
+ // find visible node with token at nRow, nCol
+ const SmNode *pTree = pViewShell->GetDoc()->GetFormulaTree(),
+ *pNode = 0;
+ if (pTree)
+ pNode = pTree->FindTokenAt(nRow, nCol);
+
+ if (pNode)
+ SetCursor(pNode);
+ else
+ ShowCursor(FALSE);
+
+ return pNode;
+}
+
+
+void SmGraphicWindow::Paint(const Rectangle&)
+{
+ DBG_ASSERT(pViewShell, "Sm : NULL pointer");
+
+ SmDocShell &rDoc = *pViewShell->GetDoc();
+ Point aPoint;
+
+ rDoc.Draw(*this, aPoint); //! modifies aPoint to be the topleft
+ //! corner of the formula
+ SetFormulaDrawPos(aPoint);
+
+ SetIsCursorVisible(FALSE); // (old) cursor must be drawn again
+
+ const SmEditWindow *pEdit = pViewShell->GetEditWindow();
+ if (pEdit)
+ { // get new position for formula-cursor (for possible altered formula)
+ USHORT nRow, nCol;
+ SmGetLeftSelectionPart(pEdit->GetSelection(), nRow, nCol);
+ nRow++;
+ nCol++;
+ const SmNode *pFound = SetCursorPos(nRow, nCol);
+
+ SmModule *pp = SM_MOD1();
+ if (pFound && pp->GetConfig()->IsShowFormulaCursor())
+ ShowCursor(TRUE);
+ }
+}
+
+
+void SmGraphicWindow::SetTotalSize ()
+{
+ SmDocShell &rDoc = *pViewShell->GetDoc();
+ const Size aTmp( PixelToLogic( LogicToPixel( rDoc.GetSize() )));
+ if ( aTmp != ScrollableWindow::GetTotalSize() )
+ ScrollableWindow::SetTotalSize( aTmp );
+}
+
+
+void SmGraphicWindow::KeyInput(const KeyEvent& rKEvt)
+{
+ if (! (SfxViewShell::Current() &&
+ SfxViewShell::Current()->KeyInput(rKEvt)))
+ ScrollableWindow::KeyInput(rKEvt);
+}
+
+
+void SmGraphicWindow::Command(const CommandEvent& rCEvt)
+{
+ BOOL bCallBase = TRUE;
+ if ( !pViewShell->GetDoc()->GetProtocol().IsInPlaceActive() )
+ {
+ switch ( rCEvt.GetCommand() )
+ {
+ case COMMAND_CONTEXTMENU:
+ {
+ GetParent()->ToTop();
+ PopupMenu* pPopupMenu = new PopupMenu(SmResId(RID_VIEWMENU));
+ pPopupMenu->SetSelectHdl(LINK(this, SmGraphicWindow, MenuSelectHdl));
+ pPopupMenu->Execute( this,
+ OutputToScreenPixel(rCEvt.GetMousePosPixel()) );
+ delete pPopupMenu;
+ bCallBase = FALSE;
+ }
+ break;
+
+ case COMMAND_WHEEL:
+ {
+ const CommandWheelData* pWData = rCEvt.GetWheelData();
+ if ( pWData && COMMAND_WHEEL_ZOOM == pWData->GetMode() )
+ {
+ USHORT nZoom = GetZoom();
+ if( 0L > pWData->GetDelta() )
+ nZoom -= 10;
+ else
+ nZoom += 10;
+ SetZoom( nZoom );
+ bCallBase = FALSE;
+ }
+ }
+ break;
+ }
+ }
+ if ( bCallBase )
+ ScrollableWindow::Command (rCEvt);
+}
+
+
+IMPL_LINK_INLINE_START( SmGraphicWindow, MenuSelectHdl, Menu *, pMenu )
+{
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute( pMenu->GetCurItemId() );
+ return 0;
+}
+IMPL_LINK_INLINE_END( SmGraphicWindow, MenuSelectHdl, Menu *, pMenu )
+
+
+void SmGraphicWindow::SetZoom(USHORT Factor)
+{
+ nZoom = Min(Max((USHORT) Factor, (USHORT) MINZOOM), (USHORT) MAXZOOM);
+ Fraction aFraction (nZoom, 100);
+ SetMapMode( MapMode(MAP_100TH_MM, Point(), aFraction, aFraction) );
+ SetTotalSize();
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetBindings().Invalidate(SID_ATTR_ZOOM);
+ Invalidate();
+}
+
+
+void SmGraphicWindow::ZoomToFitInWindow()
+{
+ SmDocShell &rDoc = *pViewShell->GetDoc();
+
+ // set defined mapmode before calling 'LogicToPixel' below
+ SetMapMode(MapMode(MAP_100TH_MM));
+
+ Size aSize (LogicToPixel(rDoc.GetSize()));
+ Size aWindowSize (GetSizePixel());
+
+ if (aSize.Width() > 0 && aSize.Height() > 0)
+ SetZoom (Min ((85 * aWindowSize.Width()) / aSize.Width(),
+ (85 * aWindowSize.Height()) / aSize.Height()));
+}
+
+
+/**************************************************************************/
+
+
+SmGraphicController::SmGraphicController(SmGraphicWindow &rSmGraphic,
+ USHORT nId,
+ SfxBindings &rBindings) :
+ rGraphic(rSmGraphic),
+ SfxControllerItem(nId, rBindings)
+{
+}
+
+
+void SmGraphicController::StateChanged(USHORT nSID, SfxItemState eState, const SfxPoolItem* pState)
+{
+ rGraphic.SetTotalSize();
+ rGraphic.Invalidate();
+ SfxControllerItem::StateChanged (nSID, eState, pState);
+}
+
+
+/**************************************************************************/
+
+
+SmEditController::SmEditController(SmEditWindow &rSmEdit,
+ USHORT nId,
+ SfxBindings &rBindings) :
+ rEdit(rSmEdit),
+ SfxControllerItem(nId, rBindings)
+{
+}
+
+
+void SmEditController::StateChanged(USHORT nSID, SfxItemState eState, const SfxPoolItem* pState)
+{
+ const SfxStringItem *pItem = PTR_CAST(SfxStringItem, pState);
+
+ if ((pItem != NULL) && (rEdit.GetText() != pItem->GetValue()))
+ rEdit.SetText(pItem->GetValue());
+ SfxControllerItem::StateChanged (nSID, eState, pState);
+}
+
+
+/**************************************************************************/
+
+
+SmCmdBoxWindow::~SmCmdBoxWindow ()
+{
+ aGrabTimer.Stop ();
+}
+
+
+void SmCmdBoxWindow::Resize()
+{
+ Rectangle aRect = Rectangle(Point(0, 0), GetOutputSizePixel());
+
+ if (! IsFloatingMode())
+ {
+ switch (GetAlignment())
+ {
+ case SFX_ALIGN_TOP: aRect.Bottom()--; break;
+ case SFX_ALIGN_BOTTOM: aRect.Top()++; break;
+ case SFX_ALIGN_LEFT: aRect.Right()--; break;
+ case SFX_ALIGN_RIGHT: aRect.Left()++; break;
+ }
+ }
+
+ DecorationView aView(this);
+ aRect.Left() += 8; aRect.Top() += 8;
+ aRect.Right()-= 8; aRect.Bottom()-= 8;
+ aRect = aView.DrawFrame( aRect, FRAME_DRAW_DOUBLEIN );
+
+ aEdit.SetPosSizePixel(aRect.TopLeft(), aRect.GetSize());
+ SfxDockingWindow::Resize();
+ Invalidate();
+}
+
+
+void SmCmdBoxWindow::Paint(const Rectangle& rRect)
+{
+ Rectangle aRect = Rectangle(Point(0, 0), GetOutputSizePixel());
+ DecorationView aView(this);
+
+ if (! IsFloatingMode())
+ {
+ Point aFrom, aTo;
+ switch (GetAlignment())
+ {
+ case SFX_ALIGN_TOP:
+ aFrom = aRect.BottomLeft(); aTo = aRect.BottomRight();
+ aRect.Bottom()--;
+ break;
+
+ case SFX_ALIGN_BOTTOM:
+ aFrom = aRect.TopLeft(); aTo = aRect.TopRight();
+ aRect.Top()++;
+ break;
+
+ case SFX_ALIGN_LEFT:
+ aFrom = aRect.TopRight(); aTo = aRect.BottomRight();
+ aRect.Right()--;
+ break;
+
+ case SFX_ALIGN_RIGHT:
+ aFrom = aRect.TopLeft(); aTo = aRect.BottomLeft();
+ aRect.Left()++;
+ break;
+ }
+ DrawLine( aFrom, aTo );
+ aView.DrawFrame(aRect, FRAME_DRAW_OUT);
+ }
+ aRect.Left() += 8; aRect.Top() += 8;
+ aRect.Right()-= 8; aRect.Bottom()-= 8;
+ aRect = aView.DrawFrame( aRect, FRAME_DRAW_DOUBLEIN );
+}
+
+
+Size SmCmdBoxWindow::CalcDockingSize(SfxChildAlignment eAlign)
+{
+ switch (eAlign)
+ {
+ case SFX_ALIGN_LEFT:
+ case SFX_ALIGN_RIGHT:
+ return Size();
+/*
+ case SFX_ALIGN_TOP:
+ case SFX_ALIGN_BOTTOM:
+*/
+ }
+ return SfxDockingWindow::CalcDockingSize(eAlign);
+}
+
+
+IMPL_LINK(SmCmdBoxWindow, UpdateTimeoutHdl, Timer *, pTimer)
+{
+ aGrabTimer.Stop ();
+ Grab();
+ return 0;
+}
+
+
+void SmCmdBoxWindow::Grab ()
+{
+ GrabFocus ();
+ aEdit.GrabFocus ();
+}
+
+
+SmCmdBoxWindow::SmCmdBoxWindow(SfxBindings *pBindings, SfxChildWindow *pChildWindow,
+ Window *pParent) :
+ SfxDockingWindow(pBindings, pChildWindow, pParent, SmResId(RID_CMDBOXWINDOW)),
+ aEdit(this),
+ aController(aEdit, SID_TEXT, *pBindings)
+{
+ Hide ();
+ aGrabTimer.SetTimeout (1000);
+ aGrabTimer.SetTimeoutHdl (LINK (this, SmCmdBoxWindow, UpdateTimeoutHdl));
+ aGrabTimer.Start ();
+}
+
+
+SfxChildAlignment SmCmdBoxWindow::CheckAlignment(SfxChildAlignment eActual,
+ SfxChildAlignment eWish)
+{
+ switch (eWish)
+ {
+ case SFX_ALIGN_TOP:
+ case SFX_ALIGN_BOTTOM:
+ case SFX_ALIGN_NOALIGNMENT:
+ return eWish;
+ }
+
+ return eActual;
+}
+
+
+void SmCmdBoxWindow::StateChanged( StateChangedType nStateChange )
+{
+ if (STATE_CHANGE_INITSHOW == nStateChange)
+ AdjustPosition();
+ else
+ SfxDockingWindow::StateChanged( nStateChange );
+}
+
+
+void SmCmdBoxWindow::AdjustPosition()
+{
+ Point aPt;
+ const Rectangle aRect( aPt, GetParent()->GetOutputSizePixel() );
+ Point aTopLeft( Point( aRect.Left(),
+ aRect.Bottom() - GetSizePixel().Height() ) );
+ Point aPos( GetParent()->OutputToScreenPixel( aTopLeft ) );
+ if (aPos.X() < 0)
+ aPos.X() = 0;
+ if (aPos.Y() < 0)
+ aPos.Y() = 0;
+ SetPosPixel( aPos );
+}
+
+
+void SmCmdBoxWindow::ShowWindows ()
+{
+ Show ();
+ Resize();
+ aEdit.Show ();
+}
+
+
+void SmCmdBoxWindow::ToggleFloatingMode()
+{
+ SfxDockingWindow::ToggleFloatingMode();
+
+ if (GetFloatingWindow())
+ GetFloatingWindow()->SetMinOutputSizePixel(Size (200, 50));
+}
+
+
+/**************************************************************************/
+
+
+SFX_IMPL_DOCKINGWINDOW(SmCmdBoxWrapper, SID_CMDBOXWINDOW);
+
+SmCmdBoxWrapper::SmCmdBoxWrapper(Window *pParentWindow, USHORT nId,
+ SfxBindings *pBindings,
+ SfxChildWinInfo *pInfo) :
+ SfxChildWindow(pParentWindow, nId)
+{
+ pWindow = new SmCmdBoxWindow(pBindings, this, pParentWindow);
+
+ if ( !pInfo->aPos.X() || !pInfo->aPos.Y() )
+ {
+ ((SfxDockingWindow *)pWindow)->Initialize(pInfo);
+ ((SmCmdBoxWindow *)pWindow)->AdjustPosition();
+ }
+ else
+ {
+ pWindow->SetPosPixel(pInfo->aPos);
+ ((SfxDockingWindow *)pWindow)->Initialize(pInfo);
+ }
+
+ ((SmCmdBoxWindow *)pWindow)->ShowWindows ();
+}
+
+
+void SmCmdBoxWrapper::Grab ()
+{
+ ((SmCmdBoxWindow *)pWindow)->Grab ();
+}
+
+
+/**************************************************************************/
+
+
+TYPEINIT1( SmViewShell, SfxViewShell );
+
+SFX_IMPL_INTERFACE(SmViewShell, SfxViewShell, SmResId(0))
+{
+ SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_TOOLS | SFX_VISIBILITY_STANDARD |
+ SFX_VISIBILITY_FULLSCREEN | SFX_VISIBILITY_SERVER,
+ SmResId(RID_MATH_TOOLBOX ));
+ //Dummy-Objectbar, damit es bei aktivieren nicht staendig zuppelt.
+// Wegen #58705# entfernt (RID wurde nirgends verwendet)
+// SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_OBJECT | SFX_VISIBILITY_SERVER,
+// SmResId(RID_DRAW_OBJECTBAR) );
+
+ SFX_CHILDWINDOW_REGISTRATION(SmToolBoxWrapper::GetChildWindowId());
+ SFX_CHILDWINDOW_REGISTRATION(SmCmdBoxWrapper::GetChildWindowId());
+}
+
+
+SFX_IMPL_VIEWFACTORY(SmViewShell, SmResId(RID_VIEWNAME))
+{
+ SFX_VIEW_REGISTRATION(SmDocShell);
+}
+
+
+Size SmViewShell::GetOptimalSizePixel() const
+{
+ return aGraphic.LogicToPixel( ((SmViewShell*)this)->GetDoc()->GetSize() );
+}
+
+
+void SmViewShell::AdjustPosSizePixel(const Point &rPos, const Size &rSize)
+{
+ aGraphic.SetPosSizePixel(rPos, rSize);
+}
+
+
+void SmViewShell::InnerResizePixel(const Point &rOfs, const Size &rSize)
+{
+ //Ein bischen muessen wir schon raten was die Basisklasse tun wird.
+ //Die Scrollbars muessen einkalkuliert werden damit sie Aussen sitzen,
+ //denn genau dafuer steht ja das InnerResize
+ const Size aDocSz = aGraphic.LogicToPixel( GetDoc()->GetSize() );
+ Size aSize( rSize );
+
+ SvBorder aBorder;
+
+
+ if ( aSize.Width() < aDocSz.Width() )
+ {
+ if ( 1 == (aDocSz.Width() - aSize.Width()) )
+ {
+ //Einen Pixel daneben, kann ja mal passieren.
+ aSize.Width() += 1;
+ }
+ else
+ {
+ aBorder.Bottom() = Application::GetSettings().GetStyleSettings().GetScrollBarSize();
+ aSize.Height() += aBorder.Bottom();
+ }
+ }
+ if ( aSize.Height() < aDocSz.Height() )
+ {
+ if ( 1 == (aDocSz.Height() - aSize.Height()) )
+ {
+ aSize.Height() += 1;
+ }
+ else
+ {
+ aBorder.Right() = Application::GetSettings().GetStyleSettings().GetScrollBarSize();
+ aSize.Width() += aBorder.Right();
+ }
+ }
+ SetBorderPixel( aBorder );
+ GetGraphicWindow().SetPosSizePixel(rOfs, aSize);
+ GetGraphicWindow().SetTotalSize();
+}
+
+
+void SmViewShell::OuterResizePixel(const Point &rOfs, const Size &rSize)
+{
+ GetGraphicWindow().SetPosSizePixel(rOfs, rSize);
+ GetGraphicWindow().Update();
+}
+
+
+void SmViewShell::QueryObjAreaPixel( Rectangle& rRect ) const
+{
+ rRect.SetSize( GetGraphicWindow().GetSizePixel() );
+}
+
+
+void SmViewShell::SetZoomFactor( const Fraction &rX, const Fraction &rY )
+{
+ const Fraction &rFrac = rX < rY ? rX : rY;
+ GetGraphicWindow().SetZoom( (USHORT) long(rFrac * Fraction( 100, 1 )) );
+
+ //Um Rundungsfehler zu minimieren lassen wir von der Basisklasse ggf.
+ //auch die krummen Werte einstellen
+ SfxViewShell::SetZoomFactor( rX, rY );
+}
+
+
+Size SmViewShell::GetTextLineSize(OutputDevice& rDevice, const String& rLine)
+{
+ String aText;
+ Size aSize(rDevice.GetTextWidth(rLine), rDevice.GetTextHeight());
+ USHORT nTabs = rLine.GetTokenCount('\t');
+
+ if (nTabs > 0)
+ {
+ long TabPos = rDevice.GetTextWidth('n') * 8;
+
+ aSize.Width() = 0;
+
+ for (USHORT i = 0; i < nTabs; i++)
+ {
+ if (i > 0)
+ aSize.Width() = ((aSize.Width() / TabPos) + 1) * TabPos;
+
+ aText = rLine.GetToken(i, '\t');
+ aText.EraseLeadingChars('\t');
+ aText.EraseTrailingChars('\t');
+ aSize.Width() += rDevice.GetTextWidth(aText);
+ }
+ }
+
+ return aSize;
+}
+
+
+Size SmViewShell::GetTextSize(OutputDevice& rDevice, const String& rText, long MaxWidth)
+{
+ Size aSize;
+ String aLine;
+ Size TextSize;
+ String aText;
+ USHORT nLines = rText.GetTokenCount('\n');
+
+ for (USHORT i = 0; i < nLines; i++)
+ {
+ aLine = rText.GetToken(i, '\n');
+ aLine.EraseAllChars('\r');
+ aLine.EraseLeadingChars('\n');
+ aLine.EraseTrailingChars('\n');
+
+ aSize = GetTextLineSize(rDevice, aLine);
+
+ if (aSize.Width() > MaxWidth)
+ {
+ do
+ {
+ xub_StrLen m = aLine.Len();
+ xub_StrLen nLen = m;
+
+ for (xub_StrLen n = 0; n < nLen; n++)
+ {
+ sal_Unicode cLineChar = aLine.GetChar(n);
+ if ((cLineChar == ' ') || (cLineChar == '\t'))
+ {
+ aText = aLine.Copy(0, n);
+ if (GetTextLineSize(rDevice, aText).Width() < MaxWidth)
+ m = n;
+ else
+ break;
+ }
+ }
+
+ aText = aLine.Copy(0, m);
+ aLine.Erase(0, m);
+ aSize = GetTextLineSize(rDevice, aText);
+ TextSize.Height() += aSize.Height();
+ TextSize.Width() = Max(TextSize.Width(), Min(aSize.Width(), MaxWidth));
+
+ aLine.EraseLeadingChars(' ');
+ aLine.EraseLeadingChars('\t');
+ aLine.EraseLeadingChars(' ');
+ }
+ while (aLine.Len() > 0);
+ }
+ else
+ {
+ TextSize.Height() += aSize.Height();
+ TextSize.Width() = Max(TextSize.Width(), aSize.Width());
+ }
+ }
+
+ return TextSize;
+}
+
+
+void SmViewShell::DrawTextLine(OutputDevice& rDevice, const Point& rPosition, const String& rLine)
+{
+ String aText;
+ Point aPoint (rPosition);
+ USHORT nTabs = rLine.GetTokenCount('\t');
+
+ if (nTabs > 0)
+ {
+ long TabPos = rDevice.GetTextWidth('n') * 8;
+
+ for (USHORT i = 0; i < nTabs; i++)
+ {
+ if (i > 0)
+ aPoint.X() = ((aPoint.X() / TabPos) + 1) * TabPos;
+
+ aText = rLine.GetToken(i, '\t');
+ aText.EraseLeadingChars('\t');
+ aText.EraseTrailingChars('\t');
+ rDevice.DrawText(aPoint, aText);
+ aPoint.X() += rDevice.GetTextWidth(aText);
+ }
+ }
+ else
+ rDevice.DrawText(aPoint, rLine);
+}
+
+
+void SmViewShell::DrawText(OutputDevice& rDevice, const Point& rPosition, const String& rText, USHORT MaxWidth)
+{
+ USHORT nLines = rText.GetTokenCount('\n');
+ Point aPoint (rPosition);
+ Size aSize;
+ String aLine;
+ String aText;
+
+ for (USHORT i = 0; i < nLines; i++)
+ {
+ aLine = rText.GetToken(i, '\n');
+ aLine.EraseAllChars('\r');
+ aLine.EraseLeadingChars('\n');
+ aLine.EraseTrailingChars('\n');
+ aSize = GetTextLineSize(rDevice, aLine);
+ if (aSize.Width() > MaxWidth)
+ {
+ do
+ {
+ xub_StrLen m = aLine.Len();
+ xub_StrLen nLen = m;
+
+ for (xub_StrLen n = 0; n < nLen; n++)
+ {
+ sal_Unicode cLineChar = aLine.GetChar(n);
+ if ((cLineChar == ' ') || (cLineChar == '\t'))
+ {
+ aText = aLine.Copy(0, n);
+ if (GetTextLineSize(rDevice, aText).Width() < MaxWidth)
+ m = n;
+ else
+ break;
+ }
+ }
+ aText = aLine.Copy(0, m);
+ aLine.Erase(0, m);
+
+ DrawTextLine(rDevice, aPoint, aText);
+ aPoint.Y() += aSize.Height();
+
+ aLine.EraseLeadingChars(' ');
+ aLine.EraseLeadingChars('\t');
+ aLine.EraseLeadingChars(' ');
+ }
+ while (GetTextLineSize(rDevice, aLine).Width() > MaxWidth);
+
+ // print the remaining text
+ if (aLine.Len() > 0)
+ {
+ DrawTextLine(rDevice, aPoint, aLine);
+ aPoint.Y() += aSize.Height();
+ }
+ }
+ else
+ {
+ DrawTextLine(rDevice, aPoint, aLine);
+ aPoint.Y() += aSize.Height();
+ }
+ }
+}
+
+
+USHORT SmViewShell::Print(SfxProgress &rProgress, PrintDialog *pPrintDialog)
+{
+ MapMode OutputMapMode;
+ SmPrinterAccess aPrinterAccess( *GetDoc() );
+ Printer *pPrinter = aPrinterAccess.GetPrinter();
+ pPrinter->Push();
+
+ Point aZeroPoint;
+
+ SfxViewShell::Print (rProgress, pPrintDialog);
+
+ pPrinter->StartPage();
+ pPrinter->SetLineColor( Color(COL_BLACK) );
+
+ Rectangle OutputRect (aZeroPoint, pPrinter->GetOutputSize());
+
+ // set minimum top and bottom border
+ if (pPrinter->GetPageOffset().Y() < 2000)
+ OutputRect.Top() += 2000 - pPrinter->GetPageOffset().Y();
+ if ((pPrinter->GetPaperSize().Height() - (pPrinter->GetPageOffset().Y() + OutputRect.Bottom())) < 2000)
+ OutputRect.Bottom() -= 2000 - (pPrinter->GetPaperSize().Height() -
+ (pPrinter->GetPageOffset().Y() + OutputRect.Bottom()));
+
+ // set minimum left and right border
+ if (pPrinter->GetPageOffset().X() < 2500)
+ OutputRect.Left() += 2500 - pPrinter->GetPageOffset().X();
+ if ((pPrinter->GetPaperSize().Width() - (pPrinter->GetPageOffset().X() + OutputRect.Right())) < 1500)
+ OutputRect.Right() -= 1500 - (pPrinter->GetPaperSize().Width() -
+ (pPrinter->GetPageOffset().X() + OutputRect.Right()));
+
+ // output text on top
+ SmModule *pp = SM_MOD1();
+
+ if (pp->GetConfig()->IsPrintTitle())
+ {
+ Size aSize600 (0, 600);
+ Size aSize650 (0, 650);
+ Font aFont(FAMILY_DONTKNOW, aSize600);
+
+ aFont.SetAlign(ALIGN_TOP);
+ aFont.SetWeight(WEIGHT_BOLD);
+ aFont.SetSize(aSize650);
+ pPrinter->SetFont(aFont);
+
+ Size aTitleSize (GetTextSize(*pPrinter, GetDoc()->GetTitle(), OutputRect.GetWidth() - 200));
+
+ aFont.SetWeight(WEIGHT_NORMAL);
+ aFont.SetSize(aSize600);
+ pPrinter->SetFont(aFont);
+
+ Size aDescSize (GetTextSize(*pPrinter, GetDoc()->GetComment(), OutputRect.GetWidth() - 200));
+
+ // output rectangle
+ SmModule *pp = SM_MOD1();
+
+ if (pp->GetConfig()->IsPrintFrame())
+ pPrinter->DrawRect(Rectangle(OutputRect.TopLeft(),
+ Size(OutputRect.GetWidth(), 100 + aTitleSize.Height() + 200 + aDescSize.Height() + 100)));
+ OutputRect.Top() += 200;
+
+ // output title
+ aFont.SetWeight(WEIGHT_BOLD);
+ aFont.SetSize(aSize650);
+ pPrinter->SetFont(aFont);
+ DrawText(*pPrinter, Point (OutputRect.Left() + (OutputRect.GetWidth() - aTitleSize.Width()) / 2,
+ OutputRect.Top()), GetDoc()->GetTitle(), OutputRect.GetWidth() - 200);
+ OutputRect.Top() += aTitleSize.Height() + 200;
+
+ // output description
+ aFont.SetWeight(WEIGHT_NORMAL);
+ aFont.SetSize(aSize600);
+ pPrinter->SetFont(aFont);
+ DrawText(*pPrinter, Point (OutputRect.Left() + (OutputRect.GetWidth() - aDescSize.Width()) / 2,
+ OutputRect.Top()), GetDoc()->GetComment(), OutputRect.GetWidth() - 200);
+ OutputRect.Top() += aDescSize.Height() + 300;
+ }
+
+ // output text on bottom
+ if (pp->GetConfig()->IsPrintText())
+ {
+// Font aFont(FAMILY_DONTKNOW, Size(0, 600));
+ Font aFont;
+
+ aFont.SetAlign(ALIGN_TOP);
+
+ // get size
+ pPrinter->SetFont(aFont);
+
+ Size aSize (GetTextSize(*pPrinter, GetDoc()->GetText(), OutputRect.GetWidth() - 200));
+
+ OutputRect.Bottom() -= aSize.Height() + 600;
+
+ // output rectangle
+ SmModule *pp = SM_MOD1();
+
+ if (pp->GetConfig()->IsPrintFrame())
+ pPrinter->DrawRect(Rectangle(OutputRect.BottomLeft(),
+ Size(OutputRect.GetWidth(), 200 + aSize.Height() + 200)));
+
+ DrawText(*pPrinter, Point (OutputRect.Left() + (OutputRect.GetWidth() - aSize.Width()) / 2,
+ OutputRect.Bottom() + 300), GetDoc()->GetText(), OutputRect.GetWidth() - 200);
+ OutputRect.Bottom() -= 200;
+ }
+
+ if (pp->GetConfig()->IsPrintFrame())
+ pPrinter->DrawRect(OutputRect);
+
+ OutputRect.Top() += 100;
+ OutputRect.Left() += 100;
+ OutputRect.Bottom() -= 100;
+ OutputRect.Right() -= 100;
+
+ Size aSize (GetDoc()->GetSize());
+
+ switch (pp->GetConfig()->GetPrintSize())
+ {
+ case PRINT_SIZE_NORMAL:
+ OutputMapMode = MapMode(MAP_100TH_MM);
+ break;
+
+ case PRINT_SIZE_SCALED:
+ if ((aSize.Width() > 0) && (aSize.Height() > 0))
+ {
+ Size OutputSize (pPrinter->LogicToPixel(Size(OutputRect.GetWidth(),
+ OutputRect.GetHeight()), MapMode(MAP_100TH_MM)));
+ Size GraphicSize (pPrinter->LogicToPixel(aSize, MapMode(MAP_100TH_MM)));
+ USHORT nZ = (USHORT) Min((long)Fraction(OutputSize.Width() * 100L, GraphicSize.Width()),
+ (long)Fraction(OutputSize.Height() * 100L, GraphicSize.Height()));
+ Fraction aFraction ((USHORT) Max ((USHORT) MINZOOM, Min((USHORT) MAXZOOM, (USHORT) (nZ - 10))), (USHORT) 100);
+
+ OutputMapMode = MapMode(MAP_100TH_MM, aZeroPoint, aFraction, aFraction);
+ }
+ else
+ OutputMapMode = MapMode(MAP_100TH_MM);
+ break;
+
+ case PRINT_SIZE_ZOOMED:
+ {
+ SmModule *pp = SM_MOD1();
+ Fraction aFraction (pp->GetConfig()->GetPrintZoom(), 100);
+
+ OutputMapMode = MapMode(MAP_100TH_MM, aZeroPoint, aFraction, aFraction);
+ break;
+ }
+ }
+
+ aSize = pPrinter->PixelToLogic(pPrinter->LogicToPixel(aSize, OutputMapMode),
+ MapMode(MAP_100TH_MM));
+
+ Point Position (OutputRect.Left() + (OutputRect.GetWidth() - aSize.Width()) / 2,
+ OutputRect.Top() + (OutputRect.GetHeight() - aSize.Height()) / 2);
+
+ Position = pPrinter->PixelToLogic(pPrinter->LogicToPixel(Position, MapMode(MAP_100TH_MM)),
+ OutputMapMode);
+ OutputRect = pPrinter->PixelToLogic(pPrinter->LogicToPixel(OutputRect, MapMode(MAP_100TH_MM)),
+ OutputMapMode);
+
+ pPrinter->SetMapMode(OutputMapMode);
+ pPrinter->SetClipRegion(Region(OutputRect));
+ GetDoc()->Draw(*pPrinter, Position);
+ pPrinter->SetClipRegion();
+ pPrinter->EndPage();
+ pPrinter->Pop();
+
+ return 0;
+}
+
+
+SfxPrinter* SmViewShell::GetPrinter(BOOL bCreate)
+{
+ SmDocShell *pDoc = GetDoc();
+ if ( pDoc->HasPrinter() || bCreate )
+ return pDoc->GetPrinter();
+ return 0;
+}
+
+
+USHORT SmViewShell::SetPrinter(SfxPrinter *pNewPrinter, USHORT nDiffFlags)
+{
+ if ((nDiffFlags & SFX_PRINTER_PRINTER) == SFX_PRINTER_PRINTER)
+ GetDoc()->SetPrinter( pNewPrinter );
+
+ if ((nDiffFlags & SFX_PRINTER_OPTIONS) == SFX_PRINTER_OPTIONS)
+ {
+ SmModule *pp = SM_MOD1();
+ pp->GetConfig()->ItemSetToConfig(pNewPrinter->GetOptions());
+ }
+ return 0;
+}
+
+
+SfxTabPage* SmViewShell::CreatePrintOptionsPage(Window *pParent,
+ const SfxItemSet &rOptions)
+{
+ return SmPrintOptionsTabPage::Create(pParent, rOptions);
+}
+
+
+SmEditWindow *SmViewShell::GetEditWindow()
+{
+ SmCmdBoxWrapper *pWrapper = (SmCmdBoxWrapper *) GetViewFrame()->
+ GetChildWindow( SmCmdBoxWrapper::GetChildWindowId() );
+
+ if (pWrapper != NULL)
+ {
+ DBG_ASSERT(pWrapper->GetWindow() != NULL, "pSmEditWindow == NULL");
+
+ return pWrapper->GetEditWindow();
+ }
+
+ return NULL;
+}
+
+
+void SmViewShell::SetStatusText(const String& Text)
+{
+ StatusText = Text;
+ GetViewFrame()->GetBindings().Invalidate(SID_TEXTSTATUS);
+}
+
+
+void SmViewShell::ShowError( const SmErrorDesc *pErrorDesc )
+{
+ DBG_ASSERT(GetDoc(), "Sm : Document missing");
+ if (pErrorDesc || 0 != (pErrorDesc = GetDoc()->GetParser().GetError(0)) )
+ {
+ SetStatusText( pErrorDesc->Text );
+ GetEditWindow()->MarkError( Point( pErrorDesc->pNode->GetColumn(),
+ pErrorDesc->pNode->GetRow()));
+ }
+}
+
+
+void SmViewShell::NextError()
+{
+ DBG_ASSERT(GetDoc(), "Sm : Document missing");
+ const SmErrorDesc *pErrorDesc = GetDoc()->GetParser().NextError();
+
+ if (pErrorDesc)
+ ShowError( pErrorDesc );
+}
+
+
+void SmViewShell::PrevError()
+{
+ DBG_ASSERT(GetDoc(), "Sm : Document missing");
+ const SmErrorDesc *pErrorDesc = GetDoc()->GetParser().PrevError();
+
+ if (pErrorDesc)
+ ShowError( pErrorDesc );
+}
+
+
+void SmViewShell::Execute(SfxRequest& rReq)
+{
+ SmEditWindow *pWin = GetEditWindow();
+
+ switch (rReq.GetSlot())
+ {
+ case SID_FORMULACURSOR:
+ {
+ SmModule *pp = SM_MOD1();
+
+ const SfxItemSet *pArgs = rReq.GetArgs();
+ const SfxPoolItem *pItem;
+
+ BOOL bVal;
+ if ( pArgs &&
+ SFX_ITEM_SET == pArgs->GetItemState( SID_FORMULACURSOR, FALSE, &pItem))
+ bVal = ((SfxBoolItem *) pItem)->GetValue();
+ else
+ bVal = !pp->GetConfig()->IsShowFormulaCursor();
+
+ pp->GetConfig()->SetShowFormulaCursor(bVal);
+ GetGraphicWindow().ShowCursor(bVal);
+ break;
+ }
+ case SID_DRAW:
+ if (pWin)
+ {
+ GetDoc()->SetText( pWin->GetText() );
+ SetStatusText(String());
+ ShowError( 0 );
+ GetDoc()->Resize();
+ }
+ break;
+
+ case SID_ADJUST:
+ case SID_FITINWINDOW:
+ aGraphic.ZoomToFitInWindow();
+ break;
+
+ case SID_VIEW050:
+ aGraphic.SetZoom(50);
+ break;
+
+ case SID_VIEW100:
+ aGraphic.SetZoom(100);
+ break;
+
+ case SID_VIEW200:
+ aGraphic.SetZoom(200);
+ break;
+
+ case SID_ZOOMIN:
+ aGraphic.SetZoom(aGraphic.GetZoom() + 25);
+ break;
+
+ case SID_ZOOMOUT:
+ DBG_ASSERT(aGraphic.GetZoom() >= 25, "Sm: falsches USHORT Argument");
+ aGraphic.SetZoom(aGraphic.GetZoom() - 25);
+ break;
+
+ case SID_CUT:
+ if (pWin)
+ pWin->Cut();
+ break;
+
+ case SID_COPY:
+ if (pWin)
+ {
+ if (pWin->IsAllSelected())
+ {
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_COPYOBJECT, SFX_CALLMODE_STANDARD,
+ new SfxVoidItem(SID_COPYOBJECT), 0L);
+ }
+ else
+ pWin->Copy();
+ }
+ break;
+
+ case SID_PASTE:
+ if (pWin && Clipboard::HasFormat(FORMAT_STRING))
+ pWin->Paste();
+ else
+ {
+ SmViewShell *pViewSh = SmGetActiveView();
+ if (pViewSh)
+ pViewSh->GetViewFrame()->GetDispatcher()->Execute(
+ SID_PASTEOBJECT, SFX_CALLMODE_STANDARD,
+ new SfxVoidItem(SID_PASTEOBJECT), 0L);
+ }
+ break;
+
+ case SID_DELETE:
+ if (pWin)
+ pWin->Delete();
+ break;
+
+ case SID_SELECT:
+ if (pWin)
+ pWin->SelectAll();
+ break;
+
+ case SID_INSERTCOMMAND:
+ {
+ const SfxInt16Item& rItem =
+ (const SfxInt16Item&)rReq.GetArgs()->Get(SID_INSERTCOMMAND);
+
+ if (pWin)
+ pWin->InsertCommand(rItem.GetValue());
+ break;
+ }
+
+ case SID_INSERTTEXT:
+ {
+ const SfxStringItem& rItem =
+ (const SfxStringItem&)rReq.GetArgs()->Get(SID_INSERTTEXT);
+
+ if (pWin)
+ pWin->InsertText(rItem.GetValue());
+ break;
+ }
+
+ case SID_NEXTERR:
+ NextError();
+ if (pWin)
+ pWin->GrabFocus();
+ break;
+
+ case SID_PREVERR:
+ PrevError();
+ if (pWin)
+ pWin->GrabFocus();
+ break;
+
+ case SID_NEXTMARK:
+ if (pWin)
+ {
+ pWin->SelNextMark();
+ pWin->GrabFocus();
+ }
+ break;
+
+ case SID_PREVMARK:
+ if (pWin)
+ {
+ pWin->SelPrevMark();
+ pWin->GrabFocus();
+ }
+ break;
+
+ case SID_TEXTSTATUS:
+ {
+ if (rReq.GetArgs() != NULL)
+ {
+ const SfxStringItem& rItem =
+ (const SfxStringItem&)rReq.GetArgs()->Get(SID_TEXTSTATUS);
+
+ SetStatusText(rItem.GetValue());
+ }
+
+ break;
+ }
+
+ case SID_GETEDITTEXT:
+ if (pWin)
+ if (pWin->GetText ().Len ()) GetDoc()->SetText( pWin->GetText() );
+ break;
+
+ case SID_ATTR_ZOOM:
+ {
+ if ( !GetDoc()->GetProtocol().IsInPlaceActive() )
+ {
+ SvxZoomDialog *pDlg = 0;
+ const SfxItemSet *pSet = rReq.GetArgs();
+ if ( !pSet )
+ {
+ SfxItemSet aSet( GetDoc()->GetPool(), SID_ATTR_ZOOM, SID_ATTR_ZOOM);
+ aSet.Put( SvxZoomItem( SVX_ZOOM_PERCENT, aGraphic.GetZoom()));
+ pDlg = new SvxZoomDialog( &GetViewFrame()->GetWindow(), aSet);
+ pDlg->SetLimits( MINZOOM, MAXZOOM );
+ if( pDlg->Execute() != RET_CANCEL )
+ pSet = pDlg->GetOutputItemSet();
+ }
+ if ( pSet )
+ {
+ const SvxZoomItem &rZoom = (const SvxZoomItem &)pSet->Get(SID_ATTR_ZOOM);
+ switch( rZoom.GetType() )
+ {
+ case SVX_ZOOM_PERCENT:
+ aGraphic.SetZoom((long)rZoom.GetValue ());
+ break;
+
+ case SVX_ZOOM_OPTIMAL:
+ aGraphic.ZoomToFitInWindow();
+ break;
+
+ case SVX_ZOOM_PAGEWIDTH:
+ case SVX_ZOOM_WHOLEPAGE:
+ {
+ const MapMode aMap( MAP_100TH_MM );
+ SfxPrinter *pPrinter = GetPrinter( TRUE );
+ Point aPoint;
+ Rectangle OutputRect(aPoint, pPrinter->GetOutputSize());
+ Size OutputSize(pPrinter->LogicToPixel(Size(OutputRect.GetWidth(),
+ OutputRect.GetHeight()), aMap));
+ Size GraphicSize(pPrinter->LogicToPixel(GetDoc()->GetSize(), aMap));
+ USHORT nZ = (USHORT) Min((long)Fraction(OutputSize.Width() * 100L, GraphicSize.Width()),
+ (long)Fraction(OutputSize.Height() * 100L, GraphicSize.Height()));
+ aGraphic.SetZoom (nZ);
+ break;
+ }
+ }
+ }
+ delete pDlg;
+ }
+ }
+ break;
+ }
+ rReq.Done();
+}
+
+
+void SmViewShell::GetState(SfxItemSet &rSet)
+{
+ SfxWhichIter aIter(rSet);
+
+ for (USHORT nWh = aIter.FirstWhich(); nWh != 0; nWh = aIter.NextWhich())
+ {
+ switch (nWh)
+ {
+ case SID_CUT:
+ case SID_COPY:
+ case SID_DELETE:
+ if (! GetEditWindow() || ! GetEditWindow()->IsSelected())
+ rSet.DisableItem(nWh);
+ break;
+
+ case SID_PASTE:
+ if (Clipboard::GetFormatCount() == 0)
+ rSet.DisableItem( nWh );
+ break;
+
+ case SID_ATTR_ZOOM:
+ rSet.Put(SvxZoomItem( SVX_ZOOM_PERCENT, aGraphic.GetZoom()));
+ /* no break here */
+ case SID_VIEW050:
+ case SID_VIEW100:
+ case SID_VIEW200:
+ case SID_ADJUST:
+ case SID_ZOOMIN:
+ case SID_ZOOMOUT:
+ case SID_FITINWINDOW:
+ if ( GetDoc()->GetProtocol().IsInPlaceActive() )
+ rSet.DisableItem( nWh );
+ break;
+
+ case SID_NEXTERR:
+ case SID_PREVERR:
+ case SID_NEXTMARK:
+ case SID_PREVMARK:
+ case SID_DRAW:
+ case SID_SELECT:
+ if (! GetEditWindow() || GetEditWindow()->IsEmpty())
+ rSet.DisableItem(nWh);
+ break;
+
+ case SID_TEXTSTATUS:
+ {
+ rSet.Put(SfxStringItem(nWh, StatusText));
+ break;
+ }
+
+ case SID_FORMULACURSOR:
+ {
+ SmModule *pp = SM_MOD1();
+ rSet.Put(SfxBoolItem(nWh, pp->GetConfig()->IsShowFormulaCursor()));
+ break;
+ }
+ }
+ }
+}
+
+
+SmViewShell::SmViewShell(SfxViewFrame *pFrame, SfxViewShell *):
+ SfxViewShell(pFrame, SFX_VIEW_DISABLE_ACCELS | SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_HAS_PRINTOPTIONS | SFX_VIEW_CAN_PRINT),
+ aGraphic(this),
+ aGraphicController(aGraphic, SID_GRAPHIC, pFrame->GetBindings())
+{
+ pViewFrame = &pFrame->GetWindow();
+
+ SetStatusText(String());
+ SetWindow(&aGraphic);
+ SfxShell::SetName(C2S("SmView"));
+ SfxShell::SetUndoManager (GetDoc()->GetUndoManager());
+ SetHelpId( HID_SMA_VIEWSHELL_DOCUMENT );
+}
+
+
+SmViewShell::~SmViewShell()
+{
+}
+
+void SmViewShell::Deactivate( BOOL bIsMDIActivate )
+{
+ SmEditWindow *pEdit = GetEditWindow();
+ if ( pEdit )
+ pEdit->Flush();
+ SfxViewShell::Deactivate( bIsMDIActivate );
+}
+
+
+void SmViewShell::Activate( BOOL bIsMDIActivate )
+{
+ SfxViewShell::Activate( bIsMDIActivate );
+ SmEditWindow *pEdit = GetEditWindow();
+ if ( pEdit )
+ {
+ //! Hier beim (synchronen) Aufruf zum Taskwechsel werden beim SmEditWindow
+ //! auch implizit dessen Timer neu gestartet.
+ //! siehe auch Kommentar zu SmEditWindow::CursorMoveTimerHdl
+ pEdit->SetText( GetDoc()->GetText() );
+
+ if ( bIsMDIActivate )
+ pEdit->GrabFocus();
+ }
+}
+
+
diff --git a/starmath/util/hidother.src b/starmath/util/hidother.src
new file mode 100644
index 000000000000..cf29f6a0f320
--- /dev/null
+++ b/starmath/util/hidother.src
@@ -0,0 +1,151 @@
+/*************************************************************************
+ *
+ * $RCSfile: hidother.src,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#include "..\inc\starmath.hrc"
+
+hidspecial HID_SMA_OPTIONSDIALOG { HelpId = HID_SMA_OPTIONSDIALOG; };
+hidspecial HID_SMA_FONTDIALOG { HelpId = HID_SMA_FONTDIALOG; };
+hidspecial HID_SMA_FONTSIZEDIALOG { HelpId = HID_SMA_FONTSIZEDIALOG; };
+hidspecial HID_SMA_FONTTYPEDIALOG { HelpId = HID_SMA_FONTTYPEDIALOG; };
+hidspecial HID_SMA_DISTANCEDIALOG { HelpId = HID_SMA_DISTANCEDIALOG; };
+hidspecial HID_SMA_ALIGNDIALOG { HelpId = HID_SMA_ALIGNDIALOG; };
+hidspecial HID_SMA_PRINTOPTIONPAGE { HelpId = HID_SMA_PRINTOPTIONPAGE; };
+hidspecial HID_SMA_SYMBOLDIALOG { HelpId = HID_SMA_SYMBOLDIALOG; };
+hidspecial HID_SMA_SYMDEFINEDIALOG { HelpId = HID_SMA_SYMDEFINEDIALOG; };
+hidspecial HID_SMA_EXTRAOPTIONPAGE { HelpId = HID_SMA_EXTRAOPTIONPAGE; };
+hidspecial HID_SMA_DOCSAVEQUERY { HelpId = HID_SMA_DOCSAVEQUERY; };
+hidspecial HID_SMA_OBJECTSAVEQUERY { HelpId = HID_SMA_OBJECTSAVEQUERY; };
+hidspecial HID_SMA_DEFAULTSAVEQUERY { HelpId = HID_SMA_DEFAULTSAVEQUERY; };
+hidspecial HID_SMA_ILLEGALOBJECTERROR { HelpId = HID_SMA_ILLEGALOBJECTERROR; };
+hidspecial HID_SMA_ILLEGALFILEERROR { HelpId = HID_SMA_ILLEGALFILEERROR; };
+hidspecial HID_SMA_WRITESYMBOLERROR { HelpId = HID_SMA_WRITESYMBOLERROR; };
+hidspecial HID_SMA_READSYMBOLERROR { HelpId = HID_SMA_READSYMBOLERROR; };
+hidspecial HID_SMA_NOMATHTYPEFACEWARNING { HelpId = HID_SMA_NOMATHTYPEFACEWARNING; };
+hidspecial HID_SMA_OBJECTNAME { HelpId = HID_SMA_OBJECTNAME; };
+hidspecial HID_SMA_VIEWNAME { HelpId = HID_SMA_VIEWNAME; };
+hidspecial HID_SMA_UNDOEDITNAME { HelpId = HID_SMA_UNDOEDITNAME; };
+hidspecial HID_SMA_UNDOFORMATNAME { HelpId = HID_SMA_UNDOFORMATNAME; };
+hidspecial HID_SMA_APPICO { HelpId = HID_SMA_APPICO; };
+hidspecial HID_SMA_DOCICO { HelpId = HID_SMA_DOCICO; };
+hidspecial HID_SMA_TMPICO { HelpId = HID_SMA_TMPICO; };
+hidspecial HID_SMA_COMMANDMENU { HelpId = HID_SMA_COMMANDMENU; };
+hidspecial HID_SMA_VIEWMENU { HelpId = HID_SMA_VIEWMENU; };
+hidspecial HID_SMA_DISTANCEMENU { HelpId = HID_SMA_DISTANCEMENU; };
+hidspecial HID_SMA_FONTMENU { HelpId = HID_SMA_FONTMENU; };
+hidspecial HID_SMA_STARTUPWINDOW { HelpId = HID_SMA_STARTUPWINDOW; };
+hidspecial HID_SMA_TOOLBOXWINDOW { HelpId = HID_SMA_TOOLBOXWINDOW; };
+hidspecial HID_SMA_CMDBOXWINDOW { HelpId = HID_SMA_CMDBOXWINDOW; };
+hidspecial HID_SMA_UPDATEOBJECT { HelpId = HID_SMA_UPDATEOBJECT; };
+hidspecial HID_SMA_FONTREGULAR { HelpId = HID_SMA_FONTREGULAR; };
+hidspecial HID_SMA_FONTITALIC { HelpId = HID_SMA_FONTITALIC; };
+hidspecial HID_SMA_FONTBOLD { HelpId = HID_SMA_FONTBOLD; };
+hidspecial HID_SMA_PRINTOPTION { HelpId = HID_SMA_PRINTOPTION; };
+hidspecial HID_SMA_DOCUMENTSTR { HelpId = HID_SMA_DOCUMENTSTR; };
+hidspecial HID_SMA_SYMBOLFILESSTR { HelpId = HID_SMA_SYMBOLFILESSTR; };
+hidspecial HID_SMA_ALLFILESSTR { HelpId = HID_SMA_ALLFILESSTR; };
+hidspecial HID_SMA_CREATORSTR { HelpId = HID_SMA_CREATORSTR; };
+hidspecial HID_SMA_FILESMFTYP { HelpId = HID_SMA_FILESMFTYP; };
+hidspecial HID_SMA_FILESYMTYP { HelpId = HID_SMA_FILESYMTYP; };
+hidspecial HID_SMA_WIN_DOCUMENT { HelpId = HID_SMA_WIN_DOCUMENT; };
+hidspecial HID_SMA_VIEWSHELL_DOCUMENT { HelpId = HID_SMA_VIEWSHELL_DOCUMENT; };
+hidspecial HID_SMA_COMMAND_WIN_EDIT { HelpId = HID_SMA_COMMAND_WIN_EDIT; };
+
+hidspecial HID_SMA_DEFAULT_DIST { HelpId = HID_SMA_DEFAULT_DIST; };
+hidspecial HID_SMA_LINE_DIST { HelpId = HID_SMA_LINE_DIST; };
+hidspecial HID_SMA_ROOT_DIST { HelpId = HID_SMA_ROOT_DIST; };
+hidspecial HID_SMA_SUP_DIST { HelpId = HID_SMA_SUP_DIST; };
+hidspecial HID_SMA_SUB_DIST { HelpId = HID_SMA_SUB_DIST; };
+hidspecial HID_SMA_NUMERATOR_DIST { HelpId = HID_SMA_NUMERATOR_DIST; };
+hidspecial HID_SMA_DENOMINATOR_DIST { HelpId = HID_SMA_DENOMINATOR_DIST; };
+hidspecial HID_SMA_FRACLINE_EXCWIDTH { HelpId = HID_SMA_FRACLINE_EXCWIDTH; };
+hidspecial HID_SMA_FRACLINE_LINEWIDTH { HelpId = HID_SMA_FRACLINE_LINEWIDTH; };
+hidspecial HID_SMA_UPPERLIMIT_DIST { HelpId = HID_SMA_UPPERLIMIT_DIST; };
+hidspecial HID_SMA_LOWERLIMIT_DIST { HelpId = HID_SMA_LOWERLIMIT_DIST; };
+hidspecial HID_SMA_BRACKET_EXCHEIGHT { HelpId = HID_SMA_BRACKET_EXCHEIGHT; };
+hidspecial HID_SMA_BRACKET_DIST { HelpId = HID_SMA_BRACKET_DIST; };
+hidspecial HID_SMA_BRACKET_EXCHEIGHT2 { HelpId = HID_SMA_BRACKET_EXCHEIGHT2; };
+hidspecial HID_SMA_MATRIXROW_DIST { HelpId = HID_SMA_MATRIXROW_DIST; };
+hidspecial HID_SMA_MATRIXCOL_DIST { HelpId = HID_SMA_MATRIXCOL_DIST; };
+hidspecial HID_SMA_ATTRIBUT_DIST { HelpId = HID_SMA_ATTRIBUT_DIST; };
+hidspecial HID_SMA_INTERATTRIBUT_DIST { HelpId = HID_SMA_INTERATTRIBUT_DIST; };
+hidspecial HID_SMA_OPERATOR_EXCHEIGHT { HelpId = HID_SMA_OPERATOR_EXCHEIGHT; };
+hidspecial HID_SMA_OPERATOR_DIST { HelpId = HID_SMA_OPERATOR_DIST; };
+hidspecial HID_SMA_LEFTBORDER_DIST { HelpId = HID_SMA_LEFTBORDER_DIST; };
+hidspecial HID_SMA_RIGHTBORDER_DIST { HelpId = HID_SMA_RIGHTBORDER_DIST; };
+hidspecial HID_SMA_UPPERBORDER_DIST { HelpId = HID_SMA_UPPERBORDER_DIST; };
+hidspecial HID_SMA_LOWERBORDER_DIST { HelpId = HID_SMA_LOWERBORDER_DIST; };
+
+//! this shouldn't have been necessary!
+hidspecial HID_SMA_ALEPH { HelpId = HID_SMA_ALEPH; };
+hidspecial HID_SMA_EMPTYSET { HelpId = HID_SMA_EMPTYSET; };
+hidspecial HID_SMA_RE { HelpId = HID_SMA_RE; };
+hidspecial HID_SMA_IM { HelpId = HID_SMA_IM; };
+hidspecial HID_SMA_INFINITY { HelpId = HID_SMA_INFINITY; };
+hidspecial HID_SMA_PARTIAL { HelpId = HID_SMA_PARTIAL; };
+hidspecial HID_SMA_WP { HelpId = HID_SMA_WP; };
+hidspecial HID_SMA_DOTSAXIS { HelpId = HID_SMA_DOTSAXIS; };
+hidspecial HID_SMA_DOTSUP { HelpId = HID_SMA_DOTSUP; };
+hidspecial HID_SMA_DOTSDOWN { HelpId = HID_SMA_DOTSDOWN; };
+hidspecial HID_SMA_DOTSLOW { HelpId = HID_SMA_DOTSLOW; };
+hidspecial HID_SMA_DOTSVERT { HelpId = HID_SMA_DOTSVERT; };
+hidspecial HID_SMA_NABLA { HelpId = HID_SMA_NABLA; };
+hidspecial HID_SMA_EXISTS { HelpId = HID_SMA_EXISTS; };
+hidspecial HID_SMA_FORALL { HelpId = HID_SMA_FORALL; };
+
diff --git a/starmath/util/makefile.mk b/starmath/util/makefile.mk
new file mode 100644
index 000000000000..89df8c11e36b
--- /dev/null
+++ b/starmath/util/makefile.mk
@@ -0,0 +1,149 @@
+#*************************************************************************
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.1.1.1 $
+#
+# last change: $Author: hr $ $Date: 2000-09-18 16:57:27 $
+#
+# The Contents of this file are made available subject to the terms of
+# either of the following licenses
+#
+# - GNU Lesser General Public License Version 2.1
+# - Sun Industry Standards Source License Version 1.1
+#
+# Sun Microsystems Inc., October, 2000
+#
+# GNU Lesser General Public License Version 2.1
+# =============================================
+# Copyright 2000 by Sun Microsystems, Inc.
+# 901 San Antonio Road, Palo Alto, CA 94303, USA
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License version 2.1, as published by the Free Software Foundation.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+#
+# Sun Industry Standards Source License Version 1.1
+# =================================================
+# The contents of this file are subject to the Sun Industry Standards
+# Source License Version 1.1 (the "License"); You may not use this file
+# except in compliance with the License. You may obtain a copy of the
+# License at http://www.openoffice.org/license.html.
+#
+# Software provided under this License is provided on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+# See the License for the specific provisions governing your rights and
+# obligations concerning the Software.
+#
+# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+#
+# Copyright: 2000 by Sun Microsystems, Inc.
+#
+# All Rights Reserved.
+#
+# Contributor(s): _______________________________________
+#
+#
+#
+#*************************************************************************
+
+PRJ=..
+
+PRJNAME=SM
+TARGET=smath3
+LIBTARGET=NO
+GEN_HID=TRUE
+USE_DEFFILE=TRUE
+
+# --- Settings -----------------------------------------------------------
+
+.INCLUDE : svpre.mk
+.INCLUDE : settings.mk
+.INCLUDE : sv.mk
+
+
+# --- Files --------------------------------------------------------
+
+RESLIB1NAME=sm
+RESLIB1SRSFILES=\
+ $(SRS)$/smres.srs \
+ $(SRS)$/smslots.srs \
+ $(SOLARVERSION)$/$(INPATH)$/res$(EXT_UPDMINOR)$/sfx.srs
+
+SHL1TARGET= sm$(UPD)$(DLLPOSTFIX)
+SHL1VERSIONMAP= sm.map
+.IF "$(GUI)" == "WNT"
+SHL1RES= $(RCTARGET)
+.ENDIF
+
+SHL1IMPLIB= smimp
+SHL1LIBS= $(SLB)$/starmath.lib
+SHL1STDLIBS= \
+ $(TOOLSLIB) \
+ $(SVTOOLLIB) \
+ $(SVLLIB) \
+ $(SVMEMLIB) \
+ $(SVLIB) \
+ $(SOTLIB) \
+ $(SO2LIB) \
+ $(SFX2LIB) \
+ $(CPPULIB) \
+ $(CPPUHELPERLIB) \
+ $(SVXLIB) \
+ $(SALLIB) \
+ $(VOSLIB) \
+ $(UCBHELPERLIB)
+
+SHL1DEPN= makefile.mk \
+ $(MISC)$/$(SHL1TARGET).flt
+
+SHL1DEF= $(MISC)$/$(SHL1TARGET).def
+
+.IF "$(GUI)" != "UNX"
+SHL1OBJS= $(SLO)$/smdll.obj
+.ENDIF
+
+DEF1NAME= $(SHL1TARGET)
+DEF1EXPORTFILE= exports.dxp
+
+# --- Targets -------------------------------------------------------------
+
+.IF "$(depend)" == ""
+
+ALL: \
+ $(SRS)$/hidother.hid\
+ ALLTAR
+.ENDIF
+
+.INCLUDE : target.mk
+
+.IF "$(depend)" == ""
+
+$(MISC)$/$(SHL1TARGET).flt:
+ @echo ------------------------------
+ @echo Making: $@
+ @echo WEP>$@
+ @echo LIBMAIN>>$@
+ @echo LibMain>>$@
+
+.ENDIF
+
+$(SRS)$/hidother.hid: hidother.src
+.IF "$(GUI)$(CPU)"=="WNTI"
+ +mhids hidother.src ..\$(INPATH)$/srs starmath hidother
+.ELSE
+ @echo nix
+.ENDIF
diff --git a/starmath/util/sm.map b/starmath/util/sm.map
new file mode 100644
index 000000000000..898b3dcbcd20
--- /dev/null
+++ b/starmath/util/sm.map
@@ -0,0 +1,9 @@
+SM_1_0 {
+ global:
+ CreateSmDocShellDll;
+ CreateObjSmDocShellDll;
+ InitSmDll;
+ DeInitSmDll;
+ local:
+ *;
+};