24 #ifndef __ITextParcelList__ 25 #define __ITextParcelList__ 27 #include "IPMUnknown.h" 28 #include "IParcelList.h" 29 #include "ITextParcelListData.h" 31 #include "CTextEnum.h" 32 #include "DrawPassInfo.h" 33 #include "OwnedItemDataList.h" 48 class ITextSelectionDrawer;
51 class IWaxAnchoredElement;
59 class ContainerComposer;
67 enum { kDefaultIID = IID_ITEXTPARCELLIST };
72 virtual UIDRef GetTextModelRef()
const = 0;
73 virtual UIDRef GetWaxStrandRef()
const = 0;
76 virtual RangeData GetThreadRange()
const = 0;
77 virtual TextIndex GetThreadStart(int32* pSpan = nil)
const = 0;
78 virtual int32 GetThreadSpan(TextIndex* pStart = nil)
const = 0;
80 virtual TextIndex GetTextStart(
ParcelKey key)
const = 0;
81 virtual int32 GetTextSpan(
ParcelKey key)
const = 0;
83 virtual void SetTextSpan(
ParcelKey key, int32 span) = 0;
100 virtual ParcelKey GetParcelContaining(TextIndex at)
const = 0;
101 virtual ParcelKey GetParcelContainingLeanLeft(TextIndex at)
const = 0;
103 virtual void GetParcelsContaining(
const RangeData& r,
115 virtual bool16
GetIsOverset(TextIndex* pFirstOversetTextIndex = nil)
const = 0;
135 virtual ParcelKey GetFirstLogicalParcelKey()
const = 0;
139 virtual ParcelKey GetLastLogicalParcelKey()
const = 0;
141 virtual ParcelKey GetLastLogicalNonOversetParcelKey()
const = 0;
164 virtual Text::FirstLineOffsetMetric GetFirstLineOffsetMetric(
ParcelKey key)
const = 0;
166 virtual bool16 GetIsVertical()
const = 0;
167 virtual bool16 GetIsRightToLeft()
const = 0;
169 virtual bool16 GetParcelHasBeenVJed(
ParcelKey key)
const = 0;
215 virtual bool16 GetIsDamaged(
ParcelKey key)
const = 0;
216 virtual void SetDamaged(
ParcelKey key) = 0;
220 virtual ParcelKey GetFirstDamagedParcel()
const = 0;
293 int32 firstContainerPI,
294 bool16 noDamageBackPrevContainers,
295 Text::VerticalJustification vj,
296 PMReal vjMaxInterParaSpace,
297 bool16 vjBalanceColumns,
298 int32 firstDamagedPI,
299 int32 firstNeedWrapCheckPI,
300 TextIndex composeUpToTextIndex = kInvalidTextIndex,
302 PMReal* tileableHeightRemaining = nil) = 0;
319 int32 limitLeanLeftParcelIndex) = 0;
324 virtual void AdjustSpans(TextIndex at, int32 amt) = 0;
357 virtual void MarkParcelInsertDamage(
ParcelKey key) = 0;
359 virtual void MarkParcelRemoveDamage(
ParcelKey key) = 0;
361 virtual void MarkResizeDamage(
ParcelKey key,
362 const PMRect &boundsBefore,
363 const PMRect &boundsAfter) = 0;
365 virtual void MarkMoveDamage(
ParcelKey key) = 0;
367 virtual void MarkGridDamage(
ParcelKey key) = 0;
381 TextIndex threadStart,
382 TextIndex damageStart,
383 int32 limitFirstParcelIndex,
385 int32 lastParcelIndex) = 0;
387 virtual void DamageFirstLine(
ParcelKey key) = 0;
388 virtual void DamageEntireParcel(
ParcelKey key, int32 limitLeanLeftParcelIndex = kInvalidParcelIndex) = 0;
389 virtual void DamageEntireParcelP1(
ParcelKey key, int32 limitLeanLeftParcelIndex = kInvalidParcelIndex) = 0;
390 virtual void DamageFirstLineInNextParcel(
ParcelKey key) = 0;
392 const PMReal& waxYBottom) = 0;
399 virtual void DamageWaxAnchoredElementYRange(
ParcelKey key,
const PMReal& waxYTop,
400 const PMReal& waxYBottom) = 0;
403 TextIndex*, int32*)
const;
406 TextIndex*, int32*)
const;
408 virtual void Damage(ComputeMethod1,
ParcelKey key, int32 limitLeanLeftParcelIndex = kInvalidParcelIndex) = 0;
410 virtual void Damage(ComputeMethod2,
ParcelKey key,
413 virtual void ComputeResizeDamage(
ParcelKey key,
414 const PMRect &boundsBefore,
415 const PMRect &boundsAfter,
416 TextIndex *pStart, int32 *pLen)
const = 0;
418 virtual void ComputeFirstLineDamage(
ParcelKey key,
419 TextIndex *pStart, int32 *pLen)
const = 0;
420 virtual void ComputeEntireParcelDamage(
ParcelKey key,
421 TextIndex *pStart, int32 *pLen)
const = 0;
422 virtual void ComputeEntireParcelP1Damage(
ParcelKey key,
423 TextIndex *pStart, int32 *pLen)
const = 0;
424 virtual void ComputeFirstLineInNextParcelDamage(
ParcelKey key,
425 TextIndex *pStart, int32 *pLen)
const = 0;
430 virtual void Inval(TextIndex start, int32 span)
const = 0;
441 virtual bool16 GetIsValidStartBreakLocation(
ParcelKey key,
442 Text::StartBreakLocation mode)
const = 0;
443 virtual bool16 GetHasAnyValidStartBreakLocation()
const = 0;
460 const int32 passCount,
462 void (*btdFunc)(
void *),
463 void (*btfdFunc)(
void *),
465 bool16* pInkBoundsChanged) = 0;
495 TextIndex *nextLine = nil) = 0;
529 virtual void RemoveWaxAnchoredElement(IWaxAnchoredElement*wae) = 0;
533 virtual void MoveWaxAnchoredElement(IWaxAnchoredElement* wae,
546 bool16 fromRebuild) = 0;
576 TextIndex *nextLine)
const = 0;
598 bool16* optionalIsOnlyLastCR = nil)
const = 0;
652 bool16 zOrderBasedWrap,
729 virtual Text::VerticalJustification GetComposingVerticalJustification()
const = 0;
733 virtual bool16 CanBackDamageContainer()
const = 0;
742 typedef std::ptrdiff_t difference_type;
745 typedef std::bidirectional_iterator_tag iterator_category;
747 friend class TextParcelList;
753 fData.
reset(copy.fData);
756 fKeyState = copy.fKeyState;
773 fData.
reset(rhs.fData);
776 fKeyState = rhs.fKeyState;
794 else if (fKeyState == 0)
805 ASSERT(fKeyState == 1);
806 ASSERT_FAIL(
"ITextParcelList::const_iterator ++ past end");
825 else if (fKeyState == 0)
836 ASSERT(fKeyState == 1);
837 ASSERT_FAIL(
"ITextParcelList::const_iterator ++ past end");
846 ASSERT_FAIL(
"ITextParcelList::const_iterator -- before begin");
848 else if (fKeyState == 0)
859 ASSERT(fKeyState == 1);
877 ASSERT_FAIL(
"ITextParcelList::const_iterator -- before begin");
879 else if (fKeyState == 0)
890 ASSERT(fKeyState == 1);
905 return ((fData == rhs.fData) &&
906 (fKey == rhs.fKey) &&
907 (fKeyState == rhs.fKeyState));
911 {
return !(*
this == rhs); }
919 fData(data), fKey(key), fKeyState(keyState)
929 ASSERT(((keyState == -1) && (!key.IsValid())) ||
930 ((keyState == 0) && (key.IsValid())) ||
931 ((keyState == 1) && (!key.IsValid())));
943 typedef std::ptrdiff_t difference_type;
946 typedef std::bidirectional_iterator_tag iterator_category;
948 friend class TextParcelList;
955 {
return fIter.operator*(); }
958 {
return fIter.operator->(); }
961 { this->fIter = rhs.fIter;
return *
this; }
964 { --fIter;
return *
this; }
974 { ++fIter;
return *
this; }
984 {
return (this->fIter == rhs.fIter); }
987 {
return !(*
this == rhs); }
992 fIter(data, key, keyState)
998 virtual ContainerComposer* GetCompositionContext()
const = 0;
1010 #endif // __ITextParcelList__