1 /* 2 For general Scribus (>=1.3.2) copyright and licensing information please refer 3 to the COPYING file provided with the program. Following this notice may exist 4 a copyright and/or license notice that predates the release of Scribus 1.3.2 5 for which a new license (GPL+exception) is in place. 6 */ 7 8 #ifndef TEXTSOURCE_H 9 #define TEXTSOURCE_H 10 11 #include <QString> 12 13 #include "scribusapi.h" 14 #include "itextsource.h" 15 #include "styles/paragraphstyle.h" 16 17 18 class CharStyle; 19 class ParagraphStyle; 20 class InlineFrame; 21 22 23 /** 24 * provide a segment of an original textsource 25 */ 26 class SCRIBUS_API TextSourceSegment : public ITextSource 27 { 28 ITextSource* m_source; 29 int m_sourceOffset; 30 int m_segmentLength; 31 32 void chk(int pos); 33 int toSrc(int pos); 34 35 public: 36 37 TextSourceSegment(ITextSource* original, int offset, int segmentLength); 38 39 bool canCombine(const TextSourceSegment& other) const; 40 void combine(const TextSourceSegment& other); 41 42 virtual int length() const; 43 virtual QChar text(int pos) const; 44 virtual QString text(int pos, uint len) const; 45 46 virtual bool isBlockStart(int pos) const; 47 virtual int nextBlockStart(int pos) const; 48 49 virtual const CharStyle& charStyle(int pos) const; 50 virtual const ParagraphStyle& paragraphStyle(int pos) const; 51 virtual LayoutFlags flags(int pos) const; 52 virtual bool hasFlag(int pos, LayoutFlags flag) const; 53 virtual void setFlag(int pos, LayoutFlags flag); 54 virtual void clearFlag(int pos, LayoutFlags flag); 55 56 virtual bool hasObject(int pos) const; 57 virtual InlineFrame object(int pos) const; 58 virtual bool hasExpansionPoint(int pos) const; 59 virtual ExpansionPoint expansionPoint(int pos) const; 60 61 virtual const ITextSource* parent() const; 62 virtual int parentPos() const; 63 }; 64 65 66 67 /** 68 * provide a simple text source with fixed style, optionally linking it to an expansion point 69 */ 70 class SCRIBUS_API SimpleTextSource : public ITextSource 71 { 72 QString m_text; 73 ParagraphStyle m_style; 74 75 ITextSource* m_parent; 76 int m_parentPos; 77 78 public: 79 m_text(text)80 SimpleTextSource(QString text, const ParagraphStyle& style, ITextSource* par=nullptr, int parentStart = 0) : m_text(text), m_style(style), m_parent(par), m_parentPos(parentStart) {} 81 82 virtual int length() const; 83 virtual QChar text(int pos) const; 84 virtual QString text(int pos, uint len) const; 85 86 virtual bool isBlockStart(int pos) const; 87 virtual int nextBlockStart(int pos) const; 88 89 virtual const CharStyle& charStyle(int pos) const; 90 virtual const ParagraphStyle& paragraphStyle(int pos) const; 91 virtual LayoutFlags flags(int pos) const; 92 virtual bool hasFlag(int pos, LayoutFlags flag) const; 93 virtual void setFlag(int pos, LayoutFlags flag); 94 virtual void clearFlag(int pos, LayoutFlags flag); 95 96 virtual bool hasObject(int pos) const; 97 virtual InlineFrame object(int pos) const; 98 virtual bool hasExpansionPoint(int pos) const; 99 virtual ExpansionPoint expansionPoint(int pos) const; 100 101 virtual const ITextSource* parent() const; 102 virtual int parentPos() const; 103 }; 104 105 #endif // ITEXTSOURCE_H 106 107