00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef __WXGRAPHICSA_H__
00017 #define __WXGRAPHICSA_H__
00018
00019
00020 #include "a2dprivate.h"
00021
00022 #if wxART2D_USE_GRAPHICS_CONTEXT
00023
00024 #ifndef WX_PRECOMP
00025 #include "wx/wx.h"
00026 #endif
00027
00028 #include "wx/dcprint.h"
00029
00030 #include "wx/graphics.h"
00031 #if wxCHECK_VERSION(2, 9, 0)
00032 #include "graphics.h"
00033 #endif
00034
00035 #include "wx/artbase/artglob.h"
00036 #include "wx/artbase/stylebase.h"
00037 #include "wx/genart/imagergba.h"
00038 #include "wx/artbase/polyver.h"
00039
00040 #include <vector>
00041
00042 class a2dStrokeData : public wxGraphicsObjectRefData
00043 {
00044 public:
00045 a2dStrokeData( wxGraphicsRenderer* renderer = 0, const wxPen &pen = wxNullPen );
00046 a2dStrokeData( wxGraphicsRenderer* renderer, const a2dStroke& stroke );
00047 ~a2dStrokeData();
00048
00049 void Init();
00050
00051 virtual void Apply( wxGraphicsContext* context );
00052 virtual wxDouble GetWidth() { return m_stroke.GetWidth(); }
00053
00054 private :
00055
00056 a2dStroke m_stroke;
00057 };
00058
00059 class a2dFillData : public wxGraphicsObjectRefData
00060 {
00061 public:
00062 a2dFillData( wxGraphicsRenderer* renderer = 0 );
00063 a2dFillData( wxGraphicsRenderer* renderer, const wxBrush &brush );
00064 a2dFillData( wxGraphicsRenderer* renderer, const a2dFill& fill );
00065 ~a2dFillData ();
00066
00067 virtual void Apply( wxGraphicsContext* context );
00068
00069
00070 #if wxCHECK_VERSION(2, 9, 1)
00071 void CreateLinearGradientBrush( wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2,
00072 const wxGraphicsGradientStops& stops );
00073 void CreateRadialGradientBrush( wxDouble xo, wxDouble yo, wxDouble xc, wxDouble yc, wxDouble radius,
00074 const wxGraphicsGradientStops& stops );
00075 #else
00076 void CreateLinearGradientBrush( wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2,
00077 const wxColour&c1, const wxColour&c2 );
00078 void CreateRadialGradientBrush( wxDouble xo, wxDouble yo, wxDouble xc, wxDouble yc, wxDouble radius,
00079 const wxColour &oColor, const wxColour &cColor );
00080 #endif
00081
00082
00083 protected:
00084 virtual void Init();
00085
00086 private :
00087
00088 a2dFill m_fill;
00089
00090 };
00091
00092 class a2dFontData : public wxGraphicsObjectRefData
00093 {
00094 public:
00095 a2dFontData( wxGraphicsRenderer* renderer, const wxFont &font, const wxColour& col );
00096 a2dFontData( wxGraphicsRenderer* renderer, const a2dFont& font );
00097 ~a2dFontData();
00098
00099 virtual void Apply( wxGraphicsContext* context );
00100 private :
00101
00102 a2dFont m_font;
00103 };
00104
00105 class a2dBitmapData : public wxGraphicsObjectRefData
00106 {
00107 public:
00108 a2dBitmapData( wxGraphicsRenderer* renderer, const wxBitmap& bmp );
00109 a2dBitmapData( wxGraphicsRenderer* renderer, const wxImage& image );
00110 a2dBitmapData( wxGraphicsRenderer* renderer, const wxGraphicsBitmap& a2dbitmap );
00111 ~a2dBitmapData();
00112
00113 virtual wxImage GetImage() const { return m_image; }
00114 virtual wxSize GetSize() const { return wxSize(m_width, m_height); }
00115 private :
00116
00117 wxImage m_image;
00118 int m_width;
00119 int m_height;
00120 };
00121
00122 class a2dMatrixData : public wxGraphicsMatrixData
00123 {
00124 public :
00125 a2dMatrixData(wxGraphicsRenderer* renderer, const a2dAffineMatrix* matrix = NULL ) ;
00126 virtual ~a2dMatrixData() ;
00127
00128 virtual wxGraphicsObjectRefData *Clone() const ;
00129
00130
00131 virtual void Concat( const wxGraphicsMatrixData *t );
00132
00133
00134 virtual void Set(wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
00135 wxDouble tx=0.0, wxDouble ty=0.0);
00136
00137
00138 virtual void Get(wxDouble* a=NULL, wxDouble* b=NULL, wxDouble* c=NULL,
00139 wxDouble* d=NULL, wxDouble* tx=NULL, wxDouble* ty=NULL) const;
00140
00141
00142 virtual void Invert();
00143
00144
00145 virtual bool IsEqual( const wxGraphicsMatrixData* t) const ;
00146
00147
00148 virtual bool IsIdentity() const;
00149
00150
00151
00152
00153
00154
00155 virtual void Translate( wxDouble dx , wxDouble dy );
00156
00157
00158 virtual void Scale( wxDouble xScale , wxDouble yScale );
00159
00160
00161 virtual void Rotate( wxDouble angle );
00162
00163
00164
00165
00166
00167
00168 virtual void TransformPoint( wxDouble *x, wxDouble *y ) const;
00169
00170
00171 virtual void TransformDistance( wxDouble *dx, wxDouble *dy ) const;
00172
00173
00174 virtual void * GetNativeMatrix() const;
00175 private:
00176 a2dAffineMatrix m_matrix ;
00177 } ;
00178
00179 class a2dPathData : public wxGraphicsPathData
00180 {
00181 public :
00182 a2dPathData(wxGraphicsRenderer* renderer, a2dVpath* path = NULL);
00183 ~a2dPathData();
00184
00185 virtual wxGraphicsObjectRefData *Clone() const;
00186
00187
00188
00189
00190
00191
00192 virtual void MoveToPoint( wxDouble x, wxDouble y );
00193
00194
00195 virtual void AddLineToPoint( wxDouble x, wxDouble y );
00196
00197
00198 virtual void AddCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble cx2, wxDouble cy2, wxDouble x, wxDouble y );
00199
00200
00201
00202 virtual void AddArc( wxDouble x, wxDouble y, wxDouble r, wxDouble startAngle, wxDouble endAngle, bool clockwise ) ;
00203
00204
00205 virtual void GetCurrentPoint( wxDouble* x, wxDouble* y) const;
00206
00207
00208 virtual void AddPath( const wxGraphicsPathData* path );
00209
00210
00211 virtual void CloseSubpath();
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230 virtual void * GetNativePath() const ;
00231
00232
00233 virtual void UnGetNativePath(void *p) const;
00234
00235
00236 virtual void Transform( const wxGraphicsMatrixData* matrix ) ;
00237
00238
00239 virtual void GetBox(wxDouble *x, wxDouble *y, wxDouble *w, wxDouble *h) const;
00240
00241 virtual bool Contains( wxDouble x, wxDouble y, wxPolygonFillMode fillStyle = wxWINDING_RULE) const;
00242
00243 private :
00244 a2dVpath m_path;
00245 };
00246
00247 class a2dContext : public wxGraphicsContext
00248 {
00249 DECLARE_NO_COPY_CLASS(a2dContext)
00250
00251 public:
00252
00253 a2dContext( wxGraphicsRenderer* renderer, int width, int height );
00254 a2dContext( wxGraphicsRenderer* renderer );
00255 a2dContext( wxGraphicsRenderer* renderer, a2dContext* context );
00256
00257
00258
00259 a2dContext();
00260 virtual ~a2dContext();
00261
00262 #if wxCHECK_VERSION(2,9,0)
00263
00264 virtual bool SetAntialiasMode(wxAntialiasMode antialias) { return false; }
00265
00266
00267 virtual bool SetCompositionMode(wxCompositionMode op) { return false; }
00268 #endif
00269
00270 virtual void Clip( const wxRegion ®ion );
00271
00272
00273 virtual void Clip( wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00274
00275
00276 virtual void ResetClip();
00277
00278 virtual void* GetNativeContext();
00279
00280 virtual void StrokePath( const wxGraphicsPath& p );
00281 virtual void FillPath( const wxGraphicsPath& p , wxPolygonFillMode fillStyle = wxWINDING_RULE );
00282
00283 void DrawPath( const wxGraphicsPath& path, wxPolygonFillMode fillStyle = wxWINDING_RULE );
00284
00285 virtual void Translate( wxDouble dx , wxDouble dy );
00286 virtual void Scale( wxDouble xScale , wxDouble yScale );
00287 virtual void Rotate( wxDouble angle );
00288
00289
00290 virtual void ConcatTransform( const wxGraphicsMatrix& matrix );
00291
00292
00293 virtual void SetPen( const wxGraphicsPen& pen );
00294
00295
00296 virtual void SetBrush( const wxGraphicsBrush& brush );
00297
00298
00299 virtual void SetFont( const wxGraphicsFont& font );
00300
00301 void SetStroke( const a2dStroke& stroke );
00302
00303 void SetFill( const a2dFill& fill );
00304
00305 void SetFont( const a2dFont& font );
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320 virtual void SetDrawStyle( a2dDrawStyle drawstyle ) = 0;
00321
00322
00323 a2dDrawStyle GetDrawStyle(){return m_drawstyle;}
00324
00325
00326 void BeginLayer(wxDouble opacity) {};
00327
00328
00329
00330 void EndLayer() {};
00331
00332
00333 virtual void SetTransform( const wxGraphicsMatrix& matrix );
00334
00335
00336 virtual wxGraphicsMatrix GetTransform() const;
00337
00338 #if wxCHECK_VERSION(2,9,0)
00339 virtual void DrawBitmap( const wxGraphicsBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00340 #else
00341 virtual void DrawGraphicsBitmap(const wxGraphicsBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h);
00342 #endif
00343
00344 virtual void DrawBitmap( const wxBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00345 virtual void DrawIcon( const wxIcon &icon, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00346 virtual void PushState();
00347 virtual void PopState();
00348
00349 #if wxCHECK_VERSION(2,9,0)
00350 void DoDrawText( const wxString &str, wxDouble x, wxDouble y );
00351 #else
00352 void DrawText( const wxString &str, wxDouble x, wxDouble y );
00353 #endif
00354 virtual void GetTextExtent( const wxString &str, wxDouble *width, wxDouble *height,
00355 wxDouble *descent, wxDouble *externalLeading ) const;
00356 virtual void GetPartialTextExtents(const wxString& text, wxArrayDouble& widths) const;
00357
00358
00359
00360
00361
00362
00363
00364
00365 void SetDisplayAberration( double aber ) { m_displayaberration = aber; }
00366
00367
00368
00369
00370
00371 double GetDisplayAberration() { return m_displayaberration; }
00372
00373
00374 inline void SetPrimitiveThreshold( wxUint16 pixels ) { m_drawingthreshold = pixels; }
00375
00376
00377 inline wxUint16 GetPrimitiveThreshold() { return m_drawingthreshold; }
00378
00379
00380
00381
00382
00383 void SetOpacityFactor( wxUint8 OpacityFactor ) { m_OpacityFactor = OpacityFactor; }
00384
00385
00386 wxUint8 GetOpacityFactor() { return m_OpacityFactor; }
00387
00388
00389 inline bool GetYaxis() const { return m_yaxis; }
00390
00391
00392 virtual void SetYaxis( bool up );
00393
00394 protected:
00395
00396 void Init();
00397
00398
00399
00400 inline bool IsStrokeOnly()
00401 {
00402 return ( m_drawstyle == a2dWIREFRAME ||
00403 m_drawstyle == a2dWIREFRAME_ZERO_WIDTH ||
00404 m_drawstyle == a2dWIREFRAME_INVERT ||
00405 m_drawstyle == a2dWIREFRAME_INVERT_ZERO_WIDTH ||
00406 m_activefill.IsNoFill() ||
00407 m_activefill.GetStyle() == a2dFILL_TRANSPARENT
00408 );
00409 }
00410
00411
00412
00413 inline bool IsStroked()
00414 {
00415 return !m_activestroke.IsNoStroke() && !m_activestroke.GetStyle() == a2dSTROKE_TRANSPARENT;
00416 }
00417
00418
00419 virtual void DoSetActiveStroke() = 0;
00420
00421
00422 virtual void DoSetActiveFill() = 0;
00423
00424
00425 virtual void DrawPolygon( const a2dVertexList* list, wxPolygonFillMode fillStyle = wxODDEVEN_RULE );
00426
00427
00428 virtual void DrawLines( const a2dVertexList* list );
00429
00430
00431 virtual void DrawLine( double x1, double y1, double x2, double y2 );
00432
00433 virtual void DrawVpath( const a2dVpath* path );
00434
00435
00436 int ToDeviceLines( a2dVertexArray* points, a2dBoundingBox& devbbox, bool& smallPoly, bool replaceByRectangle = false );
00437
00438
00439 int ToDeviceLines( const a2dVertexList *list, a2dBoundingBox& devbbox, bool& smallPoly, bool replaceByRectangle = false );
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450
00451
00452
00453
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465 void SetMappingUpp( double x, double y, double wx, double wy, double vx1, double vy1, double xpp, double ypp );
00466
00467
00468 void FillPolygon( int n, wxRealPoint points[] );
00469
00470
00471 bool MoveUp( int n, wxRealPoint points[] , double horline, int& index, int direction );
00472
00473
00474 void DetectCriticalPoints( int n, wxRealPoint points[] );
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487 void DrawTextGeneric( const wxString& text, double x, double y, void ( a2dContext::*drawchar )( wxChar ) );
00488
00489
00490 virtual void DrawCharUnknown( wxChar c );
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501 virtual void DrawTextUnknown( const wxString& text, double x, double y, bool words = false );
00502
00503
00504
00505
00506
00507
00508
00509 virtual void DrawCharStroke( wxChar c );
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520 void DrawCharStrokeCb( wxChar c ) { DrawCharStroke( c ); }
00521
00522
00523
00524
00525
00526 virtual void DrawTextStroke( const wxString& text, double x, double y )
00527 { DrawTextGeneric( text, x, y, &a2dContext::DrawCharStrokeCb ); }
00528
00529
00530
00531
00532
00533
00534
00535 virtual void DrawCharFreetype( wxChar c ) { DrawCharUnknown( c ); }
00536
00537
00538
00539 void DrawCharFreetypeCb( wxChar c ) { DrawCharFreetype( c ); }
00540
00541
00542
00543
00544
00545 virtual void DrawTextFreetype( const wxString& text, double x, double y )
00546 { DrawTextGeneric( text, x, y, &a2dContext::DrawCharFreetypeCb ); }
00547
00548
00549
00550
00551
00552
00553
00554 virtual void DrawCharDc( wxChar c ) { DrawCharUnknown( c ); }
00555
00556
00557
00558 void DrawCharDcCb( wxChar c ) { DrawCharDc( c ); }
00559
00560
00561
00562
00563
00564 virtual void DrawTextDc( const wxString& text, double x, double y )
00565 { DrawTextGeneric( text, x, y, &a2dContext::DrawCharDcCb ); }
00566
00567
00568 wxPoint* _convertToIntPointCache( int n, wxRealPoint *pts );
00569
00570
00571 virtual void DeviceDrawPolygon( unsigned int n, bool spline , wxPolygonFillMode fillStyle );
00572
00573
00574 virtual void DeviceDrawLines( unsigned int n, bool spline );
00575
00576
00577 virtual void DeviceDrawLine( double x1, double y1, double x2, double y2 );
00578
00579
00580
00581
00582
00583
00584
00585
00586
00587
00588 virtual void DeviceDrawHorizontalLine( int x1, int y1, int x2, bool use_stroke_color );
00589
00590
00591
00592
00593
00594
00595
00596
00597
00598
00599 virtual void DeviceDrawVerticalLine( int x1, int y1, int y2, bool use_stroke_color );
00600
00601
00602 virtual void DeviceDrawPixel( int x1, int y1, unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255 );
00603
00604
00605 wxUint8 m_StrokeOpacityCol1;
00606
00607 wxUint8 m_StrokeOpacityCol2;
00608
00609 wxUint8 m_FillOpacityCol1;
00610
00611 wxUint8 m_FillOpacityCol2;
00612
00613
00614 unsigned char m_colour1redStroke;
00615
00616 unsigned char m_colour1greenStroke;
00617
00618 unsigned char m_colour1blueStroke;
00619
00620
00621 unsigned char m_colour1redFill;
00622
00623 unsigned char m_colour1greenFill;
00624
00625 unsigned char m_colour1blueFill;
00626
00627
00628 unsigned char m_colour2redFill;
00629
00630 unsigned char m_colour2greenFill;
00631
00632 unsigned char m_colour2blueFill;
00633
00634
00635 a2dStroke m_activestroke;
00636
00637
00638 a2dFill m_activefill;
00639
00640
00641 a2dFont m_a2dfont;
00642
00643
00644 a2dDrawStyle m_drawstyle;
00645
00646 a2dAffineMatrix m_usertodevice;
00647
00648 int m_width;
00649
00650 int m_height;
00651
00652
00653 bool m_yaxis;
00654
00655
00656 wxRect m_clipboxdev;
00657
00658
00659 a2dCriticalPointList m_CRlist;
00660
00661
00662 a2dAETList m_AETlist;
00663
00664
00665 std::vector<wxPoint> m_cpointsInt;
00666
00667
00668 std::vector<wxRealPoint> m_cpointsDouble;
00669
00670
00671 double m_displayaberration;
00672
00673
00674 wxUint16 m_drawingthreshold;
00675
00676
00677 wxUint8 m_OpacityFactor;
00678
00679 private:
00680
00681 void ColourXYLinear( int x1, int x2, int y );
00682 void ColourXYRadial( int x1, int x2, int y );
00683
00684
00685 double m_dx1, m_dy1, m_dx2, m_dy2, m_radiusd, m_length, m_max_x, m_min_x, m_max_y, m_min_y;
00686 a2dLine m_line;
00687
00688 };
00689
00690 class a2dDcContext : public a2dContext
00691 {
00692 DECLARE_NO_COPY_CLASS(a2dDcContext)
00693
00694 public:
00695
00696 a2dDcContext( wxGraphicsRenderer* renderer, wxMemoryDC* dc, wxBitmap* drawable );
00697 a2dDcContext( wxGraphicsRenderer* renderer, wxBitmap* drawable );
00698 virtual ~a2dDcContext();
00699
00700
00701 virtual void Clip( wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00702
00703
00704 virtual void ResetClip();
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717
00718
00719 virtual void SetDrawStyle( a2dDrawStyle drawstyle );
00720
00721
00722 virtual bool SetLogicalFunction( wxRasterOperationMode function) ;
00723
00724 #if wxCHECK_VERSION(2,9,0)
00725 virtual void DrawBitmap( const wxGraphicsBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00726 #else
00727 virtual void DrawGraphicsBitmap(const wxGraphicsBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h);
00728 #endif
00729
00730 virtual void DrawCharDc( wxChar c );
00731 virtual void DrawTextDc( const wxString& text, double x, double y );
00732 virtual void DrawCharFreetype( wxChar c );
00733
00734 protected:
00735
00736
00737 virtual void DoSetActiveStroke();
00738
00739
00740 virtual void DoSetActiveFill();
00741
00742 virtual void DrawVpath( const a2dVpath* path );
00743
00744 void DeviceDrawBitmap( const wxBitmap &bmp, double x, double y, bool useMask );
00745
00746
00747 virtual void DeviceDrawPolygon( unsigned int n, bool spline , wxPolygonFillMode fillStyle );
00748 virtual void DeviceDrawLines( unsigned int n, bool spline );
00749 virtual void DeviceDrawLine( double x1, double y1, double x2, double y2 );
00750 virtual void DeviceDrawHorizontalLine( int x1, int y1, int x2, bool use_stroke_color );
00751 virtual void DeviceDrawVerticalLine( int x1, int y1, int y2, bool use_stroke_color );
00752 virtual void DeviceDrawPixel( int x1, int y1, unsigned char r, unsigned char g, unsigned char b, unsigned char a = 255 );
00753
00754
00755 wxBitmap* m_buffer;
00756
00757
00758
00759 wxDC* m_renderDC;
00760 };
00761
00762
00763
00764
00765
00766 class a2dRenderer : public wxGraphicsRenderer
00767 {
00768 public :
00769 a2dRenderer() {}
00770
00771 virtual ~a2dRenderer() {}
00772
00773
00774
00775 virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
00776
00777 virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc );
00778
00779 virtual wxGraphicsContext * CreateContext( wxMemoryDC* dc, wxBitmap* drawable );
00780
00781 virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
00782
00783 virtual wxGraphicsContext * CreateContextFromNativeWindow( void * window );
00784
00785 virtual wxGraphicsContext * CreateContext( wxWindow* window );
00786
00787 virtual wxGraphicsContext * CreateMeasuringContext();
00788
00789 #if wxCHECK_VERSION(2, 9, 0)
00790 #if wxUSE_PRINTING_ARCHITECTURE
00791 virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc);
00792 #ifdef __WXMSW__
00793 virtual wxGraphicsContext * CreateContext( const wxEnhMetaFileDC& dc);
00794 #endif
00795
00796 #endif // wxUSE_PRINTING_ARCHITECTURE
00797 #endif //wxCHECK_VERSION(2, 9, 0)
00798
00799
00800
00801 virtual wxGraphicsPath CreatePath();
00802
00803
00804 virtual wxGraphicsMatrix CreateMatrix( wxDouble a=1.0, wxDouble b=0.0, wxDouble c=0.0, wxDouble d=1.0,
00805 wxDouble tx=0.0, wxDouble ty=0.0);
00806
00807 virtual wxGraphicsPen CreatePen(const wxPen& pen) ;
00808
00809 virtual wxGraphicsBrush CreateBrush(const wxBrush& brush ) ;
00810
00811 virtual wxGraphicsPen CreateStroke(const a2dStroke& stroke ) ;
00812
00813 virtual wxGraphicsBrush CreateFill(const a2dFill& fill ) ;
00814
00815 #if wxCHECK_VERSION(2, 9, 1)
00816 virtual wxGraphicsBrush
00817 CreateLinearGradientBrush(wxDouble x1, wxDouble y1,
00818 wxDouble x2, wxDouble y2,
00819 const wxGraphicsGradientStops& stops);
00820
00821 virtual wxGraphicsBrush
00822 CreateRadialGradientBrush(wxDouble xo, wxDouble yo,
00823 wxDouble xc, wxDouble yc,
00824 wxDouble radius,
00825 const wxGraphicsGradientStops& stops);
00826
00827
00828 virtual wxGraphicsBitmap CreateBitmapFromNativeBitmap( void* bitmap );
00829
00830 #else
00831
00832 virtual wxGraphicsBrush CreateLinearGradientBrush( wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2,
00833 const wxColour& c1, const wxColour& c2) ;
00834
00835
00836
00837 virtual wxGraphicsBrush CreateRadialGradientBrush( wxDouble xo, wxDouble yo, wxDouble xc, wxDouble yc, wxDouble radius,
00838 const wxColour& oColor, const wxColour& cColor) ;
00839 #endif
00840
00841
00842
00843
00844 virtual wxGraphicsFont CreateFont( const wxFont& font , const wxColour& col = *wxBLACK ) ;
00845
00846 virtual wxGraphicsFont CreateFont( const a2dFont& font ) ;
00847
00848 wxGraphicsBitmap CreateBitmap( const wxBitmap& bitmap ) ;
00849
00850 wxGraphicsBitmap CreateBitmap( const wxImage& image ) ;
00851
00852 virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h );
00853
00854
00855 private :
00856 DECLARE_DYNAMIC_CLASS_NO_COPY(a2dRenderer)
00857 } ;
00858
00859
00860
00861 #endif //wxART2D_USE_GRAPHICS_CONTEXT
00862
00863
00864 #endif