24 #ifndef __IParcelContainer__ 25 #define __IParcelContainer__ 27 #include "IPMUnknown.h" 28 #include "ICompositionStyle.h" 29 #include "ITextColumnSizer.h" 31 #include "ShuksanID.h" 32 #include "ParcelKey.h" 40 enum { kDefaultIID = IID_IPARCELCONTAINER };
70 virtual bool16
GetIsRectangular(bool16 checkCornerRadius = kFalse)
const = 0;
79 virtual PMRect GetNthColumnBBox(uint32 n)
const = 0;
128 fPColIndexStart(columnIndexStart),
129 fPColIndexEnd(columnIndexStart + 1),
133 fSplitInsideGutter(0.0),
134 fSplitOutsideGutter(0.0)
141 uint32 columnIndexEnd,
142 uint32 desiredSpan) :
144 fPColIndexStart(columnIndexStart),
145 fPColIndexEnd(columnIndexEnd),
146 fDesiredSpan(desiredSpan),
149 fSplitInsideGutter(0.0),
150 fSplitOutsideGutter(0.0)
160 PMReal splitOutsideGutter) :
162 fPColIndexStart(columnIndexStart),
163 fPColIndexEnd(columnIndexStart + 1),
165 fSplitIndex(splitIndex),
166 fSplitCount(splitCount),
167 fSplitInsideGutter(splitInsideGutter),
168 fSplitOutsideGutter(splitOutsideGutter)
175 fSpanType(other.fSpanType),
176 fPColIndexStart(other.fPColIndexStart),
177 fPColIndexEnd(other.fPColIndexEnd),
178 fDesiredSpan(other.fDesiredSpan),
179 fSplitIndex(other.fSplitIndex),
180 fSplitCount(other.fSplitCount),
181 fSplitInsideGutter(other.fSplitInsideGutter),
182 fSplitOutsideGutter(other.fSplitOutsideGutter)
195 if (fSpanType == ICompositionStyle::kSingleColumn)
197 return (other.fSpanType == fSpanType);
199 else if (fSpanType == ICompositionStyle::kSpanColumn)
201 return ((other.fSpanType == fSpanType) &&
206 return ((other.fSpanType == fSpanType) &&
207 (other.fSplitCount == fSplitCount) &&
208 (other.fSplitInsideGutter == fSplitInsideGutter) &&
209 (other.fSplitOutsideGutter == fSplitOutsideGutter));
214 {
return !(*
this == other); }
217 {
return fSpanType; }
223 {
return (fSpanType == ICompositionStyle::kSingleColumn); }
229 {
return (fSpanType == ICompositionStyle::kSpanColumn); }
235 {
return (fSpanType == ICompositionStyle::kSplitColumn); }
242 {
return fPColIndexStart; }
251 {
return fPColIndexEnd; }
257 {
return (fPColIndexEnd - fPColIndexStart); }
275 {
return fDesiredSpan; }
283 if (fSpanType == ICompositionStyle::kSplitColumn)
286 ASSERT_FAIL(
"Not a split");
297 if (fSpanType == ICompositionStyle::kSplitColumn)
300 ASSERT_FAIL(
"Not a split");
304 PMReal GetSplitInsideGutter()
const 306 if (fSpanType == ICompositionStyle::kSplitColumn)
307 return fSplitInsideGutter;
309 ASSERT_FAIL(
"Not a split");
313 PMReal GetSplitOutsideGutter()
const 315 if (fSpanType == ICompositionStyle::kSplitColumn)
316 return fSplitOutsideGutter;
318 ASSERT_FAIL(
"Not a split");
323 uint32 fPColIndexStart;
324 uint32 fPColIndexEnd;
328 PMReal fSplitInsideGutter;
329 PMReal fSplitOutsideGutter;
333 virtual ParcelSpanData GetNthParcelSpanData(uint32 n)
const = 0;
346 virtual void SetNthParcelEffectiveTopAdj(uint32 containerParcelIndex,
347 PMReal effectiveTopAdj) = 0;
351 virtual PMReal GetNthParcelEffectiveBottomAdj(uint32 containerParcelIndex,
352 PMReal* pBalanceOffset)
const = 0;
356 virtual void SetNthParcelEffectiveBottomAdj(uint32 containerParcelIndex,
357 PMReal effectiveBottomAdj,
358 PMReal balanceOffset) = 0;
389 PMReal effectiveBottomAdj,
390 PMReal effectiveBottomAdjBalanceOffset) :
391 fKey(key), fSpanData(spanData),
392 fEffectiveTopAdj(effectiveTopAdj),
393 fEffectiveBottomAdj(effectiveBottomAdj),
394 fEffectiveBottomAdjBalanceOffset(effectiveBottomAdjBalanceOffset)
400 PMReal fEffectiveBottomAdj;
401 PMReal fEffectiveBottomAdjBalanceOffset;
405 virtual void GetAllParcelData(std::vector<ParcelAllData>& list)
const = 0;
430 #endif // __IParcelContainer__