IWORKText.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libetonyek 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 
10 #ifndef IWORKTEXT_H_INCLUDED
11 #define IWORKTEXT_H_INCLUDED
12 
13 #include "IWORKText_fwd.h"
14 
15 #include <deque>
16 #include <stack>
17 
18 #include <glm/glm.hpp>
19 
20 #include <librevenge/librevenge.h>
21 
22 #include "IWORKEnum.h"
23 #include "IWORKStyle_fwd.h"
24 #include "IWORKStyleStack.h"
25 #include "IWORKOutputElements.h"
26 
27 namespace libetonyek
28 {
29 
30 class IWORKLanguageManager;
31 class IWORKTextRecorder;
32 
33 class IWORKText
34 {
35 public:
36  IWORKText(const IWORKLanguageManager &langManager, bool discardEmptyContent, bool allowListInsertion);
37  ~IWORKText();
38 
39  void setRecorder(const std::shared_ptr<IWORKTextRecorder> &recorder);
40  const std::shared_ptr<IWORKTextRecorder> &getRecorder() const;
41 
45  void pushBaseParagraphStyle(const IWORKStylePtr_t &style);
46 
48  void setLayoutStyle(const IWORKStylePtr_t &style);
50  void flushLayout();
53 
55  void setListStyle(const IWORKStylePtr_t &style);
57  void setListLevel(const unsigned level);
59  void flushList();
60 
62  void setParagraphStyle(const IWORKStylePtr_t &style);
64  void flushParagraph();
65 
67  void setSpanStyle(const IWORKStylePtr_t &style);
69  void setLanguage(const IWORKStylePtr_t &style);
71  void flushSpan();
72 
73  void insertField(IWORKFieldType fieldType);
74  void openLink(const std::string &url);
75  void closeLink();
76  void insertText(const std::string &text);
77  void insertTab();
78  void insertSpace();
79  void insertColumnBreak();
80  void insertLineBreak();
81  void insertPageBreak();
82 
83  void insertInlineContent(const IWORKOutputElements &elements);
84  void insertBlockContent(const IWORKOutputElements &elements);
85 
86  bool empty() const;
87 
88  void draw(IWORKOutputElements &elements);
89 
90  // utility function
91  static void fillCharPropList(const IWORKStyleStack &style, const IWORKLanguageManager &langManager, librevenge::RVNGPropertyList &props);
92 
93 private:
94  void openSection();
95  void closeSection();
96  bool needsSection() const;
97 
98  void handleListLevelChange(unsigned level);
99 
100  void openPara();
101  void closePara();
102  void fillParaPropList(librevenge::RVNGPropertyList &propList, bool realParagraph=true);
103 
104  void openSpan();
105  void closeSpan();
106 
107 private:
109 
112 
114 
118  mutable librevenge::RVNGPropertyList m_sectionProps;
119  mutable bool m_checkedSection;
120 
127  unsigned m_listLevel;
128  unsigned m_inListLevel;
130  std::stack<bool> m_isOrderedStack;
131 
134  bool m_inPara;
137 
138  bool m_inLink;
142  bool m_inSpan;
143 
145 
146  std::shared_ptr<IWORKTextRecorder> m_recorder;
147 };
148 
149 }
150 
151 #endif // IWORKTEXT_H_INCLUDED
152 
153 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
bool m_listAllowed
Definition: IWORKText.h:124
void closeLink()
Definition: IWORKText.cpp:795
bool m_inLink
Definition: IWORKText.h:138
std::stack< bool > m_isOrderedStack
Saves info about the currently opened list levels being ordered or unordered.
Definition: IWORKText.h:130
void setLanguage(const IWORKStylePtr_t &style)
Set language used for the next span.
Definition: IWORKText.cpp:713
void insertField(IWORKFieldType fieldType)
Definition: IWORKText.cpp:737
Definition: IWORKOutputElements.h:32
void closeSection()
Definition: IWORKText.cpp:614
void openSection()
Definition: IWORKText.cpp:602
IWORKStyleStack m_paraStyleStack
Definition: IWORKText.h:111
void closeSpan()
Definition: IWORKText.cpp:1063
Definition: IWORKText.h:33
Representation of a dynamic inheritance of styles.
Definition: IWORKStyleStack.h:34
IWORKBreakType
Definition: IWORKEnum.h:49
std::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition: IWORKStyle_fwd.h:21
void flushLayout()
Flush the current layout.
Definition: IWORKText.cpp:590
void handleListLevelChange(unsigned level)
Definition: IWORKText.cpp:934
const IWORKLanguageManager & m_langManager
Definition: IWORKText.h:108
void openSpan()
Definition: IWORKText.cpp:1043
void fillParaPropList(librevenge::RVNGPropertyList &propList, bool realParagraph=true)
Definition: IWORKText.cpp:1026
void insertPageBreak()
Definition: IWORKText.cpp:899
Definition: IWORKToken.h:472
IWORKStyleStack m_layoutStyleStack
Definition: IWORKText.h:110
IWORKStylePtr_t m_oldSpanStyle
Definition: IWORKText.h:144
bool m_ignoreEmptyPara
Definition: IWORKText.h:136
IWORKStylePtr_t m_previousListStyle
the previous list style
Definition: IWORKText.h:123
void setListLevel(const unsigned level)
Set the list level of the next paragraph, 0 meaning no list.
Definition: IWORKText.cpp:651
bool empty() const
Definition: IWORKText.cpp:929
Definition: IWORKToken.h:421
std::shared_ptr< IWORKTextRecorder > m_recorder
Definition: IWORKText.h:146
bool m_inPara
Definition: IWORKText.h:134
void insertText(const std::string &text)
Definition: IWORKText.cpp:816
IWORKStylePtr_t m_paraStyle
Definition: IWORKText.h:132
void insertTab()
Definition: IWORKText.cpp:839
bool needsSection() const
Definition: IWORKText.cpp:1071
void flushSpan()
Flush the current span.
Definition: IWORKText.cpp:725
Definition: KEY1Token.h:158
librevenge::RVNGPropertyList m_sectionProps
Definition: IWORKText.h:118
void insertInlineContent(const IWORKOutputElements &elements)
Definition: IWORKText.cpp:911
IWORKStylePtr_t getLayoutStyle()
returns the current layout style
Definition: IWORKText.cpp:572
void setSpanStyle(const IWORKStylePtr_t &style)
Set style used for the next span.
Definition: IWORKText.cpp:701
void openLink(const std::string &url)
Definition: IWORKText.cpp:769
void insertColumnBreak()
Definition: IWORKText.cpp:871
void setRecorder(const std::shared_ptr< IWORKTextRecorder > &recorder)
Definition: IWORKText.cpp:540
const std::shared_ptr< IWORKTextRecorder > & getRecorder() const
Definition: IWORKText.cpp:545
void pushBaseLayoutStyle(const IWORKStylePtr_t &style)
Set style used as base for all layout styles in this text.
Definition: IWORKText.cpp:550
bool m_inSection
Definition: IWORKText.h:117
void insertBlockContent(const IWORKOutputElements &elements)
Definition: IWORKText.cpp:919
void setLayoutStyle(const IWORKStylePtr_t &style)
Set style used for the next layout.
Definition: IWORKText.cpp:577
void closePara()
Definition: IWORKText.cpp:1012
IWORKStylePtr_t m_langStyle
Definition: IWORKText.h:140
void insertLineBreak()
Definition: IWORKText.cpp:883
IWORKFieldType
Definition: IWORKEnum.h:143
unsigned m_listLevel
Definition: IWORKText.h:127
bool m_hasContent
Definition: IWORKText.h:115
bool m_listHasLevel0
flag to know if the list level 0 is defined
Definition: IWORKText.h:126
void pushBaseParagraphStyle(const IWORKStylePtr_t &style)
Set style used as base for all paragraph styles in this text.
Definition: IWORKText.cpp:561
bool m_inSpan
Definition: IWORKText.h:142
Definition: IWORKLanguageManager.h:23
Definition: IWORKToken.h:418
bool m_inListElement
Definition: IWORKText.h:135
void setParagraphStyle(const IWORKStylePtr_t &style)
Set style used for the next paragraph.
Definition: IWORKText.cpp:674
IWORKStylePtr_t m_spanStyle
Definition: IWORKText.h:139
IWORKOutputElements m_elements
Definition: IWORKText.h:113
void insertSpace()
Definition: IWORKText.cpp:855
void setListStyle(const IWORKStylePtr_t &style)
Set list style used for the next paragraph, if it is in a list.
Definition: IWORKText.cpp:626
IWORKStylePtr_t m_layoutStyle
Definition: IWORKText.h:116
IWORKStylePtr_t m_listStyle
Definition: IWORKText.h:121
void draw(IWORKOutputElements &elements)
Definition: IWORKText.cpp:489
bool m_spanStyleChanged
Definition: IWORKText.h:141
~IWORKText()
Definition: IWORKText.cpp:535
IWORKBreakType m_breakDelayed
Definition: IWORKText.h:133
void openPara()
Definition: IWORKText.cpp:989
void flushParagraph()
Flush the current paragraph.
Definition: IWORKText.cpp:685
bool m_checkedSection
Definition: IWORKText.h:119
unsigned m_inListLevel
Definition: IWORKText.h:128
IWORKText(const IWORKLanguageManager &langManager, bool discardEmptyContent, bool allowListInsertion)
Definition: IWORKText.cpp:500
void flushList()
Flush the current list level(s).
Definition: IWORKText.cpp:662
static void fillCharPropList(const IWORKStyleStack &style, const IWORKLanguageManager &langManager, librevenge::RVNGPropertyList &props)
Definition: IWORKText.cpp:79

Generated for libetonyek by doxygen 1.8.6