Adding wxDC::GetHandle for wxOSX-cocoa and wxOSX-carbon

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2012-07-28 19:31:03 +00:00
parent 5ed53483fe
commit 9eefb5c14a
7 changed files with 40 additions and 0 deletions

View File

@@ -283,6 +283,8 @@ public:
return NULL; return NULL;
} }
virtual void* GetHandle() const = 0;
// query dimension, colour deps, resolution // query dimension, colour deps, resolution
virtual void DoGetSize(int *width, int *height) const = 0; virtual void DoGetSize(int *width, int *height) const = 0;
@@ -787,6 +789,9 @@ public:
wxWindow *GetWindow() const wxWindow *GetWindow() const
{ return m_pimpl->GetWindow(); } { return m_pimpl->GetWindow(); }
void *GetHandle() const
{ return m_pimpl->GetHandle(); }
bool IsOk() const bool IsOk() const
{ return m_pimpl && m_pimpl->IsOk(); } { return m_pimpl && m_pimpl->IsOk(); }

View File

@@ -109,6 +109,8 @@ public:
wxGraphicsContext* GetGraphicsContext() const { return m_graphicContext; } wxGraphicsContext* GetGraphicsContext() const { return m_graphicContext; }
virtual void SetGraphicsContext( wxGraphicsContext* ctx ); virtual void SetGraphicsContext( wxGraphicsContext* ctx );
virtual void* GetHandle() const;
// the true implementations // the true implementations
virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col,
wxFloodFillStyle style = wxFLOOD_SURFACE); wxFloodFillStyle style = wxFLOOD_SURFACE);

View File

@@ -66,6 +66,9 @@ public:
virtual void SetLogicalFunction(wxRasterOperationMode function) virtual void SetLogicalFunction(wxRasterOperationMode function)
{ m_dc.SetLogicalFunction(function); } { m_dc.SetLogicalFunction(function); }
virtual void* GetHandle() const
{ return m_dc.GetHandle(); }
protected: protected:
// returns x and y if not mirroring or y and x if mirroring // returns x and y if not mirroring or y and x if mirroring
wxCoord GetX(wxCoord x, wxCoord y) const { return m_mirror ? y : x; } wxCoord GetX(wxCoord x, wxCoord y) const { return m_mirror ? y : x; }

View File

@@ -96,6 +96,8 @@ public:
virtual void SetFont(const wxFont& font); virtual void SetFont(const wxFont& font);
virtual void SetPen(const wxPen& pen); virtual void SetPen(const wxPen& pen);
virtual void* GetHandle() const { return NULL; }
private: private:
virtual bool DoGetPixel(wxCoord, wxCoord, wxColour *) const virtual bool DoGetPixel(wxCoord, wxCoord, wxColour *) const
{ {

View File

@@ -94,6 +94,8 @@ public:
virtual int GetResolution() const; virtual int GetResolution() const;
virtual wxRect GetPaperRect() const; virtual wxRect GetPaperRect() const;
virtual void* GetHandle() const { return NULL; }
protected: protected:
bool DoFloodFill(wxCoord x1, wxCoord y1, const wxColour &col, bool DoFloodFill(wxCoord x1, wxCoord y1, const wxColour &col,
wxFloodFillStyle style = wxFLOOD_SURFACE); wxFloodFillStyle style = wxFLOOD_SURFACE);

View File

@@ -1535,6 +1535,22 @@ public:
//@} //@}
/**
Returns a value that can be used as a handle to the native drawing
context, if this wxDC has something that could be thought of in that
way. (Not all of them do.)
For example, on Windows the return value is an HDC, on OSX it is a
CGContextRef and on wxGTK it will be a GdkDrawable. If the DC is a
wxGCDC then the return value will be the value returned from
wxGraphicsContext::GetNativeContext. A value of NULL is returned if
the DC does not have anything that fits the handle concept.
@since 2.9.5
*/
void* GetHandle() const;
void SetLogicalScale(double x, double y); void SetLogicalScale(double x, double y);
void GetLogicalScale(double *x, double *y) const; void GetLogicalScale(double *x, double *y) const;
void SetLogicalOrigin(wxCoord x, wxCoord y); void SetLogicalOrigin(wxCoord x, wxCoord y);

View File

@@ -433,6 +433,16 @@ void wxGCDCImpl::ComputeScaleAndOrigin()
} }
} }
void* wxGCDCImpl::GetHandle() const
{
void* cgctx = NULL;
wxGraphicsContext* gc = GetGraphicsContext();
if (gc) {
cgctx = gc->GetNativeContext();
}
return cgctx;
}
void wxGCDCImpl::SetPalette( const wxPalette& WXUNUSED(palette) ) void wxGCDCImpl::SetPalette( const wxPalette& WXUNUSED(palette) )
{ {