]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/ogl/divided.cpp
modified custom draw code to fully draw the items using a font with encoding differen...
[wxWidgets.git] / contrib / src / ogl / divided.cpp
index cb1de4fbaa2a182f78ba925b4f66131bf35dcb0b..a84d56973ea67cb5fe99178a020cf5ff572d188e 100644 (file)
@@ -6,13 +6,9 @@
 // Created:     12/07/98
 // RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "divided.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 #endif
 
 #ifndef WX_PRECOMP
-#include <wx/wx.h>
+#include "wx/wx.h"
 #endif
 
-#include <wx/wxexpr.h>
+#if wxUSE_PROLOGIO
+#include "wx/deprecated/wxexpr.h"
+#endif
+
+#include "wx/ogl/ogl.h"
 
-#include <wx/ogl/basic.h>
-#include <wx/ogl/basicp.h>
-#include <wx/ogl/canvas.h>
-#include <wx/ogl/divided.h>
-#include <wx/ogl/lines.h>
-#include <wx/ogl/misc.h>
 
 class wxDividedShapeControlPoint: public wxControlPoint
 {
@@ -83,7 +77,7 @@ void wxDividedShape::OnDrawContents(wxDC& dc)
 
   if (m_pen) dc.SetPen(* m_pen);
 
-  if (m_textColour) dc.SetTextForeground(* m_textColour);
+  dc.SetTextForeground(m_textColour);
 
 #ifdef __WXMSW__
   // For efficiency, don't do this under X - doesn't make
@@ -95,7 +89,7 @@ void wxDividedShape::OnDrawContents(wxDC& dc)
   if (!formatted)
   {
     FormatRegionText();
-    formatted = TRUE;
+    formatted = true;
   }
 */
   if (GetDisableLabel()) return;
@@ -104,12 +98,12 @@ void wxDividedShape::OnDrawContents(wxDC& dc)
   double yMargin = 2;
   dc.SetBackgroundMode(wxTRANSPARENT);
 
-  wxNode *node = GetRegions().GetFirst();
+  wxObjectList::compatibility_iterator node = GetRegions().GetFirst();
   while (node)
   {
     wxShapeRegion *region = (wxShapeRegion *)node->GetData();
     dc.SetFont(* region->GetFont());
-    dc.SetTextForeground(region->GetActualColourObject());
+    dc.SetTextForeground(region->GetActualColourObject());
 
     double proportion =
       region->m_regionProportionY < 0.0 ? defaultProportion : region->m_regionProportionY;
@@ -139,7 +133,7 @@ void wxDividedShape::OnDrawContents(wxDC& dc)
   }
 }
 
-void wxDividedShape::SetSize(double w, double h, bool recursive)
+void wxDividedShape::SetSize(double w, double h, bool WXUNUSED(recursive))
 {
   SetAttachmentSize(w, h);
   m_width = w;
@@ -159,7 +153,7 @@ void wxDividedShape::SetRegionSizes()
 //  double leftX = (double)(m_xpos - (m_width / 2.0));
 //  double rightX = (double)(m_xpos + (m_width / 2.0));
 
-  wxNode *node = GetRegions().GetFirst();
+  wxObjectList::compatibility_iterator node = GetRegions().GetFirst();
   while (node)
   {
     wxShapeRegion *region = (wxShapeRegion *)node->GetData();
@@ -245,19 +239,9 @@ bool wxDividedShape::GetAttachmentPosition(int attachment, double *x, double *y,
   // Left or right.
   else
   {
-    int i = 0;
-    bool isLeft = FALSE;
-    if (attachment < (n+1))
-    {
-      i = attachment-1;
-      isLeft = FALSE;
-    }
-    else
-    {
-      i = (totalNumberAttachments - attachment - 1);
-      isLeft = TRUE;
-    }
-    wxNode *node = GetRegions().Item(i);
+    bool isLeft = !(attachment < (n+1));
+    int i = (isLeft) ? (totalNumberAttachments - attachment - 1) : (attachment-1);
+    wxObjectList::compatibility_iterator node = GetRegions().Item(i);
     if (node)
     {
       wxShapeRegion *region = (wxShapeRegion *)node->GetData();
@@ -297,10 +281,10 @@ bool wxDividedShape::GetAttachmentPosition(int attachment, double *x, double *y,
     {
       *x = m_xpos;
       *y = m_ypos;
-      return FALSE;
+      return false;
     }
   }
-  return TRUE;
+  return true;
 }
 
 int wxDividedShape::GetNumberOfAttachments() const
@@ -310,7 +294,7 @@ int wxDividedShape::GetNumberOfAttachments() const
   int n = (GetRegions().GetCount() * 2) + 2;
 
   int maxN = n - 1;
-  wxNode *node = m_attachmentPoints.GetFirst();
+  wxObjectList::compatibility_iterator node = m_attachmentPoints.GetFirst();
   while (node)
   {
     wxAttachmentPoint *point = (wxAttachmentPoint *)node->GetData();
@@ -321,7 +305,7 @@ int wxDividedShape::GetNumberOfAttachments() const
   return maxN + 1;
 }
 
-bool wxDividedShape::AttachmentIsValid(int attachment)
+bool wxDividedShape::AttachmentIsValid(int attachment) const
 {
   int totalNumberAttachments = (GetRegions().GetCount() * 2) + 2;
   if (attachment >= totalNumberAttachments)
@@ -329,9 +313,9 @@ bool wxDividedShape::AttachmentIsValid(int attachment)
     return wxShape::AttachmentIsValid(attachment);
   }
   else if (attachment >= 0)
-    return TRUE;
+    return true;
   else
-    return FALSE;
+    return false;
 }
 
 void wxDividedShape::Copy(wxShape& copy)
@@ -353,7 +337,7 @@ void wxDividedShape::MakeMandatoryControlPoints()
   double currentY = (double)(GetY() - (m_height / 2.0));
   double maxY = (double)(GetY() + (m_height / 2.0));
 
-  wxNode *node = GetRegions().GetFirst();
+  wxObjectList::compatibility_iterator node = GetRegions().GetFirst();
   int i = 0;
   while (node)
   {
@@ -391,14 +375,14 @@ void wxDividedShape::ResetMandatoryControlPoints()
   double currentY = (double)(GetY() - (m_height / 2.0));
   double maxY = (double)(GetY() + (m_height / 2.0));
 
-  wxNode *node = m_controlPoints.GetFirst();
+  wxObjectList::compatibility_iterator node = m_controlPoints.GetFirst();
   int i = 0;
   while (node)
   {
     wxControlPoint *controlPoint = (wxControlPoint *)node->GetData();
     if (controlPoint->IsKindOf(CLASSINFO(wxDividedShapeControlPoint)))
     {
-      wxNode *node1 = GetRegions().Item(i);
+      wxObjectList::compatibility_iterator node1 = GetRegions().Item(i);
       wxShapeRegion *region = (wxShapeRegion *)node1->GetData();
 
       double proportion = region->m_regionProportionY;
@@ -536,7 +520,7 @@ void wxDividedShape::EditRegions()
 
   wxEndBusyCursor();
 
-  dialog->Show(TRUE);
+  dialog->Show(true);
 
   node = GetRegions().GetFirst();
   i = 0;
@@ -591,13 +575,13 @@ wxDividedShapeControlPoint::~wxDividedShapeControlPoint()
 }
 
 // Implement resizing of divided object division
-void wxDividedShapeControlPoint::OnDragLeft(bool draw, double x, double y, int keys, int attachment)
+void wxDividedShapeControlPoint::OnDragLeft(bool WXUNUSED(draw), double WXUNUSED(x), double y, int WXUNUSED(keys), int WXUNUSED(attachment))
 {
     wxClientDC dc(GetCanvas());
     GetCanvas()->PrepareDC(dc);
 
     dc.SetLogicalFunction(OGLRBLF);
-    wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+    wxPen dottedPen(*wxBLACK, 1, wxDOT);
     dc.SetPen(dottedPen);
     dc.SetBrush((* wxTRANSPARENT_BRUSH));
 
@@ -609,14 +593,14 @@ void wxDividedShapeControlPoint::OnDragLeft(bool draw, double x, double y, int k
     dc.DrawLine(WXROUND(x1), WXROUND(y1), WXROUND(x2), WXROUND(y2));
 }
 
-void wxDividedShapeControlPoint::OnBeginDragLeft(double x, double y, int keys, int attachment)
+void wxDividedShapeControlPoint::OnBeginDragLeft(double WXUNUSED(x), double y, int WXUNUSED(keys), int WXUNUSED(attachment))
 {
     wxClientDC dc(GetCanvas());
     GetCanvas()->PrepareDC(dc);
 
     wxDividedShape *dividedObject = (wxDividedShape *)m_shape;
     dc.SetLogicalFunction(OGLRBLF);
-    wxPen dottedPen(wxColour(0, 0, 0), 1, wxDOT);
+    wxPen dottedPen(*wxBLACK, 1, wxDOT);
     dc.SetPen(dottedPen);
     dc.SetBrush((* wxTRANSPARENT_BRUSH));
 
@@ -628,13 +612,13 @@ void wxDividedShapeControlPoint::OnBeginDragLeft(double x, double y, int keys, i
     m_canvas->CaptureMouse();
 }
 
-void wxDividedShapeControlPoint::OnEndDragLeft(double x, double y, int keys, int attachment)
+void wxDividedShapeControlPoint::OnEndDragLeft(double WXUNUSED(x), double y, int WXUNUSED(keys), int WXUNUSED(attachment))
 {
     wxClientDC dc(GetCanvas());
     GetCanvas()->PrepareDC(dc);
 
     wxDividedShape *dividedObject = (wxDividedShape *)m_shape;
-    wxNode *node = dividedObject->GetRegions().Item(regionId);
+    wxObjectList::compatibility_iterator node = dividedObject->GetRegions().Item(regionId);
     if (!node)
     return;
 
@@ -654,7 +638,6 @@ void wxDividedShapeControlPoint::OnEndDragLeft(double x, double y, int keys, int
 
     // Save values
     double thisRegionTop = 0.0;
-    double thisRegionBottom = 0.0;
     double nextRegionBottom = 0.0;
 
     node = dividedObject->GetRegions().GetFirst();
@@ -669,7 +652,6 @@ void wxDividedShapeControlPoint::OnEndDragLeft(double x, double y, int keys, int
       if (region == thisRegion)
       {
         thisRegionTop = currentY;
-        thisRegionBottom = actualY;
         if (node->GetNext())
           nextRegion = (wxShapeRegion *)node->GetNext()->GetData();
       }
@@ -706,9 +688,8 @@ void wxDividedShapeControlPoint::OnEndDragLeft(double x, double y, int keys, int
         wxShapeRegion *region = (wxShapeRegion *)node->GetData();
         if (region->GetText())
         {
-        wxChar *s = copystring(region->GetText());
-        dividedObject->FormatText(dc, s, i);
-        delete[] s;
+        wxString s(region->GetText());
+        dividedObject->FormatText(dc, s.c_str(), i);
         }
         node = node->GetNext();
         i++;