]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/ogl/src/constrnt.cpp
fixed somebody's poorly done StreamSize-->GetSize transition
[wxWidgets.git] / utils / ogl / src / constrnt.cpp
index 6f90bc2067efc3ea73c81d07b99bf1cf19c5c7a9..101e4a17825e02e533111a923f15abd4b0e892ad 100644 (file)
 #include <wx/wx.h>
 #endif
 
-#ifdef PROLOGIO
 #include <wx/wxexpr.h>
-#endif
 
 #include "basic.h"
 #include "constrnt.h"
 #include "canvas.h"
 
-wxList *OGLConstraintTypes = NULL;
+wxList *wxOGLConstraintTypes = NULL;
 
 /*
  * Constraint type
  *
  */
 
-IMPLEMENT_DYNAMIC_CLASS(OGLConstraintType, wxObject)
+IMPLEMENT_DYNAMIC_CLASS(wxOGLConstraintType, wxObject)
 
-OGLConstraintType::OGLConstraintType(int theType, const wxString& theName, const wxString& thePhrase)
+wxOGLConstraintType::wxOGLConstraintType(int theType, const wxString& theName, const wxString& thePhrase)
 {
   m_type = theType;
   m_name = theName;
   m_phrase = thePhrase;
 }
 
-OGLConstraintType::~OGLConstraintType()
+wxOGLConstraintType::~wxOGLConstraintType()
 {
 }
 
 void OGLInitializeConstraintTypes()
 {
-    if (!OGLConstraintTypes)
+    if (!wxOGLConstraintTypes)
         return;
 
-    OGLConstraintTypes = new wxList(wxKEY_INTEGER);
+    wxOGLConstraintTypes = new wxList(wxKEY_INTEGER);
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_VERTICALLY,
-        new OGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, "Centre vertically", "centred vertically w.r.t."));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_VERTICALLY,
+        new wxOGLConstraintType(gyCONSTRAINT_CENTRED_VERTICALLY, "Centre vertically", "centred vertically w.r.t."));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_HORIZONTALLY,
-        new OGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, "Centre horizontally", "centred horizontally w.r.t."));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_HORIZONTALLY,
+        new wxOGLConstraintType(gyCONSTRAINT_CENTRED_HORIZONTALLY, "Centre horizontally", "centred horizontally w.r.t."));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_BOTH,
-        new OGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, "Centre", "centred w.r.t."));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_CENTRED_BOTH,
+        new wxOGLConstraintType(gyCONSTRAINT_CENTRED_BOTH, "Centre", "centred w.r.t."));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_LEFT_OF,
-        new OGLConstraintType(gyCONSTRAINT_LEFT_OF, "Left of", "left of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_LEFT_OF,
+        new wxOGLConstraintType(gyCONSTRAINT_LEFT_OF, "Left of", "left of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_RIGHT_OF,
-        new OGLConstraintType(gyCONSTRAINT_RIGHT_OF, "Right of", "right of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_RIGHT_OF,
+        new wxOGLConstraintType(gyCONSTRAINT_RIGHT_OF, "Right of", "right of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_ABOVE,
-        new OGLConstraintType(gyCONSTRAINT_ABOVE, "Above", "above"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_ABOVE,
+        new wxOGLConstraintType(gyCONSTRAINT_ABOVE, "Above", "above"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_BELOW,
-        new OGLConstraintType(gyCONSTRAINT_BELOW, "Below", "below"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_BELOW,
+        new wxOGLConstraintType(gyCONSTRAINT_BELOW, "Below", "below"));
 
     // Alignment
-    OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_TOP,
-        new OGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, "Top-aligned", "aligned to the top of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_TOP,
+        new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_TOP, "Top-aligned", "aligned to the top of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_BOTTOM,
-        new OGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, "Bottom-aligned", "aligned to the bottom of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_BOTTOM,
+        new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_BOTTOM, "Bottom-aligned", "aligned to the bottom of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_LEFT,
-        new OGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, "Left-aligned", "aligned to the left of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_LEFT,
+        new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_LEFT, "Left-aligned", "aligned to the left of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_RIGHT,
-        new OGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, "Right-aligned", "aligned to the right of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_ALIGNED_RIGHT,
+        new wxOGLConstraintType(gyCONSTRAINT_ALIGNED_RIGHT, "Right-aligned", "aligned to the right of"));
 
     // Mid-alignment
-    OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_TOP,
-        new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, "Top-midaligned", "centred on the top of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_TOP,
+        new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_TOP, "Top-midaligned", "centred on the top of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_BOTTOM,
-        new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, "Bottom-midaligned", "centred on the bottom of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_BOTTOM,
+        new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_BOTTOM, "Bottom-midaligned", "centred on the bottom of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_LEFT,
-        new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, "Left-midaligned", "centred on the left of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_LEFT,
+        new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_LEFT, "Left-midaligned", "centred on the left of"));
 
-    OGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_RIGHT,
-        new OGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, "Right-midaligned", "centred on the right of"));
+    wxOGLConstraintTypes->Append(gyCONSTRAINT_MIDALIGNED_RIGHT,
+        new wxOGLConstraintType(gyCONSTRAINT_MIDALIGNED_RIGHT, "Right-midaligned", "centred on the right of"));
 }
 
 void OGLCleanUpConstraintTypes()
 {
-    if (!OGLConstraintTypes)
+    if (!wxOGLConstraintTypes)
         return;
 
-    wxNode* node = OGLConstraintTypes->First();
+    wxNode* node = wxOGLConstraintTypes->First();
     while (node)
     {
-        OGLConstraintType* ct = (OGLConstraintType*) node->Data();
+        wxOGLConstraintType* ct = (wxOGLConstraintType*) node->Data();
         delete ct;
         node = node->Next();
     }
-    delete OGLConstraintTypes;
-    OGLConstraintTypes = NULL;
+    delete wxOGLConstraintTypes;
+    wxOGLConstraintTypes = NULL;
 }
 
 /*
@@ -128,9 +126,9 @@ void OGLCleanUpConstraintTypes()
  *
  */
 
-IMPLEMENT_DYNAMIC_CLASS(OGLConstraint, wxObject)
+IMPLEMENT_DYNAMIC_CLASS(wxOGLConstraint, wxObject)
 
-OGLConstraint::OGLConstraint(int type, wxShape *constraining, wxList& constrained)
+wxOGLConstraint::wxOGLConstraint(int type, wxShape *constraining, wxList& constrained)
 {
   m_xSpacing = 0.0;
   m_ySpacing = 0.0;
@@ -149,22 +147,22 @@ OGLConstraint::OGLConstraint(int type, wxShape *constraining, wxList& constraine
   }
 }
 
-OGLConstraint::~OGLConstraint()
+wxOGLConstraint::~wxOGLConstraint()
 {
 }
 
-bool OGLConstraint::Equals(float a, float b)
+bool wxOGLConstraint::Equals(double a, double b)
 {
-  float marg = 0.5;
+  double marg = 0.5;
 
   bool eq = ((b <= a + marg) && (b >= a - marg));
   return eq;
 }
 
 // Return TRUE if anything changed
-bool OGLConstraint::Evaluate()
+bool wxOGLConstraint::Evaluate()
 {
-  float maxWidth, maxHeight, minWidth, minHeight, x, y;
+  double maxWidth, maxHeight, minWidth, minHeight, x, y;
   m_constrainingObject->GetBoundingBoxMax(&maxWidth, &maxHeight);
   m_constrainingObject->GetBoundingBoxMin(&minWidth, &minHeight);
   x = m_constrainingObject->GetX();
@@ -178,30 +176,30 @@ bool OGLConstraint::Evaluate()
     case gyCONSTRAINT_CENTRED_VERTICALLY:
     {
       int n = m_constrainedObjects.Number();
-      float totalObjectHeight = 0.0;
+      double totalObjectHeight = 0.0;
       wxNode *node = m_constrainedObjects.First();
       while (node)
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
         totalObjectHeight += height2;
         node = node->Next();
       }
-      float startY;
-      float spacingY;
+      double startY;
+      double spacingY;
       // Check if within the constraining object...
       if ((totalObjectHeight + (n + 1)*m_ySpacing) <= minHeight)
       {
-        spacingY = (float)((minHeight - totalObjectHeight)/(n + 1));
-        startY = (float)(y - (minHeight/2.0));
+        spacingY = (double)((minHeight - totalObjectHeight)/(n + 1));
+        startY = (double)(y - (minHeight/2.0));
       }
       // Otherwise, use default spacing
       else
       {
         spacingY = m_ySpacing;
-        startY = (float)(y - ((totalObjectHeight + (n+1)*spacingY)/2.0));
+        startY = (double)(y - ((totalObjectHeight + (n+1)*spacingY)/2.0));
       }
 
       // Now position the objects
@@ -210,15 +208,15 @@ bool OGLConstraint::Evaluate()
       while (node)
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
-        startY += (float)(spacingY + (height2/2.0));
+        startY += (double)(spacingY + (height2/2.0));
         if (!Equals(startY, constrainedObject->GetY()))
         {
           constrainedObject->Move(dc, constrainedObject->GetX(), startY, FALSE);
           changed = TRUE;
         }
-        startY += (float)(height2/2.0);
+        startY += (double)(height2/2.0);
         node = node->Next();
       }
       return changed;
@@ -226,30 +224,30 @@ bool OGLConstraint::Evaluate()
     case gyCONSTRAINT_CENTRED_HORIZONTALLY:
     {
       int n = m_constrainedObjects.Number();
-      float totalObjectWidth = 0.0;
+      double totalObjectWidth = 0.0;
       wxNode *node = m_constrainedObjects.First();
       while (node)
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
         totalObjectWidth += width2;
         node = node->Next();
       }
-      float startX;
-      float spacingX;
+      double startX;
+      double spacingX;
       // Check if within the constraining object...
       if ((totalObjectWidth + (n + 1)*m_xSpacing) <= minWidth)
       {
-        spacingX = (float)((minWidth - totalObjectWidth)/(n + 1));
-        startX = (float)(x - (minWidth/2.0));
+        spacingX = (double)((minWidth - totalObjectWidth)/(n + 1));
+        startX = (double)(x - (minWidth/2.0));
       }
       // Otherwise, use default spacing
       else
       {
         spacingX = m_xSpacing;
-        startX = (float)(x - ((totalObjectWidth + (n+1)*spacingX)/2.0));
+        startX = (double)(x - ((totalObjectWidth + (n+1)*spacingX)/2.0));
       }
 
       // Now position the objects
@@ -258,15 +256,15 @@ bool OGLConstraint::Evaluate()
       while (node)
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
-        startX += (float)(spacingX + (width2/2.0));
+        startX += (double)(spacingX + (width2/2.0));
         if (!Equals(startX, constrainedObject->GetX()))
         {
           constrainedObject->Move(dc, startX, constrainedObject->GetY(), FALSE);
           changed = TRUE;
         }
-        startX += (float)(width2/2.0);
+        startX += (double)(width2/2.0);
         node = node->Next();
       }
       return changed;
@@ -274,48 +272,48 @@ bool OGLConstraint::Evaluate()
     case gyCONSTRAINT_CENTRED_BOTH:
     {
       int n = m_constrainedObjects.Number();
-      float totalObjectWidth = 0.0;
-      float totalObjectHeight = 0.0;
+      double totalObjectWidth = 0.0;
+      double totalObjectHeight = 0.0;
       wxNode *node = m_constrainedObjects.First();
       while (node)
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
         totalObjectWidth += width2;
         totalObjectHeight += height2;
         node = node->Next();
       }
-      float startX;
-      float spacingX;
-      float startY;
-      float spacingY;
+      double startX;
+      double spacingX;
+      double startY;
+      double spacingY;
 
       // Check if within the constraining object...
       if ((totalObjectWidth + (n + 1)*m_xSpacing) <= minWidth)
       {
-        spacingX = (float)((minWidth - totalObjectWidth)/(n + 1));
-        startX = (float)(x - (minWidth/2.0));
+        spacingX = (double)((minWidth - totalObjectWidth)/(n + 1));
+        startX = (double)(x - (minWidth/2.0));
       }
       // Otherwise, use default spacing
       else
       {
         spacingX = m_xSpacing;
-        startX = (float)(x - ((totalObjectWidth + (n+1)*spacingX)/2.0));
+        startX = (double)(x - ((totalObjectWidth + (n+1)*spacingX)/2.0));
       }
 
       // Check if within the constraining object...
       if ((totalObjectHeight + (n + 1)*m_ySpacing) <= minHeight)
       {
-        spacingY = (float)((minHeight - totalObjectHeight)/(n + 1));
-        startY = (float)(y - (minHeight/2.0));
+        spacingY = (double)((minHeight - totalObjectHeight)/(n + 1));
+        startY = (double)(y - (minHeight/2.0));
       }
       // Otherwise, use default spacing
       else
       {
         spacingY = m_ySpacing;
-        startY = (float)(y - ((totalObjectHeight + (n+1)*spacingY)/2.0));
+        startY = (double)(y - ((totalObjectHeight + (n+1)*spacingY)/2.0));
       }
 
       // Now position the objects
@@ -324,10 +322,10 @@ bool OGLConstraint::Evaluate()
       while (node)
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
-        startX += (float)(spacingX + (width2/2.0));
-        startY += (float)(spacingY + (height2/2.0));
+        startX += (double)(spacingX + (width2/2.0));
+        startY += (double)(spacingY + (height2/2.0));
 
         if ((!Equals(startX, constrainedObject->GetX())) || (!Equals(startY, constrainedObject->GetY())))
            {
@@ -335,8 +333,8 @@ bool OGLConstraint::Evaluate()
           changed = TRUE;
            }
 
-        startX += (float)(width2/2.0);
-        startY += (float)(height2/2.0);
+        startX += (double)(width2/2.0);
+        startY += (double)(height2/2.0);
 
         node = node->Next();
       }
@@ -351,10 +349,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float x3 = (float)(x - (minWidth/2.0) - (width2/2.0) - m_xSpacing);
+        double x3 = (double)(x - (minWidth/2.0) - (width2/2.0) - m_xSpacing);
         if (!Equals(x3, constrainedObject->GetX()))
            {
           changed = TRUE;
@@ -374,10 +372,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float x3 = (float)(x + (minWidth/2.0) + (width2/2.0) + m_xSpacing);
+        double x3 = (double)(x + (minWidth/2.0) + (width2/2.0) + m_xSpacing);
         if (!Equals(x3, constrainedObject->GetX()))
            {
           changed = TRUE;
@@ -399,10 +397,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float y3 = (float)(y - (minHeight/2.0) - (height2/2.0) - m_ySpacing);
+        double y3 = (double)(y - (minHeight/2.0) - (height2/2.0) - m_ySpacing);
         if (!Equals(y3, constrainedObject->GetY()))
            {
           changed = TRUE;
@@ -422,10 +420,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float y3 = (float)(y + (minHeight/2.0) + (height2/2.0) + m_ySpacing);
+        double y3 = (double)(y + (minHeight/2.0) + (height2/2.0) + m_ySpacing);
         if (!Equals(y3, constrainedObject->GetY()))
            {
           changed = TRUE;
@@ -445,10 +443,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float x3 = (float)(x - (minWidth/2.0) + (width2/2.0) + m_xSpacing);
+        double x3 = (double)(x - (minWidth/2.0) + (width2/2.0) + m_xSpacing);
         if (!Equals(x3, constrainedObject->GetX()))
            {
           changed = TRUE;
@@ -468,10 +466,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float x3 = (float)(x + (minWidth/2.0) - (width2/2.0) - m_xSpacing);
+        double x3 = (double)(x + (minWidth/2.0) - (width2/2.0) - m_xSpacing);
         if (!Equals(x3, constrainedObject->GetX()))
            {
           changed = TRUE;
@@ -493,10 +491,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float y3 = (float)(y - (minHeight/2.0) + (height2/2.0) + m_ySpacing);
+        double y3 = (double)(y - (minHeight/2.0) + (height2/2.0) + m_ySpacing);
         if (!Equals(y3, constrainedObject->GetY()))
            {
           changed = TRUE;
@@ -516,10 +514,10 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float width2, height2;
+        double width2, height2;
         constrainedObject->GetBoundingBoxMax(&width2, &height2);
 
-        float y3 = (float)(y + (minHeight/2.0) - (height2/2.0) - m_ySpacing);
+        double y3 = (double)(y + (minHeight/2.0) - (height2/2.0) - m_ySpacing);
         if (!Equals(y3, constrainedObject->GetY()))
            {
           changed = TRUE;
@@ -539,7 +537,7 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float x3 = (float)(x - (minWidth/2.0));
+        double x3 = (double)(x - (minWidth/2.0));
         if (!Equals(x3, constrainedObject->GetX()))
            {
           changed = TRUE;
@@ -559,7 +557,7 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float x3 = (float)(x + (minWidth/2.0));
+        double x3 = (double)(x + (minWidth/2.0));
         if (!Equals(x3, constrainedObject->GetX()))
            {
           changed = TRUE;
@@ -581,7 +579,7 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float y3 = (float)(y - (minHeight/2.0));
+        double y3 = (double)(y - (minHeight/2.0));
         if (!Equals(y3, constrainedObject->GetY()))
            {
           changed = TRUE;
@@ -601,7 +599,7 @@ bool OGLConstraint::Evaluate()
       {
         wxShape *constrainedObject = (wxShape *)node->Data();
 
-        float y3 = (float)(y + (minHeight/2.0));
+        double y3 = (double)(y + (minHeight/2.0));
         if (!Equals(y3, constrainedObject->GetY()))
            {
           changed = TRUE;