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 "IWORKStyle_fwd.h"
23 #include "IWORKStyleStack.h"
24 #include "IWORKOutputElements.h"
25 
26 namespace libetonyek
27 {
28 
29 class IWORKLanguageManager;
30 class IWORKTextRecorder;
31 
32 class IWORKText
33 {
34 public:
35  IWORKText(const IWORKLanguageManager &langManager, bool discardEmptyContent);
36  ~IWORKText();
37 
38  void setRecorder(const std::shared_ptr<IWORKTextRecorder> &recorder);
39  const std::shared_ptr<IWORKTextRecorder> &getRecorder() const;
40 
44  void pushBaseParagraphStyle(const IWORKStylePtr_t &style);
45 
47  void setLayoutStyle(const IWORKStylePtr_t &style);
49  void flushLayout();
50 
52  void setListStyle(const IWORKStylePtr_t &style);
54  void setListLevel(const unsigned level);
56  void flushList();
57 
59  void setParagraphStyle(const IWORKStylePtr_t &style);
61  void flushParagraph();
62 
64  void setSpanStyle(const IWORKStylePtr_t &style);
66  void setLanguage(const IWORKStylePtr_t &style);
68  void flushSpan();
69 
70  void openLink(const std::string &url);
71  void closeLink();
72 
73  void insertText(const std::string &text);
74  void insertTab();
75  void insertSpace();
76  void insertLineBreak();
77  void insertPageBreak();
78 
79  void insertInlineContent(const IWORKOutputElements &elements);
80  void insertBlockContent(const IWORKOutputElements &elements);
81 
82  bool empty() const;
83 
84  void draw(IWORKOutputElements &elements);
85 
86  // utility function
87  static void fillCharPropList(const IWORKStyleStack &style, const IWORKLanguageManager &langManager, librevenge::RVNGPropertyList &props);
88 
89 private:
90  void openSection();
91  void closeSection();
92  bool needsSection() const;
93 
94  void handleListLevelChange(unsigned level);
95 
96  void openPara();
97  void closePara();
98  void fillParaPropList(librevenge::RVNGPropertyList &propList);
99 
100  void openSpan();
101  void closeSpan();
102 
103 private:
105 
108 
110 
113  mutable librevenge::RVNGPropertyList m_sectionProps;
114  mutable bool m_checkedSection;
115 
117  unsigned m_listLevel;
118  unsigned m_inListLevel;
120  std::stack<bool> m_isOrderedStack;
121 
124  bool m_inPara;
126 
130  bool m_inSpan;
131 
133 
134  std::shared_ptr<IWORKTextRecorder> m_recorder;
135 };
136 
137 }
138 
139 #endif // IWORKTEXT_H_INCLUDED
140 
141 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
void closeLink()
Definition: IWORKText.cpp:678
Definition: IWORKBezierElement.cpp:18
std::stack< bool > m_isOrderedStack
Saves info about the currently opened list levels being ordered or unordered.
Definition: IWORKText.h:120
void setLanguage(const IWORKStylePtr_t &style)
Set language used for the next span.
Definition: IWORKText.cpp:631
Definition: IWORKOutputElements.h:29
void closeSection()
Definition: IWORKText.cpp:546
void openSection()
Definition: IWORKText.cpp:534
IWORKStyleStack m_paraStyleStack
Definition: IWORKText.h:107
void closeSpan()
Definition: IWORKText.cpp:892
Definition: IWORKText.h:32
Representation of a dynamic inheritance of styles.
Definition: IWORKStyleStack.h:34
bool empty() const
Definition: IWORKText.cpp:782
std::shared_ptr< IWORKStyle > IWORKStylePtr_t
Definition: IWORKStyle_fwd.h:21
void flushLayout()
Flush the current layout.
Definition: IWORKText.cpp:522
void handleListLevelChange(unsigned level)
Definition: IWORKText.cpp:787
const IWORKLanguageManager & m_langManager
Definition: IWORKText.h:104
void fillParaPropList(librevenge::RVNGPropertyList &propList)
Definition: IWORKText.cpp:858
void openSpan()
Definition: IWORKText.cpp:872
void insertPageBreak()
Definition: IWORKText.cpp:754
Definition: IWORKToken.h:284
IWORKStyleStack m_layoutStyleStack
Definition: IWORKText.h:106
IWORKStylePtr_t m_oldSpanStyle
Definition: IWORKText.h:132
bool m_ignoreEmptyPara
Definition: IWORKText.h:125
void setListLevel(const unsigned level)
Set the list level of the next paragraph, 0 meaning no list.
Definition: IWORKText.cpp:569
Definition: IWORKToken.h:268
std::shared_ptr< IWORKTextRecorder > m_recorder
Definition: IWORKText.h:134
bool m_pageBreakDelayed
Definition: IWORKText.h:123
bool m_inPara
Definition: IWORKText.h:124
void insertText(const std::string &text)
Definition: IWORKText.cpp:694
IWORKStylePtr_t m_paraStyle
Definition: IWORKText.h:122
void insertTab()
Definition: IWORKText.cpp:709
IWORKText(const IWORKLanguageManager &langManager, bool discardEmptyContent)
Definition: IWORKText.cpp:444
void flushSpan()
Flush the current span.
Definition: IWORKText.cpp:643
Definition: KEY1Token.h:133
librevenge::RVNGPropertyList m_sectionProps
Definition: IWORKText.h:113
void insertInlineContent(const IWORKOutputElements &elements)
Definition: IWORKText.cpp:765
void setSpanStyle(const IWORKStylePtr_t &style)
Set style used for the next span.
Definition: IWORKText.cpp:619
const std::shared_ptr< IWORKTextRecorder > & getRecorder() const
Definition: IWORKText.cpp:482
void openLink(const std::string &url)
Definition: IWORKText.cpp:655
void setRecorder(const std::shared_ptr< IWORKTextRecorder > &recorder)
Definition: IWORKText.cpp:477
void pushBaseLayoutStyle(const IWORKStylePtr_t &style)
Set style used as base for all layout styles in this text.
Definition: IWORKText.cpp:487
bool m_inSection
Definition: IWORKText.h:112
void insertBlockContent(const IWORKOutputElements &elements)
Definition: IWORKText.cpp:772
void setLayoutStyle(const IWORKStylePtr_t &style)
Set style used for the next layout.
Definition: IWORKText.cpp:509
void closePara()
Definition: IWORKText.cpp:843
IWORKStylePtr_t m_langStyle
Definition: IWORKText.h:128
void insertLineBreak()
Definition: IWORKText.cpp:739
unsigned m_listLevel
Definition: IWORKText.h:117
void pushBaseParagraphStyle(const IWORKStylePtr_t &style)
Set style used as base for all paragraph styles in this text.
Definition: IWORKText.cpp:498
bool m_inSpan
Definition: IWORKText.h:130
Definition: IWORKLanguageManager.h:23
Definition: IWORKToken.h:266
void setParagraphStyle(const IWORKStylePtr_t &style)
Set style used for the next paragraph.
Definition: IWORKText.cpp:591
IWORKStylePtr_t m_spanStyle
Definition: IWORKText.h:127
IWORKOutputElements m_elements
Definition: IWORKText.h:109
void insertSpace()
Definition: IWORKText.cpp:724
void setListStyle(const IWORKStylePtr_t &style)
Set list style used for the next paragraph, if it is in a list.
Definition: IWORKText.cpp:558
IWORKStylePtr_t m_layoutStyle
Definition: IWORKText.h:111
IWORKStylePtr_t m_listStyle
Definition: IWORKText.h:116
void draw(IWORKOutputElements &elements)
Definition: IWORKText.cpp:435
bool m_spanStyleChanged
Definition: IWORKText.h:129
~IWORKText()
Definition: IWORKText.cpp:472
void openPara()
Definition: IWORKText.cpp:826
void flushParagraph()
Flush the current paragraph.
Definition: IWORKText.cpp:602
bool m_checkedSection
Definition: IWORKText.h:114
bool needsSection() const
Definition: IWORKText.cpp:900
unsigned m_inListLevel
Definition: IWORKText.h:118
void flushList()
Flush the current list level(s).
Definition: IWORKText.cpp:580
static void fillCharPropList(const IWORKStyleStack &style, const IWORKLanguageManager &langManager, librevenge::RVNGPropertyList &props)
Definition: IWORKText.cpp:80

Generated for libetonyek by doxygen 1.8.13