Moved all the coordinate system calculation to wxDCBase
and thus removed all the duplicated code in all wxDC classes. Problematic is that wxSVGFileDC and wxPostscriptDC inherit from wxDC and therefore include platform specific code (also before this change) so I chose to override all SetLogicalOrigin() etc. methods in these classes and call their wxDCBase methods thereby circumventing the platform dependent code. I'm afraid the Mac code will require updating, too. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
108
include/wx/dc.h
108
include/wx/dc.h
@@ -101,40 +101,9 @@ protected:
|
||||
class WXDLLEXPORT wxDCBase : public wxObject
|
||||
{
|
||||
public:
|
||||
wxDCBase()
|
||||
: m_colour(wxColourDisplay())
|
||||
, m_ok(true)
|
||||
, m_clipping(false)
|
||||
, m_isInteractive(0)
|
||||
, m_isBBoxValid(false)
|
||||
, m_logicalOriginX(0), m_logicalOriginY(0)
|
||||
, m_deviceOriginX(0), m_deviceOriginY(0)
|
||||
, m_logicalScaleX(1.0), m_logicalScaleY(1.0)
|
||||
, m_userScaleX(1.0), m_userScaleY(1.0)
|
||||
, m_scaleX(1.0), m_scaleY(1.0)
|
||||
, m_signX(1), m_signY(1)
|
||||
, m_minX(0), m_minY(0), m_maxX(0), m_maxY(0)
|
||||
, m_clipX1(0), m_clipY1(0), m_clipX2(0), m_clipY2(0)
|
||||
, m_logicalFunction(wxCOPY)
|
||||
, m_backgroundMode(wxTRANSPARENT)
|
||||
, m_mappingMode(wxMM_TEXT)
|
||||
, m_pen()
|
||||
, m_brush()
|
||||
, m_backgroundBrush(*wxTRANSPARENT_BRUSH)
|
||||
, m_textForegroundColour(*wxBLACK)
|
||||
, m_textBackgroundColour(*wxWHITE)
|
||||
, m_font()
|
||||
#if wxUSE_PALETTE
|
||||
, m_palette()
|
||||
, m_hasCustomPalette(false)
|
||||
#endif // wxUSE_PALETTE
|
||||
{
|
||||
ResetBoundingBox();
|
||||
ResetClipping();
|
||||
}
|
||||
|
||||
virtual ~wxDCBase() { }
|
||||
|
||||
wxDCBase();
|
||||
virtual ~wxDCBase();
|
||||
|
||||
// graphic primitives
|
||||
// ------------------
|
||||
|
||||
@@ -511,20 +480,6 @@ public:
|
||||
return wxSize(w, h);
|
||||
}
|
||||
|
||||
// coordinates conversions
|
||||
// -----------------------
|
||||
|
||||
// This group of functions does actual conversion of the input, as you'd
|
||||
// expect.
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const = 0;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const = 0;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const = 0;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const = 0;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const = 0;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const = 0;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const = 0;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const = 0;
|
||||
|
||||
// query DC capabilities
|
||||
// ---------------------
|
||||
|
||||
@@ -556,43 +511,60 @@ public:
|
||||
virtual void SetTextBackground(const wxColour& colour)
|
||||
{ m_textBackgroundColour = colour; }
|
||||
|
||||
virtual int GetMapMode() const { return m_mappingMode; }
|
||||
virtual void SetMapMode(int mode) = 0;
|
||||
|
||||
// coordinates conversions and transforms
|
||||
// --------------------------------------
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual int GetMapMode() const { return m_mappingMode; }
|
||||
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void GetUserScale(double *x, double *y) const
|
||||
{
|
||||
if ( x ) *x = m_userScaleX;
|
||||
if ( y ) *y = m_userScaleY;
|
||||
}
|
||||
virtual void SetUserScale(double x, double y) = 0;
|
||||
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void GetLogicalScale(double *x, double *y)
|
||||
{
|
||||
if ( x ) *x = m_logicalScaleX;
|
||||
if ( y ) *y = m_logicalScaleY;
|
||||
}
|
||||
virtual void SetLogicalScale(double x, double y)
|
||||
{
|
||||
m_logicalScaleX = x;
|
||||
m_logicalScaleY = y;
|
||||
}
|
||||
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
void GetLogicalOrigin(wxCoord *x, wxCoord *y) const
|
||||
{ DoGetLogicalOrigin(x, y); }
|
||||
wxPoint GetLogicalOrigin() const
|
||||
{ wxCoord x, y; DoGetLogicalOrigin(&x, &y); return wxPoint(x, y); }
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y) = 0;
|
||||
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
void GetDeviceOrigin(wxCoord *x, wxCoord *y) const
|
||||
{ DoGetDeviceOrigin(x, y); }
|
||||
wxPoint GetDeviceOrigin() const
|
||||
{ wxCoord x, y; DoGetDeviceOrigin(&x, &y); return wxPoint(x, y); }
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y) = 0;
|
||||
|
||||
virtual void SetDeviceLocalOrigin( wxCoord x, wxCoord y );
|
||||
|
||||
virtual void ComputeScaleAndOrigin() {}
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp) = 0;
|
||||
// this needs to overidden if the axis is inverted (such
|
||||
// as when using Postscript, where 0,0 is the lower left
|
||||
// corner, not the upper left).
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
|
||||
// logical functions
|
||||
// ---------------------------
|
||||
|
||||
virtual int GetLogicalFunction() const { return m_logicalFunction; }
|
||||
virtual void SetLogicalFunction(int function) = 0;
|
||||
|
||||
@@ -836,15 +808,25 @@ protected:
|
||||
// TODO short descriptions of what exactly they are would be nice...
|
||||
|
||||
wxCoord m_logicalOriginX, m_logicalOriginY;
|
||||
wxCoord m_deviceOriginX, m_deviceOriginY;
|
||||
|
||||
wxCoord m_deviceOriginX, m_deviceOriginY; // Usually 0,0, can be change by user
|
||||
|
||||
wxCoord m_deviceLocalOriginX, m_deviceLocalOriginY; // non-zero if native top-left corner
|
||||
// is not at 0,0. This was the case under
|
||||
// Mac's GrafPorts (coordinate system
|
||||
// used toplevel window's origin) and
|
||||
// e.g. for Postscript, where the native
|
||||
// origin in the bottom left corner.
|
||||
double m_logicalScaleX, m_logicalScaleY;
|
||||
double m_userScaleX, m_userScaleY;
|
||||
double m_scaleX, m_scaleY;
|
||||
double m_scaleX, m_scaleY; // calculated from logical scale and user scale
|
||||
|
||||
// Used by SetAxisOrientation() to invert the axes
|
||||
int m_signX, m_signY;
|
||||
|
||||
// what is a mm on a screen you don't know the size of?
|
||||
double m_mm_to_pix_x,
|
||||
m_mm_to_pix_y;
|
||||
|
||||
// bounding and clipping boxes
|
||||
wxCoord m_minX, m_minY, m_maxX, m_maxY;
|
||||
wxCoord m_clipX1, m_clipY1, m_clipX2, m_clipY2;
|
||||
|
||||
@@ -46,47 +46,38 @@ public:
|
||||
wxCoord GetCharHeight() const;
|
||||
wxCoord GetCharWidth() const;
|
||||
|
||||
void SetClippingRegion(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), wxCoord WXUNUSED(width), wxCoord WXUNUSED(height))
|
||||
void SetClippingRegion(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y), wxCoord WXUNUSED(width), wxCoord WXUNUSED(height))
|
||||
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::SetClippingRegion not implemented")); return ; }
|
||||
|
||||
void SetPalette(const wxPalette& WXUNUSED(palette))
|
||||
void SetPalette(const wxPalette& WXUNUSED(palette))
|
||||
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::SetPalette not implemented")); return ; }
|
||||
|
||||
void GetClippingBox(wxCoord *WXUNUSED(x), wxCoord *WXUNUSED(y), wxCoord * WXUNUSED(width), wxCoord * WXUNUSED(height))
|
||||
void GetClippingBox(wxCoord *WXUNUSED(x), wxCoord *WXUNUSED(y), wxCoord * WXUNUSED(width), wxCoord * WXUNUSED(height))
|
||||
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::GetClippingBox not implemented")); return ; }
|
||||
|
||||
void SetLogicalFunction(int WXUNUSED(function))
|
||||
void SetLogicalFunction(int WXUNUSED(function))
|
||||
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::SetLogicalFunction Call not implemented")); return ; }
|
||||
|
||||
int GetLogicalFunction() const
|
||||
int GetLogicalFunction() const
|
||||
{ wxASSERT_MSG (false, wxT("wxSVGFILEDC::GetLogicalFunction() not implemented")); return wxCOPY ; }
|
||||
|
||||
void SetBackground( const wxBrush &brush ) ;
|
||||
void SetBackgroundMode( int mode ) ;
|
||||
void SetBrush(const wxBrush& brush) ;
|
||||
void SetFont(const wxFont& font) ;
|
||||
void SetPen(const wxPen& pen) ;
|
||||
void SetBackground( const wxBrush &brush ) ;
|
||||
void SetBackgroundMode( int mode ) ;
|
||||
void SetBrush(const wxBrush& brush) ;
|
||||
void SetFont(const wxFont& font) ;
|
||||
void SetPen(const wxPen& pen) ;
|
||||
|
||||
bool IsOk() const {return m_OK;}
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
bool IsOk() const {return m_OK;}
|
||||
|
||||
// these need to be overridden as wxPostscriptDC inherits
|
||||
// from the platform dependent wxDC and this we'd call
|
||||
// e.g. wxMSW specific code here.
|
||||
virtual void SetMapMode( int mode );
|
||||
virtual void SetUserScale( double x, double y );
|
||||
virtual void SetLogicalScale( double x, double y );
|
||||
virtual void SetLogicalOrigin( wxCoord x, wxCoord y );
|
||||
virtual void SetDeviceOrigin( wxCoord x, wxCoord y );
|
||||
|
||||
virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
|
||||
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
|
||||
|
||||
private:
|
||||
bool DoGetPixel(wxCoord, wxCoord, class wxColour *) const
|
||||
@@ -150,7 +141,6 @@ private:
|
||||
bool m_OK;
|
||||
bool m_graphics_changed;
|
||||
int m_width, m_height;
|
||||
double m_mm_to_pix_x, m_mm_to_pix_y;
|
||||
|
||||
private:
|
||||
DECLARE_ABSTRACT_CLASS(wxSVGFileDC)
|
||||
|
||||
@@ -65,65 +65,20 @@ public:
|
||||
virtual int GetDepth() const;
|
||||
virtual wxSize GetPPI() const;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
virtual void SetLogicalFunction(int function);
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
|
||||
// implementation from now on
|
||||
// --------------------------
|
||||
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) / m_scaleX);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) / m_scaleY);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) * m_scaleX);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) * m_scaleY);
|
||||
}
|
||||
|
||||
// Returns the surface (and increases its ref count)
|
||||
wxIDirectFBSurfacePtr GetDirectFBSurface() const { return m_surface; }
|
||||
|
||||
protected:
|
||||
// implementation
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX(x); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel(x); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY(y); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel(y); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX(x); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel(x); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY(y); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel(y); }
|
||||
|
||||
// initializes the DC from a surface, must be called if default ctor
|
||||
// was used
|
||||
void DFBInit(const wxIDirectFBSurfacePtr& surface);
|
||||
|
||||
@@ -42,59 +42,67 @@ public:
|
||||
|
||||
// Recommended constructor
|
||||
wxPostScriptDC(const wxPrintData& printData);
|
||||
|
||||
// Recommended destructor :-)
|
||||
|
||||
virtual ~wxPostScriptDC();
|
||||
|
||||
virtual bool Ok() const { return IsOk(); }
|
||||
virtual bool IsOk() const;
|
||||
virtual bool Ok() const { return IsOk(); }
|
||||
virtual bool IsOk() const;
|
||||
|
||||
bool CanDrawBitmap() const { return true; }
|
||||
bool CanDrawBitmap() const { return true; }
|
||||
|
||||
void Clear();
|
||||
void SetFont( const wxFont& font );
|
||||
void SetPen( const wxPen& pen );
|
||||
void SetBrush( const wxBrush& brush );
|
||||
void SetLogicalFunction( int function );
|
||||
void SetBackground( const wxBrush& brush );
|
||||
void Clear();
|
||||
void SetFont( const wxFont& font );
|
||||
void SetPen( const wxPen& pen );
|
||||
void SetBrush( const wxBrush& brush );
|
||||
void SetLogicalFunction( int function );
|
||||
void SetBackground( const wxBrush& brush );
|
||||
|
||||
void DestroyClippingRegion();
|
||||
void DestroyClippingRegion();
|
||||
|
||||
bool StartDoc(const wxString& message);
|
||||
void EndDoc();
|
||||
void StartPage();
|
||||
void EndPage();
|
||||
bool StartDoc(const wxString& message);
|
||||
void EndDoc();
|
||||
void StartPage();
|
||||
void EndPage();
|
||||
|
||||
wxCoord GetCharHeight() const;
|
||||
wxCoord GetCharWidth() const;
|
||||
bool CanGetTextExtent() const { return true; }
|
||||
wxCoord GetCharHeight() const;
|
||||
wxCoord GetCharWidth() const;
|
||||
bool CanGetTextExtent() const { return true; }
|
||||
|
||||
// Resolution in pixels per logical inch
|
||||
wxSize GetPPI() const;
|
||||
// Resolution in pixels per logical inch
|
||||
wxSize GetPPI() const;
|
||||
|
||||
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
|
||||
void SetDeviceOrigin( wxCoord x, wxCoord y );
|
||||
// overridden because origin is bottom left and
|
||||
// axes are inverted
|
||||
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
|
||||
|
||||
// these need to be overridden as wxPostscriptDC inherits
|
||||
// from the platform dependent wxDC and this we'd call
|
||||
// e.g. wxMSW specific code here.
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
|
||||
void SetBackgroundMode(int WXUNUSED(mode)) { }
|
||||
void SetPalette(const wxPalette& WXUNUSED(palette)) { }
|
||||
void SetBackgroundMode(int WXUNUSED(mode)) { }
|
||||
void SetPalette(const wxPalette& WXUNUSED(palette)) { }
|
||||
|
||||
wxPrintData& GetPrintData() { return m_printData; }
|
||||
void SetPrintData(const wxPrintData& data) { m_printData = data; }
|
||||
void SetPrintData(const wxPrintData& data);
|
||||
wxPrintData& GetPrintData() { return m_printData; }
|
||||
|
||||
virtual int GetDepth() const { return 24; }
|
||||
virtual int GetDepth() const { return 24; }
|
||||
|
||||
static void SetResolution(int ppi);
|
||||
static int GetResolution();
|
||||
static void SetResolution(int ppi);
|
||||
static int GetResolution();
|
||||
|
||||
WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wxString&), DoPsPrintfFormat)
|
||||
WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wxString&), DoPsPrintfFormat)
|
||||
#ifdef __WATCOMC__
|
||||
// workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
|
||||
WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const char*), DoPsPrintfFormat)
|
||||
WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wchar_t*), DoPsPrintfFormat)
|
||||
WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const char*), DoPsPrintfFormat)
|
||||
WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wchar_t*), DoPsPrintfFormat)
|
||||
#endif
|
||||
|
||||
void PsPrint( const wxString& psdata );
|
||||
void PsPrint( int ch );
|
||||
void PsPrint( const wxString& psdata );
|
||||
void PsPrint( int ch );
|
||||
|
||||
private:
|
||||
void DoPsPrintfFormat(const wxString& fmt, ... );
|
||||
|
||||
@@ -10,21 +10,6 @@
|
||||
#ifndef __GTKDCH__
|
||||
#define __GTKDCH__
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// constants
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef MM_TEXT
|
||||
#define MM_TEXT 0
|
||||
#define MM_ISOTROPIC 1
|
||||
#define MM_ANISOTROPIC 2
|
||||
#define MM_LOMETRIC 3
|
||||
#define MM_HIMETRIC 4
|
||||
#define MM_TWIPS 5
|
||||
#define MM_POINTS 6
|
||||
#define MM_METRIC 7
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxDC
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -47,80 +32,23 @@ public:
|
||||
virtual void StartPage() { }
|
||||
virtual void EndPage() { }
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
|
||||
virtual void SetMapMode( int mode );
|
||||
virtual void SetUserScale( double x, double y );
|
||||
virtual void SetLogicalScale( double x, double y );
|
||||
virtual void SetLogicalOrigin( wxCoord x, wxCoord y );
|
||||
virtual void SetDeviceOrigin( wxCoord x, wxCoord y );
|
||||
|
||||
virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
|
||||
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
virtual GdkWindow* GetGDKWindow() const { return NULL; }
|
||||
|
||||
protected:
|
||||
// implementation
|
||||
// --------------
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
return DeviceToLogicalX(x);
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
return DeviceToLogicalXRel(x);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
return DeviceToLogicalY(y);
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
return DeviceToLogicalYRel(y);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
return LogicalToDeviceX(x);
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
return LogicalToDeviceXRel(x);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
return LogicalToDeviceY(y);
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
return LogicalToDeviceYRel(y);
|
||||
}
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX(x); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel(x); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY(y); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel(y); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX(x); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel(x); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY(y); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel(y); }
|
||||
|
||||
// base class pure virtuals implemented here
|
||||
virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
||||
virtual void DoGetSizeMM(int* width, int* height) const;
|
||||
|
||||
public:
|
||||
// GTK-specific member variables
|
||||
|
||||
// not sure what for, but what is a mm on a screen you don't know the size
|
||||
// of?
|
||||
double m_mm_to_pix_x,
|
||||
m_mm_to_pix_y;
|
||||
|
||||
bool m_needComputeScaleX,
|
||||
m_needComputeScaleY; // not yet used
|
||||
|
||||
|
||||
private:
|
||||
DECLARE_ABSTRACT_CLASS(wxDC)
|
||||
};
|
||||
|
||||
@@ -16,21 +16,6 @@
|
||||
|
||||
class WXDLLIMPEXP_CORE wxDC;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// constants
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef MM_TEXT
|
||||
#define MM_TEXT 0
|
||||
#define MM_ISOTROPIC 1
|
||||
#define MM_ANISOTROPIC 2
|
||||
#define MM_LOMETRIC 3
|
||||
#define MM_HIMETRIC 4
|
||||
#define MM_TWIPS 5
|
||||
#define MM_POINTS 6
|
||||
#define MM_METRIC 7
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxDC
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -53,80 +38,21 @@ public:
|
||||
virtual void StartPage() { }
|
||||
virtual void EndPage() { }
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
|
||||
virtual void SetMapMode( int mode );
|
||||
virtual void SetUserScale( double x, double y );
|
||||
virtual void SetLogicalScale( double x, double y );
|
||||
virtual void SetLogicalOrigin( wxCoord x, wxCoord y );
|
||||
virtual void SetDeviceOrigin( wxCoord x, wxCoord y );
|
||||
|
||||
virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
|
||||
|
||||
// implementation
|
||||
// --------------
|
||||
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
virtual GdkWindow* GetGDKWindow() const { return NULL; }
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) / m_scaleX);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) / m_scaleY);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) * m_scaleX);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) * m_scaleY);
|
||||
}
|
||||
|
||||
protected:
|
||||
// implementation
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX(x); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel(x); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY(y); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel(y); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX(x); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel(x); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY(y); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel(y); }
|
||||
|
||||
// base class pure virtuals implemented here
|
||||
virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
||||
virtual void DoGetSizeMM(int* width, int* height) const;
|
||||
|
||||
public:
|
||||
// GTK-specific member variables
|
||||
|
||||
// not sure what for, but what is a mm on a screen you don't know the size
|
||||
// of?
|
||||
double m_mm_to_pix_x,
|
||||
m_mm_to_pix_y;
|
||||
|
||||
bool m_needComputeScaleX,
|
||||
m_needComputeScaleY; // not yet used
|
||||
|
||||
|
||||
private:
|
||||
DECLARE_ABSTRACT_CLASS(wxDC)
|
||||
};
|
||||
|
||||
@@ -141,72 +141,23 @@ public:
|
||||
virtual int GetDepth() const;
|
||||
virtual wxSize GetPPI() const;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
virtual void SetLogicalFunction(int function);
|
||||
|
||||
virtual void SetTextForeground(const wxColour& colour);
|
||||
virtual void SetTextBackground(const wxColour& colour);
|
||||
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
|
||||
public:
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) / m_scaleX);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) / m_scaleY);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) * m_scaleX);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) * m_scaleY);
|
||||
}
|
||||
|
||||
wxCoord XLOG2DEVMAC(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX + m_macLocalOrigin.x;
|
||||
}
|
||||
|
||||
wxCoord YLOG2DEVMAC(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY + m_macLocalOrigin.y;
|
||||
}
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX( x ); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel( x ); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY( y ); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel( y ); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX( x ); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel( x ); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY( y ); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel( y ); }
|
||||
// probably no longer needed
|
||||
wxCoord XLOG2DEVMAC(wxCoord x) const { return LogicalToDeviceX( x ); }
|
||||
wxCoord YLOG2DEVMAC(wxCoord y) const { return LogicalToDeviceY( y ); }
|
||||
|
||||
#if wxMAC_USE_CORE_GRAPHICS
|
||||
wxGraphicsContext* GetGraphicsContext() { return m_graphicContext; }
|
||||
|
||||
@@ -86,51 +86,21 @@ public:
|
||||
virtual int GetDepth() const;
|
||||
virtual wxSize GetPPI() const;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
virtual void SetLogicalFunction(int function);
|
||||
|
||||
// implementation from now on
|
||||
// --------------------------
|
||||
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) / m_scaleX);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) / m_scaleY);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) * m_scaleX);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) * m_scaleY);
|
||||
}
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX(x); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel(x); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY(y); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel(y); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX(x); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel(x); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY(y); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel(y); }
|
||||
|
||||
MGLDevCtx *GetMGLDC() const { return m_MGLDC; }
|
||||
void SetMGLDC(MGLDevCtx *mgldc, bool OwnsMGLDC = false);
|
||||
|
||||
@@ -45,18 +45,8 @@ public:
|
||||
wxDC();
|
||||
virtual ~wxDC() { }
|
||||
|
||||
// implement base class pure virtuals
|
||||
// ----------------------------------
|
||||
|
||||
virtual wxSize GetPPI() const;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
|
||||
protected:
|
||||
virtual void DoDrawIcon(const wxIcon& icon, wxCoord x, wxCoord y);
|
||||
virtual void DoDrawBitmap(const wxBitmap &bmp, wxCoord x, wxCoord y,
|
||||
@@ -68,93 +58,25 @@ protected:
|
||||
virtual void DoGetSizeMM(int* width, int* height) const;
|
||||
|
||||
public:
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
wxCoord new_x = x - m_deviceOriginX;
|
||||
if (new_x > 0)
|
||||
return (wxCoord)((double)(new_x) / m_scaleX + 0.5) * m_signX + m_logicalOriginX;
|
||||
else
|
||||
return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX;
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
if (x > 0)
|
||||
return (wxCoord)((double)(x) / m_scaleX + 0.5);
|
||||
else
|
||||
return (wxCoord)((double)(x) / m_scaleX - 0.5);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
wxCoord new_y = y - m_deviceOriginY;
|
||||
if (new_y > 0)
|
||||
return (wxCoord)((double)(new_y) / m_scaleY + 0.5) * m_signY + m_logicalOriginY;
|
||||
else
|
||||
return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY;
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
if (y > 0)
|
||||
return (wxCoord)((double)(y) / m_scaleY + 0.5);
|
||||
else
|
||||
return (wxCoord)((double)(y) / m_scaleY - 0.5);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
wxCoord new_x = x - m_logicalOriginX;
|
||||
if (new_x > 0)
|
||||
return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX + m_deviceOriginX;
|
||||
else
|
||||
return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX;
|
||||
}
|
||||
// implementation
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX(x); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel(x); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY(y); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel(y); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX(x); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel(x); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY(y); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel(y); }
|
||||
|
||||
// Without device translation, for backing pixmap purposes
|
||||
wxCoord XLOG2DEV_2(wxCoord x) const
|
||||
{
|
||||
wxCoord new_x = x - m_logicalOriginX;
|
||||
if (new_x > 0)
|
||||
return (wxCoord)((double)(new_x) * m_scaleX + 0.5) * m_signX;
|
||||
else
|
||||
return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX;
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX;
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
if (x > 0)
|
||||
return (wxCoord)((double)(x) * m_scaleX + 0.5);
|
||||
else
|
||||
return (wxCoord)((double)(x) * m_scaleX - 0.5);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
wxCoord new_y = y - m_logicalOriginY;
|
||||
if (new_y > 0)
|
||||
return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY + m_deviceOriginY;
|
||||
else
|
||||
return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY;
|
||||
}
|
||||
// Without device translation, for backing pixmap purposes
|
||||
wxCoord YLOG2DEV_2(wxCoord y) const
|
||||
{
|
||||
wxCoord new_y = y - m_logicalOriginY;
|
||||
if (new_y > 0)
|
||||
return (wxCoord)((double)(new_y) * m_scaleY + 0.5) * m_signY;
|
||||
else
|
||||
return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY;
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY;
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
if (y > 0)
|
||||
return (wxCoord)((double)(y) * m_scaleY + 0.5);
|
||||
else
|
||||
return (wxCoord)((double)(y) * m_scaleY - 0.5);
|
||||
}
|
||||
|
||||
public:
|
||||
// not sure what for, but what is a mm on a screen you don't know the size of?
|
||||
double m_mm_to_pix_x,m_mm_to_pix_y;
|
||||
|
||||
// recompute scale?
|
||||
bool m_needComputeScaleX, m_needComputeScaleY;
|
||||
|
||||
};
|
||||
|
||||
|
||||
@@ -78,22 +78,14 @@ public:
|
||||
virtual int GetDepth() const;
|
||||
virtual wxSize GetPPI() const;
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void SetSystemScale(double x, double y);
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
|
||||
virtual void SetLogicalFunction(int function);
|
||||
|
||||
// implementation from now on
|
||||
@@ -171,6 +163,8 @@ protected:
|
||||
// classes
|
||||
wxDC() { Init(); }
|
||||
|
||||
void RealizeScaleAndOrigin();
|
||||
|
||||
virtual void DoGetTextExtent(const wxString& string,
|
||||
wxCoord *x, wxCoord *y,
|
||||
wxCoord *descent = NULL,
|
||||
|
||||
@@ -140,9 +140,6 @@ public:
|
||||
virtual void SetUserScale( double dX
|
||||
,double dY
|
||||
);
|
||||
virtual void SetSystemScale( double dX
|
||||
,double dY
|
||||
);
|
||||
virtual void SetLogicalScale( double dX
|
||||
,double dY
|
||||
);
|
||||
@@ -157,15 +154,6 @@ public:
|
||||
);
|
||||
virtual void SetLogicalFunction(int nFunction);
|
||||
|
||||
virtual wxCoord DeviceToLogicalX(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalY(wxCoord y) const;
|
||||
virtual wxCoord DeviceToLogicalXRel(wxCoord x) const;
|
||||
virtual wxCoord DeviceToLogicalYRel(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceX(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceY(wxCoord y) const;
|
||||
virtual wxCoord LogicalToDeviceXRel(wxCoord x) const;
|
||||
virtual wxCoord LogicalToDeviceYRel(wxCoord y) const ;
|
||||
|
||||
// implementation from now on
|
||||
// --------------------------
|
||||
|
||||
|
||||
@@ -18,21 +18,6 @@
|
||||
#include "wx/font.h"
|
||||
#include "wx/gdicmn.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// constants
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef MM_TEXT
|
||||
#define MM_TEXT 0
|
||||
#define MM_ISOTROPIC 1
|
||||
#define MM_ANISOTROPIC 2
|
||||
#define MM_LOMETRIC 3
|
||||
#define MM_HIMETRIC 4
|
||||
#define MM_TWIPS 5
|
||||
#define MM_POINTS 6
|
||||
#define MM_METRIC 7
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxDC
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -48,61 +33,20 @@ public:
|
||||
|
||||
virtual wxSize GetPPI() const;
|
||||
|
||||
virtual void SetMapMode(int mode);
|
||||
virtual void SetUserScale(double x, double y);
|
||||
virtual void SetLogicalScale(double x, double y);
|
||||
virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
|
||||
virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
|
||||
|
||||
protected:
|
||||
virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
|
||||
wxCoord width, wxCoord height);
|
||||
virtual void DoGetSizeMM(int* width, int* height) const;
|
||||
|
||||
public:
|
||||
virtual void ComputeScaleAndOrigin();
|
||||
|
||||
wxCoord XDEV2LOG(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_deviceOriginX) / m_scaleX) * m_signX + m_logicalOriginX;
|
||||
}
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) / m_scaleX);
|
||||
}
|
||||
wxCoord YDEV2LOG(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_deviceOriginY) / m_scaleY) * m_signY + m_logicalOriginY;
|
||||
}
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) / m_scaleY);
|
||||
}
|
||||
wxCoord XLOG2DEV(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x - m_logicalOriginX) * m_scaleX) * m_signX + m_deviceOriginX;
|
||||
}
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const
|
||||
{
|
||||
return wxRound((double)(x) * m_scaleX);
|
||||
}
|
||||
wxCoord YLOG2DEV(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y - m_logicalOriginY) * m_scaleY) * m_signY + m_deviceOriginY;
|
||||
}
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const
|
||||
{
|
||||
return wxRound((double)(y) * m_scaleY);
|
||||
}
|
||||
|
||||
public:
|
||||
// not sure what for, but what is a mm on a screen you don't know the size of?
|
||||
double m_mm_to_pix_x,m_mm_to_pix_y;
|
||||
|
||||
// recompute scale?
|
||||
bool m_needComputeScaleX, m_needComputeScaleY;
|
||||
|
||||
// implementation
|
||||
wxCoord XDEV2LOG(wxCoord x) const { return DeviceToLogicalX(x); }
|
||||
wxCoord XDEV2LOGREL(wxCoord x) const { return DeviceToLogicalXRel(x); }
|
||||
wxCoord YDEV2LOG(wxCoord y) const { return DeviceToLogicalY(y); }
|
||||
wxCoord YDEV2LOGREL(wxCoord y) const { return DeviceToLogicalYRel(y); }
|
||||
wxCoord XLOG2DEV(wxCoord x) const { return LogicalToDeviceX(x); }
|
||||
wxCoord XLOG2DEVREL(wxCoord x) const { return LogicalToDeviceXRel(x); }
|
||||
wxCoord YLOG2DEV(wxCoord y) const { return LogicalToDeviceY(y); }
|
||||
wxCoord YLOG2DEVREL(wxCoord y) const { return LogicalToDeviceYRel(y); }
|
||||
|
||||
private:
|
||||
DECLARE_ABSTRACT_CLASS(wxDC)
|
||||
|
||||
Reference in New Issue
Block a user