LibreOffice Module starmath (master) 1
|
A visitor for building a SmCaretPosGraph. More...
#include <visitors.hxx>
Public Member Functions | |
SmCaretPosGraphBuildingVisitor (SmNode *pRootNode) | |
Builds a caret position graph for pRootNode. More... | |
virtual | ~SmCaretPosGraphBuildingVisitor () |
void | Visit (SmTableNode *pNode) override |
Build SmCaretPosGraph for SmTableNode This method covers cases where SmTableNode is used in a binom or stack, the special case where it is used as root node for the entire formula is handled in the constructor. More... | |
void | Visit (SmBraceNode *pNode) override |
Build SmCaretPosGraph for SmBraceNode. More... | |
void | Visit (SmBracebodyNode *pNode) override |
Build SmCaretPosGraph for SmBracebodyNode Acts as an SmExpressionNode. More... | |
void | Visit (SmOperNode *pNode) override |
Build caret position for SmOperNode. More... | |
void | Visit (SmAlignNode *pNode) override |
Build SmCaretPosGraph for SmAlignNode Acts as an SmExpressionNode, as it only has one child this okay. More... | |
void | Visit (SmAttributeNode *pNode) override |
Build SmCaretPosGraph for SmAttributeNode. More... | |
void | Visit (SmFontNode *pNode) override |
void | Visit (SmUnHorNode *pNode) override |
void | Visit (SmBinHorNode *pNode) override |
void | Visit (SmBinVerNode *pNode) override |
Build SmCaretPosGraph for SmBinVerNode. More... | |
void | Visit (SmBinDiagonalNode *pNode) override |
Build SmCaretPosGraph for SmBinDiagonalNode. More... | |
void | Visit (SmSubSupNode *pNode) override |
Build SmCaretPosGraph for SmSubSupNode. More... | |
void | Visit (SmMatrixNode *pNode) override |
void | Visit (SmPlaceNode *pNode) override |
Build SmCaretPosGraph for SmPlaceNode Consider this a single character. More... | |
void | Visit (SmTextNode *pNode) override |
Build SmCaretPosGraph for SmTextNode. More... | |
void | Visit (SmSpecialNode *pNode) override |
void | Visit (SmGlyphSpecialNode *pNode) override |
void | Visit (SmMathSymbolNode *pNode) override |
void | Visit (SmBlankNode *pNode) override |
Build SmCaretPosGraph for SmBlankNode Consider this a single character, as it is only a blank space. More... | |
void | Visit (SmErrorNode *pNode) override |
SmErrorNode is context dependent metadata, it can't be selected. More... | |
void | Visit (SmLineNode *pNode) override |
void | Visit (SmExpressionNode *pNode) override |
void | Visit (SmPolyLineNode *pNode) override |
void | Visit (SmRootNode *pNode) override |
Build SmCaretPosGraph for SmRootNode. More... | |
void | Visit (SmRootSymbolNode *pNode) override |
void | Visit (SmRectangleNode *pNode) override |
void | Visit (SmVerticalBraceNode *pNode) override |
Build SmCaretPosGraph for SmVerticalBraceNode. More... | |
SmCaretPosGraph * | takeGraph () |
virtual void | Visit (SmTableNode *pNode)=0 |
virtual void | Visit (SmBraceNode *pNode)=0 |
virtual void | Visit (SmBracebodyNode *pNode)=0 |
virtual void | Visit (SmOperNode *pNode)=0 |
virtual void | Visit (SmAlignNode *pNode)=0 |
virtual void | Visit (SmAttributeNode *pNode)=0 |
virtual void | Visit (SmFontNode *pNode)=0 |
virtual void | Visit (SmUnHorNode *pNode)=0 |
virtual void | Visit (SmBinHorNode *pNode)=0 |
virtual void | Visit (SmBinVerNode *pNode)=0 |
virtual void | Visit (SmBinDiagonalNode *pNode)=0 |
virtual void | Visit (SmSubSupNode *pNode)=0 |
virtual void | Visit (SmMatrixNode *pNode)=0 |
virtual void | Visit (SmPlaceNode *pNode)=0 |
virtual void | Visit (SmTextNode *pNode)=0 |
virtual void | Visit (SmSpecialNode *pNode)=0 |
virtual void | Visit (SmGlyphSpecialNode *pNode)=0 |
virtual void | Visit (SmMathSymbolNode *pNode)=0 |
virtual void | Visit (SmBlankNode *pNode)=0 |
virtual void | Visit (SmErrorNode *pNode)=0 |
virtual void | Visit (SmLineNode *pNode)=0 |
virtual void | Visit (SmExpressionNode *pNode)=0 |
virtual void | Visit (SmPolyLineNode *pNode)=0 |
virtual void | Visit (SmRootNode *pNode)=0 |
virtual void | Visit (SmRootSymbolNode *pNode)=0 |
virtual void | Visit (SmRectangleNode *pNode)=0 |
virtual void | Visit (SmVerticalBraceNode *pNode)=0 |
Private Attributes | |
SmCaretPosGraphEntry * | mpRightMost |
std::unique_ptr< SmCaretPosGraph > | mpGraph |
Additional Inherited Members | |
Protected Member Functions inherited from SmVisitor | |
~SmVisitor () | |
A visitor for building a SmCaretPosGraph.
Visit invariant: Each pNode, except SmExpressionNode, SmBinHorNode and a few others, constitutes an entry in a line. Consider the line entry "H", this entry creates one carat position, here denoted by | in "H|".
Parameter variables: The following variables are used to transfer parameters into calls and results out of calls. pRightMost : SmCaretPosGraphEntry*
Prior to a Visit call: pRightMost: A pointer to right most position in front of the current line entry.
After a Visit call: pRightMost: A pointer to the right most position in the called line entry, if no there's no caret positions in called line entry don't change this variable.
Definition at line 334 of file visitors.hxx.
|
explicit |
Builds a caret position graph for pRootNode.
Definition at line 759 of file visitors.cxx.
References SmNode::Accept(), SmNode::GetType(), mpGraph, mpRightMost, SAL_WARN_IF, and Table.
|
virtual |
Definition at line 781 of file visitors.cxx.
|
inline |
Definition at line 367 of file visitors.hxx.
References mpGraph.
|
overridevirtual |
Build SmCaretPosGraph for SmAlignNode Acts as an SmExpressionNode, as it only has one child this okay.
Implements SmVisitor.
Definition at line 1287 of file visitors.cxx.
|
overridevirtual |
Build SmCaretPosGraph for SmAttributeNode.
Lines in an SmAttributeNode:
There's a body and an attribute, the construction is used for "widehat A", where "A" is the body and "^" is the attribute ( note GetScaleMode( ) on SmAttributeNode tells how the attribute should be scaled ).
Implements SmVisitor.
Definition at line 1438 of file visitors.cxx.
References SmNode::Accept(), SmAttributeNode::Attribute(), SmAttributeNode::Body(), left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmBinDiagonalNode.
Lines in an SmBinDiagonalNode:
Where A and B are lines.
Used in formulas such as "A wideslash B"
Implements SmVisitor.
Definition at line 1151 of file visitors.cxx.
References A, B, SmStructureNode::GetSubNode(), left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Implements SmVisitor.
Definition at line 1190 of file visitors.cxx.
|
overridevirtual |
Build SmCaretPosGraph for SmBinVerNode.
Lines in an SmBinVerNode:
Graph over these, where "left" is before the SmBinVerNode and "right" is after:
Implements SmVisitor.
Definition at line 1054 of file visitors.cxx.
References SmNode::Accept(), SmStructureNode::GetSubNode(), left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmBlankNode Consider this a single character, as it is only a blank space.
Implements SmVisitor.
Definition at line 1381 of file visitors.cxx.
References mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmBracebodyNode Acts as an SmExpressionNode.
Below is an example of a formula tree that has multiple children for SmBracebodyNode
Implements SmVisitor.
Definition at line 1271 of file visitors.cxx.
References mpGraph, mpRightMost, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmBraceNode.
Lines in an SmBraceNode:
B: Body
Graph over these, where "left" is before the SmBraceNode and "right" is after:
Implements SmVisitor.
Definition at line 1406 of file visitors.cxx.
References SmNode::Accept(), SmBraceNode::Body(), Bracebody, SmNode::GetType(), left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
SmErrorNode is context dependent metadata, it can't be selected.
Implements SmVisitor.
Definition at line 1374 of file visitors.cxx.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1210 of file visitors.cxx.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1220 of file visitors.cxx.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1484 of file visitors.cxx.
References mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Implements SmVisitor.
Definition at line 785 of file visitors.cxx.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1490 of file visitors.cxx.
References mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Implements SmVisitor.
Definition at line 978 of file visitors.cxx.
References SmNode::Accept(), SmMatrixNode::GetNumCols(), SmMatrixNode::GetNumRows(), SmStructureNode::GetSubNode(), i, left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build caret position for SmOperNode.
If first child is an SmSubSupNode we will ignore its body, as this body is a SmMathSymbol, for SUM, INT or similar that shouldn't be subject to modification. If first child is not a SmSubSupNode, ignore it completely as it is a SmMathSymbol.
The child positions in a SmOperNode, where H is symbol, e.g. int, sum or similar:
Notice, CSUP, etc. are actually grandchildren, but inorder to ignore H, these are visited from here. If they are present, that is if pOper is an instance of SmSubSupNode.
Graph over these, where "left" is before the SmOperNode and "right" is after:
Implements SmVisitor.
Definition at line 931 of file visitors.cxx.
References SmNode::Accept(), CSUB, CSUP, SmStructureNode::GetSubNode(), SmSubSupNode::GetSubSup(), SmNode::GetType(), left, LSUB, LSUP, mpGraph, mpRightMost, right, RSUB, RSUP, SmCaretPosGraphEntry::SetRight(), and SubSup.
|
overridevirtual |
Build SmCaretPosGraph for SmPlaceNode Consider this a single character.
Implements SmVisitor.
Definition at line 1361 of file visitors.cxx.
References mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Implements SmVisitor.
Definition at line 1506 of file visitors.cxx.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1502 of file visitors.cxx.
|
overridevirtual |
Build SmCaretPosGraph for SmRootNode.
Lines in an SmRootNode:
A: pExtra ( optional, can be NULL ), B: pBody
Graph over these, where "left" is before the SmRootNode and "right" is after:
Implements SmVisitor.
Definition at line 1318 of file visitors.cxx.
References SmNode::Accept(), SmStructureNode::GetSubNode(), left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Implements SmVisitor.
Definition at line 1497 of file visitors.cxx.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1478 of file visitors.cxx.
References mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmSubSupNode.
The child positions in a SubSupNode, where H is the body:
Graph over these, where "left" is before the SmSubSupNode and "right" is after:
Implements SmVisitor.
Definition at line 849 of file visitors.cxx.
References SmNode::Accept(), CSUB, CSUP, SmSubSupNode::GetBody(), SmSubSupNode::GetSubSup(), left, LSUB, LSUP, mpGraph, mpRightMost, right, RSUB, RSUP, SAL_WARN_IF, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmTableNode This method covers cases where SmTableNode is used in a binom or stack, the special case where it is used as root node for the entire formula is handled in the constructor.
Implements SmVisitor.
Definition at line 799 of file visitors.cxx.
References left, mpGraph, mpRightMost, right, and SmCaretPosGraphEntry::SetRight().
|
overridevirtual |
Build SmCaretPosGraph for SmTextNode.
Lines in an SmTextNode:
Where A B and C are characters in the text.
Graph over these, where "left" is before the SmTextNode and "right" is after:
Notice that C and right is the same position here.
Implements SmVisitor.
Definition at line 1024 of file visitors.cxx.
References SmTextNode::GetText(), i, mpGraph, mpRightMost, SAL_WARN_IF, SmCaretPosGraphEntry::SetRight(), and size.
|
overridevirtual |
Implements SmVisitor.
Definition at line 1199 of file visitors.cxx.
|
overridevirtual |
Build SmCaretPosGraph for SmVerticalBraceNode.
Lines in an SmVerticalBraceNode:
Implements SmVisitor.
Definition at line 1105 of file visitors.cxx.
References SmNode::Accept(), SmVerticalBraceNode::Body(), left, mpGraph, mpRightMost, right, SmVerticalBraceNode::Script(), and SmCaretPosGraphEntry::SetRight().
|
private |
Definition at line 373 of file visitors.hxx.
Referenced by SmCaretPosGraphBuildingVisitor(), takeGraph(), and Visit().
|
private |
Definition at line 372 of file visitors.hxx.
Referenced by SmCaretPosGraphBuildingVisitor(), and Visit().