def __init__(self, canvas): self.canvas = canvas self.bitmaps = Bitmaps(wx.Bitmap) self.fm_color = None
class Pinta(object): def __init__(self, canvas): self.canvas = canvas self.bitmaps = Bitmaps(wx.Bitmap) self.fm_color = None def reset_canvas(self, fm_color, bg_color): self._set_deep_background(fm_color) self._set_background(bg_color) def poke(self, x, y, char_id, fg_color, bg_color): dcx, dcy = self.to_window_units(x, y) dc = wx.WindowDC(self.canvas) bmp = self.bitmaps.get_bitmap(char_id) dc.BeginDrawing() dc.SetTextForeground(fg_color) dc.SetTextBackground(bg_color) dc.DrawBitmap(bmp, dcx, dcy, useMask=False) dc.EndDrawing() self.canvas.Refresh() # self.point(0,10,'red') # self.point(0, 0,'red') # self.point(0, 20,'red') # self.point(30, 0,'green') def point(self, x, y, color): dcx = FRAME_PTS_X + x - 1 dcy = TOTAL_CNVS_PTS_Y - FRAME_PTS_Y - (y + 1) dc = wx.WindowDC(self.canvas) dc.BeginDrawing() dc.SetPen(wx.Pen(color)) dc.DrawPoint(dcx, dcy) dc.EndDrawing() self.canvas.Refresh() def to_window_units(self, x, y): dcx = FRAME_PTS_X + x * 16 dcy = TOTAL_CNVS_PTS_Y - FRAME_PTS_Y - (y + 1) * 16 return dcx, dcy def _set_deep_background(self, color): self.fm_color = color dc = wx.WindowDC(self.canvas) dc.BeginDrawing() dc.SetPen(wx.Pen(color, 1, wx.TRANSPARENT)) dc.SetBrush(wx.Brush(color, wx.SOLID)) dc.DrawRectangle(0, 0, TOTAL_CNVS_PTS_X, TOTAL_CNVS_PTS_Y) dc.EndDrawing() self.canvas.Refresh() def _set_background(self, color): dc = wx.WindowDC(self.canvas) dc.BeginDrawing() dc.SetPen(wx.Pen(color, 1, wx.TRANSPARENT)) dc.SetBrush(wx.Brush(color, wx.SOLID)) dc.DrawRectangle(FRAME_PTS_X, FRAME_PTS_Y, ACTIVE_CNVS_PTS_X, ACTIVE_CNVS_PTS_Y) dc.EndDrawing() self.canvas.Refresh()