]> git.saurik.com Git - wxWidgets.git/commitdiff
implemented wxDisplaySizeMM for gtk, msw & motif.
authorRon Lee <ron@debian.org>
Mon, 25 Sep 2000 08:51:35 +0000 (08:51 +0000)
committerRon Lee <ron@debian.org>
Mon, 25 Sep 2000 08:51:35 +0000 (08:51 +0000)
used wxDisplaySize and wxDisplaySizeMM to calculate real screen PPI in
wxPostScriptPrinter.
documented wxDisplaySize and wxDisplaySizeMM.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/function.tex
include/wx/gdicmn.h
src/common/gdicmn.cpp
src/generic/printps.cpp
src/gtk/utilsgtk.cpp
src/gtk1/utilsgtk.cpp
src/motif/utils.cpp
src/msw/utils.cpp

index 5975b0250d266433c4514aeb27390323d6d81f9d..c48237402e0a7c9cbf612c30f77ae6b0cb945bde 100644 (file)
@@ -849,6 +849,22 @@ Returns TRUE if the display is colour, FALSE otherwise.
 
 Returns the depth of the display (a value of 1 denotes a monochrome display).
 
+\membersection{::wxDisplaySize}
+
+\func{void}{wxDisplaySize}{\param{int *}{width}, \param{int *}{height}}
+
+\func{wxSize}{wxGetDisplaySize}{\void}
+
+Returns the display size in pixels.
+
+\membersection{::wxDisplaySizeMM}
+
+\func{void}{wxDisplaySizeMM}{\param{int *}{width}, \param{int *}{height}}
+
+\func{wxSize}{wxGetDisplaySizeMM}{\void}
+
+Returns the display size in millimeters.
+
 \membersection{::wxMakeMetafilePlaceable}\label{wxmakemetafileplaceable}
 
 \func{bool}{wxMakeMetafilePlaceable}{\param{const wxString\& }{filename}, \param{int }{minX}, \param{int }{minY},
index b06e329c459b3f00b95d162e0aa711416ccca689..06332853389bf06ca7e58826bd979e234b9604e3 100644 (file)
@@ -496,9 +496,11 @@ extern bool WXDLLEXPORT wxColourDisplay();
 extern int WXDLLEXPORT wxDisplayDepth();
 #define wxGetDisplayDepth wxDisplayDepth
 
-// get the diaplay size
+// get the display size
 extern void WXDLLEXPORT wxDisplaySize(int *width, int *height);
 extern wxSize WXDLLEXPORT wxGetDisplaySize();
+extern void WXDLLEXPORT wxDisplaySizeMM(int *width, int *height);
+extern wxSize WXDLLEXPORT wxGetDisplaySizeMM();
 
 // set global cursor
 extern void WXDLLEXPORT wxSetCursor(const wxCursor& cursor);
index e7dc5831e0f45f2bbaa6891f99a63b4d0c8fa98a..cdce7ecaba3c37dfd84c19a0ebae401502a98929 100644 (file)
@@ -691,6 +691,13 @@ wxSize wxGetDisplaySize()
     return wxSize(x, y);
 }
 
+wxSize wxGetDisplaySizeMM()
+{
+    int x, y;
+    wxDisplaySizeMM(& x, & y);
+    return wxSize(x, y);
+}
+
 wxResourceCache::~wxResourceCache ()
 {
     wxNode *node = First ();
index 9a97d9cc6e232e0eb4f7501082177e09e503e6fb..adf67bf80fd0c85e80795b4fb370aaceeba86241 100644 (file)
@@ -148,25 +148,13 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
         return FALSE;
     }
 
-    int logPPIScreenX = 0;
-    int logPPIScreenY = 0;
-    int logPPIPrinterX = 0;
-    int logPPIPrinterY = 0;
+    wxSize ScreenPixels = wxGetDisplaySize();
+    wxSize ScreenMM = wxGetDisplaySizeMM();
 
-    logPPIScreenX = 100;
-    logPPIScreenY = 100;
-
-    /*
-    // Correct values for X/PostScript?
-    logPPIPrinterX = 100;
-    logPPIPrinterY = 100;
-    */
-
-    logPPIPrinterX = wxPostScriptDC::GetResolution();
-    logPPIPrinterY = wxPostScriptDC::GetResolution();
-
-    printout->SetPPIScreen(logPPIScreenX, logPPIScreenY);
-    printout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY);
+    printout->SetPPIScreen( (ScreenPixels.GetWidth() * 25.4) / ScreenMM.GetWidth(),
+                            (ScreenPixels.GetHeight() * 25.4) / ScreenMM.GetHeight() );
+    printout->SetPPIPrinter( wxPostScriptDC::GetResolution(),
+                             wxPostScriptDC::GetResolution() );
 
     // Set printout parameters
     printout->SetDC(dc);
@@ -348,8 +336,11 @@ void wxPostScriptPrintPreview::DetermineScaling()
 
     if (paper)
     {
-        m_previewPrintout->SetPPIScreen(100, 100);
-        //      m_previewPrintout->SetPPIPrinter(100, 100);
+        wxSize ScreenPixels = wxGetDisplaySize();
+        wxSize ScreenMM = wxGetDisplaySizeMM();
+
+        m_previewPrintout->SetPPIScreen( (ScreenPixels.GetWidth() * 25.4) / ScreenMM.GetWidth(),
+                                         (ScreenPixels.GetHeight() * 25.4) / ScreenMM.GetHeight() );
         m_previewPrintout->SetPPIPrinter(wxPostScriptDC::GetResolution(), wxPostScriptDC::GetResolution()); 
 
         wxSize sizeDevUnits(paper->GetSizeDeviceUnits());
index 1f985793be0d99cb775545ad60247a686f08bc7e..6d27531b26a7687c5d4c2bc5f67e937d20127eee 100644 (file)
@@ -88,6 +88,12 @@ void wxDisplaySize( int *width, int *height )
     if (height) *height = gdk_screen_height();
 }
 
+void wxDisplaySizeMM( int *width, int *height )
+{
+    if (width) *width = gdk_screen_width_mm();
+    if (height) *height = gdk_screen_height_mm();
+}
+
 void wxGetMousePosition( int* x, int* y )
 {
     gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL );
index 1f985793be0d99cb775545ad60247a686f08bc7e..6d27531b26a7687c5d4c2bc5f67e937d20127eee 100644 (file)
@@ -88,6 +88,12 @@ void wxDisplaySize( int *width, int *height )
     if (height) *height = gdk_screen_height();
 }
 
+void wxDisplaySizeMM( int *width, int *height )
+{
+    if (width) *width = gdk_screen_width_mm();
+    if (height) *height = gdk_screen_height_mm();
+}
+
 void wxGetMousePosition( int* x, int* y )
 {
     gdk_window_get_pointer( (GdkWindow*) NULL, x, y, (GdkModifierType*) NULL );
index 0dab1add9b3e2cbb3f3670065a7c247d0969d393..bbd87c87726df34a0aac9f36bd2dfb0fd54ba380 100644 (file)
@@ -648,6 +648,16 @@ void wxDisplaySize(int *width, int *height)
         *height = DisplayHeight (dpy, DefaultScreen (dpy));
 }
 
+void wxDisplaySizeMM(int *width, int *height)
+{
+    Display *dpy = (Display*) wxGetDisplay();
+
+    if ( width )
+        *width = DisplayWidthMM(dpy, DefaultScreen (dpy));
+    if ( height )
+        *height = DisplayHeightMM(dpy, DefaultScreen (dpy));
+}
+
 // Configurable display in Motif
 static WXDisplay *gs_currentDisplay = NULL;
 static wxString gs_displayName;
index 3f4b7e649c2138a573ab2ddc0e3c5d30edee1abe..e191b5aacda2cf626d9972edf7f420195f467772 100644 (file)
@@ -986,6 +986,15 @@ void wxDisplaySize(int *width, int *height)
     if ( height ) *height = GetDeviceCaps(dc, VERTRES);
 }
 
+void wxDisplaySizeMM(int *width, int *height)
+{
+    ScreenHDC dc;
+
+    if ( width ) *width = GetDeviceCaps(dc, HORZSIZE);
+    if ( height ) *height = GetDeviceCaps(dc, VERTSIZE);
+}
+
+
 // ---------------------------------------------------------------------------
 // window information functions
 // ---------------------------------------------------------------------------