| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/os2/dc.h
 
- // Purpose:     wxDC class
 
- // Author:      David Webster
 
- // Modified by:
 
- // Created:     08/26/99
 
- // Copyright:   (c) David Webster
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_DC_H_
 
- #define _WX_DC_H_
 
- #include "wx/defs.h"
 
- #include "wx/dc.h"
 
- // ---------------------------------------------------------------------------
 
- // macros
 
- // ---------------------------------------------------------------------------
 
- // Logical to device
 
- // Absolute
 
- #define XLOG2DEV(x) (x)
 
- #define YLOG2DEV(y) (y)
 
- // Relative
 
- #define XLOG2DEVREL(x) (x)
 
- #define YLOG2DEVREL(y) (y)
 
- // Device to logical
 
- // Absolute
 
- #define XDEV2LOG(x) (x)
 
- #define YDEV2LOG(y) (y)
 
- // Relative
 
- #define XDEV2LOGREL(x) (x)
 
- #define YDEV2LOGREL(y) (y)
 
- /*
 
-  * Have the same macros as for XView but not for every operation:
 
-  * just for calculating window/viewport extent (a better way of scaling).
 
-  */
 
- // Logical to device
 
- // Absolute
 
- #define MS_XLOG2DEV(x) LogicalToDevice(x)
 
- #define MS_YLOG2DEV(y) LogicalToDevice(y)
 
- // Relative
 
- #define MS_XLOG2DEVREL(x) LogicalToDeviceXRel(x)
 
- #define MS_YLOG2DEVREL(y) LogicalToDeviceYRel(y)
 
- // Device to logical
 
- // Absolute
 
- #define MS_XDEV2LOG(x) DeviceToLogicalX(x)
 
- #define MS_YDEV2LOG(y) DeviceToLogicalY(y)
 
- // Relative
 
- #define MS_XDEV2LOGREL(x) DeviceToLogicalXRel(x)
 
- #define MS_YDEV2LOGREL(y) DeviceToLogicalYRel(y)
 
- #define YSCALE(y) (yorigin - (y))
 
- #define     wx_round(a)    (int)((a)+.5)
 
- #if wxUSE_DC_CACHEING
 
- /*
 
-  * Cached blitting, maintaining a cache
 
-  * of bitmaps required for transparent blitting
 
-  * instead of constant creation/deletion
 
-  */
 
- class wxDCCacheEntry : public wxObject
 
- {
 
- public:
 
-     wxDCCacheEntry( WXHBITMAP hBitmap
 
-                    ,int       nWidth
 
-                    ,int       nHeight
 
-                    ,int       nDepth
 
-                   );
 
-     wxDCCacheEntry( HPS   hPS
 
-                    ,int   nDepth
 
-                   );
 
-     virtual ~wxDCCacheEntry();
 
-     WXHBITMAP                       m_hBitmap;
 
-     HPS                             m_hPS;
 
-     int                             m_nWidth;
 
-     int                             m_nHeight;
 
-     int                             m_nDepth;
 
- }; // end of CLASS wxDCCacheEntry
 
- #endif
 
- // this is an ABC: use one of the derived classes to create a DC associated
 
- // with a window, screen, printer and so on
 
- class WXDLLIMPEXP_CORE wxPMDCImpl : public wxDCImpl
 
- {
 
-     DECLARE_DYNAMIC_CLASS(wxDC)
 
- public:
 
-     wxPMDCImpl(wxDC *owner, WXHDC hDC);
 
-     virtual ~wxPMDCImpl();
 
-     // implement base class pure virtuals
 
-     // ----------------------------------
 
-     virtual void Clear();
 
-     virtual bool    StartDoc(const wxString& rsMessage);
 
-     virtual void    EndDoc();
 
-     virtual void    StartPage();
 
-     virtual void    EndPage();
 
-     virtual void    SetFont(const wxFont& rFont);
 
-     virtual void    SetPen(const wxPen& rPen);
 
-     virtual void    SetBrush(const wxBrush& rBrush);
 
-     virtual void    SetBackground(const wxBrush& rBrush);
 
-     virtual void    SetBackgroundMode(int nMode);
 
-     virtual void    SetPalette(const wxPalette& rPalette);
 
-     virtual void    DestroyClippingRegion();
 
-     virtual wxCoord GetCharHeight() const;
 
-     virtual wxCoord GetCharWidth() const;
 
-     virtual bool    CanDrawBitmap() const;
 
-     virtual bool    CanGetTextExtent() const;
 
-     virtual int     GetDepth() const;
 
-     virtual wxSize  GetPPI() const;
 
-     virtual void    SetMapMode(wxMappingMode nMode);
 
-     virtual void    SetUserScale( double dX
 
-                                  ,double dY
 
-                                 );
 
-     virtual void    SetLogicalScale( double dX
 
-                                     ,double dY
 
-                                    );
 
-     virtual void    SetLogicalOrigin( wxCoord vX
 
-                                      ,wxCoord vY
 
-                                     );
 
-     virtual void    SetDeviceOrigin( wxCoord vX
 
-                                     ,wxCoord vY
 
-                                    );
 
-     virtual void    SetAxisOrientation( bool bXLeftRight
 
-                                        ,bool bYBottomUp
 
-                                       );
 
-     virtual void    SetLogicalFunction(wxRasterOperationMode nFunction);
 
-     // implementation from now on
 
-     // --------------------------
 
-     virtual void    SetRop(WXHDC hCdc);
 
-     virtual void    SelectOldObjects(WXHDC hDc);
 
-     wxWindow*       GetWindow() const { return m_pCanvas; }
 
-     void            SetWindow(wxWindow* pWin) { m_pCanvas = pWin; }
 
-     WXHDC           GetHDC() const { return m_hDC; }
 
-     void            SetHDC( WXHDC hDc
 
-                            ,bool  bOwnsDC = FALSE
 
-                           )
 
-     {
 
-         m_hDC = hDc;
 
-         m_bOwnsDC = bOwnsDC;
 
-     }
 
-     HPS             GetHPS() const { return m_hPS; }
 
-     void            SetHPS(HPS hPS)
 
-     {
 
-         m_hPS = hPS;
 
-     }
 
-     const wxBitmap& GetSelectedBitmap() const { return m_vSelectedBitmap; }
 
-     wxBitmap&       GetSelectedBitmap() { return m_vSelectedBitmap; }
 
-     void            UpdateClipBox();
 
- #if wxUSE_DC_CACHEING
 
-     static wxDCCacheEntry* FindBitmapInCache( HPS hPS
 
-                                              ,int nWidth
 
-                                              ,int nHeight
 
-                                             );
 
-     static wxDCCacheEntry* FindDCInCache( wxDCCacheEntry* pNotThis
 
-                                          ,HPS             hPS
 
-                                         );
 
-     static void AddToBitmapCache(wxDCCacheEntry* pEntry);
 
-     static void AddToDCCache(wxDCCacheEntry* pEntry);
 
-     static void ClearCache();
 
- #endif
 
- protected:
 
-     void Init()
 
-     {
 
-         m_pCanvas      = NULL;
 
-         m_hOldBitmap   = 0;
 
-         m_hOldPen      = 0;
 
-         m_hOldBrush    = 0;
 
-         m_hOldFont     = 0;
 
- #if wxUSE_PALETTE
 
-         m_hOldPalette  = 0;
 
- #endif // wxUSE_PALETTE
 
-         m_bOwnsDC      = false;
 
-         m_hDC          = 0;
 
-         m_hOldPS       = NULL;
 
-         m_hPS          = NULL;
 
-         m_bIsPaintTime = false; // True at Paint Time
 
-         m_pen.SetColour(*wxBLACK);
 
-         m_brush.SetColour(*wxWHITE);
 
-     }
 
-     // create an uninitialized DC: this should be only used by the derived
 
-     // classes
 
-     wxPMDCImpl( wxDC *owner ) : wxDCImpl( owner ) { Init(); }
 
- public:
 
-     virtual void    DoGetTextExtent( const wxString& rsString
 
-                                     ,wxCoord*        pX
 
-                                     ,wxCoord*        pY
 
-                                     ,wxCoord*        pDescent = NULL
 
-                                     ,wxCoord*        pExternalLeading = NULL
 
-                                     ,const wxFont*   pTheFont = NULL
 
-                                    ) const;
 
-     virtual bool DoFloodFill( wxCoord          vX
 
-                              ,wxCoord          vY
 
-                              ,const wxColour&  rCol
 
-                              ,wxFloodFillStyle nStyle = wxFLOOD_SURFACE
 
-                             );
 
-     virtual bool DoGetPixel( wxCoord   vX
 
-                             ,wxCoord   vY
 
-                             ,wxColour* pCol
 
-                            ) const;
 
-     virtual void DoDrawPoint( wxCoord vX
 
-                              ,wxCoord vY
 
-                             );
 
-     virtual void DoDrawLine( wxCoord vX1
 
-                             ,wxCoord vY1
 
-                             ,wxCoord vX2
 
-                             ,wxCoord vY2
 
-                            );
 
-     virtual void DoDrawArc( wxCoord vX1
 
-                            ,wxCoord vY1
 
-                            ,wxCoord vX2
 
-                            ,wxCoord vY2
 
-                            ,wxCoord vXc
 
-                            ,wxCoord vYc
 
-                           );
 
-     virtual void DoDrawCheckMark( wxCoord vX
 
-                                  ,wxCoord vY
 
-                                  ,wxCoord vWidth
 
-                                  ,wxCoord vHeight
 
-                                 );
 
-     virtual void DoDrawEllipticArc( wxCoord vX
 
-                                    ,wxCoord vY
 
-                                    ,wxCoord vW
 
-                                    ,wxCoord vH
 
-                                    ,double  dSa
 
-                                    ,double  dEa
 
-                                   );
 
-     virtual void DoDrawRectangle( wxCoord vX
 
-                                  ,wxCoord vY
 
-                                  ,wxCoord vWidth
 
-                                  ,wxCoord vHeight
 
-                                 );
 
-     virtual void DoDrawRoundedRectangle( wxCoord vX
 
-                                         ,wxCoord vY
 
-                                         ,wxCoord vWidth
 
-                                         ,wxCoord vHeight
 
-                                         ,double  dRadius
 
-                                        );
 
-     virtual void DoDrawEllipse( wxCoord vX
 
-                                ,wxCoord vY
 
-                                ,wxCoord vWidth
 
-                                ,wxCoord vHeight
 
-                               );
 
-     virtual void DoCrossHair( wxCoord vX
 
-                              ,wxCoord vY
 
-                             );
 
-     virtual void DoDrawIcon( const wxIcon& rIcon
 
-                             ,wxCoord       vX
 
-                             ,wxCoord       vY
 
-                            );
 
-     virtual void DoDrawBitmap( const wxBitmap& rBmp
 
-                               ,wxCoord         vX
 
-                               ,wxCoord         vY
 
-                               ,bool            bUseMask = FALSE
 
-                              );
 
-     virtual void DoDrawText( const wxString& rsText
 
-                             ,wxCoord         vX
 
-                             ,wxCoord         vY
 
-                            );
 
-     virtual void DoDrawRotatedText( const wxString& rsText
 
-                                    ,wxCoord         vX
 
-                                    ,wxCoord         vY
 
-                                    ,double          dAngle
 
-                                   );
 
-     virtual bool DoBlit( wxCoord vXdest
 
-                         ,wxCoord vYdest
 
-                         ,wxCoord vWidth
 
-                         ,wxCoord vHeight
 
-                         ,wxDC*   pSource
 
-                         ,wxCoord vXsrc
 
-                         ,wxCoord vYsrc
 
-                         ,wxRasterOperationMode     nRop = wxCOPY
 
-                         ,bool    bUseMask = FALSE
 
-                         ,wxCoord vXsrcMask = -1
 
-                         ,wxCoord vYsrcMask = -1
 
-                        );
 
-     virtual void DoSetClippingRegion( wxCoord vX
 
-                                      ,wxCoord vY
 
-                                      ,wxCoord vWidth
 
-                                      ,wxCoord vHeight
 
-                                     );
 
-     virtual void DoSetDeviceClippingRegion(const wxRegion& rRegion);
 
-     virtual void DoGetSize( int* pWidth
 
-                            ,int* pHeight
 
-                           ) const;
 
-     virtual void DoGetSizeMM( int* pWidth
 
-                              ,int* pHeight
 
-                             ) const;
 
-     virtual void DoDrawLines( int     n
 
-                              ,const wxPoint vaPoints[]
 
-                              ,wxCoord vXoffset
 
-                              ,wxCoord yYoffset
 
-                             );
 
-     virtual void DoDrawPolygon( int     n
 
-                                ,const wxPoint vaPoints[]
 
-                                ,wxCoord vXoffset
 
-                                ,wxCoord vYoffset
 
-                                ,wxPolygonFillMode     nFillStyle = wxODDEVEN_RULE
 
-                               );
 
- #if wxUSE_PALETTE
 
-     void DoSelectPalette(bool bRealize = FALSE);
 
-     void InitializePalette();
 
- #endif // wxUSE_PALETTE
 
- protected:
 
-     //
 
-     // common part of DoDrawText() and DoDrawRotatedText()
 
-     //
 
-     void DrawAnyText( const wxString& rsText
 
-                      ,wxCoord         vX
 
-                      ,wxCoord         vY
 
-                     );
 
-     // OS2-specific member variables ?? do we even need this under OS/2?
 
-     int                             m_nWindowExtX;
 
-     int                             m_nWindowExtY;
 
-     //
 
-     // the window associated with this DC (may be NULL)
 
-     //
 
-     wxWindow*                       m_pCanvas;
 
-     wxBitmap                        m_vSelectedBitmap;
 
- public:
 
-     // PM specific stuff
 
-     HPS                             m_hPS;
 
-     HPS                             m_hOldPS;   // old hPS, if any
 
-     bool                            m_bIsPaintTime;// True at Paint Time
 
-     RECTL                           m_vRclPaint; // Bounding rectangle at Paint time etc.
 
-     //
 
-     // TRUE => DeleteDC() in dtor, FALSE => only ReleaseDC() it
 
-     //
 
-     bool                            m_bOwnsDC:1;
 
-     //
 
-     // our HDC
 
-     //
 
-     WXHDC                           m_hDC;
 
-     //
 
-     // Store all old GDI objects when do a SelectObject, so we can select them
 
-     // back in (this unselecting user's objects) so we can safely delete the
 
-     // DC.
 
-     //
 
-     WXHBITMAP                       m_hOldBitmap;
 
-     WXHPEN                          m_hOldPen;
 
-     WXHBRUSH                        m_hOldBrush;
 
-     WXHFONT                         m_hOldFont;
 
-     WXHPALETTE                      m_hOldPalette;
 
- #if wxUSE_DC_CACHEING
 
-     static wxList                   m_svBitmapCache;
 
-     static wxList                   m_svDCCache;
 
- #endif
 
- }; // end of CLASS wxDC
 
- #endif
 
-     // _WX_DC_H_
 
 
  |