24 #ifndef __IWaxStrand__ 25 #define __IWaxStrand__ 27 #include "IPMUnknown.h" 29 #include "CTextEnum.h" 31 #include "ParcelKey.h" 56 typedef std::pair<IWaxLine*, int32> WaxLineApplyEntry;
57 DECLARE_BASE_TYPE(WaxLineApplyEntry);
69 enum { kDefaultIID = IID_IWAXSTRAND };
72 virtual void TraceStrandContents() = 0;
75 virtual void MarkInsertDamage(TextIndex at, int32 amt) = 0;
76 virtual void MarkDeleteDamage(TextIndex start, int32 length,
77 bool16 paraStrandAfter = kTrue) = 0;
80 virtual void MarkChangeDamage(TextIndex start, int32 length, bool16 addOneToLength = kFalse) = 0;
82 enum CheckForKeeps { kDontCheckForKeeps = 0, kCheckForKeeps = 1 };
83 enum TreatAsOverset { kDontTreatAsOverset = 0, kTreatAsOverset = 1 };
84 virtual void MarkGeometryDamage(TextIndex start, int32 length,
85 CheckForKeeps checkForKeeps = kCheckForKeeps,
86 TreatAsOverset treatAsOverset = kDontTreatAsOverset,
87 int32 limitLeanLeftParcelIndex = kInvalidParcelIndex) = 0;
89 virtual void MarkRegenDamage(TextIndex start, int32 length) = 0;
90 virtual void MarkContentDamage(TextIndex start, int32 length,
91 CheckForKeeps checkForKeeps = kCheckForKeeps) = 0;
107 virtual IWaxLine* QueryNewWaxLine()
const = 0;
110 TextIndex waxLineTextIndex,
112 bool16 disableApplyInval) = 0;
113 virtual void NewDeferredInval() = 0;
114 virtual void AddDeferredInval(TextIndex at, bool16 disableInval,
115 bool16 forceInkCache) = 0;
116 virtual void EndDeferredInval() = 0;
118 enum {kLeanRight = 0, kLeanLeft = 1};
119 virtual bool16 GetTextIndexToWaxLineData(TextIndex index,
121 int32 *pOffsetWithinLine = nil,
122 int32 *pTextSpan = nil,
124 UID *pFrameUID = nil,
125 PMReal *pLineHeight = nil,
129 PMMatrix *pWaxToGlyphMatrix = nil) = 0;
131 virtual bool16 GetTextCaretLine(
IFrameList* frameList,
146 PMReal * hitLineSelectionTop = nil,
147 PMReal * hitLineSelectionBottom = nil) = 0;
151 PMReal prevSelectionBottom;
155 PMReal thisSelectionBottom;
165 prevSelectionBottom(0.), prevSelectionTop(0.),
166 thisSelectionTop(0.), thisSelectionBottom(0.),
167 nextSelectionTop(0.), waxLine(nil),
168 localOffset(0), prevInvalid(kFalse), nextInvalid(kFalse)
172 virtual void CallbackWaxIterator(TextIndex start,
173 bool16 (*callback)(
void *priv,
175 void *callback_priv) = 0;
182 TextIndex waxLineTextIndex) = 0;
190 virtual void StoryThreadCreated(TextIndex prevThreadStart,
191 int32 prevThreadSpan,
192 TextIndex newThreadStart,
193 int32 newThreadSpan) = 0;
195 virtual void StoryThreadDeleted(TextIndex prevThreadStart,
196 int32 prevThreadSpan,
197 TextIndex oldThreadStart,
198 int32 oldThreadSpan) = 0;
211 virtual bool16 FreezeDamage(bool16 freeze) = 0;
212 virtual int32 MarkPasteDamage(TextIndex pos, int32 len) = 0;
216 virtual void ConvertAnnaTableFrameWaxLines(TextIndex at, int32 lineCount) = 0;
217 virtual void MarkReplaceDamage(
const boost::shared_ptr<ITextModel::ReplacementList >& replList) = 0;
219 virtual void CheckFishyWaxWorld()
const = 0;