LibreOffice Module starmath (master) 1
visitors.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
9
22#pragma once
23
24#include <sal/config.h>
25#include <sal/log.hxx>
26
27#include "node.hxx"
28#include "caret.hxx"
29
35{
36public:
37 virtual void Visit( SmTableNode* pNode ) = 0;
38 virtual void Visit( SmBraceNode* pNode ) = 0;
39 virtual void Visit( SmBracebodyNode* pNode ) = 0;
40 virtual void Visit( SmOperNode* pNode ) = 0;
41 virtual void Visit( SmAlignNode* pNode ) = 0;
42 virtual void Visit( SmAttributeNode* pNode ) = 0;
43 virtual void Visit( SmFontNode* pNode ) = 0;
44 virtual void Visit( SmUnHorNode* pNode ) = 0;
45 virtual void Visit( SmBinHorNode* pNode ) = 0;
46 virtual void Visit( SmBinVerNode* pNode ) = 0;
47 virtual void Visit( SmBinDiagonalNode* pNode ) = 0;
48 virtual void Visit( SmSubSupNode* pNode ) = 0;
49 virtual void Visit( SmMatrixNode* pNode ) = 0;
50 virtual void Visit( SmPlaceNode* pNode ) = 0;
51 virtual void Visit( SmTextNode* pNode ) = 0;
52 virtual void Visit( SmSpecialNode* pNode ) = 0;
53 virtual void Visit( SmGlyphSpecialNode* pNode ) = 0;
54 virtual void Visit( SmMathSymbolNode* pNode ) = 0;
55 virtual void Visit( SmBlankNode* pNode ) = 0;
56 virtual void Visit( SmErrorNode* pNode ) = 0;
57 virtual void Visit( SmLineNode* pNode ) = 0;
58 virtual void Visit( SmExpressionNode* pNode ) = 0;
59 virtual void Visit( SmPolyLineNode* pNode ) = 0;
60 virtual void Visit( SmRootNode* pNode ) = 0;
61 virtual void Visit( SmRootSymbolNode* pNode ) = 0;
62 virtual void Visit( SmRectangleNode* pNode ) = 0;
63 virtual void Visit( SmVerticalBraceNode* pNode ) = 0;
64
65protected:
67};
68
69// SmDefaultingVisitor
70
71
78{
79public:
80 void Visit( SmTableNode* pNode ) override;
81 void Visit( SmBraceNode* pNode ) override;
82 void Visit( SmBracebodyNode* pNode ) override;
83 void Visit( SmOperNode* pNode ) override;
84 void Visit( SmAlignNode* pNode ) override;
85 void Visit( SmAttributeNode* pNode ) override;
86 void Visit( SmFontNode* pNode ) override;
87 void Visit( SmUnHorNode* pNode ) override;
88 void Visit( SmBinHorNode* pNode ) override;
89 void Visit( SmBinVerNode* pNode ) override;
90 void Visit( SmBinDiagonalNode* pNode ) override;
91 void Visit( SmSubSupNode* pNode ) override;
92 void Visit( SmMatrixNode* pNode ) override;
93 void Visit( SmPlaceNode* pNode ) override;
94 void Visit( SmTextNode* pNode ) override;
95 void Visit( SmSpecialNode* pNode ) override;
96 void Visit( SmGlyphSpecialNode* pNode ) override;
97 void Visit( SmMathSymbolNode* pNode ) override;
98 void Visit( SmBlankNode* pNode ) override;
99 void Visit( SmErrorNode* pNode ) override;
100 void Visit( SmLineNode* pNode ) override;
101 void Visit( SmExpressionNode* pNode ) override;
102 void Visit( SmPolyLineNode* pNode ) override;
103 void Visit( SmRootNode* pNode ) override;
104 void Visit( SmRootSymbolNode* pNode ) override;
105 void Visit( SmRectangleNode* pNode ) override;
106 void Visit( SmVerticalBraceNode* pNode ) override;
107protected:
109
111 virtual void DefaultVisit( SmNode* pNode ) = 0;
112};
113
114// SmCaretLinesVisitor: ancestor of caret rectangle enumeration and drawing visitors
115
117{
118public:
120 virtual ~SmCaretLinesVisitor() = default;
121 void Visit(SmTextNode* pNode) override;
123
124protected:
125 void DoIt();
126
127 OutputDevice& getDev() { return mrDev; }
128 virtual void ProcessCaretLine(Point from, Point to) = 0;
129 virtual void ProcessUnderline(Point from, Point to) = 0;
130
132 void DefaultVisit(SmNode* pNode) override;
133
134private:
139};
140
141// SmCaretRectanglesVisitor: obtains the set of rectangles to sent to lok
142
144{
145public:
147 const tools::Rectangle& getCaret() const { return maCaret; }
148
149protected:
150 virtual void ProcessCaretLine(Point from, Point to) override;
151 virtual void ProcessUnderline(Point from, Point to) override;
152
153private:
155};
156
157// SmCaretDrawingVisitor
158
161{
162public:
164 SmCaretDrawingVisitor( OutputDevice& rDevice, SmCaretPos position, Point offset, bool caretVisible );
165
166protected:
167 virtual void ProcessCaretLine(Point from, Point to) override;
168 virtual void ProcessUnderline(Point from, Point to) override;
169
170private:
172};
173
174// SmCaretPos2LineVisitor
175
178{
179public:
182 : mpDev( pDevice )
183 , maPos( position )
184 {
185 SAL_WARN_IF( !position.IsValid(), "starmath", "Cannot draw invalid position!" );
186
187 maPos.pSelectedNode->Accept( this );
188 }
190 void Visit( SmTextNode* pNode ) override;
192 const SmCaretLine& GetResult( ) const {
193 return maLine;
194 }
195private:
199
201 void DefaultVisit( SmNode* pNode ) override;
202};
203
204// SmDrawingVisitor
205
207class SmDrawingVisitor final : public SmVisitor
208{
209public:
216 SmDrawingVisitor( OutputDevice &rDevice, Point position, SmNode* pTree )
217 : mrDev( rDevice )
219 {
220 pTree->Accept( this );
221 }
222 virtual ~SmDrawingVisitor() {}
223 void Visit( SmTableNode* pNode ) override;
224 void Visit( SmBraceNode* pNode ) override;
225 void Visit( SmBracebodyNode* pNode ) override;
226 void Visit( SmOperNode* pNode ) override;
227 void Visit( SmAlignNode* pNode ) override;
228 void Visit( SmAttributeNode* pNode ) override;
229 void Visit( SmFontNode* pNode ) override;
230 void Visit( SmUnHorNode* pNode ) override;
231 void Visit( SmBinHorNode* pNode ) override;
232 void Visit( SmBinVerNode* pNode ) override;
233 void Visit( SmBinDiagonalNode* pNode ) override;
234 void Visit( SmSubSupNode* pNode ) override;
235 void Visit( SmMatrixNode* pNode ) override;
236 void Visit( SmPlaceNode* pNode ) override;
237 void Visit( SmTextNode* pNode ) override;
238 void Visit( SmSpecialNode* pNode ) override;
239 void Visit( SmGlyphSpecialNode* pNode ) override;
240 void Visit( SmMathSymbolNode* pNode ) override;
241 void Visit( SmBlankNode* pNode ) override;
242 void Visit( SmErrorNode* pNode ) override;
243 void Visit( SmLineNode* pNode ) override;
244 void Visit( SmExpressionNode* pNode ) override;
245 void Visit( SmPolyLineNode* pNode ) override;
246 void Visit( SmRootNode* pNode ) override;
247 void Visit( SmRootSymbolNode* pNode ) override;
248 void Visit( SmRectangleNode* pNode ) override;
249 void Visit( SmVerticalBraceNode* pNode ) override;
250private:
254 void DrawChildren( SmStructureNode* pNode );
255
257 void DrawTextNode( SmTextNode* pNode );
259 void DrawSpecialNode( SmSpecialNode* pNode );
268};
269
270// SmSetSelectionVisitor
271
276{
277public:
278 SmSetSelectionVisitor( SmCaretPos startPos, SmCaretPos endPos, SmNode* pNode);
280 void Visit( SmBinHorNode* pNode ) override;
281 void Visit( SmUnHorNode* pNode ) override;
282 void Visit( SmFontNode* pNode ) override;
283 void Visit( SmTextNode* pNode ) override;
284 void Visit( SmExpressionNode* pNode ) override;
285 void Visit( SmLineNode* pNode ) override;
286 void Visit( SmAlignNode* pNode ) override;
289 static void SetSelectedOnAll( SmNode* pSubTree, bool IsSelected = true );
290private:
297 void DefaultVisit( SmNode* pNode ) override;
309};
310
311
312// SmCaretPosGraphBuildingVisitor
313
314
335{
336public:
338 explicit SmCaretPosGraphBuildingVisitor( SmNode* pRootNode );
340 void Visit( SmTableNode* pNode ) override;
341 void Visit( SmBraceNode* pNode ) override;
342 void Visit( SmBracebodyNode* pNode ) override;
343 void Visit( SmOperNode* pNode ) override;
344 void Visit( SmAlignNode* pNode ) override;
345 void Visit( SmAttributeNode* pNode ) override;
346 void Visit( SmFontNode* pNode ) override;
347 void Visit( SmUnHorNode* pNode ) override;
348 void Visit( SmBinHorNode* pNode ) override;
349 void Visit( SmBinVerNode* pNode ) override;
350 void Visit( SmBinDiagonalNode* pNode ) override;
351 void Visit( SmSubSupNode* pNode ) override;
352 void Visit( SmMatrixNode* pNode ) override;
353 void Visit( SmPlaceNode* pNode ) override;
354 void Visit( SmTextNode* pNode ) override;
355 void Visit( SmSpecialNode* pNode ) override;
356 void Visit( SmGlyphSpecialNode* pNode ) override;
357 void Visit( SmMathSymbolNode* pNode ) override;
358 void Visit( SmBlankNode* pNode ) override;
359 void Visit( SmErrorNode* pNode ) override;
360 void Visit( SmLineNode* pNode ) override;
361 void Visit( SmExpressionNode* pNode ) override;
362 void Visit( SmPolyLineNode* pNode ) override;
363 void Visit( SmRootNode* pNode ) override;
364 void Visit( SmRootSymbolNode* pNode ) override;
365 void Visit( SmRectangleNode* pNode ) override;
366 void Visit( SmVerticalBraceNode* pNode ) override;
368 {
369 return mpGraph.release();
370 }
371private:
373 std::unique_ptr<SmCaretPosGraph> mpGraph;
374};
375
376// SmCloningVisitor
377
382class SmCloningVisitor final : public SmVisitor
383{
384public:
386 : mpResult(nullptr)
387 {}
388 virtual ~SmCloningVisitor() {}
389 void Visit( SmTableNode* pNode ) override;
390 void Visit( SmBraceNode* pNode ) override;
391 void Visit( SmBracebodyNode* pNode ) override;
392 void Visit( SmOperNode* pNode ) override;
393 void Visit( SmAlignNode* pNode ) override;
394 void Visit( SmAttributeNode* pNode ) override;
395 void Visit( SmFontNode* pNode ) override;
396 void Visit( SmUnHorNode* pNode ) override;
397 void Visit( SmBinHorNode* pNode ) override;
398 void Visit( SmBinVerNode* pNode ) override;
399 void Visit( SmBinDiagonalNode* pNode ) override;
400 void Visit( SmSubSupNode* pNode ) override;
401 void Visit( SmMatrixNode* pNode ) override;
402 void Visit( SmPlaceNode* pNode ) override;
403 void Visit( SmTextNode* pNode ) override;
404 void Visit( SmSpecialNode* pNode ) override;
405 void Visit( SmGlyphSpecialNode* pNode ) override;
406 void Visit( SmMathSymbolNode* pNode ) override;
407 void Visit( SmBlankNode* pNode ) override;
408 void Visit( SmErrorNode* pNode ) override;
409 void Visit( SmLineNode* pNode ) override;
410 void Visit( SmExpressionNode* pNode ) override;
411 void Visit( SmPolyLineNode* pNode ) override;
412 void Visit( SmRootNode* pNode ) override;
413 void Visit( SmRootSymbolNode* pNode ) override;
414 void Visit( SmRectangleNode* pNode ) override;
415 void Visit( SmVerticalBraceNode* pNode ) override;
417 SmNode* Clone( SmNode* pNode );
418private:
421 void CloneKids( SmStructureNode* pSource, SmStructureNode* pTarget );
423 static void CloneNodeAttr( SmNode const * pSource, SmNode* pTarget );
424};
425
426
427// SmSelectionRectanglesVisitor: collect selection
428
430{
431public:
433 virtual ~SmSelectionRectanglesVisitor() = default;
434 void Visit( SmTextNode* pNode ) override;
436
438
439private:
447 void DefaultVisit( SmNode* pNode ) override;
449 void VisitChildren( SmNode* pNode );
450};
451
452// SmSelectionDrawingVisitor
453
455{
456public:
458 SmSelectionDrawingVisitor( OutputDevice& rDevice, SmNode* pTree, const Point& rOffset );
459};
460
461// SmNodeToTextVisitor
462
464class SmNodeToTextVisitor final : public SmVisitor
465{
466public:
467 SmNodeToTextVisitor( SmNode* pNode, OUString &rText );
469
470 void Visit( SmTableNode* pNode ) override;
471 void Visit( SmBraceNode* pNode ) override;
472 void Visit( SmBracebodyNode* pNode ) override;
473 void Visit( SmOperNode* pNode ) override;
474 void Visit( SmAlignNode* pNode ) override;
475 void Visit( SmAttributeNode* pNode ) override;
476 void Visit( SmFontNode* pNode ) override;
477 void Visit( SmUnHorNode* pNode ) override;
478 void Visit( SmBinHorNode* pNode ) override;
479 void Visit( SmBinVerNode* pNode ) override;
480 void Visit( SmBinDiagonalNode* pNode ) override;
481 void Visit( SmSubSupNode* pNode ) override;
482 void Visit( SmMatrixNode* pNode ) override;
483 void Visit( SmPlaceNode* pNode ) override;
484 void Visit( SmTextNode* pNode ) override;
485 void Visit( SmSpecialNode* pNode ) override;
486 void Visit( SmGlyphSpecialNode* pNode ) override;
487 void Visit( SmMathSymbolNode* pNode ) override;
488 void Visit( SmBlankNode* pNode ) override;
489 void Visit( SmErrorNode* pNode ) override;
490 void Visit( SmLineNode* pNode ) override;
491 void Visit( SmExpressionNode* pNode ) override;
492 void Visit( SmPolyLineNode* pNode ) override;
493 void Visit( SmRootNode* pNode ) override;
494 void Visit( SmRootSymbolNode* pNode ) override;
495 void Visit( SmRectangleNode* pNode ) override;
496 void Visit( SmVerticalBraceNode* pNode ) override;
497private:
498
504 void LineToText( SmNode* pNode ) {
505 Separate( );
506 if( pNode ) pNode->Accept( this );
507 Separate( );
508 }
509
515 void Append( std::u16string_view rText ) {
516 maCmdText.append( rText );
517 }
518
524 void Separate( ){
525 if( !maCmdText.isEmpty() && maCmdText[ maCmdText.getLength() - 1 ] != ' ' )
526 maCmdText.append(' ');
527 }
528
530 OUStringBuffer maCmdText;
531};
532
533/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
UBlockCode from
UBlockCode to
Node used for alignment.
Definition: node.hxx:1856
Attribute node.
Definition: node.hxx:1890
Binary diagonal node.
Definition: node.hxx:1461
Binary horizontal node.
Definition: node.hxx:1368
Binary horizontal node.
Definition: node.hxx:1425
Node for whitespace.
Definition: node.hxx:2056
Node for brace construction.
Definition: node.hxx:1646
Body of an SmBraceNode.
Definition: node.hxx:1710
Visitor for drawing a caret position.
Definition: visitors.hxx:161
virtual void ProcessUnderline(Point from, Point to) override
Definition: visitors.cxx:255
SmCaretDrawingVisitor(OutputDevice &rDevice, SmCaretPos position, Point offset, bool caretVisible)
Given position and device this constructor will draw the caret.
Definition: visitors.cxx:235
virtual void ProcessCaretLine(Point from, Point to) override
Definition: visitors.cxx:245
A line that represents a caret.
Definition: caret.hxx:61
Point maOffset
Offset to draw from.
Definition: visitors.hxx:138
virtual void ProcessCaretLine(Point from, Point to)=0
SmCaretLinesVisitor(OutputDevice &rDevice, SmCaretPos position, Point offset)
Definition: visitors.cxx:159
OutputDevice & mrDev
Definition: visitors.hxx:135
void Visit(SmTextNode *pNode) override
Definition: visitors.cxx:180
void DefaultVisit(SmNode *pNode) override
Default method for drawing pNodes.
Definition: visitors.cxx:203
virtual ~SmCaretLinesVisitor()=default
SmCaretPos maPos
Definition: visitors.hxx:136
virtual void ProcessUnderline(Point from, Point to)=0
OutputDevice & getDev()
Definition: visitors.hxx:127
Visitor getting a line from a caret position.
Definition: visitors.hxx:178
VclPtr< OutputDevice > mpDev
Definition: visitors.hxx:197
SmCaretPos2LineVisitor(OutputDevice *pDevice, SmCaretPos position)
Given position and device this constructor will compute a line for the caret.
Definition: visitors.hxx:181
virtual ~SmCaretPos2LineVisitor()
Definition: visitors.hxx:189
void DefaultVisit(SmNode *pNode) override
Default method for computing lines for pNodes.
Definition: visitors.cxx:285
const SmCaretLine & GetResult() const
Definition: visitors.hxx:192
void Visit(SmTextNode *pNode) override
Definition: visitors.cxx:265
A visitor for building a SmCaretPosGraph.
Definition: visitors.hxx:335
SmCaretPosGraphBuildingVisitor(SmNode *pRootNode)
Builds a caret position graph for pRootNode.
Definition: visitors.cxx:759
void Visit(SmTableNode *pNode) override
Build SmCaretPosGraph for SmTableNode This method covers cases where SmTableNode is used in a binom o...
Definition: visitors.cxx:799
SmCaretPosGraphEntry * mpRightMost
Definition: visitors.hxx:372
std::unique_ptr< SmCaretPosGraph > mpGraph
Definition: visitors.hxx:373
virtual ~SmCaretPosGraphBuildingVisitor()
Definition: visitors.cxx:781
SmCaretPosGraph * takeGraph()
Definition: visitors.hxx:367
A graph over all caret positions.
Definition: caret.hxx:132
const tools::Rectangle & getCaret() const
Definition: visitors.hxx:147
virtual void ProcessUnderline(Point from, Point to) override
Definition: visitors.cxx:231
tools::Rectangle maCaret
Definition: visitors.hxx:154
SmCaretRectanglesVisitor(OutputDevice &rDevice, SmCaretPos position)
Definition: visitors.cxx:224
virtual void ProcessCaretLine(Point from, Point to) override
Definition: visitors.cxx:230
Visitor for cloning a pNode.
Definition: visitors.hxx:383
SmNode * mpResult
Definition: visitors.hxx:419
void CloneKids(SmStructureNode *pSource, SmStructureNode *pTarget)
Clone children of pSource and give them to pTarget.
Definition: visitors.cxx:1529
SmNode * Clone(SmNode *pNode)
Clone a pNode.
Definition: visitors.cxx:1513
void Visit(SmTableNode *pNode) override
Definition: visitors.cxx:1556
static void CloneNodeAttr(SmNode const *pSource, SmNode *pTarget)
Clone attributes on a pNode.
Definition: visitors.cxx:1522
virtual ~SmCloningVisitor()
Definition: visitors.hxx:388
Visitor that uses DefaultVisit for handling visits by default.
Definition: visitors.hxx:78
virtual void DefaultVisit(SmNode *pNode)=0
Method invoked by Visit methods by default.
void Visit(SmTableNode *pNode) override
Definition: visitors.cxx:22
Visitor for drawing SmNodes to OutputDevice.
Definition: visitors.hxx:208
OutputDevice & mrDev
OutputDevice to draw on.
Definition: visitors.hxx:261
virtual ~SmDrawingVisitor()
Definition: visitors.hxx:222
Point maPosition
Position to draw on the mrDev.
Definition: visitors.hxx:267
SmDrawingVisitor(OutputDevice &rDevice, Point position, SmNode *pTree)
Create an instance of SmDrawingVisitor, and use it to draw a formula.
Definition: visitors.hxx:216
void Visit(SmTableNode *pNode) override
Definition: visitors.cxx:298
void DrawTextNode(SmTextNode *pNode)
Draw an SmTextNode or a subclass of this.
Definition: visitors.cxx:502
void DrawChildren(SmStructureNode *pNode)
Draw the children of a pNode This the default method, use by most pNodes.
Definition: visitors.cxx:527
void DrawSpecialNode(SmSpecialNode *pNode)
Draw an SmSpecialNode or a subclass of this
Definition: visitors.cxx:518
Error node, for parsing errors.
Definition: node.hxx:1097
Expression node.
Definition: node.hxx:1244
Font node.
Definition: node.hxx:1932
Glyph node for custom operators.
Definition: node.hxx:926
A line.
Definition: node.hxx:1178
Math symbol node.
Definition: node.hxx:955
Matrix node.
Definition: node.hxx:2000
Extract command text from pNodes.
Definition: visitors.hxx:465
OUStringBuffer maCmdText
Output text generated from the pNodes.
Definition: visitors.hxx:530
virtual ~SmNodeToTextVisitor()
Definition: visitors.hxx:468
void LineToText(SmNode *pNode)
Extract text from a pNode that constitutes a line.
Definition: visitors.hxx:504
SmNodeToTextVisitor(SmNode *pNode, OUString &rText)
Definition: visitors.cxx:1862
void Separate()
Append a blank for separation, if needed.
Definition: visitors.hxx:524
void Append(std::u16string_view rText)
Appends rText to the OUStringBuffer ( maCmdText ).
Definition: visitors.hxx:515
void Visit(SmTableNode *pNode) override
Definition: visitors.cxx:1869
Definition: node.hxx:125
virtual void Accept(SmVisitor *pVisitor)=0
Accept a visitor.
Operation Node.
Definition: node.hxx:1811
Place node.
Definition: node.hxx:1056
Polygon line node.
Definition: node.hxx:700
Draws a rectangle.
Definition: node.hxx:665
Root node.
Definition: node.hxx:1307
Root symbol node.
Definition: node.hxx:1020
SmSelectionDrawingVisitor(OutputDevice &rDevice, SmNode *pTree, const Point &rOffset)
Draws a selection on rDevice for the selection on pTree.
Definition: visitors.cxx:1789
const tools::Rectangle & GetSelection()
Definition: visitors.hxx:437
tools::Rectangle maSelectionArea
The current area that is selected.
Definition: visitors.hxx:443
void DefaultVisit(SmNode *pNode) override
Default visiting method.
Definition: visitors.cxx:1821
SmSelectionRectanglesVisitor(OutputDevice &rDevice, SmNode *pTree)
Definition: visitors.cxx:1812
virtual ~SmSelectionRectanglesVisitor()=default
void VisitChildren(SmNode *pNode)
Visit the children of a given pNode.
Definition: visitors.cxx:1828
OutputDevice & mrDev
Reference to drawing device.
Definition: visitors.hxx:441
void ExtendSelectionArea(const tools::Rectangle &rArea)
Extend the area that must be selected
Definition: visitors.hxx:445
void Visit(SmTextNode *pNode) override
Definition: visitors.cxx:1840
Set Selection Visitor Sets the IsSelected( ) property on all SmNodes of the tree.
Definition: visitors.hxx:276
static void SetSelectedOnAll(SmNode *pSubTree, bool IsSelected=true)
Set IsSelected on all pNodes of pSubTree.
Definition: visitors.cxx:587
virtual ~SmSetSelectionVisitor()
Definition: visitors.hxx:279
bool mbSelecting
The current state of this visitor This property changes when the visitor meets either maStartPos or m...
Definition: visitors.hxx:308
SmSetSelectionVisitor(SmCaretPos startPos, SmCaretPos endPos, SmNode *pNode)
Definition: visitors.cxx:546
void VisitCompositionNode(SmStructureNode *pNode)
Definition: visitors.cxx:660
void DefaultVisit(SmNode *pNode) override
Visit a selectable pNode Can be used to handle pNodes that can be selected, that doesn't have more Sm...
Definition: visitors.cxx:601
void Visit(SmBinHorNode *pNode) override
Definition: visitors.cxx:745
SmCaretPos maStartPos
Caret position where the selection starts.
Definition: visitors.hxx:300
SmCaretPos maEndPos
Caret position where the selection ends.
Definition: visitors.hxx:302
Special node for user defined characters.
Definition: node.hxx:878
Abstract baseclass for all composite node.
Definition: node.hxx:471
Super- and subscript node.
Definition: node.hxx:1559
Table node.
Definition: node.hxx:1139
Text node.
Definition: node.hxx:747
Unary horizontal node.
Definition: node.hxx:1272
Node for vertical brace construction.
Definition: node.hxx:1750
Visitors are an easy way to automating operations with nodes.
Definition: visitors.hxx:35
virtual void Visit(SmBlankNode *pNode)=0
virtual void Visit(SmBinDiagonalNode *pNode)=0
virtual void Visit(SmMatrixNode *pNode)=0
virtual void Visit(SmRootNode *pNode)=0
virtual void Visit(SmRectangleNode *pNode)=0
virtual void Visit(SmTextNode *pNode)=0
virtual void Visit(SmErrorNode *pNode)=0
virtual void Visit(SmUnHorNode *pNode)=0
virtual void Visit(SmGlyphSpecialNode *pNode)=0
virtual void Visit(SmRootSymbolNode *pNode)=0
virtual void Visit(SmSpecialNode *pNode)=0
virtual void Visit(SmOperNode *pNode)=0
virtual void Visit(SmExpressionNode *pNode)=0
virtual void Visit(SmLineNode *pNode)=0
virtual void Visit(SmBinVerNode *pNode)=0
virtual void Visit(SmBinHorNode *pNode)=0
virtual void Visit(SmBraceNode *pNode)=0
virtual void Visit(SmPlaceNode *pNode)=0
~SmVisitor()
Definition: visitors.hxx:66
virtual void Visit(SmMathSymbolNode *pNode)=0
virtual void Visit(SmAlignNode *pNode)=0
virtual void Visit(SmSubSupNode *pNode)=0
virtual void Visit(SmAttributeNode *pNode)=0
virtual void Visit(SmTableNode *pNode)=0
virtual void Visit(SmVerticalBraceNode *pNode)=0
virtual void Visit(SmFontNode *pNode)=0
virtual void Visit(SmPolyLineNode *pNode)=0
virtual void Visit(SmBracebodyNode *pNode)=0
tools::Rectangle & Union(const tools::Rectangle &rRect)
#define SAL_WARN_IF(condition, area, stream)
def position(n=-1)
An entry in SmCaretPosGraph.
Definition: caret.hxx:111
Representation of caret position with an equation.
Definition: caret.hxx:17
SmNode * pSelectedNode
Selected node.
Definition: caret.hxx:26