crashtesting: assert on reimport of docx export of ooo102874-2.doc
[LibreOffice.git] / slideshow / source / inc / doctreenode.hxx
blob45bbf77b0cfadd3c04167e42af37e519a957c9a4
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SLIDESHOW_SOURCE_INC_DOCTREENODE_HXX
21 #define INCLUDED_SLIDESHOW_SOURCE_INC_DOCTREENODE_HXX
23 #include <sal/types.h>
24 #include <vector>
27 /* Definition of DocTreeNode class */
29 namespace slideshow::internal
32 /** This class represents kind of a DOM tree node for shape
33 text
35 In order to animate subsets of shape text, we need
36 information about the logical and formatting structure of
37 that text (lines, paragraphs, words etc.). This is
38 represented in a tree structure, with DocTreeNodes as the
39 nodes. Instances of this class can be queried from the
40 DocTreeNodeSupplier interface.
42 This class has nothing to do with the Draw document tree.
44 class DocTreeNode
46 public:
47 /// Type of shape entity represented by this node
48 enum class NodeType
50 /// This node represents a paragraph
51 LogicalParagraph=129,
52 /// This node represents a word
53 LogicalWord=131,
54 /// This node represents a character
55 LogicalCharacterCell=132
58 /** Create empty tree node
60 DocTreeNode() :
61 mnStartIndex(-1),
62 mnEndIndex(-1)
66 /** Create tree node from start and end index.
68 Create a tree node for the given range and type.
70 @param nStartIndex
71 Start index
73 @param nEndIndex
74 End index (exclusive)
76 @param eType
77 Node type
79 DocTreeNode( sal_Int32 nStartIndex,
80 sal_Int32 nEndIndex ) :
81 mnStartIndex(nStartIndex),
82 mnEndIndex(nEndIndex)
86 bool isEmpty() const { return mnStartIndex == mnEndIndex; }
88 sal_Int32 getStartIndex() const { return mnStartIndex; }
89 void setStartIndex( sal_Int32 nIndex ) { mnStartIndex = nIndex; }
90 sal_Int32 getEndIndex() const { return mnEndIndex; }
91 void setEndIndex( sal_Int32 nIndex ) { mnEndIndex = nIndex; }
93 void reset()
95 mnStartIndex = -1;
96 mnEndIndex = -1;
99 private:
100 sal_Int32 mnStartIndex;
101 sal_Int32 mnEndIndex;
105 typedef ::std::vector< DocTreeNode > VectorOfDocTreeNodes;
109 #endif // INCLUDED_SLIDESHOW_SOURCE_INC_DOCTREENODE_HXX
111 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */