]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/dc.cpp
Made wxSocket compile using makefiles; #ifdefed out <<, >> operators in stream.cpp
[wxWidgets.git] / src / msw / dc.cpp
index f34b25550731bb52e41ae0d5a55bea59388ddbeb..432769c8c0dad1aa9f1ff4ab76a170be2c62d172 100644 (file)
@@ -386,7 +386,7 @@ void wxDC::DrawLine(long x1, long y1, long x2, long y2)
   CalcBoundingBox(x2, y2);
 }
 
-void wxDC::DrawArc(long x1,long y1,long x2,long y2,double xc,double yc)
+void wxDC::DrawArc(long x1,long y1,long x2,long y2, long xc, long yc)
 {
   double dx = xc-x1 ;
   double dy = yc-y1 ;
@@ -412,7 +412,12 @@ void wxDC::DrawArc(long x1,long y1,long x2,long y2,double xc,double yc)
   long yyy2 = (long) (yyc+ray);
   if (m_brush.Ok() && m_brush.GetStyle() !=wxTRANSPARENT)
   {
-    Pie((HDC) m_hDC,xxx1,yyy1,xxx2,yyy2,
+    // Have to add 1 to bottom-right corner of rectangle
+    // to make semi-circles look right (crooked line otherwise).
+    // Unfortunately this is not a reliable method, depends
+    // on the size of shape.
+    // TODO: figure out why this happens!
+    Pie((HDC) m_hDC,xxx1,yyy1,xxx2+1,yyy2+1,
         xx1,yy1,xx2,yy2) ;
   }
   else
@@ -643,6 +648,10 @@ void wxDC::SetFont(const wxFont& the_font)
     wxDebugMsg("wxDC::SetFont: Selecting HFONT %X\n", m_font.GetResourceHandle());
 #endif
     HFONT f = (HFONT) ::SelectObject((HDC) m_hDC, (HFONT) m_font.GetResourceHandle());
+    if (f == NULL)
+    {
+        wxDebugMsg("::SelectObject failed in wxDC::SetFont.");
+    }
     if (!m_oldFont)
       m_oldFont = (WXHFONT) f;
   }
@@ -711,6 +720,8 @@ void wxDC::SetBrush(const wxBrush& brush)
 
 void wxDC::DrawText(const wxString& text, long x, long y, bool use16bit)
 {
+    // Should be unnecessary: SetFont should have done this already.
+#if 0
   if (m_font.Ok() && m_font.GetResourceHandle())
   {
 #if WXDEBUG > 1
@@ -720,6 +731,7 @@ void wxDC::DrawText(const wxString& text, long x, long y, bool use16bit)
     if (!m_oldFont)
       m_oldFont = (WXHFONT) f;
   }
+#endif
 
   if (m_textForegroundColour.Ok())
     SetTextColor((HDC) m_hDC, m_textForegroundColour.GetPixel() ) ;
@@ -833,31 +845,40 @@ bool wxDC::StartDoc(const wxString& message)
   if (!this->IsKindOf(CLASSINFO(wxPrinterDC)))
     return TRUE;
     
-  bool flag = FALSE;
-
   DOCINFO docinfo;
   docinfo.cbSize = sizeof(DOCINFO);
   docinfo.lpszDocName = (const char *)message;
-  docinfo.lpszOutput = (const char *)m_filename;
+
+  if (m_filename.IsEmpty())
+    docinfo.lpszOutput = NULL;
+  else
+    docinfo.lpszOutput = (const char *)m_filename;
+
 #if defined(__WIN95__)
   docinfo.lpszDatatype = NULL;
   docinfo.fwType = 0;
 #endif
 
-  if (m_hDC) flag = (SP_ERROR !=
+  if (!m_hDC)
+    return FALSE;
+
+  int ret =
 #ifndef __WIN32__
-     ::StartDoc((HDC) m_hDC, &docinfo));
+     ::StartDoc((HDC) m_hDC, &docinfo);
 #else
 #ifdef UNICODE
-     ::StartDocW((HDC) m_hDC, &docinfo));
+     ::StartDocW((HDC) m_hDC, &docinfo);
 #else
-     ::StartDocA((HDC) m_hDC, &docinfo));
+     ::StartDocA((HDC) m_hDC, &docinfo);
 #endif
 #endif
 
-  else flag = FALSE;
-
-  return flag;
+  if (ret <= 0)
+  {
+    DWORD lastError = GetLastError();
+    wxDebugMsg("wxDC::StartDoc failed with error: %d\n", lastError);
+  }
+  return (ret > 0);
 }
 
 void wxDC::EndDoc(void)
@@ -1420,3 +1441,9 @@ void wxDC::GetTextExtent(const wxString& string, float *x, float *y,
 }
 #endif
 
+int wxDC::GetDepth(void) const
+{
+  return (int) ::GetDeviceCaps((HDC) m_hDC,BITSPIXEL);
+}
+
+