a400c2ec04
code can be written that works with both versions. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
156 lines
5.6 KiB
Python
156 lines
5.6 KiB
Python
#----------------------------------------------------------------------
|
|
# Name: compatdc.py
|
|
# Purpose: Make wxPython 2.4 DC classes compatible with the 2.5
|
|
# DC classes
|
|
#
|
|
# Author: Robin Dunn
|
|
#
|
|
# Created: 21-Apr-2004
|
|
# RCS-ID: $Id$
|
|
# Copyright: (c) 2004 by Total Control Software
|
|
# Licence: wxWindows license
|
|
#----------------------------------------------------------------------
|
|
|
|
import wx
|
|
|
|
|
|
def MakeDCCompatible(klass, full=False):
|
|
"""
|
|
Manipulate the DC class passed to this funciton such that it is
|
|
more compatible with the DC classes used in wxPython 2.5. This
|
|
should help with writing code that works with both versions. If
|
|
full is True then in addition to creating the 'XY' versions of the
|
|
methods, a 'point/size' version (which are the new defaults in
|
|
2.5) will also be created.
|
|
"""
|
|
if wx.VERSION >= (2,5):
|
|
return # Nothing to do
|
|
|
|
# first create XY methods from the current ones.
|
|
klass.FloodFillXY = klass.FloodFill
|
|
klass.GetPixelXY = klass.GetPixel
|
|
klass.DrawLineXY = klass.DrawLine
|
|
klass.CrossHairXY = klass.CrossHair
|
|
klass.DrawArcXY = klass.DrawArc
|
|
klass.DrawEllipticArcXY = klass.DrawEllipticArc
|
|
klass.DrawPointXY = klass.DrawPoint
|
|
klass.DrawRectangleXY = klass.DrawRectangle
|
|
klass.DrawRoundedRectangleXY = klass.DrawRoundedRectangle
|
|
klass.DrawCircleXY = klass.DrawCircle
|
|
klass.DrawEllipseXY = klass.DrawEllipse
|
|
klass.DrawIconXY = klass.DrawIcon
|
|
klass.DrawBitmapXY = klass.DrawBitmap
|
|
klass.DrawTextXY = klass.DrawText
|
|
klass.DrawRotatedTextXY = klass.DrawRotatedText
|
|
klass.BlitXY = klass.Blit
|
|
|
|
# now, make some functions that we can use as new methods
|
|
if full:
|
|
def FloodFill(self, pt, col, style=wx.FLOOD_SURFACE):
|
|
pt = wx.Point(*pt)
|
|
return self.FloodFillXY(pt.x, pt.y, col, style)
|
|
klass.FloodFill = FloodFill
|
|
|
|
def GetPixel(self, pt):
|
|
pt = wx.Point(*pt)
|
|
return self.GetPixelXY(pt.x, pt.y)
|
|
klass.GetPixel = GetPixel
|
|
|
|
def DrawLine(self, pt1, pt2):
|
|
pt1 = wx.Point(*pt1)
|
|
pt2 = wx.Point(*pt2)
|
|
return self.DrawLineXY(pt1.x, pt1.y, pt2.x, pt2.y)
|
|
klass.DrawLine = DrawLine
|
|
|
|
def CrossHair(self, pt):
|
|
pt = wx.Point(*pt)
|
|
return self.CrossHairXY(pt.x, pt.y)
|
|
klass.CrossHair = CrossHair
|
|
|
|
def DrawArc(self, pt1, pt2, centre):
|
|
pt1 = wx.Point(*pt1)
|
|
pt2 = wx.Point(*pt2)
|
|
return self.DrawArcXY(pt1.x, pt1.y, pt2.x, pt2.y, centre.x, centre.y)
|
|
klass.DrawArc = DrawArc
|
|
|
|
def DrawEllipticArc(self, pt, sz, sa, ea):
|
|
pt = wx.Point(*pt)
|
|
sz = wx.Size(*sz)
|
|
return self.DrawEllipticArcXY(pt.x, pt.y, sz.width, sz.height, sa, ea)
|
|
klass.DrawEllipticArc = DrawEllipticArc
|
|
|
|
def DrawPoint(self, pt):
|
|
pt = wx.Point(*pt)
|
|
return self.DrawPointXY(pt.x, pt.y)
|
|
klass.DrawPoint = DrawPoint
|
|
|
|
def DrawRectangle(self, pt, sz):
|
|
pt = wx.Point(*pt)
|
|
sz = wx.Size(*sz)
|
|
return self.DrawRectangleXY(pt.x, pt.y, sz.width, sz.height)
|
|
klass.DrawRectangle = DrawRectangle
|
|
|
|
def DrawRoundedRectangle(self, pt, sz, radius):
|
|
pt = wx.Point(*pt)
|
|
sz = wx.Size(*sz)
|
|
return self.DrawRoundedRectangleXY(pt.x, pt.y, sz.width, sz.height, radius)
|
|
klass.DrawRoundedRectangle = DrawRoundedRectangle
|
|
|
|
def DrawCircle(self, pt, radius):
|
|
pt = wx.Point(*pt)
|
|
return self.DrawCircleXY(pt.x, pt.y, radius)
|
|
klass.DrawCircle = DrawCircle
|
|
|
|
def DrawEllipse(self, pt, sz):
|
|
pt = wx.Point(*pt)
|
|
sz = wx.Size(*sz)
|
|
return self.DrawEllipseXY(pt.x, pt.y, sz.width, sz.height)
|
|
klass.DrawEllipse = DrawEllipse
|
|
|
|
def DrawIcon(self, icon, pt):
|
|
pt = wx.Point(*pt)
|
|
return self.DrawIconXY(icon, pt.x, pt.y )
|
|
klass.DrawIcon = DrawIcon
|
|
|
|
def DrawBitmap(self, bmp, pt):
|
|
pt = wx.Point(*pt)
|
|
return self.DrawBitmapXY(bmp, pt.x, pt.y)
|
|
klass.DrawBitmap = DrawBitmap
|
|
|
|
def DrawText(self, text, pt):
|
|
pt = wx.Point(*pt)
|
|
return self.DrawTextXY(text, pt.x, pt.y)
|
|
klass.DrawText = DrawText
|
|
|
|
def DrawRotatedText(self, text, pt, angle):
|
|
pt = wx.Point(*pt)
|
|
return self.DrawRotatedTextXY(text, pt.x, pt.y, angle)
|
|
klass.DrawRotatedText = DrawRotatedText
|
|
|
|
def Blit(self, destPt, sz, source, srcPt,
|
|
rop=wx.COPY, useMask=False, srcPtMask=wx.DefaultPosition):
|
|
return self.BlitXY(destPt.x, destPt.y, sz.width, sz.height,
|
|
source, srcPt.x, srcPt.y, rop, useMask,
|
|
srcPtMask.x, srcPtMask.y)
|
|
klass.Blit = Blit
|
|
|
|
|
|
def MakeAllDCsCompatible(full=False):
|
|
"""
|
|
Run MakeDCCompatible on all DC classes in wx.
|
|
"""
|
|
MakeDCCompatible(wx.BufferedPaintDC, full)
|
|
MakeDCCompatible(wx.BufferedDC, full)
|
|
MakeDCCompatible(wx.MemoryDC, full)
|
|
MakeDCCompatible(wx.ScreenDC, full)
|
|
MakeDCCompatible(wx.ClientDC, full)
|
|
MakeDCCompatible(wx.PaintDC, full)
|
|
MakeDCCompatible(wx.WindowDC, full)
|
|
MakeDCCompatible(wx.PostScriptDC, full)
|
|
if hasattr(wx, "MetaFileDC"):
|
|
MakeDCCompatible(wx.MetaFileDC, full)
|
|
if hasattr(wx, "PrinterDC"):
|
|
MakeDCCompatible(wx.PrinterDC, full)
|
|
MakeDCCompatible(wx.DC, full)
|
|
|