3cd0b8c5b5
Updated wxColour for handling Colormaps and ref couting. Updated wxClientDC et al. for conforming to wxGTK. Many tricky parts, particularly the bitmap drawing and blitting is still missing. Any sample crashes now for some reason with an X error. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
176 lines
5.3 KiB
C++
176 lines
5.3 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: dcclient.h
|
|
// Purpose: wxClientDC, wxPaintDC and wxWindowDC classes
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 17/09/98
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_DCCLIENT_H_
|
|
#define _WX_DCCLIENT_H_
|
|
|
|
#ifdef __GNUG__
|
|
#pragma interface "dcclient.h"
|
|
#endif
|
|
|
|
#include "wx/dc.h"
|
|
#include "wx/region.h"
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// fwd declarations
|
|
// -----------------------------------------------------------------------------
|
|
|
|
class wxWindow;
|
|
|
|
class wxWindowDC;
|
|
class wxPaintDC;
|
|
class wxClientDC;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxWindowDC
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class wxWindowDC : public wxDC
|
|
{
|
|
public:
|
|
wxWindowDC();
|
|
wxWindowDC( wxWindow *win );
|
|
|
|
~wxWindowDC();
|
|
|
|
virtual bool CanDrawBitmap() const { return TRUE; }
|
|
virtual bool CanGetTextExtent() const { return TRUE; }
|
|
|
|
protected:
|
|
virtual void DoGetSize(int *width, int *height) const;
|
|
virtual void DoFloodFill( wxCoord x, wxCoord y, const wxColour& col, int style = wxFLOOD_SURFACE );
|
|
virtual bool DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const;
|
|
|
|
virtual void DoDrawPoint(wxCoord x, wxCoord y);
|
|
virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
|
|
|
|
virtual void DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y );
|
|
virtual void DoDrawBitmap( const wxBitmap &bitmap, wxCoord x, wxCoord y,
|
|
bool useMask = FALSE );
|
|
|
|
virtual void DoDrawArc(wxCoord x1, wxCoord y1,
|
|
wxCoord x2, wxCoord y2,
|
|
wxCoord xc, wxCoord yc);
|
|
virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
|
|
double sa, double ea);
|
|
|
|
virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
|
virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y,
|
|
wxCoord width, wxCoord height,
|
|
double radius);
|
|
virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
|
|
|
virtual void DoCrossHair(wxCoord x, wxCoord y);
|
|
|
|
virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y);
|
|
virtual void DoDrawRotatedText(const wxString &text, wxCoord x, wxCoord y, double angle);
|
|
|
|
virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
|
|
wxDC *source, wxCoord xsrc, wxCoord ysrc,
|
|
int rop = wxCOPY, bool useMask = FALSE, wxCoord xsrcMask = -1, wxCoord ysrcMask = -1);
|
|
|
|
virtual void DoSetClippingRegionAsRegion(const wxRegion& region);
|
|
virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
|
|
wxCoord width, wxCoord height);
|
|
|
|
virtual void DoDrawLines(int n, wxPoint points[],
|
|
wxCoord xoffset, wxCoord yoffset);
|
|
virtual void DoDrawPolygon(int n, wxPoint points[],
|
|
wxCoord xoffset, wxCoord yoffset,
|
|
int fillStyle = wxODDEVEN_RULE);
|
|
|
|
|
|
public:
|
|
virtual void Clear();
|
|
|
|
virtual void SetFont(const wxFont& font);
|
|
virtual void SetPen(const wxPen& pen);
|
|
virtual void SetBrush(const wxBrush& brush);
|
|
virtual void SetBackground(const wxBrush& brush);
|
|
virtual void SetBackgroundMode(int mode);
|
|
virtual void SetPalette(const wxPalette& palette);
|
|
virtual void SetLogicalFunction( int function );
|
|
|
|
virtual void SetTextForeground(const wxColour& colour);
|
|
virtual void SetTextBackground(const wxColour& colour);
|
|
|
|
virtual wxCoord GetCharHeight() const;
|
|
virtual wxCoord GetCharWidth() const;
|
|
virtual void DoGetTextExtent(const wxString& string,
|
|
wxCoord *x, wxCoord *y,
|
|
wxCoord *descent = NULL,
|
|
wxCoord *externalLeading = NULL,
|
|
wxFont *theFont = NULL) const;
|
|
|
|
virtual int GetDepth() const;
|
|
virtual wxSize GetPPI() const;
|
|
|
|
virtual void DestroyClippingRegion();
|
|
|
|
protected:
|
|
// implementation
|
|
// --------------
|
|
|
|
WXDisplay *m_display;
|
|
WXWindow m_window;
|
|
WXGC m_penGC;
|
|
WXGC m_brushGC;
|
|
WXGC m_textGC;
|
|
WXGC m_bgGC;
|
|
WXColormap m_cmap;
|
|
bool m_isMemDC;
|
|
bool m_isScreenDC;
|
|
wxWindow *m_owner;
|
|
wxRegion m_currentClippingRegion;
|
|
wxRegion m_paintClippingRegion;
|
|
|
|
void SetUpDC();
|
|
void Destroy();
|
|
void ComputeScaleAndOrigin();
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxWindowDC)
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxClientDC
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class wxClientDC : public wxWindowDC
|
|
{
|
|
public:
|
|
wxClientDC() { }
|
|
wxClientDC( wxWindow *win );
|
|
|
|
protected:
|
|
virtual void DoGetSize(int *width, int *height) const;
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxClientDC)
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxPaintDC
|
|
//-----------------------------------------------------------------------------
|
|
|
|
class wxPaintDC : public wxClientDC
|
|
{
|
|
public:
|
|
wxPaintDC() { }
|
|
wxPaintDC( wxWindow *win );
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxPaintDC)
|
|
};
|
|
|
|
#endif
|
|
// _WX_DCCLIENT_H_
|