commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r9489 - trunk/gnue-forms/src/uidrivers/wx26/widgets


From: reinhard
Subject: [gnue] r9489 - trunk/gnue-forms/src/uidrivers/wx26/widgets
Date: Wed, 11 Apr 2007 04:57:21 -0500 (CDT)

Author: reinhard
Date: 2007-04-11 04:57:21 -0500 (Wed, 11 Apr 2007)
New Revision: 9489

Modified:
   trunk/gnue-forms/src/uidrivers/wx26/widgets/form.py
Log:
Fixed scaling of printout.


Modified: trunk/gnue-forms/src/uidrivers/wx26/widgets/form.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/wx26/widgets/form.py 2007-04-11 09:04:57 UTC 
(rev 9488)
+++ trunk/gnue-forms/src/uidrivers/wx26/widgets/form.py 2007-04-11 09:57:21 UTC 
(rev 9489)
@@ -588,17 +588,18 @@
 
     def _ui_printout_(self, title, subtitle, user):
 
-        # Store the content of the form in a bitmap DC
+        # Store the content of the form in a bitmap DC, because later parts of
+        # the form are hidden behind the print dialog, which breaks the form
+        # DC.
         window_dc = wx.ClientDC(self.main_window)
         w, h = self.main_window.GetClientSizeTuple()
-        bmp = wx.EmptyBitmap(w, h)
+        bitmap = wx.EmptyBitmap(w, h)
         form_dc = wx.MemoryDC()
-        form_dc.SelectObject(bmp)
+        form_dc.SelectObject(bitmap)
         form_dc.Blit(0,0, w, h, window_dc, 0, 0)
-        image = wx.ImageFromBitmap(bmp)
 
-        wx.Printer().Print(self.main_window,
-                _Printout(title, subtitle, user, image))
+        printout = _Printout(title, subtitle, user, bitmap)
+        wx.Printer().Print(self.main_window, printout)
 
 
     # -------------------------------------------------------------------------
@@ -633,11 +634,11 @@
     # Constructor
     # -------------------------------------------------------------------------
 
-    def __init__(self, title, subtitle, login, image):
+    def __init__(self, title, subtitle, login, bitmap):
         self.__title = title
         self.__subtitle = subtitle or ''
         self.__login = login
-        self.__image = image
+        self.__bitmap = bitmap
         wx.Printout.__init__(self, title)
 
 
@@ -706,8 +707,8 @@
         canvas_h = canvas_bottom - canvas_top
 
         # If necessary, adjust scale factor to fit on page
-        w = self.__image.GetWidth()
-        h = self.__image.GetHeight()
+        w = self.__bitmap.GetWidth()
+        h = self.__bitmap.GetHeight()
         if w * scale_x > canvas_w:
             scale_y = float(scale_y) / (w * scale_x / canvas_w)
             scale_x = float(canvas_w) / w
@@ -715,23 +716,15 @@
             scale_x = float(scale_x) / (h * scale_y / canvas_h)
             scale_y = float(canvas_h) / h
 
-        # and now, scale by factor
-        w = int (w * scale_x + 0.5)
-        h = int (h * scale_y + 0.5)
+        # the actual screenshot with border
+        dc.SetUserScale(scale_x, scale_y)
+        x = (page_left + canvas_w / 2) / scale_x - w / 2
+        y = (canvas_top + canvas_h / 2) / scale_y - h / 2
+        dc.DrawBitmap(self.__bitmap, x, y)
+        dc.DrawRectangle(x, y, w, h)
+        dc.SetUserScale(1, 1)
 
-        # the actual screenshot
-        dc.DrawBitmap(
-                wx.BitmapFromImage(self.__image.Scale(w, h)),
-                int((canvas_w - w) / 2) + page_left,
-                int((canvas_h - h) / 2) + canvas_top)
 
-        # border
-        dc.DrawRectangle(
-                int((canvas_w - w) / 2) + page_left,
-                int((canvas_h - h) / 2) + canvas_top,
-                w, h)
-
-
     # -------------------------------------------------------------------------
     # Draw text and calculate new y position
     # -------------------------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]