-%new wxCursor* wxCursorFromImage(const wxImage& image);
-%{
- wxCursor* wxCursorFromImage(const wxImage& image) {
- #ifndef __WXMAC__
- return new wxCursor(image);
- #else
- return NULL;
- #endif
- }
-%}
-
-//----------------------------------------------------------------------
-
-class wxColour : public wxObject {
-public:
- wxColour(unsigned char red=0, unsigned char green=0, unsigned char blue=0);
- ~wxColour();
- unsigned char Red();
- unsigned char Green();
- unsigned char Blue();
- bool Ok();
- void Set(unsigned char red, unsigned char green, unsigned char blue);
- %addmethods {
- PyObject* Get() {
- PyObject* rv = PyTuple_New(3);
- int red = -1;
- int green = -1;
- int blue = -1;
- if (self->Ok()) {
- red = self->Red();
- green = self->Green();
- blue = self->Blue();
- }
- PyTuple_SetItem(rv, 0, PyInt_FromLong(red));
- PyTuple_SetItem(rv, 1, PyInt_FromLong(green));
- PyTuple_SetItem(rv, 2, PyInt_FromLong(blue));
- return rv;
- }
- bool __eq__(PyObject* obj) {
- wxColour tmp;
- wxColour* ptr = &tmp;
- if (obj == Py_None) return FALSE;
- wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear());
- if (! success) return FALSE;
- return *self == *ptr;
- }
- bool __ne__(PyObject* obj) {
- wxColour tmp;
- wxColour* ptr = &tmp;
- if (obj == Py_None) return TRUE;
- wxPyBLOCK_THREADS(bool success = wxColour_helper(obj, &ptr); PyErr_Clear());
- if (! success) return TRUE;
- return *self != *ptr;
- }
- }
-
- %pragma(python) addtoclass = "asTuple = Get
- def __str__(self): return str(self.asTuple())
- def __repr__(self): return 'wxColour:' + str(self.asTuple())
- def __nonzero__(self): return self.Ok()
- def __getinitargs__(self): return ()
- def __getstate__(self): return self.asTuple()
- def __setstate__(self, state): self.Set(*state)
-"
-
-};
-
-%new wxColour* wxNamedColour(const wxString& colorName);
-
-%{ // Alternate 'constructor'
- wxColour* wxNamedColour(const wxString& colorName) {
- return new wxColour(colorName);
- }
-%}
-
-
-
-class wxColourDatabase : public wxObject {
-public:
-
- wxColour *FindColour(const wxString& colour);
- wxString FindName(const wxColour& colour) const;
-
- %addmethods {
- void Append(const wxString& name, int red, int green, int blue) {
- // first see if the name is already there
- wxString cName = name;
- cName.MakeUpper();
- wxString cName2 = cName;
- if ( !cName2.Replace(wxT("GRAY"), wxT("GREY")) )
- cName2.clear();
-
- wxNode *node = self->GetFirst();
- while ( node ) {
- const wxChar *key = node->GetKeyString();
- if ( cName == key || cName2 == key ) {
- wxColour* c = (wxColour *)node->GetData();
- c->Set(red, green, blue);
- return;
- }
- node = node->GetNext();
- }
-
- // otherwise append the new colour
- self->Append(name.c_str(), new wxColour(red, green, blue));
- }
- }
-};
-
-
-//----------------------------------------------------------------------
-
-class wxPen : public wxGDIObject {
-public:
- wxPen(wxColour& colour, int width=1, int style=wxSOLID);
- ~wxPen();
-
- int GetCap();
- wxColour GetColour();
-
- int GetJoin();
- int GetStyle();
- int GetWidth();
- bool Ok();
- void SetCap(int cap_style);
- void SetColour(wxColour& colour);
- void SetJoin(int join_style);
- void SetStyle(int style);
- void SetWidth(int width);
-
-
- void SetDashes(int LCOUNT, wxDash* choices);
- //int GetDashes(wxDash **dashes);
- %addmethods {
- PyObject* GetDashes() {
- wxDash* dashes;
- int count = self->GetDashes(&dashes);
- wxPyBeginBlockThreads();
- PyObject* retval = PyList_New(0);
- for (int x=0; x<count; x++)
- PyList_Append(retval, PyInt_FromLong(dashes[x]));
- wxPyEndBlockThreads();
- return retval;
- }
- }
-
-#ifdef __WXMSW__
- wxBitmap* GetStipple();
- void SetStipple(wxBitmap& stipple);
-#endif
-};
-
-
-
-
-// The list of ints for the dashes needs to exist for the life of the pen
-// so we make it part of the class to save it. wxPyPen is aliased to wxPen
-// in _extras.py
-
-%{
-class wxPyPen : public wxPen {
-public:
- wxPyPen(wxColour& colour, int width=1, int style=wxSOLID)
- : wxPen(colour, width, style)
- { m_dash = NULL; }
- ~wxPyPen() {
- if (m_dash)
- delete [] m_dash;
- }
-
- void SetDashes(int nb_dashes, const wxDash *dash) {
- if (m_dash)
- delete [] m_dash;
- m_dash = new wxDash[nb_dashes];
- for (int i=0; i<nb_dashes; i++) {
- m_dash[i] = dash[i];
- }
- wxPen::SetDashes(nb_dashes, m_dash);
- }
-
-private:
- wxDash* m_dash;
-};
-%}
-
-
-class wxPyPen : public wxPen {
-public:
- wxPyPen(wxColour& colour, int width=1, int style=wxSOLID);
- ~wxPyPen();
-
- void SetDashes(int LCOUNT, wxDash* choices);
-};
-
-
-
-
-class wxPenList : public wxObject {
-public:
-
- void AddPen(wxPen* pen);
- wxPen* FindOrCreatePen(const wxColour& colour, int width, int style);
- void RemovePen(wxPen* pen);
-
- int GetCount();
-};
-
-
-
-//----------------------------------------------------------------------
-
-class wxBrush : public wxGDIObject {
-public:
- wxBrush(const wxColour& colour, int style=wxSOLID);
- ~wxBrush();
-
- wxColour GetColour();
- wxBitmap * GetStipple();
- int GetStyle();
- bool Ok();
- void SetColour(wxColour &colour);
- void SetStipple(wxBitmap& bitmap);
- void SetStyle(int style);
-};
-
-
-class wxBrushList : public wxObject {
-public:
-
- void AddBrush(wxBrush *brush);
- wxBrush * FindOrCreateBrush(const wxColour& colour, int style);
- void RemoveBrush(wxBrush *brush);
-
- int GetCount();
-};
-
-//----------------------------------------------------------------------
-
-
-class wxDC : public wxObject {
-public:
-// wxDC(); **** abstract base class, can't instantiate.
- ~wxDC();
-
- void BeginDrawing();
-
-// %name(BlitXY)
- bool Blit(wxCoord xdest, wxCoord ydest,
- wxCoord width, wxCoord height,
- wxDC *source, wxCoord xsrc, wxCoord ysrc,
- int logicalFunc = wxCOPY, int useMask = FALSE);
-// bool Blit(const wxPoint& destPt, const wxSize& sz,
-// wxDC *source, const wxPoint& srcPt,
-// int logicalFunc = wxCOPY, int useMask = FALSE);
-
- void Clear();
- void CrossHair(wxCoord x, wxCoord y);
- void DestroyClippingRegion();
- wxCoord DeviceToLogicalX(wxCoord x);
- wxCoord DeviceToLogicalXRel(wxCoord x);
- wxCoord DeviceToLogicalY(wxCoord y);
- wxCoord DeviceToLogicalYRel(wxCoord y);
- void DrawArc(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, wxCoord xc, wxCoord yc);
- void DrawCircle(wxCoord x, wxCoord y, wxCoord radius);
- void DrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
- void DrawEllipticArc(wxCoord x, wxCoord y, wxCoord width, wxCoord height, wxCoord start, wxCoord end);
- void DrawIcon(const wxIcon& icon, wxCoord x, wxCoord y);
-
- void DrawLabel(const wxString& text, const wxRect& rect,
- int alignment = wxALIGN_LEFT | wxALIGN_TOP,
- int indexAccel = -1);
-
- %addmethods {
- wxRect DrawImageLabel(const wxString& text,
- const wxBitmap& image,
- const wxRect& rect,
- int alignment = wxALIGN_LEFT | wxALIGN_TOP,
- int indexAccel = -1) {
- wxRect rv;
- self->DrawLabel(text, image, rect, alignment, indexAccel, &rv);
- return rv;
- }
- }
-
- void DrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
- void DrawLines(int PCOUNT, wxPoint* points, wxCoord xoffset=0, wxCoord yoffset=0);
- void DrawPolygon(int PCOUNT, wxPoint* points, wxCoord xoffset=0, wxCoord yoffset=0,
- int fill_style=wxODDEVEN_RULE);
- void DrawPoint(wxCoord x, wxCoord y);
- void DrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
- %name(DrawRectangleRect)void DrawRectangle(const wxRect& rect);
- void DrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle);
- void DrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, wxCoord radius=20);
- void DrawSpline(int PCOUNT, wxPoint* points);
- void DrawText(const wxString& text, wxCoord x, wxCoord y);
- void EndDoc();
- void EndDrawing();
- void EndPage();
- bool FloodFill(wxCoord x, wxCoord y, const wxColour& colour, int style=wxFLOOD_SURFACE);
- wxBrush GetBackground();
- wxBrush GetBrush();
- wxCoord GetCharHeight();
- wxCoord GetCharWidth();
- void GetClippingBox(wxCoord *OUTPUT, wxCoord *OUTPUT,
- wxCoord *OUTPUT, wxCoord *OUTPUT);
- wxFont GetFont();
- int GetLogicalFunction();
- void GetLogicalScale(double *OUTPUT, double *OUTPUT);
- int GetMapMode();
- bool GetOptimization();
- wxPen GetPen();
- %addmethods {
- %new wxColour* GetPixel(wxCoord x, wxCoord y) {
- wxColour* wc = new wxColour();
- self->GetPixel(x, y, wc);
- return wc;
- }
- }
- %name(GetSizeTuple)void GetSize(int* OUTPUT, int* OUTPUT);
- wxSize GetSize();
- wxSize GetSizeMM();
- wxColour GetTextBackground();
- void GetTextExtent(const wxString& string, wxCoord *OUTPUT, wxCoord *OUTPUT);
- %name(GetFullTextExtent)void GetTextExtent(const wxString& string,
- wxCoord *OUTPUT, wxCoord *OUTPUT, wxCoord *OUTPUT, wxCoord* OUTPUT,
- const wxFont* font = NULL);
- void GetMultiLineTextExtent(const wxString& text, wxCoord *OUTPUT, wxCoord *OUTPUT, wxCoord *OUTPUT,
- wxFont *font = NULL);
- wxColour GetTextForeground();
- void GetUserScale(double *OUTPUT, double *OUTPUT);
- wxCoord LogicalToDeviceX(wxCoord x);
- wxCoord LogicalToDeviceXRel(wxCoord x);
- wxCoord LogicalToDeviceY(wxCoord y);
- wxCoord LogicalToDeviceYRel(wxCoord y);
- wxCoord MaxX();
- wxCoord MaxY();
- wxCoord MinX();
- wxCoord MinY();
- bool Ok();
- void SetDeviceOrigin(wxCoord x, wxCoord y);
- void SetBackground(const wxBrush& brush);
- void SetBackgroundMode(int mode);
- void SetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
- %name(SetClippingRegionAsRegion) void SetClippingRegion(const wxRegion& region);
- %name(SetClippingRect) void SetClippingRegion(const wxRect& rect);
- void SetPalette(const wxPalette& colourMap);
- void SetBrush(const wxBrush& brush);
- void SetFont(const wxFont& font);
- void SetLogicalFunction(int function);
- void SetLogicalScale(double x, double y);
- void SetMapMode(int mode);
- void SetOptimization(bool optimize);
- void SetPen(const wxPen& pen);
- void SetTextBackground(const wxColour& colour);
- void SetTextForeground(const wxColour& colour);
- void SetUserScale(double x_scale, double y_scale);
- bool StartDoc(const wxString& message);
- void StartPage();
-
-
-
- void DrawBitmap(const wxBitmap& bitmap, wxCoord x, wxCoord y,
- int useMask = FALSE);
-
- bool CanDrawBitmap();
- bool CanGetTextExtent();
- int GetDepth();
- wxSize GetPPI();
-
- void GetLogicalOrigin(int *OUTPUT, int *OUTPUT);
- void SetLogicalOrigin(int x, int y);
- void GetDeviceOrigin(int *OUTPUT, int *OUTPUT);
- void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
-
- void CalcBoundingBox(int x, int y);
- void ResetBoundingBox();
-
- %addmethods {
- void GetBoundingBox(int* OUTPUT, int* OUTPUT, int* OUTPUT, int* OUTPUT);
- // See below for implementation
- }
-
-#ifdef __WXMSW__
- long GetHDC();
-#endif
-
-
- %addmethods { // See drawlist.cpp for impplementaion of these...
-
- PyObject* _DrawPointList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes)
- {
- return wxPyDrawXXXList(*self, wxPyDrawXXXPoint, pyCoords, pyPens, pyBrushes);
- }
-
- PyObject* _DrawLineList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes)
- {
- return wxPyDrawXXXList(*self, wxPyDrawXXXLine, pyCoords, pyPens, pyBrushes);
- }
-
- PyObject* _DrawRectangleList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes)
- {
- return wxPyDrawXXXList(*self, wxPyDrawXXXRectangle, pyCoords, pyPens, pyBrushes);
- }
-
- PyObject* _DrawEllipseList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes)
- {
- return wxPyDrawXXXList(*self, wxPyDrawXXXEllipse, pyCoords, pyPens, pyBrushes);
- }
-
- PyObject* _DrawPolygonList(PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes)
- {
- return wxPyDrawXXXList(*self, wxPyDrawXXXPolygon, pyCoords, pyPens, pyBrushes);
- }
-
- PyObject* _DrawTextList(PyObject* textList, PyObject* pyPoints,
- PyObject* foregroundList, PyObject* backgroundList) {
- return wxPyDrawTextList(*self, textList, pyPoints, foregroundList, backgroundList);
- }
- }
-
- %pragma(python) addtoclass = "
- def DrawPointList(self, points, pens=None):
- if pens is None:
- pens = []
- elif isinstance(pens, wxPenPtr):
- pens = [pens]
- elif len(pens) != len(points):
- raise ValueError('points and pens must have same length')
- return self._DrawPointList(points, pens, [])
-
-
- def DrawLineList(self, lines, pens=None):
- if pens is None:
- pens = []
- elif isinstance(pens, wxPenPtr):
- pens = [pens]
- elif len(pens) != len(lines):
- raise ValueError('lines and pens must have same length')
- return self._DrawLineList(lines, pens, [])
-
-
- def DrawRectangleList(self, rectangles, pens=None, brushes=None):
- if pens is None:
- pens = []
- elif isinstance(pens, wxPenPtr):
- pens = [pens]
- elif len(pens) != len(rectangles):
- raise ValueError('rectangles and pens must have same length')
- if brushes is None:
- brushes = []
- elif isinstance(brushes, wxBrushPtr):
- brushes = [brushes]
- elif len(brushes) != len(rectangles):
- raise ValueError('rectangles and brushes must have same length')
- return self._DrawRectangleList(rectangles, pens, brushes)
-
-
- def DrawEllipseList(self, ellipses, pens=None, brushes=None):
- if pens is None:
- pens = []
- elif isinstance(pens, wxPenPtr):
- pens = [pens]
- elif len(pens) != len(ellipses):
- raise ValueError('ellipses and pens must have same length')
- if brushes is None:
- brushes = []
- elif isinstance(brushes, wxBrushPtr):
- brushes = [brushes]
- elif len(brushes) != len(ellipses):
- raise ValueError('ellipses and brushes must have same length')
- return self._DrawEllipseList(ellipses, pens, brushes)
-
-
- def DrawPolygonList(self, polygons, pens=None, brushes=None):
- ## Note: This does not currently support fill style or offset
- ## you can always use the non-List version if need be.
- ## I really would like to support fill-style, however,
- ## but wxODDEVEN_RULE does not appear to be defined at the Python level
- ## [It's in wx.py... --Robin]
- if pens is None:
- pens = []
- elif isinstance(pens, wxPenPtr):
- pens = [pens]
- elif len(pens) != len(polygons):
- raise ValueError('polygons and pens must have same length')
- if brushes is None:
- brushes = []
- elif isinstance(brushes, wxBrushPtr):
- brushes = [brushes]
- elif len(brushes) != len(polygons):
- raise ValueError('polygons and brushes must have same length')
- return self._DrawPolygonList(polygons, pens, brushes)
-
-
- def DrawTextList(self, textList, coords, foregrounds = None, backgrounds = None, fonts = None):
- ## NOTE: this does not currently support changing the font
- ## Make sure you set Background mode to wxSolid (DC.SetBackgroundMode)
- ## If you want backgounds to do anything.
- if type(textList) == type(''):
- textList = [textList]
- elif len(textList) != len(coords):
- raise ValueError('textlist and coords must have same length')
- if foregrounds is None:
- foregrounds = []
- elif isinstance(foregrounds, wxColourPtr):
- foregrounds = [foregrounds]
- elif len(foregrounds) != len(coords):
- raise ValueError('foregrounds and coords must have same length')
- if backgrounds is None:
- backgrounds = []
- elif isinstance(backgrounds, wxColourPtr):
- backgrounds = [backgrounds]
- elif len(backgrounds) != len(coords):
- raise ValueError('backgrounds and coords must have same length')
- return self._DrawTextList(textList, coords, foregrounds, backgrounds)
-"
-
-
-};
-
-
-
-%{
-static void wxDC_GetBoundingBox(wxDC* dc, int* x1, int* y1, int* x2, int* y2) {
- *x1 = dc->MinX();
- *y1 = dc->MinY();
- *x2 = dc->MaxX();
- *y2 = dc->MaxY();
-}
-%}
-
-//----------------------------------------------------------------------
-
-class wxMemoryDC : public wxDC {
-public:
- wxMemoryDC();
-
- void SelectObject(const wxBitmap& bitmap);
-}
-
-%new wxMemoryDC* wxMemoryDCFromDC(wxDC* oldDC);
-%{ // Alternate 'constructor'
- wxMemoryDC* wxMemoryDCFromDC(wxDC* oldDC) {
- return new wxMemoryDC(oldDC);
- }
-%}
-
-
-//---------------------------------------------------------------------------
-
-class wxBufferedDC : public wxMemoryDC {
-public:
- // Construct a wxBufferedDC using a user supplied buffer.
- wxBufferedDC( wxDC *dc, const wxBitmap &buffer );
-
- // Construct a wxBufferedDC with an internal buffer of 'area'
- // (where area is usually something like the size of the window
- // being buffered)
- %name(wxBufferedDCInternalBuffer)wxBufferedDC( wxDC *dc, const wxSize &area );
-
- // Blits the buffer to the dc, and detaches the dc from
- // the buffer. Usually called in the dtor or by the dtor
- // of derived classes if the BufferedDC must blit before
- // the derived class (which may own the dc it's blitting
- // to) is destroyed.
- void UnMask();
-
-
- %pragma(python) addtomethod =
- "__init__:self._dc = _args[0] # save a ref so the other dc won't be deleted before self"
- %pragma(python) addtomethod =
- "wxBufferedDCInternalBuffer:val._dc = _args[0] # save a ref so the other dc won't be deleted before self"
-};
-
-
-class wxBufferedPaintDC : public wxBufferedDC
-{
-public:
- wxBufferedPaintDC( wxWindow *window, const wxBitmap &buffer = wxNullBitmap );
-};
-
-//---------------------------------------------------------------------------
-
-class wxScreenDC : public wxDC {
-public:
- wxScreenDC();
-
- %name(StartDrawingOnTopWin) bool StartDrawingOnTop(wxWindow* window);
- bool StartDrawingOnTop(wxRect* rect = NULL);
- bool EndDrawingOnTop();
-};
-