InDesign SDK  20.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
AGMGraphicsContextWith.h
1 //========================================================================================
2 //
3 // $File$
4 //
5 // Owner: Michael Burbidge
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 __AGMGraphicsContextWith__
25 #define __AGMGraphicsContextWith__
26 
27 #include "IGraphicsContext.h"
28 #include "AcquireViewPort.h"
29 #include "K2Assert.h"
30 #include "IDVOffscreenPortData.h"
31 
32 class IControlView;
33 class IViewPort;
34 class ITransform;
35 class IGraphicsContext;
36 class PMMatrix;
37 
53 template <class AcquireCoordSys, class AcquireClip>
55 {
56 public:
57 
58  // ----- Initialization -----
59 
60 #if 0 // OBSOLETE
61 
66  AGMGraphicsContextWith(IControlView *controlView, SysRgn clipRgn = nil);
67 #endif
68 
79  AGMGraphicsContextWith(IViewPort* viewPort, IControlView *controlView, SysRgn clipRgn = nil);
80 
91  AGMGraphicsContextWith(IViewPort* viewPort, ITransform* xform = nil, SysRgn clipRgn = nil);
92 
102  AGMGraphicsContextWith(IViewPort* viewPort, const PMMatrix& theMatrix, SysRgn clipRgn = nil);
103 
115  AGMGraphicsContextWith(IViewPort* viewPort, const PMMatrix& theMatrix, IControlView *controlView, SysRgn clipRgn = nil);
116 
128  AGMGraphicsContextWith(IViewPort* viewPort, ITransform* xform, IControlView *controlView, SysRgn clipRgn = nil);
129 
133  virtual ~AGMGraphicsContextWith();
134 
135  // ----- Clipping -----
136 
142  virtual SysRgn GetClip() const;
143 
149  virtual SysRgn GetOriginAdjustedClip() const;
150 
151  // ----- Accessors -----
152 
159  virtual SysPort GetSysPort() const;
160 
167  virtual IViewPort* GetViewPort() const;
168 
174  virtual const PMMatrix& GetContentToViewTransform() const;
175 
181  virtual const PMMatrix& GetViewToContentTransform() const;
182 
189  virtual IControlView* GetView() const;
190 
199  bool16 IsCurrent() const;
200 
202  virtual dvaui::drawbot::Drawbot* GetDrawbot() const
203  {
204  InterfacePtr<IDVOffscreenPortData> offscreenPortData(this->GetViewPort(), IID_IDVOFFSCREENPORTDATA);
205  if(offscreenPortData)
206  {
207  return offscreenPortData->GetDrawbot();
208  }
209  return NULL;
210  }
211 
212 private:
213 
214  // ----- Data fields -----
215 
216  // ----- Order is important. We need to acquire the view port, followed by the coordinate
217  // system followed by the clip. [amb]
218 
220  AcquireViewPort fAcquireVP;
221  AcquireCoordSys fAcquireCoordSys;
222  AcquireClip fAcquireClip;
223 };
224 
225 template <class AcquireCoordSys, class AcquireClip>
227 {
228  return fAcquireClip.GetClip();
229 }
230 
231 template <class AcquireCoordSys, class AcquireClip>
233 {
234  return fAcquireClip.GetOriginAdjustedClip();
235 }
236 
242 template <class AcquireCoordSys, class AcquireClip>
244 {
245  return nil;
246 }
247 
248 template <class AcquireCoordSys, class AcquireClip>
250 {
251  return fAcquireCoordSys.GetViewPort();
252 }
253 
254 template <class AcquireCoordSys, class AcquireClip>
256 {
257  return fAcquireCoordSys.GetTransform();
258 }
259 
260 template <class AcquireCoordSys, class AcquireClip>
262 {
263  return fAcquireCoordSys.GetInverseTransform();
264 }
265 
266 template <class AcquireCoordSys, class AcquireClip>
268 {
269  return fAcquireCoordSys.GetView();
270 }
271 
272 #ifdef _INCLUDE_TPP_IN_H_
273  #include "AGMGraphicsContextWith.tpp"
274 #endif //_INCLUDE_TPP_IN_H_
275 #ifdef WASM
276  #include "AGMGraphicsContextWith.tpp"
277 #endif // WASM
278 #endif