InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
IAttributePrePost.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Michael_Martz
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 // Note: This interface is optional on graphic and text attributes. If it is present,
24 // the apply attribute commands will call PreXxxxApply() before the attribute is
25 // applied and PostXxxxApply() afterwards.
26 // For graphic attributes the IClassIDListData* is used to notify the graphic
27 // state of the attributes that were changed within the Pre and Post member
28 // functions. It is a list of ClassIDs. If the implementation needs to process a
29 // command to alter the page item, it should turn off that command's DoNotify()
30 // and instead append its classID list to the passed in IClassIDListData*, using
31 // TransferAttributesModified().
32 //
33 //========================================================================================
34 
35 #ifndef _IAttributePrePost_
36 #define _IAttributePrePost_
37 //========================================================================================
38 //________________________________________________________________________________________
39 // INCLUDES
40 //________________________________________________________________________________________
41  #include "IPMUnknown.h"
42  #include "GraphicStylesID.h"
43  #include "UIDList.h"
44  #include "K2Vector.h"
45 //========================================================================================
46 //________________________________________________________________________________________
47 // CLASS FORWARDS
48 //________________________________________________________________________________________
49  class IClassIDListData;
50  class IDataBase;
51  class IFocusCache;
52  class ITextModel;
53 //________________________________________________________________________________________
54 // CLASS DECLARATIONS
55 //________________________________________________________________________________________
56 
62  {
63  //____________________________________________________________________________________
64  // Data Types
65  //____________________________________________________________________________________
66  public:
67  enum { kDefaultIID = IID_IATTRIBUTE_PREPOST_ACTION };
68 
70  {
86  };
87  //____________________________________________________________________________________
88  // Member Functions
89  //____________________________________________________________________________________
90  public:
98  virtual void PreGraphicApply (K2Vector<IPMUnknown*>* newAttributeList,
99  K2Vector<ActionType>* actionList,
100  UIDList* pageItemList,
101  IClassIDListData* modifiedAttrClassList,
102  K2Vector<IPMUnknown*>* origAttributeList) = 0;
103 
111  virtual UIDList*PostGraphicApply (K2Vector<IPMUnknown*>* newAttributeList,
112  K2Vector<ActionType>* actionList,
113  UIDList* pageItemList,
114  IClassIDListData* modifiedAttrClassList,
115  K2Vector<IPMUnknown*>* origAttributeList) = 0;
116 
123  virtual void PreTextApply (ITextModel *model, TextIndex start, int32 len, IFocusCache *listOfAll) const = 0;
130  virtual void PostTextApply (ITextModel *model, TextIndex start, int32 len, IFocusCache *listOfAll) const = 0;
131  };
132 
133  DECLARE_BASE_TYPE(IAttributePrePost::ActionType);
134 
135 #endif // _IAttributePrePost_