mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-11 05:24:10 +08:00
108 lines
3.8 KiB
C++
108 lines
3.8 KiB
C++
#ifndef _MATH_EQUATION_OUTPUTDEV_H
|
|
#define _MATH_EQUATION_OUTPUTDEV_H
|
|
|
|
#include "Types.h"
|
|
|
|
namespace MathEquation
|
|
{
|
|
struct TMathFont;
|
|
class MathEquation;
|
|
class IOutputDev
|
|
{
|
|
public:
|
|
|
|
// Íà÷àëî è êîíåö ôîðìóëû
|
|
virtual void BeginEquation() = 0;
|
|
virtual void EndEquation() = 0;
|
|
|
|
// Íà÷àëî è êîíåö áëîêà.
|
|
virtual void BeginBlock() = 0;
|
|
virtual void EndBlock() = 0;
|
|
|
|
// Âûñòàâëÿåì ðàçìåð â òåêóùåì áëîêå
|
|
virtual void SetSize(uint16_t nSize) = 0;
|
|
|
|
// Äîáàâëÿåì ñèìâîë. Ê ñèìâîëó ìîãóò áûòü äîáàâëåíû ðàçíûå ýëåìåíòû. Çà÷åðêèâàíèå, äîáàâëåíèå àêöåíòà è ò.ä.
|
|
virtual void BeginChar(Unicode_t uChar, uint8_t nTypeFace, bool bSpecialSymbol) = 0;
|
|
virtual void AddCharEmbel(MEMBELTYPE eType) = 0;
|
|
virtual void EndChar() = 0;
|
|
|
|
// Ìàòðèöà. Êîëè÷åñòâî áëîêîâ çäåñü ðàâíî nRows * nCol, ïîñûëàþòñÿ ïîñëåäîâàòåëüíî â îáû÷íîì ïîðÿäêå (ïåðâàÿ ñòðîêà ñëåâà íàïðàâî, âòîðàÿ ñòðîêà ñëåâà íàïðàâî è ò.ä.)
|
|
virtual void BeginMatrix(uint8_t nVAlign, MMATRIXHORALIGN eHorAlign, MMATRIXVERALIGN eVerAlign, bool bEqualRows, bool bEqualCols, uint8_t nRows, uint8_t nCols, uint8_t* pVerBorders, uint8_t* pHorBorders) = 0;
|
|
virtual void EndMatrix () = 0;
|
|
|
|
virtual void StartPile(uint8_t nHAlign, uint8_t nVAlign) = 0;
|
|
virtual void EndPile() = 0;
|
|
|
|
// Ñêîáêè ñ ýëåìåíòîì âíóòðè
|
|
virtual void BeginBrackets(MBRACKETSTYPE eType, bool bOpen, bool bClose) = 0;
|
|
virtual void EndBrackets (MBRACKETSTYPE eType, bool bOpen, bool bClose) = 0;
|
|
|
|
// Êîðåíü. Ïåðâûé áëîê - îñíîâàíèå, âòîðîé, åñëè åñòü, ñòåïåíü.
|
|
virtual void BeginRoot(bool bDegree) = 0;
|
|
virtual void EndRoot () = 0;
|
|
|
|
// Äðîáè. Ïåðâûé áëîê - ÷èñëèòåëü, âòîðîé áëîê - çíàìåíàòåëü.
|
|
virtual void BeginFraction(MFRACTIONTYPES eType, bool bInline) = 0;
|
|
virtual void EndFraction () = 0;
|
|
|
|
// Åñëè bInline = true, òî ïîñëåäîâàòåëüíîñòü áëîêîâ Base, Sub, Sup
|
|
// Åñëè bInline = false, òî ïîñëåäîâàòåëüíîñòü áëîêîâ Sub, Sup, Base
|
|
virtual void BeginScript(MSCRIPTALIGN eAlign, bool bBase = false, bool bSup = false, bool bSub = false, bool bInline = true) = 0;
|
|
virtual void EndScript () = 0;
|
|
|
|
// Ëèíèÿ ñâåõó èëè ñíèçó îòíîñèòåëüíî òåêñòà
|
|
virtual void BeginBar(MBARTYPE eType, bool bTop) = 0;
|
|
virtual void EndBar () = 0;
|
|
|
|
// Ñòðåëêà ñ íàäïèñüþ ñâåðõó èëè ñíèçó (îòëè÷å îò BeginBar/EndBar â òîì, ÷òî çäåñü ñòðåëêà îñíîâíîé
|
|
// îáúåêò, à òåêñò - ýòî íåáîëüøàÿ íàäïèñü, à ó òåõ ôóíêöèé íàîáîðîò)
|
|
virtual void BeginArrow(MARROWTYPE eType, bool bTop) = 0;
|
|
virtual void EndArrow () = 0;
|
|
|
|
// Èíòåãðàëû. Ïîñëåäîâàòåëüíîñòü áëîêîâ âñåãäà ñëåäóþùàÿ(åñëè áëîê ïðèñóòñòâóåò) Base, Sub, Sup
|
|
virtual void BeginIntegral(MINTEGRALTYPE eType) = 0;
|
|
virtual void EndIntegral () = 0;
|
|
|
|
// Ôèãóðíàÿ ñêîáêà ñ òåêñòîì íàä/ïîä îáúåêòîì. Ñíà÷àëà èäåò îñíîâíîé îáúåêò, ïîòîì íàäïèñü ôèãóðíîé ñêîáêè.
|
|
virtual void BeginVerticalBrace(bool bTop) = 0;
|
|
virtual void EndVerticalBrace () = 0;
|
|
|
|
// Ñóììà, ïðîèçâåäåíèå, êîïðîèçâåäåíèå, îáúåäèíåíèå, ïåðåñå÷åíèå. Ïîñëåäîâàòåëüíîñòü áëîêîâ Base, Sub, Sup
|
|
virtual void BeingNArray(MNARRAYTYPE eType) = 0;
|
|
virtual void EndNArray () = 0;
|
|
|
|
// Äåëåíèå ñòîëáèêîì. Ñ ÷àñòíûì èëè áåç. Âíà÷àëå âñåãäà èäåò îñíîâàíèå, ïîòîì åñëè åñòü ÷àñòíîå.
|
|
virtual void BeginLongDivision(MLONGDIVISION eType) = 0;
|
|
virtual void EndLongDivision () = 0;
|
|
|
|
// < | > - òàêîé ýëåìåíò
|
|
virtual void BeginAngleBracketsWithSeparator(MANGLEBRACKETSWITHSEPARATORTYPE eType) = 0;
|
|
virtual void EndAngleBracketsWithSeparator () = 0;
|
|
|
|
void AddFont(uint8_t nTypeFace, std::string sName, bool bBold, bool bItalic)
|
|
{
|
|
TMathFont aFont;
|
|
aFont.sName = sName;
|
|
aFont.bBold = bBold;
|
|
aFont.bItalic = bItalic;
|
|
m_mFonts[nTypeFace] = aFont;
|
|
}
|
|
|
|
TMathFont* GetFont(uint8_t nTypeFace)
|
|
{
|
|
TFontMap::iterator itFind = m_mFonts.find(nTypeFace);
|
|
if (itFind != m_mFonts.end())
|
|
return &(itFind->second);
|
|
|
|
return NULL;
|
|
}
|
|
|
|
protected:
|
|
|
|
TFontMap m_mFonts;
|
|
};
|
|
|
|
}
|
|
|
|
#endif |