Add initial font metrics and equation rendering.
This commit is contained in:
parent
c2027801be
commit
5ddd54dd6d
24 changed files with 868 additions and 63 deletions
|
@ -6,36 +6,81 @@
|
|||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class LatexMathExpression;
|
||||
using LatexMathExpressionPtr = std::unique_ptr<LatexMathExpression>;
|
||||
|
||||
class LatexMathExpression
|
||||
{
|
||||
public:
|
||||
LatexMathExpression(const std::string& expression = {})
|
||||
: mRawExpression(expression)
|
||||
enum class Type
|
||||
{
|
||||
LINEAR,
|
||||
LEAF,
|
||||
FRACTION,
|
||||
SUBSCRIPT,
|
||||
SUPERSCRIPT
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
void parse()
|
||||
enum class LineState
|
||||
{
|
||||
for (auto c : mRawExpression)
|
||||
{
|
||||
NONE,
|
||||
IN_TAG_NAME,
|
||||
AWAITING_LBRACE,
|
||||
IN_TAG_BODY
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
LatexMathExpression(const std::string& expression);
|
||||
|
||||
const std::vector<LatexMathSymbol>& getSymbols() const
|
||||
{
|
||||
return mSymbols;
|
||||
}
|
||||
LatexMathExpression(Type type);
|
||||
|
||||
~LatexMathExpression();
|
||||
|
||||
const std::vector<LatexMathSymbol>& getSymbols() const;
|
||||
|
||||
const std::vector<LatexMathExpressionPtr>& getExpressions() const;
|
||||
|
||||
const Type getType() const;
|
||||
|
||||
void setContent(std::vector<LatexMathSymbol>& symbols);
|
||||
|
||||
void setRawContent(const std::string& content);
|
||||
|
||||
void onTagBodyChar(char c);
|
||||
|
||||
void onFreeChar(char c);
|
||||
|
||||
void onSpace();
|
||||
|
||||
void onLBrace();
|
||||
|
||||
void onRBrace();
|
||||
|
||||
void onSuperscript();
|
||||
|
||||
void onSubscript();
|
||||
|
||||
void onLiteral();
|
||||
|
||||
void onTagBody();
|
||||
|
||||
void onFinishedTagName();
|
||||
|
||||
void onCloseExpression();
|
||||
|
||||
void parse();
|
||||
|
||||
private:
|
||||
std::size_t mOpenBraceCount{ 0 };
|
||||
|
||||
unsigned mOpenTagCount{ 0 };
|
||||
LineState mLineState{ LineState::NONE };
|
||||
std::string mWorkingString;
|
||||
std::string mRawBody;
|
||||
|
||||
std::string mRawExpression;
|
||||
std::unique_ptr<LatexMathExpression> mSuperScriptExpr;
|
||||
std::unique_ptr<LatexMathExpression> mSubScriptExpr;
|
||||
std::unique_ptr<LatexMathExpression> mEnclosedExpr;
|
||||
Type mWorkingType{ Type::LEAF };
|
||||
LatexMathExpression* mWorkingExpression{ nullptr };
|
||||
Type mType{ Type::LEAF };
|
||||
std::vector<LatexMathSymbol> mWorkingSymbols;
|
||||
|
||||
std::vector<LatexMathSymbol> mSymbols;
|
||||
std::vector<LatexMathExpressionPtr> mExpressions;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue