InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ITextObjectParent.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Jonathan W. Brown
6 //
7 // $Author$
8 //
9 // $DateTime$
10 //
11 // $Revision$
12 //
13 // $Change$
14 //
15 // Copyright 1997-2010 Adobe Systems Incorporated. All rights reserved.
16 //
17 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance
18 // with the terms of the Adobe license agreement accompanying it. If you have received
19 // this file from a source other than Adobe, then your use, modification, or
20 // distribution of it requires the prior written permission of Adobe.
21 //
22 //========================================================================================
23 
24 #ifndef __ITextObjectParent__
25 #define __ITextObjectParent__
26 
27 #include "ITextStoryThread.h"
28 
29 #include "ScriptData.h"
30 #include "TextID.h"
31 
86 {
87 public:
88  enum { kDefaultIID = IID_ITEXTOBJECTPARENT } ;
89 
91  class RangeIter
92  {
93  public:
94  virtual ~RangeIter();
95 
108  virtual bool16 GetFirstRange(UIDRef& textModelRef,
110  TextIndex& threadStart,
111  int32& threadSpan,
112  TextIndex& adjThreadStart,
113  int32& adjThreadSpan,
114  TextIndex& rangeStart,
115  int32& rangeSpan) = 0;
116 
128  virtual bool16 GetNextRange(InterfacePtr<const ITextStoryThread>& thread,
129  TextIndex& threadStart,
130  int32& threadSpan,
131  TextIndex& adjThreadStart,
132  int32& adjThreadSpan,
133  TextIndex& rangeStart,
134  int32& rangeSpan) = 0;
135 
136  protected:
137  RangeIter();
138  RangeIter(const RangeIter& other);
139 
140  };
141 
143  class SingleRangeIter : public RangeIter
144  {
145  public:
146  SingleRangeIter(const UIDRef& textModelRef,
147  const ITextStoryThread* thread,
148  TextIndex threadStart, int32 threadSpan,
149  // adjThreadStart, adjThreadSpan set to thread values
150  TextIndex rangeStart, int32 rangeSpan);
151 
152  SingleRangeIter(const UIDRef& textModelRef,
153  const ITextStoryThread* thread,
154  TextIndex threadStart, int32 threadSpan,
155  TextIndex adjThreadStart, int32 adjThreadSpan,
156  TextIndex rangeStart, int32 rangeSpan);
157 
158  bool16 GetFirstRange(UIDRef& textModelRef,
160  TextIndex& threadStart,
161  int32& threadSpan,
162  TextIndex& adjThreadStart,
163  int32& adjThreadSpan,
164  TextIndex& rangeStart,
165  int32& rangeSpan)
166  {
167  textModelRef = fTextModelRef;
168  thread = fThread;
169  threadStart = fThreadStart;
170  threadSpan = fThreadSpan;
171  adjThreadStart = fAdjThreadStart;
172  adjThreadSpan = fAdjThreadSpan;
173  rangeStart = fRangeStart;
174  rangeSpan = fRangeSpan;
175  return kTrue;
176  }
177 
179  TextIndex& threadStart,
180  int32& threadSpan,
181  TextIndex& adjThreadStart,
182  int32& adjThreadSpan,
183  TextIndex& rangeStart,
184  int32& rangeSpan)
185  { return kFalse; }
186 
187  private:
188  UIDRef fTextModelRef;
190  TextIndex fThreadStart;
191  int32 fThreadSpan;
192  TextIndex fAdjThreadStart;
193  int32 fAdjThreadSpan;
194  TextIndex fRangeStart;
195  int32 fRangeSpan;
196 
197  };
198 
204  virtual RangeIter* CreateRangeIterFor(const ScriptInfo::RequestContext& context, ScriptID childType) const = 0;
205 
206 };
207 
208 #endif