]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/drawlist.cpp
move wxPython to new trunk
[wxWidgets.git] / wxPython / src / drawlist.cpp
diff --git a/wxPython/src/drawlist.cpp b/wxPython/src/drawlist.cpp
deleted file mode 100644 (file)
index c89342a..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-/////////////////////////////////////////////////////////////////////////////
-// Name:        drawlist.cpp
-// Purpose:     Helper functions for optimized list drawing on a wxDC
-//
-// Author:      Robin Dunn,  Chris Barker
-//
-// Created:
-// RCS-ID:      $Id$
-// Copyright:   (c) 2003 by Total Control Software
-// Licence:     wxWindows license
-/////////////////////////////////////////////////////////////////////////////
-
-
-#undef DEBUG
-#include <Python.h>
-#include "wx/wxPython/wxPython.h"
-#include "wx/wxPython/pydrawxxx.h"
-
-
-//---------------------------------------------------------------------------
-
-
-// Called from _gdiinit so we can do the API import while the GIL is held
-void wxPyDrawList_SetAPIPtr()
-{
-    wxPyCoreAPI_IMPORT();
-}
-
-
-PyObject* wxPyDrawXXXList(wxDC& dc, wxPyDrawListOp_t doDraw,
-                          PyObject* pyCoords, PyObject* pyPens, PyObject* pyBrushes)
-{
-    wxPyBlock_t blocked = wxPyBeginBlockThreads(); 
-
-    bool      isFastSeq  = PyList_Check(pyCoords) || PyTuple_Check(pyCoords);
-    bool      isFastPens = PyList_Check(pyPens) || PyTuple_Check(pyPens);
-    bool      isFastBrushes = PyList_Check(pyBrushes) || PyTuple_Check(pyBrushes);
-    int       numObjs = 0;
-    int       numPens = 0;
-    int       numBrushes = 0;
-    wxPen*    pen;
-    wxBrush*  brush;
-    PyObject* obj;
-    PyObject* coords;
-    int       i = 0;
-    PyObject* retval;
-
-    if (!PySequence_Check(pyCoords)) {
-        goto err0;
-    }
-    if (!PySequence_Check(pyPens)) {
-        goto err1;
-    }
-    if (!PySequence_Check(pyBrushes)) {
-        goto err2;
-    }
-    numObjs = PySequence_Length(pyCoords);
-    numPens = PySequence_Length(pyPens);
-    numBrushes = PySequence_Length(pyBrushes);
-    for (i = 0; i < numObjs; i++) {
-        // Use a new pen?
-        if (i < numPens) {
-            if (isFastPens) {
-                obj = PySequence_Fast_GET_ITEM(pyPens, i);
-            }
-            else {
-                obj = PySequence_GetItem(pyPens, i);
-            }
-            if (! wxPyConvertSwigPtr(obj, (void **) &pen, wxT("wxPen"))) {
-                if (!isFastPens)
-                    Py_DECREF(obj);
-                goto err1;
-            }
-
-            dc.SetPen(*pen);
-            if (!isFastPens)
-                Py_DECREF(obj);
-        }
-        // Use a new brush?
-        if (i < numBrushes) {
-            if (isFastBrushes) {
-                obj = PySequence_Fast_GET_ITEM(pyBrushes, i);
-            }
-            else {
-                obj = PySequence_GetItem(pyBrushes, i);
-            }
-            if (!wxPyConvertSwigPtr(obj, (void **) &brush, wxT("wxBrush"))) {
-                if (!isFastBrushes)
-                    Py_DECREF(obj);
-                goto err2;
-            }
-
-            dc.SetBrush(*brush);
-            if (!isFastBrushes)
-                Py_DECREF(obj);
-        }
-
-        // Get the Coordinates
-        if (isFastSeq) {
-            coords = PySequence_Fast_GET_ITEM(pyCoords, i);
-        }
-        else {
-            coords = PySequence_GetItem(pyCoords, i);
-        }
-
-
-        // call the drawOp
-        bool success = doDraw(dc, coords);
-        if (!isFastSeq)
-            Py_DECREF(coords);
-
-        if (! success) {
-            retval = NULL;
-            goto exit;
-        }
-
-    } // end of main for loop
-
-    Py_INCREF(Py_None);
-    retval = Py_None;
-    goto exit;
-
-
- err0:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of coordinates");
-    retval = NULL;
-    goto exit;
-
- err1:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxPens");
-    retval = NULL;
-    goto exit;
-
- err2:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxBrushes");
-    retval = NULL;
-    goto exit;
-
-
- exit:
-    wxPyEndBlockThreads(blocked);
-    return retval;
-}
-
-
-
-bool wxPyDrawXXXPoint(wxDC& dc, PyObject* coords)
-{
-    int x, y;
-
-    if (! wxPy2int_seq_helper(coords, &x, &y)) {
-        PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences.");
-        return false;
-    }
-    dc.DrawPoint(x, y);
-    return true;
-}
-
-bool wxPyDrawXXXLine(wxDC& dc, PyObject* coords)
-{
-    int x1, y1, x2, y2;
-
-    if (! wxPy4int_seq_helper(coords, &x1, &y1, &x2, &y2)) {
-        PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x1,y1, x1,y2) sequences.");
-        return false;
-    }
-    dc.DrawLine(x1,y1, x2,y2);
-    return true;
-}
-
-bool wxPyDrawXXXRectangle(wxDC& dc, PyObject* coords)
-{
-    int x, y, w, h;
-
-    if (! wxPy4int_seq_helper(coords, &x, &y, &w, &h)) {
-        PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y, w,h) sequences.");
-        return false;
-    }
-    dc.DrawRectangle(x, y, w, h);
-    return true;
-}
-
-bool wxPyDrawXXXEllipse(wxDC& dc, PyObject* coords)
-{
-    int x, y, w, h;
-
-    if (! wxPy4int_seq_helper(coords, &x, &y, &w, &h)) {
-        PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y, w,h) sequences.");
-        return false;
-    }
-    dc.DrawEllipse(x, y, w, h);
-    return true;
-}
-
-
-bool wxPyDrawXXXPolygon(wxDC& dc, PyObject* coords)
-{
-    wxPoint* points;
-    int numPoints;
-
-    points = wxPoint_LIST_helper(coords, &numPoints);
-    if (! points) {
-        PyErr_SetString(PyExc_TypeError, "Expected a sequence of sequences of (x,y) sequences.");
-        return false;
-    }
-    dc.DrawPolygon(numPoints, points);
-    delete [] points;
-    return true;
-}
-
-
-//---------------------------------------------------------------------------
-
-
-
-PyObject* wxPyDrawTextList(wxDC& dc, PyObject* textList, PyObject* pyPoints, PyObject* foregroundList, PyObject* backgroundList)
-{
-    wxPyBlock_t blocked = wxPyBeginBlockThreads();
-
-    bool      isFastSeq  = PyList_Check(pyPoints) || PyTuple_Check(pyPoints);
-    bool      isFastText = PyList_Check(textList) || PyTuple_Check(textList);
-    bool      isFastForeground = PyList_Check(foregroundList) || PyTuple_Check(foregroundList);
-    bool      isFastBackground = PyList_Check(backgroundList) || PyTuple_Check(backgroundList);
-    int       numText = 0;
-    int       numPoints = 0;
-    int       numForeground = 0;
-    int       numBackground = 0;
-    PyObject* obj;
-    int       x1, y1;
-    int       i = 0;
-    wxColor*    color;
-    PyObject* retval;
-    wxString  string;
-
-    if (!PySequence_Check(pyPoints)) {
-        goto err0;
-    }
-    if (!PySequence_Check(textList)) {
-        goto err1;
-    }
-    if (!PySequence_Check(foregroundList)) {
-        goto err2;
-    }
-    if (!PySequence_Check(backgroundList)) {
-        goto err3;
-    }
-    numPoints = PySequence_Length(pyPoints);
-    numText = PySequence_Length(textList);
-    numForeground = PySequence_Length(foregroundList);
-    numBackground = PySequence_Length(backgroundList);
-
-    for (i = 0; i < numPoints; i++) {
-        // Use a new string ?
-        if (i < numText) {
-            if ( isFastText ) {
-                obj = PySequence_Fast_GET_ITEM(textList, i);
-            }
-            else {
-                obj = PySequence_GetItem(textList, i);
-            }
-            if (! PyString_Check(obj) && !PyUnicode_Check(obj) ) {
-                Py_DECREF(obj);
-                goto err1;
-            }
-            string = Py2wxString(obj);
-            if ( !isFastText )
-                Py_DECREF(obj);
-        }
-
-        if (i < numForeground) {
-            // Use a new foreground ?
-            if ( isFastForeground ) {
-                obj = PySequence_Fast_GET_ITEM(foregroundList, i);
-            }
-            else {
-                obj = PySequence_GetItem(foregroundList, i);
-            }
-            if (! wxPyConvertSwigPtr(obj, (void **) &color, wxT("wxColour"))) {
-                if (!isFastForeground)
-                    Py_DECREF(obj);
-                goto err2;
-            }
-            dc.SetTextForeground(*color);
-            if ( !isFastForeground )
-                Py_DECREF(obj);
-        }
-
-        if (i < numBackground) {
-            // Use a new background ?
-            if ( isFastBackground ) {
-                obj = PySequence_Fast_GET_ITEM(backgroundList, i);
-            }
-            else {
-                obj = PySequence_GetItem(backgroundList, i);
-            }
-            if (! wxPyConvertSwigPtr(obj, (void **) &color, wxT("wxColour"))) {
-                if (!isFastBackground)
-                    Py_DECREF(obj);
-                goto err3;
-            }
-            dc.SetTextBackground(*color);
-            if ( !isFastBackground )
-                Py_DECREF(obj);
-        }
-
-        // Get the point coordinates
-        if (isFastSeq) {
-            obj = PySequence_Fast_GET_ITEM(pyPoints, i);
-        }
-        else {
-            obj = PySequence_GetItem(pyPoints, i);
-        }
-        if (! wxPy2int_seq_helper(obj, &x1, &y1)) {
-            if (! isFastSeq)
-                Py_DECREF(obj);
-            goto err0;
-        }
-        if (PyErr_Occurred()) {
-            retval = NULL;
-            if (!isFastSeq)
-                Py_DECREF(obj);
-            goto exit;
-        }
-
-
-        // Now draw the text
-        dc.DrawText(string, x1, y1);
-
-        if (!isFastText)
-            Py_DECREF(obj);
-    }
-
-    Py_INCREF(Py_None);
-    retval = Py_None;
-    goto exit;
-
- err0:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of (x,y) sequences.");
-    retval = NULL;
-    goto exit;
- err1:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of strings");
-    retval = NULL;
-    goto exit;
-
- err2:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxColours for foregrounds");
-    retval = NULL;
-    goto exit;
-
- err3:
-    PyErr_SetString(PyExc_TypeError, "Expected a sequence of wxColours for backgrounds");
-    retval = NULL;
-    goto exit;
-
- exit:
-    wxPyEndBlockThreads(blocked);
-    return retval;
-}
-
-
-
-//---------------------------------------------------------------------------