wxWidgets/interface/wx/dcgraph.h

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

113 lines
3.9 KiB
C
Raw Normal View History

/////////////////////////////////////////////////////////////////////////////
// Name: dcgraph.h
// Purpose: interface of wxGCDC
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxGCDC
wxGCDC is a device context that draws on a wxGraphicsContext.
wxGCDC does its best to implement wxDC API, but the following features are
not (fully) implemented because wxGraphicsContext doesn't support them:
- GetPixel() method is not implemented and always returns @false because
modern graphics layers don't support retrieving the contents of the drawn
pixels.
- FloodFill() method is not, and can't be, implemented, as its
functionality relies on reading the pixels from wxGraphicsContext too.
- SetLogicalFunction() method only works with @c wxCOPY, @c wxOR,
@c wxNO_OP, @c wxCLEAR and @c wxXOR functions, attempts to use any other
function (including @c wxINVERT) don't do anything.
- Similarly, ::wxRasterOperationMode parameter of Blit() and StretchBlit()
can only be one of the supported logical functions listed above, using
any other function will result in an assertion failure and not drawing
anything.
- For Direct2D-based wxGraphicsContext, only true-type fonts can be used
in the font-related functions.
@library{wxcore}
@category{dc}
@see wxDC, wxGraphicsContext
*/
class wxGCDC: public wxDC
{
public:
/**
Constructs a wxGCDC from a wxWindowDC.
*/
wxGCDC( const wxWindowDC& windowDC );
/**
Constructs a wxGCDC from a wxMemoryDC.
*/
wxGCDC( const wxMemoryDC& memoryDC );
/**
Constructs a wxGCDC from a wxPrinterDC.
*/
wxGCDC( const wxPrinterDC& printerDC );
/**
Construct a wxGCDC from an existing graphics context.
Note that this object takes ownership of @a context and will delete it
when it is destroyed or when SetGraphicsContext() is called with a
different context object.
Also notice that @a context will continue using the same font, pen and
brush as before until SetFont(), SetPen() or SetBrush() is explicitly
called to change them. This means that the code can use this
wxDC-derived object to work using pens and brushes with alpha component,
for example (which normally isn't supported by wxDC API), but it also
means that the return values of GetFont(), GetPen() and GetBrush() won't
really correspond to the actually used objects because they simply can't
represent them anyhow. If you wish to avoid such discrepancy, you need
to call the setter methods to bring wxDC and wxGraphicsContext font, pen
and brush in sync with each other.
*/
wxGCDC(wxGraphicsContext* context);
/**
Constructs a wxGCDC from a wxEnhMetaFileDC.
This constructor is only available in wxMSW port and when @c
wxUSE_ENH_METAFILE build option is enabled, i.e. when wxEnhMetaFileDC
class itself is available.
@since 2.9.3
*/
wxGCDC( const wxEnhMetaFileDC& emfDC );
wxGCDC();
virtual ~wxGCDC();
/**
Retrieves associated wxGraphicsContext
*/
wxGraphicsContext* GetGraphicsContext() const;
/**
Set the graphics context to be used for this wxGCDC.
Note that this object takes ownership of @a context and will delete it when
it is destroyed or when SetGraphicsContext() is called again.
Also, unlike the constructor taking wxGraphicsContext, this method will
reapply the current font, pen and brush, so that this object continues
to use them, if they had been changed before (which is never the case
when constructing wxGCDC directly from wxGraphicsContext).
*/
void SetGraphicsContext(wxGraphicsContext* context);
};