InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ITextScriptUtils.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Bernd Paradies
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 __ITextScriptUtils__
25 #define __ITextScriptUtils__
26 
27 #include "K2SmartPtr.h"
28 #include "RangeData.h"
29 #include "ScriptData.h"
30 #include "ShuksanID.h"
31 #include "TextID.h"
32 #include "Utils.h"
33 #include "IPMFont.h"
34 #include "IAnchoredObjectData.h"
35 
36 class ITextModel;
37 class ITableModel;
38 class IDocument ;
39 class IStyleInfo;
40 class ICommand;
41 class IScript;
42 class IAttrReport;
43 class AttributeBossList;
44 class IStyleNameTable;
45 class IHierarchy;
46 class IScriptCellRef;
47 class WideString;
48 class GridAddress;
49 class RangeData;
50 class IFontFamily;
51 class ITextTarget;
52 class IScriptRequestData;
53 class ITextFrameColumn;
54 class ITextVariable;
55 class ITextVariableTable;
56 
57 typedef boost::shared_ptr<AttributeBossList> AddAttributeList ;
59 
66 {
67 public:
68  enum { kDefaultIID = IID_ITEXTSCRIPTUTILS };
69 
70  virtual ScriptID GetTextType( IScript* script ) = 0;
71 
77  virtual IScript* QueryTextObject( const RequestContext& context, ITextModel* model, const RangeData& range, const ScriptID& type = kInvalidScriptID ) = 0;
78 
79  virtual ICommand* CreateEditFindChangePrefCmd( const ScriptID& propID,
80  IDataBase* targetDB,
81  const IPMUnknown* addAttribute = nil,
82  ClassID removeAttribute = kInvalidClass ) = 0;
83 
84  virtual ICommand* CreateEditFindChangePrefCmd( const ScriptID& propID,
85  IDataBase* targetDB,
86  const AddAttributeList& addAttrList,
87  const RemoveAttributeList& removeAttrList ) = 0;
88 
89  virtual ICommand* CreateEditFindChangePrefCmd( const ScriptID& propID,
90  const ScriptID& objectType,
91  IDataBase* targetDB,
92  const UID& styleUID ) = 0 ;
93 
94  virtual ITextModel* QueryTextModel(IScript* script) = 0;
95 
103 
108  virtual bool16 IsTextFrame( const IScript* script, const RequestContext& context ) = 0;
109 
111  virtual IPMUnknown* QueryFirstTextFrame ( const IPMUnknown* gframe, PMIID iid = IID_IUNKNOWN ) const = 0;
112 
114  virtual IPMUnknown* QueryLastTextFrame ( const IPMUnknown* gframe, PMIID iid = IID_IUNKNOWN ) const = 0;
115 
117  virtual IPMUnknown* QueryGraphicFrame( const IPMUnknown* tframe, PMIID iid = IID_IUNKNOWN ) const = 0;
118 
120  virtual IPMUnknown* QueryChildMultiColFrame( const IPMUnknown* gframe, PMIID iid = IID_IUNKNOWN ) const = 0;
121 
123  virtual IPMUnknown* QueryFirstChildTextFrame( const IPMUnknown* mcframe, PMIID iid = IID_IUNKNOWN ) const = 0;
124 
126  virtual IPMUnknown* QueryLastChildTextFrame( const IPMUnknown* mcframe, PMIID iid = IID_IUNKNOWN ) const = 0;
127 
129  virtual IPMUnknown* QueryParentMultiColFrame( const IPMUnknown* tframe, PMIID iid = IID_IUNKNOWN ) const = 0;
130 
132  virtual IPMUnknown* QueryParentGraphicFrame( const IPMUnknown* mcframe, PMIID iid = IID_IUNKNOWN ) const = 0;
133 
142  virtual ITextFrameColumn* QueryTextFrameColumnContaining( ITextModel* textModel, TextIndex index, bool16 ifNoneReturnLastFrame = kFalse ) = 0;
143 
148  virtual ErrorCode GetParentTextFrames( IScript* script, ScriptList& parentList ) = 0;
149 
153  virtual IScript* QueryParentTextFrame( IScript* textTarget ) = 0;
154 
160  virtual IPMUnknown* QueryParentTextFrame( const ITextModel* textModel, TextIndex index, PMIID iid = IID_IUNKNOWN ) = 0;
161 
163  virtual ErrorCode Recompose( IScript* script ) = 0;
164 
165  virtual bool16 DefaultIsWordChar( const UTF32TextChar& aStart, const UTF32TextChar& aEnd ) = 0;
166  virtual bool16 TestIsSpace( const UTF32TextChar& aStart, const UTF32TextChar& aEnd ) = 0;
167  virtual bool16 TestIsPunctuation( const UTF32TextChar& aStart, const UTF32TextChar& aEnd ) = 0;
168 
170  virtual bool16 AreTextRunAttributesEqual( ITextModel* model1, TextIndex start1, ITextModel* model2, TextIndex start2 ) = 0;
171 
173  virtual const IAttrReport* QueryChildTextAttribute( const RequestContext& context, IScript* script, const ScriptID& childType, const ClassID& attrID, AttributeBossList* attrList ) = 0;
174 
176  virtual ICommand* QueryChildTextCommand( IScriptRequestData* data, IScript* script, const ScriptID& childType, const IAttrReport* attrReport ) = 0;
177 
178  virtual ErrorCode GetFrameStartEnd(const IHierarchy* hierarchy, UIDRef& textModel, TextIndex& frameStart, TextIndex& frameEnd) = 0;
179 
180  virtual ErrorCode GetCellStartEnd(const InterfacePtr<ITableModel>& table, GridAddress cellAddress, InterfacePtr<ITextModel>& textModel, TextIndex& cellStart, TextIndex& cellEnd, bool16 includeOverset = kTrue) const = 0;
181 
183  virtual ErrorCode ConvertEnumToWideString( const RequestContext& context, const ScriptData& scriptData, WideString& outString ) = 0 ;
185  virtual ErrorCode ConvertWideStringToEnum( const RequestContext& context, const WideString& inString, ScriptData& scriptData ) = 0 ;
186 
188  virtual ErrorCode GetSpecialChar( IScriptRequestData* data, ScriptData& scriptData, IScript* script, ITextModel* model, TextIndex start, int32 length ) = 0 ;
195  virtual ErrorCode SetSpecialChar( IScriptRequestData* data, const ScriptData& scriptData, ITextModel* model, TextIndex start, int32& length ) = 0 ;
196 
198  virtual void ExcludeNUACharacters( ITextModel* model, int32& start, int32& length, const RequestContext& context ) const = 0 ;
199 
201  virtual void IncludeNUACharacters( ITextModel* model, int32& start, int32& length, const RequestContext& context ) const = 0 ;
202 
204  virtual int32 StripNUACharacters( PMString& string, const RequestContext& context ) const = 0 ;
205 
207  virtual IPMFont* QueryFont (const RequestContext& context, IScript* script) = 0 ;
208 
215  virtual IScript* QueryFontObject( const RequestContext& context, const PMString& familyName, const PMString& styleName, IScript* parent, PMString *psName = nil, IPMFont::FontType fontType = IPMFont::kUnknownFontType ) = 0;
216 
218  virtual ErrorCode DeleteText( IScriptRequestData* data, IScript* script ) = 0 ;
219 
221  virtual ErrorCode AccessOverset( IScriptRequestData* data, IScript* script, const ScriptID& propID ) = 0 ;
222 
224  virtual RangeData GetScriptTextRange( IScript* script ) = 0 ;
225 
227  virtual ErrorCode AccessTextContents( IScriptRequestData* data, IScript* script, const ScriptID& propID ) = 0 ;
228  virtual ErrorCode AccessFrameTextContents( IScriptRequestData* data, IScript* script, const ScriptID& propID ) = 0 ;
229 
232  virtual ErrorCode ReleaseAnchoredObjects(const UIDList& anchors) = 0;
233 
241  virtual ErrorCode ConvertCharacterToEnum( const RequestContext& context, const UTF32TextChar inChar, ScriptData& scriptData, ITextModel* model, TextIndex start ) = 0 ;
242 
243  /*
244  Given a text variable script proxy script object, query the associated text variable table in the object model
245  @param script is the proxy object
246  @param context is the request context
247  @return the text variable table
248  */
249  virtual ITextVariableTable* QueryTextVariableTableFromScript( const IScript* script, const RequestContext& context ) const = 0 ;
250  /*
251  Given a text variable script proxy script object, query the associated text variable in the object model
252  @param script is the proxy object
253  @param context is the request context
254  @return the text variable
255  */
256  virtual ITextVariable* QueryTextVariableFromScript( const IScript* script, const RequestContext& context ) const = 0 ;
257  /*
258  Given a text variable script proxy script object, return the associated text variable name in the object model
259  @param script is the proxy object
260  @param context is the request context
261  @return the text variable name
262  */
263  virtual PMString GetTextVariableNameFromScript( const IScript* script, const RequestContext& context ) const = 0 ;
264 
265  /*
266  Return the text model and text range for the parent of an object being created in text
267  @param data is the script event data for the create event IN
268  @param parent is the parent for the create event IN
269  @param modelRange is the result OUT
270  */
271  virtual ErrorCode GetModelRangeFromParent( const IScriptRequestData* data, const IScript* parent, const ScriptID& insertionLocation, ModelRange& modelRange ) const = 0 ;
272 
273  /*
274  Handles scripting support for MultiColumnTextFrame linking/unlinking. Works for
275  both regular and TextOnPath.
276  */
277  virtual ErrorCode AccessLinkedTextFrame(IScriptRequestData* data, const IScript* script, const ScriptID propID) = 0;
278 
279  /*
280  Convert the passed in pageitem into an anchored object or inline
281  @param objectToAnchorUIDRef pageItem to convert. can be inline already.
282  @param destStoryUIDRef story to anchor into.
283  @param textRange text index to place anchor
284  @param anchorPosition inline, aboveline or anchor.
285  @return kCannotReAnchorMemberOfGroupError, kRequestNotHandledError or kSuccess
286  */
287  virtual ErrorCode ConvertToAnchoredObject(UIDRef objectToAnchorUIDRef, UIDRef destStoryUIDRef, const RangeData& textRange, IAnchoredObjectData::AnchoredPosition anchorPosition) const = 0;
288 
289  /*
290  Return true if it is valid anchor destination
291  @param objectToAnchorUIDRef pageItem to anchor. can be inline already.
292  @param destStoryUIDRef story to anchor into.
293  @param destTextIndex text index to place anchor
294  @param anchorPosition inline, aboveline or anchor.
295  @return kTrue if valid anchor destination
296  */
297  virtual bool16 IsValidAnchorDestination(UIDRef objectToAnchorUIDRef, UIDRef destStoryUIDRef, TextIndex destTextIndex, IAnchoredObjectData::AnchoredPosition anchorPosition) const = 0;
298 };
299 
300 #endif // __ITextScriptUtils__