def OnPaint(self): if not self._win_paint_broken: try: win = self._win dc, ps = win.BeginPaint() try: win_update_rect = ps[2] if not empty_rect(win_update_rect): #print "DrawableContainer.OnPaint: win_update_rect =", win_update_rect ### scroll_offset = self._win_scroll_offset() view_update_rect = offset_rect(win_update_rect, scroll_offset) if self._double_buffer: dx, dy = rect_topleft(view_update_rect) width, height = rect_size(view_update_rect) buffer = gdi.Bitmap(width, height) canvas = Canvas._from_win_image(buffer) canvas.translate(-dx, -dy) self.draw(canvas, view_update_rect) graphics = gdi.Graphics.from_dc(dc) src_rect = (0, 0, width, height) graphics.DrawImage_rr(buffer, win_update_rect, src_rect) else: self._win_prepare_dc(dc) canvas = Canvas._from_win_dc(dc) self.draw(canvas, view_update_rect) finally: win.EndPaint(ps) except Exception: self._win_paint_broken = True raise
def OnPaint(self): if not self._win_paint_broken: try: win = self._win dc, ps = win.BeginPaint() try: win_update_rect = ps[2] if not empty_rect(win_update_rect): #print "DrawableContainer.OnPaint: win_update_rect =", win_update_rect ### scroll_offset = self._win_scroll_offset() view_update_rect = offset_rect(win_update_rect, scroll_offset) if self._double_buffer: dx, dy = rect_topleft(view_update_rect) width, height = rect_size(view_update_rect) #GDIPlus draw large image in very bad performance #use GDI instead #buffer = gdi.Bitmap(width, height) #canvas = Canvas._from_win_image(buffer) #canvas.translate(-dx, -dy) #self.draw(canvas, view_update_rect) #graphics = gdi.Graphics.from_dc(dc) #src_rect = (0, 0, width, height) #graphics.DrawImage_rr(buffer, win_update_rect, src_rect) c_dc = dc.CreateCompatibleDC(dc) c_dm = ui.CreateBitmap() c_dm.CreateCompatibleBitmap(dc, width, height) old = c_dc.SelectObject(c_dm) c_dc.SetViewportOrg((-dx, -dy)) canvas = Canvas._from_win_dc(c_dc) self.draw(canvas, view_update_rect) l, t = rect_topleft(win_update_rect) dc.BitBlt((l, t), (width, height), c_dc, (0, 0), win32con.SRCCOPY) c_dc.SelectObject(old) else: self._win_prepare_dc(dc) canvas = Canvas._from_win_dc(dc) self.draw(canvas, view_update_rect) finally: win.EndPaint(ps) except Exception: self._win_paint_broken = True raise
def with_canvas(self, proc): NSGraphicsContext.__class__.saveGraphicsState() NSGraphicsContext.setCurrentContext_(self._ns_graphics_context) try: canvas = Canvas() proc(canvas) finally: NSGraphicsContext.__class__.restoreGraphicsState()
def with_canvas(self, body): win = self._win dc = win.GetDC() self._win_prepare_dc(dc) try: canvas = Canvas._from_win_dc(dc) body(canvas) finally: win.ReleaseDC(dc)
def _gtk_expose_event_signal(self, gtk_event): try: #print "View._gtk_expose_event_signal:", self ### l, t, w, h = gtk_event.area clip = (l, t, l + w, t + h) #print "...clip =", clip ### gtk_layout = self._gtk_inner_widget canvas = Canvas._from_gdk_drawable(gtk_layout.bin_window) update = self._draw_background(canvas, clip) self.draw(canvas, update) except: print "------------------ Exception while drawing ------------------" traceback.print_exc()
def print_view(self, page_setup, prompt=True): paginator = Paginator(self, page_setup) psd = page_setup._win_psd pd = wp.PRINTDLG() pd.hDevMode = psd.hDevMode pd.hDevNames = psd.hDevNames pd.nMinPage = 1 pd.nMaxPage = paginator.num_pages pd.nCopies = 1 if wp.PrintDlg(pd): title = self.print_title di = wp.DOCINFO() di.lpszDocName = title devnames = wps.DevNames(psd.hDevNames) if devnames.output == "FILE:": from FileDialogs import request_new_file f = request_new_file("Print '%s' to file:" % title) if not f: return output_path = f.path di.lpszOutput = output_path try: hdc = pd.hDC dx, dy = wp.GetPrintingOffset(hdc) print "TODO: Printable: Implement a Cancel dialog" ### #wp.install_abort_proc(hdc) wp.StartDoc(hdc, di) for page_num in xrange(pd.nFromPage - 1, pd.nToPage): wp.StartPage(hdc) canvas = Canvas._from_win_hdc(hdc, for_printing=True) canvas.translate(-dx, -dy) paginator.draw_page(canvas, page_num) wp.EndPage(hdc) wp.EndDoc(hdc) finally: wp.DeleteDC(hdc)
def print_view(self, page_setup, prompt = True): paginator = Paginator(self, page_setup) psd = page_setup._win_psd pd = wp.PRINTDLG() pd.hDevMode = psd.hDevMode pd.hDevNames = psd.hDevNames pd.nMinPage = 1 pd.nMaxPage = paginator.num_pages pd.nCopies = 1 if wp.PrintDlg(pd): title = self.print_title di = wp.DOCINFO() di.lpszDocName = title devnames = wps.DevNames(psd.hDevNames) if devnames.output == "FILE:": from FileDialogs import request_new_file f = request_new_file("Print '%s' to file:" % title) if not f: return output_path = f.path di.lpszOutput = output_path try: hdc = pd.hDC dx, dy = wp.GetPrintingOffset(hdc) print "TODO: Printable: Implement a Cancel dialog" ### #wp.install_abort_proc(hdc) wp.StartDoc(hdc, di) for page_num in xrange(pd.nFromPage - 1, pd.nToPage): wp.StartPage(hdc) canvas = Canvas._from_win_hdc(hdc, for_printing = True) canvas.translate(-dx, -dy) paginator.draw_page(canvas, page_num) wp.EndPage(hdc) wp.EndDoc(hdc) finally: wp.DeleteDC(hdc)
def draw_page(_, gtk_print_context, page_num): cairo_context = gtk_print_context.get_cairo_context() canvas = Canvas._from_cairo_context(cairo_context) paginator.draw_page(canvas, page_num)
def drawRect_(self, ns_rect): (l, t), (w, h) = ns_rect rect = (l, t, l + w, t + h) self.pygui_component.draw(Canvas(), rect)
def with_canvas(self, proc): ns_view = self._ns_view ns_view.lockFocus() proc(Canvas()) ns_view.unlockFocus()
def with_canvas(self, proc): canvas = Canvas._from_gdk_drawable(self._gdk_pixmap) canvas.backcolor = clear proc(canvas)
def with_canvas(self, proc): hadj, vadj = self._gtk_adjustments() clip = rect_sized((hadj.value, vadj.value), self.size) canvas = Canvas._from_gdk_drawable(self._gtk_inner_widget.bin_window) proc(canvas)
def with_canvas(self, proc): proc(Canvas._from_win_image(self._win_image))