]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/ogl/drawn.cpp
bug fixes for using wxTransientPopupWindow and wxDP_ALLOWNONE support from Andreas...
[wxWidgets.git] / contrib / src / ogl / drawn.cpp
index 20bea6a216fe5c3d399167c9379df03cd00c794f..0aeae7fba1a7abe47ce8427ca43b8839ed6859b4 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     12/07/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
 // Created:     12/07/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
 /////////////////////////////////////////////////////////////////////////////
 
 #ifdef __GNUG__
@@ -31,9 +31,6 @@
 
 #include "wx/ogl/ogl.h"
 
 
 #include "wx/ogl/ogl.h"
 
-
-#include <math.h>
-
 static void IntToHex(unsigned int dec, wxChar *buf);
 static unsigned long HexToInt(wxChar *buf);
 extern wxChar *oglBuffer;
 static void IntToHex(unsigned int dec, wxChar *buf);
 static unsigned long HexToInt(wxChar *buf);
 extern wxChar *oglBuffer;
@@ -51,7 +48,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxDrawnShape, wxRectangleShape)
 
 wxDrawnShape::wxDrawnShape():wxRectangleShape(100.0, 50.0)
 {
 
 wxDrawnShape::wxDrawnShape():wxRectangleShape(100.0, 50.0)
 {
-  m_saveToFile = TRUE;
+  m_saveToFile = true;
   m_currentAngle = oglDRAWN_ANGLE_0;
 }
 
   m_currentAngle = oglDRAWN_ANGLE_0;
 }
 
@@ -165,7 +162,7 @@ void wxDrawnShape::Rotate(double x, double y, double theta)
 int wxDrawnShape::DetermineMetaFile(double rotation)
 {
     double tolerance = 0.0001;
 int wxDrawnShape::DetermineMetaFile(double rotation)
 {
     double tolerance = 0.0001;
-    const double pi = 3.1415926535897932384626433832795 ;
+    const double pi = M_PI ;
     double angle1 = 0.0;
     double angle2 = pi/2.0;
     double angle3 = pi;
     double angle1 = 0.0;
     double angle2 = pi/2.0;
     double angle3 = pi;
@@ -225,7 +222,7 @@ bool wxDrawnShape::GetPerimeterPoint(double x1, double y1,
         wxDrawOp* op = (wxDrawOp*) node->GetData();
 
         if (op->GetPerimeterPoint(x1, y1, x2, y2, x3, y3, GetX(), GetY(), GetAttachmentMode()))
         wxDrawOp* op = (wxDrawOp*) node->GetData();
 
         if (op->GetPerimeterPoint(x1, y1, x2, y2, x3, y3, GetX(), GetY(), GetAttachmentMode()))
-            return TRUE;
+            return true;
     }
 
     // Default... just use a rectangle
     }
 
     // Default... just use a rectangle
@@ -676,7 +673,7 @@ void wxOpSetClipping::ReadExpr(wxPseudoMetaFile *WXUNUSED(image), wxExpr *expr)
  */
 
 wxOpDraw::wxOpDraw(int theOp, double theX1, double theY1, double theX2, double theY2,
  */
 
 wxOpDraw::wxOpDraw(int theOp, double theX1, double theY1, double theX2, double theY2,
-         double theRadius, wxChar *s) : wxDrawOp(theOp)
+         double theRadius, const wxString& s) : wxDrawOp(theOp)
 {
   m_x1 = theX1;
   m_y1 = theY1;
 {
   m_x1 = theX1;
   m_y1 = theY1;
@@ -685,13 +682,11 @@ wxOpDraw::wxOpDraw(int theOp, double theX1, double theY1, double theX2, double t
   m_x3 = 0.0;
   m_y3 = 0.0;
   m_radius = theRadius;
   m_x3 = 0.0;
   m_y3 = 0.0;
   m_radius = theRadius;
-  if (s) m_textString = copystring(s);
-  else m_textString = NULL;
+  m_textString = s;
 }
 
 wxOpDraw::~wxOpDraw()
 {
 }
 
 wxOpDraw::~wxOpDraw()
 {
-  if (m_textString) delete[] m_textString;
 }
 
 wxDrawOp *wxOpDraw::Copy(wxPseudoMetaFile *WXUNUSED(newImage))
 }
 
 wxDrawOp *wxOpDraw::Copy(wxPseudoMetaFile *WXUNUSED(newImage))
@@ -735,7 +730,7 @@ void wxOpDraw::Do(wxDC& dc, double xoffset, double yoffset)
     }
     case DRAWOP_DRAW_ELLIPTIC_ARC:
     {
     }
     case DRAWOP_DRAW_ELLIPTIC_ARC:
     {
-      const double pi = 3.1415926535897932384626433832795 ;
+      const double pi = M_PI ;
 
       // Convert back to degrees
       dc.DrawEllipticArc(
 
       // Convert back to degrees
       dc.DrawEllipticArc(
@@ -817,10 +812,10 @@ void wxOpDraw::Rotate(double x, double y, double theta, double sinTheta, double
       double newX2 = m_x2*cosTheta - m_y2*sinTheta + x*(1.0 - cosTheta) + y*sinTheta;
       double newY2 = m_x2*sinTheta + m_y2*cosTheta + y*(1.0 - cosTheta) + x*sinTheta;
 
       double newX2 = m_x2*cosTheta - m_y2*sinTheta + x*(1.0 - cosTheta) + y*sinTheta;
       double newY2 = m_x2*sinTheta + m_y2*cosTheta + y*(1.0 - cosTheta) + x*sinTheta;
 
-         m_x1 = newX1;
-         m_y1 = newY1;
-         m_x2 = newX2;
-         m_y2 = newY2;
+      m_x1 = newX1;
+      m_y1 = newY1;
+      m_x2 = newX2;
+      m_y2 = newY2;
       break;
     }
     case DRAWOP_DRAW_RECT:
       break;
     }
     case DRAWOP_DRAW_RECT:
@@ -863,12 +858,12 @@ void wxOpDraw::Rotate(double x, double y, double theta, double sinTheta, double
       double newX3 = m_x3*cosTheta - m_y3*sinTheta + x*(1.0 - cosTheta) + y*sinTheta;
       double newY3 = m_x3*sinTheta + m_y3*cosTheta + y*(1.0 - cosTheta) + x*sinTheta;
 
       double newX3 = m_x3*cosTheta - m_y3*sinTheta + x*(1.0 - cosTheta) + y*sinTheta;
       double newY3 = m_x3*sinTheta + m_y3*cosTheta + y*(1.0 - cosTheta) + x*sinTheta;
 
-         m_x1 = newX1;
-         m_y1 = newY1;
-         m_x2 = newX2;
-         m_y2 = newY2;
-         m_x3 = newX3;
-         m_y3 = newY3;
+      m_x1 = newX1;
+      m_y1 = newY1;
+      m_x2 = newX2;
+      m_y2 = newY2;
+      m_x3 = newX3;
+      m_y3 = newY3;
 
       break;
     }
 
       break;
     }
@@ -968,8 +963,7 @@ void wxOpDraw::ReadExpr(wxPseudoMetaFile *WXUNUSED(image), wxExpr *expr)
     {
       m_x1 = expr->Nth(1)->RealValue();
       m_y1 = expr->Nth(2)->RealValue();
     {
       m_x1 = expr->Nth(1)->RealValue();
       m_y1 = expr->Nth(2)->RealValue();
-      wxString str(expr->Nth(3)->StringValue());
-      m_textString = copystring(str);
+      m_textString = wxString(expr->Nth(3)->StringValue());
       break;
     }
     case DRAWOP_DRAW_ARC:
       break;
     }
     case DRAWOP_DRAW_ARC:
@@ -1212,7 +1206,7 @@ bool wxOpPolyDraw::OnDrawOutline(wxDC& dc, double x, double y, double w, double
     }
     dc.DrawPolygon(n, intPoints, (long) x, (long) y);
     delete[] intPoints;
     }
     dc.DrawPolygon(n, intPoints, (long) x, (long) y);
     delete[] intPoints;
-    return TRUE;
+    return true;
 }
 
 // Assume (x1, y1) is centre of box (most generally, line end at box)
 }
 
 // Assume (x1, y1) is centre of box (most generally, line end at box)
@@ -1242,13 +1236,13 @@ bool wxOpPolyDraw::GetPerimeterPoint(double x1, double y1,
         {
           *x3 = point->x + xOffset;
           *y3 = point->y + yOffset;
         {
           *x3 = point->x + xOffset;
           *y3 = point->y + yOffset;
-          return TRUE;
+          return true;
         }
         else if ((y2 < y1) && (point->y < 0.0))
         {
           *x3 = point->x + xOffset;
           *y3 = point->y + yOffset;
         }
         else if ((y2 < y1) && (point->y < 0.0))
         {
           *x3 = point->x + xOffset;
           *y3 = point->y + yOffset;
-          return TRUE;
+          return true;
         }
       }
     }
         }
       }
     }
@@ -1270,7 +1264,7 @@ bool wxOpPolyDraw::GetPerimeterPoint(double x1, double y1,
   delete[] xpoints;
   delete[] ypoints;
 
   delete[] xpoints;
   delete[] ypoints;
 
-  return TRUE;
+  return true;
 }
 
 
 }
 
 
@@ -1279,8 +1273,8 @@ bool wxOpPolyDraw::GetPerimeterPoint(double x1, double y1,
  *
  */
 
  *
  */
 
-static char hexArray[] = { 
-    _T('0'), _T('1'), _T('2'), _T('3'), _T('4'), _T('5'), _T('6'), _T('7'), 
+static char hexArray[] = {
+    _T('0'), _T('1'), _T('2'), _T('3'), _T('4'), _T('5'), _T('6'), _T('7'),
     _T('8'), _T('9'), _T('A'), _T('B'), _T('C'), _T('D'), _T('E'), _T('F') };
 
 // Convert unsigned 16-bit integer to 4-character hex string
     _T('8'), _T('9'), _T('A'), _T('B'), _T('C'), _T('D'), _T('E'), _T('F') };
 
 // Convert unsigned 16-bit integer to 4-character hex string
@@ -1335,11 +1329,6 @@ static int HexToInt1(wxChar hex)
       return 14;
     case _T('F'):
       return 15;
       return 14;
     case _T('F'):
       return 15;
-    #if 0
-    // handling this default outside switch removes warning under Borland 
-    default:
-      return 0;
-    #endif
   }
 
   return 0;
   }
 
   return 0;
@@ -1366,7 +1355,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxPseudoMetaFile, wxObject)
 wxPseudoMetaFile::wxPseudoMetaFile()
 {
   m_currentRotation = 0;
 wxPseudoMetaFile::wxPseudoMetaFile()
 {
   m_currentRotation = 0;
-  m_rotateable = TRUE;
+  m_rotateable = true;
   m_width = 0.0;
   m_height = 0.0;
   m_outlinePen = NULL;
   m_width = 0.0;
   m_height = 0.0;
   m_outlinePen = NULL;
@@ -1374,7 +1363,7 @@ wxPseudoMetaFile::wxPseudoMetaFile()
   m_outlineOp = -1;
 }
 
   m_outlineOp = -1;
 }
 
-wxPseudoMetaFile::wxPseudoMetaFile(wxPseudoMetaFile& mf)
+wxPseudoMetaFile::wxPseudoMetaFile(wxPseudoMetaFile& mf):wxObject()
 {
   mf.Copy(*this);
 }
 {
   mf.Copy(*this);
 }
@@ -1605,7 +1594,7 @@ void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
   // Read GDI objects
   wxChar buf[50];
   int i = 1;
   // Read GDI objects
   wxChar buf[50];
   int i = 1;
-  bool keepGoing = TRUE;
+  bool keepGoing = true;
   while (keepGoing)
   {
     wxSprintf(buf, _T("gdi%d_%d"), whichAngle, i);
   while (keepGoing)
   {
     wxSprintf(buf, _T("gdi%d_%d"), whichAngle, i);
@@ -1613,7 +1602,7 @@ void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
     {
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
     {
-      keepGoing = FALSE;
+      keepGoing = false;
     }
     else
     {
     }
     else
     {
@@ -1670,7 +1659,7 @@ void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
   }
 
   // Now read in the operations
   }
 
   // Now read in the operations
-  keepGoing = TRUE;
+  keepGoing = true;
   i = 1;
   while (keepGoing)
   {
   i = 1;
   while (keepGoing)
   {
@@ -1679,7 +1668,7 @@ void wxPseudoMetaFile::ReadAttributes(wxExpr *clause, int whichAngle)
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
     {
     clause->GetAttributeValue(buf, &expr);
     if (!expr)
     {
-      keepGoing = FALSE;
+      keepGoing = false;
     }
     else
     {
     }
     else
     {
@@ -1824,14 +1813,14 @@ void wxPseudoMetaFile::Copy(wxPseudoMetaFile& copy)
 bool wxPseudoMetaFile::LoadFromMetaFile(const wxString& filename, double *rwidth, double *rheight)
 {
   if (!wxFileExists(filename))
 bool wxPseudoMetaFile::LoadFromMetaFile(const wxString& filename, double *rwidth, double *rheight)
 {
   if (!wxFileExists(filename))
-    return FALSE;
+    return false;
 
   wxXMetaFile *metaFile = new wxXMetaFile;
 
   if (!metaFile->ReadFile(filename))
   {
     delete metaFile;
 
   wxXMetaFile *metaFile = new wxXMetaFile;
 
   if (!metaFile->ReadFile(filename))
   {
     delete metaFile;
-    return FALSE;
+    return false;
   }
 
   double lastX = 0.0;
   }
 
   double lastX = 0.0;
@@ -2168,7 +2157,7 @@ bool wxPseudoMetaFile::LoadFromMetaFile(const wxString& filename, double *rwidth
   m_height = *rheight;
 
   delete metaFile;
   m_height = *rheight;
 
   delete metaFile;
-  return TRUE;
+  return true;
 }
 
 // Scale to fit size
 }
 
 // Scale to fit size
@@ -2338,7 +2327,7 @@ void wxPseudoMetaFile::DrawArc(const wxPoint& centrePt, const wxPoint& startPt,
 
 void wxPseudoMetaFile::DrawEllipticArc(const wxRect& rect, double startAngle, double endAngle)
 {
 
 void wxPseudoMetaFile::DrawEllipticArc(const wxRect& rect, double startAngle, double endAngle)
 {
-    const double pi = 3.1415926535897932384626433832795 ;
+    const double pi = M_PI ;
 
     double startAngleRadians = startAngle* (pi*2.0/360.0);
     double endAngleRadians = endAngle* (pi*2.0/360.0);
 
     double startAngleRadians = startAngle* (pi*2.0/360.0);
     double endAngleRadians = endAngle* (pi*2.0/360.0);
@@ -2365,7 +2354,7 @@ void wxPseudoMetaFile::DrawText(const wxString& text, const wxPoint& pt)
     wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_TEXT,
           (double) pt.x, (double) pt.y, 0.0, 0.0);
 
     wxOpDraw *theOp = new wxOpDraw(DRAWOP_DRAW_TEXT,
           (double) pt.x, (double) pt.y, 0.0, 0.0);
 
-    theOp->m_textString = copystring(text);
+    theOp->m_textString = text;
 
     m_ops.Append(theOp);
 }
 
     m_ops.Append(theOp);
 }