Added GetDCBrushColor and GetDCPenColor.
[wine] / include / docobj.h
1 #ifndef __WINE_DOCOBJ_H
2 #define __WINE_DOCOBJ_H
3
4 #include "winbase.h"
5 #include "windef.h"
6 #include "wingdi.h"
7 #include "winuser.h"
8 #include "ole2.h"
9 #include "wine/obj_oleaut.h"
10
11 /*****************************************************************************
12  * Declare the structures
13  */
14 typedef enum
15 {
16         OLECMDF_SUPPORTED = 0x1,
17         OLECMDF_ENABLED = 0x2,
18         OLECMDF_LATCHED = 0x4,
19         OLECMDF_NINCHED = 0x8
20 } OLECMDF;
21
22 typedef struct _tagOLECMD
23 {
24         ULONG cmdID;
25         DWORD cmdf;
26 } OLECMD;
27
28 typedef struct _tagOLECMDTEXT
29 {
30         DWORD cmdtextf;
31         ULONG cwActual;
32         ULONG cwBuf;
33         WCHAR rgwz[1];
34 } OLECMDTEXT;
35
36 typedef enum 
37
38         PRINTFLAG_MAYBOTHERUSER = 1,
39         PRINTFLAG_PROMPTUSER  = 2,
40         PRINTFLAG_USERMAYCHANGEPRINTER  = 4,
41         PRINTFLAG_RECOMPOSETODEVICE = 8,
42         PRINTFLAG_DONTACTUALLYPRINT = 16,
43         PRINTFLAG_FORCEPROPERTIES = 32,
44         PRINTFLAG_PRINTTOFILE = 64
45 } PRINTFLAG;
46
47 typedef struct tagPAGERANGE
48 {
49         LONG nFromPage;
50         LONG nToPage;
51 } PAGERANGE;
52
53 typedef struct  tagPAGESET
54 {
55         ULONG cbStruct;
56         BOOL fOddPages;
57         BOOL fEvenPages;
58         ULONG cPageRange;
59         PAGERANGE rgPages[ 1 ];
60 } PAGESET;
61
62 typedef enum
63 {
64         OLECMDTEXTF_NONE  = 0,
65         OLECMDTEXTF_NAME  = 1,
66         OLECMDTEXTF_STATUS  = 2
67 } OLECMDTEXTF;
68
69 typedef enum 
70 {
71         OLECMDEXECOPT_DODEFAULT = 0,
72         OLECMDEXECOPT_PROMPTUSER  = 1,
73         OLECMDEXECOPT_DONTPROMPTUSER  = 2,
74         OLECMDEXECOPT_SHOWHELP  = 3
75 } OLECMDEXECOPT;
76
77 typedef enum OLECMDID
78 {
79         OLECMDID_OPEN = 1,
80         OLECMDID_NEW = 2,
81         OLECMDID_SAVE = 3,
82         OLECMDID_SAVEAS = 4,
83         OLECMDID_SAVECOPYAS = 5,
84         OLECMDID_PRINT = 6,
85         OLECMDID_PRINTPREVIEW = 7,
86         OLECMDID_PAGESETUP = 8,
87         OLECMDID_SPELL = 9,
88         OLECMDID_PROPERTIES = 10,
89         OLECMDID_CUT = 11,
90         OLECMDID_COPY = 12,
91         OLECMDID_PASTE = 13,
92         OLECMDID_PASTESPECIAL = 14,
93         OLECMDID_UNDO = 15,
94         OLECMDID_REDO = 16,
95         OLECMDID_SELECTALL = 17,
96         OLECMDID_CLEARSELECTION = 18,
97         OLECMDID_ZOOM = 19,
98         OLECMDID_GETZOOMRANGE = 20,
99         OLECMDID_UPDATECOMMANDS = 21,
100         OLECMDID_REFRESH = 22,
101         OLECMDID_STOP = 23,
102         OLECMDID_HIDETOOLBARS = 24,
103         OLECMDID_SETPROGRESSMAX = 25,
104         OLECMDID_SETPROGRESSPOS = 26,
105         OLECMDID_SETPROGRESSTEXT = 27,
106         OLECMDID_SETTITLE = 28,
107         OLECMDID_SETDOWNLOADSTATE = 29,
108         OLECMDID_STOPDOWNLOAD = 30,
109         OLECMDID_ONTOOLBARACTIVATED = 31,
110         OLECMDID_FIND = 32,
111         OLECMDID_DELETE = 33,
112         OLECMDID_HTTPEQUIV = 34,
113         OLECMDID_HTTPEQUIV_DONE = 35,
114         OLECMDID_ENABLE_INTERACTION = 36,
115         OLECMDID_ONUNLOAD = 37,
116         OLECMDID_PROPERTYBAG2 = 38,
117         OLECMDID_PREREFRESH = 39
118         /* iexplorer uses ... 44 */
119 }       OLECMDID;
120                                                                                                                           
121 #define OLECMDERR_E_FIRST            (OLE_E_LAST+1)
122 #define OLECMDERR_E_NOTSUPPORTED     (OLECMDERR_E_FIRST)
123 #define OLECMDERR_E_DISABLED         (OLECMDERR_E_FIRST+1)
124 #define OLECMDERR_E_NOHELP           (OLECMDERR_E_FIRST+2)
125 #define OLECMDERR_E_CANCELED         (OLECMDERR_E_FIRST+3)
126 #define OLECMDERR_E_UNKNOWNGROUP     (OLECMDERR_E_FIRST+4)
127  
128 /*****************************************************************************
129  * Predeclare the interfaces
130  */
131 DEFINE_GUID(IID_IOleDocument, 0xb722bcc5,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
132 typedef struct IOleDocument IOleDocument, *LPOLEDOCUMENT;
133  
134 DEFINE_GUID(IID_IOleDocumentSite, 0xb722bcc7,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
135 typedef struct IOleDocumentSite IOleDocumentSite, *LPOLEDOCUMENTSITE;
136  
137 DEFINE_GUID(IID_IOleDocumentView, 0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
138 typedef struct IOleDocumentView IOleDocumentView, *LPOLEDOCUMENTVIEW;
139  
140 DEFINE_GUID(IID_IEnumOleDocumentViews, 0xb722bcc6,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
141 typedef struct IEnumOleDocumentViews IEnumOleDocumentViews, *LPENUMOLEDOCUMENTVIEWS;
142  
143 DEFINE_GUID(IID_IOleCommandTarget, 0xb722bccb,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
144 typedef struct IOleCommandTarget IOleCommandTarget, *LPOLECOMMANDTARGET;
145  
146 DEFINE_GUID(IID_IContinueCallback, 0xb722bcca,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
147 typedef struct IContinueCallback IContinueCallback, *LPCONTINUECALLBACK;
148  
149 DEFINE_GUID(IID_IPrint, 0xb722bcc9,0x4e68,0x101b,0xa2,0xbc,0x00,0xaa,0x00,0x40,0x47,0x70);
150 typedef struct IPrint IPrint, *LPPRINT;
151  
152  
153 /*****************************************************************************
154  * IOleDocument interface
155  */
156 #define ICOM_INTERFACE IOleDocument
157 #define IOleDocument_METHODS \
158         ICOM_METHOD4(HRESULT,CreateView, IOleInPlaceSite*,pIPSite, IStream*,pstm, DWORD,dwReserved, IOleDocumentView**,ppView) \
159         ICOM_METHOD1(HRESULT,GetDocMiscStatus, DWORD*,pdwStatus) \
160         ICOM_METHOD2(HRESULT,EnumViews, IEnumOleDocumentViews**,ppEnum, IOleDocumentView**,ppView)
161 #define IOleDocument_IMETHODS \
162         IUnknown_IMETHODS \
163         IOleDocument_METHODS
164 ICOM_DEFINE(IOleDocument,IUnknown)
165 #undef ICOM_INTERFACE
166
167 /*** IUnknown methods ***/
168 #define IOleDocument_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
169 #define IOleDocument_AddRef(p)                  ICOM_CALL (AddRef,p)
170 #define IOleDocument_Release(p)                 ICOM_CALL (Release,p)
171 /*** IOleDocument methods ***/
172 #define IOleDocument_CreateView(p,a,b,c,d)      ICOM_CALL4(CreateView,p,a,b,c,d)
173 #define IOleDocument_GetDocMiscStatus(p,a)      ICOM_CALL1(GetDocMiscStatus,p,a)
174 #define IOleDocument_EnumViews(p,a,b)           ICOM_CALL2(EnumViews,p,a,b)
175
176
177 /*****************************************************************************
178  * IOleDocumentSite interface
179  */
180 #define ICOM_INTERFACE IOleDocumentSite
181 #define IOleDocumentSite_METHODS \
182         ICOM_METHOD1(HRESULT,ActivateMe, IOleDocumentView*,pViewToActivate)
183 #define IOleDocumentSite_IMETHODS \
184         IUnknown_IMETHODS \
185         IOleDocumentSite_METHODS
186 ICOM_DEFINE(IOleDocumentSite,IUnknown)
187 #undef ICOM_INTERFACE
188
189 /*** IUnknown methods ***/
190 #define IOleDocumentSite_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
191 #define IOleDocumentSite_AddRef(p)                  ICOM_CALL (AddRef,p)
192 #define IOleDocumentSite_Release(p)                 ICOM_CALL (Release,p)
193 /*** IOleDocumentSite methods ***/
194 #define IOleDocumentSite_ActivateMe(p,a)            ICOM_CALL4(ActivateMe,p,a)
195
196
197 /*****************************************************************************
198  * IOleDocumentSite interface
199  */
200 #define ICOM_INTERFACE IOleDocumentView
201 #define IOleDocumentView_METHODS \
202         ICOM_METHOD1(HRESULT,SetInPlaceSite, IOleInPlaceSite*,pIPSite) \
203         ICOM_METHOD1(HRESULT,GetInPlaceSite, IOleInPlaceSite**,ppIPSite) \
204         ICOM_METHOD1(HRESULT,GetDocument, IUnknown**,ppunk) \
205         ICOM_METHOD1(HRESULT,SetRect, LPRECT,prcView) \
206         ICOM_METHOD1(HRESULT,GetRect, LPRECT,prcView) \
207         ICOM_METHOD4(HRESULT,SetRectComplex, LPRECT,prcView, LPRECT,prcHScroll, LPRECT,prcVScroll, LPRECT,prcSizeBox) \
208         ICOM_METHOD1(HRESULT,Show, BOOL,fShow) \
209         ICOM_METHOD1(HRESULT,UIActivate, BOOL,fUIActivate) \
210         ICOM_METHOD (HRESULT,Open) \
211         ICOM_METHOD1(HRESULT,CloseView, DWORD,dwReserved) \
212         ICOM_METHOD1(HRESULT,SaveViewState, LPSTREAM,pstm) \
213         ICOM_METHOD1(HRESULT,ApplyViewState,LPSTREAM,pstm) \
214         ICOM_METHOD2(HRESULT,Clone, IOleInPlaceSite*,pIPSiteNew, IOleDocumentView**,ppViewNew) 
215 #define IOleDocumentView_IMETHODS \
216         IUnknown_IMETHODS \
217         IOleDocumentView_METHODS
218 ICOM_DEFINE(IOleDocumentView,IUnknown)
219 #undef ICOM_INTERFACE
220
221 /*** IUnknown methods ***/
222 #define IOleDocumentView_QueryInterface(p,a,b)      ICOM_CALL2(QueryInterface,p,a,b)
223 #define IOleDocumentView_AddRef(p)                  ICOM_CALL (AddRef,p)
224 #define IOleDocumentView_Release(p)                 ICOM_CALL (Release,p)
225 /*** IOleDocumentView methods ***/
226 #define IOleDocumentView_SetInPlaceSite(p,a)        ICOM_CALL1(SetInPlaceSite,p,a)
227 #define IOleDocumentView_GetInPlaceSite(p,a)        ICOM_CALL1(GetInPlaceSite,p,a)
228 #define IOleDocumentView_GetDocument(p,a)           ICOM_CALL1(GetDocument,p,a)
229 #define IOleDocumentView_SetRect(p,a)               ICOM_CALL1(SetRect,p,a)
230 #define IOleDocumentView_GetRect(p,a)               ICOM_CALL1(GetRect,p,a)
231 #define IOleDocumentView_GetRectComplex(p,a,b,c,d)  ICOM_CALL4(GetRectComplex,p,a,b,c,d)
232 #define IOleDocumentView_Show(p,a)                  ICOM_CALL1(Show,p,a)
233 #define IOleDocumentView_UIActivate(p,a)            ICOM_CALL1(UIActivate,p,a)
234 #define IOleDocumentView_Open(p)                    ICOM_CALL (Open,p)
235 #define IOleDocumentView_CloseView(p,a)             ICOM_CALL1(CloseView,p,a)
236 #define IOleDocumentView_SaveViewState(p,a)         ICOM_CALL1(SaveViewState,p,a)
237 #define IOleDocumentView_ApplyViewState(p,a)        ICOM_CALL1(ApplyViewState,p,a)
238 #define IOleDocumentView_Clone(p,a,b)               ICOM_CALL2(Clone,p,a,b)
239
240
241 /*****************************************************************************
242  * IOleDocumentSite interface
243  */
244 #define ICOM_INTERFACE IEnumOleDocumentViews
245 #define IEnumOleDocumentViews_METHODS \
246         ICOM_METHOD3(HRESULT,Next, ULONG,cViews, IOleDocumentView**,rgpView, ULONG*,pcFetched) \
247         ICOM_METHOD1(HRESULT,Skip, ULONG,cViews) \
248         ICOM_METHOD (HRESULT,Reset) \
249         ICOM_METHOD1(HRESULT,Clone, IEnumOleDocumentViews**,ppEnum) 
250 #define IEnumOleDocumentViews_IMETHODS \
251         IUnknown_IMETHODS \
252         IEnumOleDocumentViews_METHODS
253 ICOM_DEFINE(IEnumOleDocumentViews,IUnknown)
254 #undef ICOM_INTERFACE
255
256 /*** IUnknown methods ***/
257 #define IEnumOleDocumentViews_QueryInterface(p,a,b)   ICOM_CALL2(QueryInterface,p,a,b)
258 #define IEnumOleDocumentViews_AddRef(p)               ICOM_CALL (AddRef,p)
259 #define IEnumOleDocumentViews_Release(p)              ICOM_CALL (Release,p)
260 /*** IEnumOleDocumentViews methods ***/
261 #define IEnumOleDocumentViews_Next(p,a,b,c)           ICOM_CALL3(Next,p,a,b,c)
262 #define IEnumOleDocumentViews_Skip(p,a)               ICOM_CALL1(Skip,p,a)
263 #define IEnumOleDocumentViews_Reset(p)                ICOM_CALL (Reset,p)
264 #define IEnumOleDocumentViews_Clone(p,a)              ICOM_CALL1(Clone,p,a)
265
266                                   
267 /*****************************************************************************
268  * IOleCommandTarget interface
269  */
270 #define ICOM_INTERFACE IOleCommandTarget
271 #define IOleCommandTarget_METHODS \
272         ICOM_METHOD4(HRESULT,QueryStatus, const GUID*,pguidCmdGroup, ULONG,cCmds, OLECMD*,prgCmds, OLECMDTEXT*,pCmdText) \
273         ICOM_METHOD5(HRESULT,Exec, const GUID*,pguidCmdGroup, DWORD,nCmdID, DWORD,nCmdexecopt, VARIANT*,pvaIn, VARIANT*,pvaOut)
274 #define IOleCommandTarget_IMETHODS \
275         IUnknown_IMETHODS \
276         IOleCommandTarget_METHODS
277 ICOM_DEFINE(IOleCommandTarget,IUnknown)
278 #undef ICOM_INTERFACE
279
280 /*** IUnknown methods ***/
281 #define IOleCommandTarget_QueryInterface(p,a,b)   ICOM_CALL2(QueryInterface,p,a,b)
282 #define IOleCommandTarget_AddRef(p)               ICOM_CALL (AddRef,p)
283 #define IOleCommandTarget_Release(p)              ICOM_CALL (Release,p)
284 /*** IOleCommandTarget methods ***/
285 #define IOleCommandTarget_QueryStatus(p,a,b,c,d)  ICOM_CALL4(QueryStatus,p,a,b,c,d)
286 #define IOleCommandTarget_Exec(p,a,b,c,d,e)       ICOM_CALL5(Exec,p,a,b,c,d,e)
287
288
289 /*****************************************************************************
290  * IContinueCallback interface
291  */
292 #define ICOM_INTERFACE IContinueCallback
293 #define IContinueCallback_METHODS \
294         ICOM_METHOD (HRESULT,FContinue) \
295         ICOM_METHOD3(HRESULT,FContinuePrinting, LONG,nCntPrinted, LONG,nCurPage, WCHAR*,pwszPrintStatus)
296 #define IContinueCallback_IMETHODS \
297         IUnknown_IMETHODS \
298         IContinueCallback_METHODS
299 ICOM_DEFINE(IContinueCallback,IUnknown)
300 #undef ICOM_INTERFACE
301
302 /*** IUnknown methods ***/
303 #define IContinueCallback_QueryInterface(p,a,b)   ICOM_CALL2(QueryInterface,p,a,b)
304 #define IContinueCallback_AddRef(p)               ICOM_CALL (AddRef,p)
305 #define IContinueCallback_Release(p)              ICOM_CALL (Release,p)
306 /*** IContinueCallback methods ***/
307 #define IContinueCallback_FContinue(p)               ICOM_CALL (FContinue,p)
308 #define IContinueCallback_FContinuePrinting(p,a,b,c) ICOM_CALL3(FContinuePrinting,p,a,b,c)
309
310
311 /*****************************************************************************
312  * IPrint interface
313  */
314 #define ICOM_INTERFACE IPrint
315 #define IPrint_METHODS \
316         ICOM_METHOD1(HRESULT,SetInitialPageNum, LONG,nFirstPage) \
317         ICOM_METHOD2(HRESULT,GetPageInfo, LONG*,pnFirstPage, LONG*,pcPages) \
318         ICOM_METHOD8(HRESULT,Print, DWORD,grfFlags, DVTARGETDEVICE**,pptd, PAGESET**,ppPageSet, STGMEDIUM*,pstgmOptions, IContinueCallback*,pcallback, LONG,nFirstPage, LONG*,pcPagesPrinted, LONG*,pnLastPage) 
319 #define IPrint_IMETHODS \
320         IUnknown_IMETHODS \
321         IPrint_METHODS
322 ICOM_DEFINE(IPrint,IUnknown)
323 #undef ICOM_INTERFACE
324                                 
325 /*** IUnknown methods ***/
326 #define IPrint_QueryInterface(p,a,b)   ICOM_CALL2(QueryInterface,p,a,b)
327 #define IPrint_AddRef(p)               ICOM_CALL (AddRef,p)
328 #define IPrint_Release(p)              ICOM_CALL (Release,p)
329 /*** Iprint methods ***/
330 #define IPrint_SetInitialPageNum(p,a)  ICOM_CALL1(SetInitialPageNum,p,a)
331 #define IPrint_GetPageInfo(p,a,b)      ICOM_CALL2(GetPageInfo,p,a,b)
332 #define IPrint_Print(p,a,b,c,d,e,f,g)  ICOM_CALL7(Print,p,a,b,c,d,e,f,g)
333                                 
334                                 
335 #define LPMSODOCUMENT                  LPOLEDOCUMENT
336 #define LPMSODOCUMENTSITE              LPOLEDOCUMENTSITE
337 #define LPMSOVIEW                      LPOLEDOCUMENTVIEW
338 #define LPENUMMSOVIEW                  LPENUMOLEDOCUMENTVIEWS
339 #define LPMSOCOMMANDTARGET             LPOLECOMMANDTARGET
340 #define IID_IMsoDocument               IID_IOleDocument
341 #define IID_IMsoDocumentSite           IID_IOleDocumentSite
342 #define IID_IMsoView                   IID_IOleDocumentView
343 #define IID_IEnumMsoView               IID_IEnumOleDocumentViews
344 #define IID_IMsoCommandTarget          IID_IOleCommandTarget
345                                 
346
347 #endif /* __WINE_DOCOBJ_H */