| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | /*************************************************************************
 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *  OpenOffice.org - a multi-platform office productivity suite | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *  $RCSfile: doctreenode.hxx,v $ | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-10-11 07:49:23 +00:00
										 |  |  |  *  $Revision: 1.5 $ | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-10-11 07:49:23 +00:00
										 |  |  |  *  last change: $Author: obo $ $Date: 2005-10-11 08:49:23 $ | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *  The Contents of this file are made available subject to | 
					
						
							|  |  |  |  *  the terms of GNU Lesser General Public License Version 2.1. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *    GNU Lesser General Public License Version 2.1 | 
					
						
							|  |  |  |  *    ============================================= | 
					
						
							|  |  |  |  *    Copyright 2005 by Sun Microsystems, Inc. | 
					
						
							|  |  |  |  *    901 San Antonio Road, Palo Alto, CA 94303, USA | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *    This library is free software; you can redistribute it and/or | 
					
						
							|  |  |  |  *    modify it under the terms of the GNU Lesser General Public | 
					
						
							|  |  |  |  *    License version 2.1, as published by the Free Software Foundation. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *    This library is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
					
						
							|  |  |  |  *    Lesser General Public License for more details. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2005-09-07 20:09:14 +00:00
										 |  |  |  *    You should have received a copy of the GNU Lesser General Public | 
					
						
							|  |  |  |  *    License along with this library; if not, write to the Free Software | 
					
						
							|  |  |  |  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
					
						
							|  |  |  |  *    MA  02111-1307  USA | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  ************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _SLIDESHOW_DOCTREENODE_HXX
 | 
					
						
							|  |  |  | #define _SLIDESHOW_DOCTREENODE_HXX
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _SAL_TYPES_H_
 | 
					
						
							|  |  |  | #include <sal/types.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | /* Definition of DocTreeNode class */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace presentation | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     namespace internal | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |         /** This class represents kind of a DOM tree node for shape
 | 
					
						
							|  |  |  |             text | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             In order to animate subsets of shape text, we need | 
					
						
							|  |  |  |             information about the logical and formatting structure of | 
					
						
							|  |  |  |             that text (lines, paragraphs, words etc.). This is | 
					
						
							|  |  |  |             represented in a tree structure, with DocTreeNodes as the | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |             nodes. Instances of this class can be queried from the | 
					
						
							|  |  |  |             DocTreeNodeSupplier interface. | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             This class has nothing to do with the Draw document tree. | 
					
						
							|  |  |  |          */ | 
					
						
							|  |  |  |         class DocTreeNode | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |         public: | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |             /// Type of shape entity represented by this node
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |             enum NodeType | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 NODETYPE_INVALID=0, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a full shape
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_FORMATTING_SHAPE=1, | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a line
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_FORMATTING_LINE=2, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a full shape
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_LOGICAL_SHAPE=128, | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a paragraph
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_LOGICAL_PARAGRAPH=129, | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a sentence
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_LOGICAL_SENTENCE=130, | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a word
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_LOGICAL_WORD=131, | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |                 /// This node represents a character
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 NODETYPE_LOGICAL_CHARACTER_CELL=132 | 
					
						
							|  |  |  |             }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             // classificators for above text entity types
 | 
					
						
							|  |  |  |             static bool isLogicalNodeType( NodeType eType ) { return eType > 127; } | 
					
						
							|  |  |  |             static bool isFormattingNodeType( NodeType eType ) { return eType > 0 && eType < 128; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             /** Create empty tree node
 | 
					
						
							|  |  |  |              */ | 
					
						
							|  |  |  |             DocTreeNode() : | 
					
						
							|  |  |  |                 mnStartIndex(-1), | 
					
						
							|  |  |  |                 mnEndIndex(-1), | 
					
						
							|  |  |  |                 meType(NODETYPE_INVALID) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             /** Create tree node from start and end index.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 Create a tree node for the given range and type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 @param nStartIndex | 
					
						
							|  |  |  |                 Start index | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 @param nEndIndex | 
					
						
							|  |  |  |                 End index (exclusive) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 @param eType | 
					
						
							|  |  |  |                 Node type | 
					
						
							|  |  |  |              */ | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |             DocTreeNode( sal_Int32 nStartIndex, | 
					
						
							|  |  |  |                          sal_Int32 nEndIndex, | 
					
						
							|  |  |  |                          NodeType  eType ) : | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |                 mnStartIndex(nStartIndex), | 
					
						
							|  |  |  |                 mnEndIndex(nEndIndex), | 
					
						
							|  |  |  |                 meType(eType) | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |             bool                isEmpty() const { return mnStartIndex == mnEndIndex; } | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |             sal_Int32           getStartIndex() const { return mnStartIndex; } | 
					
						
							|  |  |  |             sal_Int32           getEndIndex() const { return mnEndIndex; } | 
					
						
							|  |  |  |             void                setStartIndex( sal_Int32 nIndex ) { mnStartIndex = nIndex; } | 
					
						
							|  |  |  |             void                setEndIndex( sal_Int32 nIndex ) { mnEndIndex = nIndex; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |             NodeType            getType() const { return meType; } | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-10-11 07:49:23 +00:00
										 |  |  |             void                reset() | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |                 mnStartIndex = -1; | 
					
						
							|  |  |  |                 mnEndIndex   = -1; | 
					
						
							|  |  |  |                 meType = NODETYPE_INVALID; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |         private: | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  |             sal_Int32   mnStartIndex; | 
					
						
							|  |  |  |             sal_Int32   mnEndIndex; | 
					
						
							|  |  |  |             NodeType    meType; | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2005-03-30 07:13:33 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         typedef ::std::vector< DocTreeNode > VectorOfDocTreeNodes; | 
					
						
							| 
									
										
										
										
											2004-11-26 18:14:50 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* _SLIDESHOW_DOCTREENODE_HXX */
 |