Browse Source

renames for clarity: relativeToYL changed to aspectLeft ect. also by request, vertsizing options for down the line when mobile is supported..

Azaezel 10 years ago
parent
commit
138d34e31c
2 changed files with 45 additions and 9 deletions
  1. 39 6
      Engine/source/gui/core/guiControl.cpp
  2. 6 3
      Engine/source/gui/core/guiControl.h

+ 39 - 6
Engine/source/gui/core/guiControl.cpp

@@ -175,9 +175,9 @@ ImplementEnumType( GuiHorizontalSizing,
 	{ GuiControl::horizResizeLeft,            "left"      },
 	{ GuiControl::horizResizeLeft,            "left"      },
    { GuiControl::horizResizeCenter,          "center"    },
    { GuiControl::horizResizeCenter,          "center"    },
    { GuiControl::horizResizeRelative,        "relative"  },
    { GuiControl::horizResizeRelative,        "relative"  },
-   { GuiControl::horizResizeRelativeToYL,     "relativeToYL" },
-   { GuiControl::horizResizeRelativeToYR,     "relativeToYR" },
-   { GuiControl::horizResizeRelativeToYC,     "relativeToYC" },
+   { GuiControl::horizResizeAspectLeft,      "aspectLeft" },
+   { GuiControl::horizResizeAspectRight,     "aspectRight" },
+   { GuiControl::horizResizeAspectCenter,    "aspectCenter" },
 	{ GuiControl::horizResizeWindowRelative,  "windowRelative"  }
 	{ GuiControl::horizResizeWindowRelative,  "windowRelative"  }
 EndImplementEnumType;
 EndImplementEnumType;
 
 
@@ -189,6 +189,9 @@ ImplementEnumType( GuiVerticalSizing,
 	{ GuiControl::vertResizeTop,              "top"        },
 	{ GuiControl::vertResizeTop,              "top"        },
    { GuiControl::vertResizeCenter,           "center"     },
    { GuiControl::vertResizeCenter,           "center"     },
    { GuiControl::vertResizeRelative,         "relative"   },
    { GuiControl::vertResizeRelative,         "relative"   },
+   { GuiControl::vertResizeAspectTop,        "aspectTop"  },
+   { GuiControl::vertResizeAspectBottom,     "aspectBottom" },
+   { GuiControl::vertResizeAspectCenter,     "aspectCenter" },
 	{ GuiControl::vertResizeWindowRelative,   "windowRelative"   }
 	{ GuiControl::vertResizeWindowRelative,   "windowRelative"   }
 EndImplementEnumType;
 EndImplementEnumType;
 
 
@@ -1369,7 +1372,7 @@ void GuiControl::parentResized(const RectI &oldParentRect, const RectI &newParen
       newPosition.x = newLeft;
       newPosition.x = newLeft;
       newExtent.x = newWidth;
       newExtent.x = newWidth;
    }
    }
-   else if (mHorizSizing == horizResizeRelativeToYL && oldParentRect.extent.x != 0)
+   else if (mHorizSizing == horizResizeAspectLeft && oldParentRect.extent.x != 0)
    {
    {
       S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
       S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
       S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y));
       S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y));
@@ -1377,7 +1380,7 @@ void GuiControl::parentResized(const RectI &oldParentRect, const RectI &newParen
       newPosition.x = newLeft;
       newPosition.x = newLeft;
       newExtent.x = newWidth;
       newExtent.x = newWidth;
    }
    }
-   else if (mHorizSizing == horizResizeRelativeToYR && oldParentRect.extent.x != 0)
+   else if (mHorizSizing == horizResizeAspectRight && oldParentRect.extent.x != 0)
    {
    {
       S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
       S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
       S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //origional aspect ratio corrected width
       S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //origional aspect ratio corrected width
@@ -1388,7 +1391,7 @@ void GuiControl::parentResized(const RectI &oldParentRect, const RectI &newParen
       newPosition.x = newLeft;
       newPosition.x = newLeft;
       newExtent.x = newWidth;
       newExtent.x = newWidth;
    }
    }
-   else if (mHorizSizing == horizResizeRelativeToYC && oldParentRect.extent.x != 0)
+   else if (mHorizSizing == horizResizeAspectCenter && oldParentRect.extent.x != 0)
    {
    {
       S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
       S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
       S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //origional aspect ratio corrected width
       S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //origional aspect ratio corrected width
@@ -1414,6 +1417,36 @@ void GuiControl::parentResized(const RectI &oldParentRect, const RectI &newParen
       newPosition.y = newTop;
       newPosition.y = newTop;
       newExtent.y = newHeight;
       newExtent.y = newHeight;
    }
    }
+   else if (mVertSizing == vertResizeAspectTop && oldParentRect.extent.y != 0)
+   {
+      S32 newTop = mRoundToNearest((F32(newPosition.y) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y));
+      S32 newHeight = mRoundToNearest((F32(newExtent.y) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
+
+      newPosition.y = newTop;
+      newExtent.y = newHeight;
+   }
+   else if (mVertSizing == vertResizeAspectBottom && oldParentRect.extent.y != 0)
+   {
+      S32 newTop = mRoundToNearest((F32(newPosition.y) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y));
+      S32 newHeight = mRoundToNearest((F32(newExtent.y) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x)); //origional aspect ratio corrected hieght
+      S32 rHeight = mRoundToNearest((F32(newExtent.y) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //parent aspect ratio relative hieght
+
+      S32 offset = rHeight - newHeight; // account for change in relative hieght
+      newTop += offset;
+      newPosition.y = newTop;
+      newExtent.y = newHeight;
+   }
+   else if (mVertSizing == vertResizeAspectCenter && oldParentRect.extent.y != 0)
+   {
+      S32 newTop = mRoundToNearest((F32(newPosition.y) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y));
+      S32 newHeight = mRoundToNearest((F32(newExtent.y) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x)); //origional aspect ratio corrected hieght
+      S32 rHeight = mRoundToNearest((F32(newExtent.y) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //parent aspect ratio relative hieght
+
+      S32 offset = rHeight - newHeight; // account for change in relative hieght
+      newTop += offset / 2;
+      newPosition.y = newTop;
+      newExtent.y = newHeight;
+   }
 
 
    // Resizing Re factor [9/18/2006]
    // Resizing Re factor [9/18/2006]
    // Only resize if our minExtent is satisfied with it.
    // Only resize if our minExtent is satisfied with it.

+ 6 - 3
Engine/source/gui/core/guiControl.h

@@ -121,9 +121,9 @@ class GuiControl : public SimGroup
          horizResizeLeft,        ///< fixed on the right and width
          horizResizeLeft,        ///< fixed on the right and width
          horizResizeCenter,
          horizResizeCenter,
          horizResizeRelative,     ///< resize relative
          horizResizeRelative,     ///< resize relative
-         horizResizeRelativeToYL,     ///< resize relative to hieght delta (offset Left)
-         horizResizeRelativeToYR,     ///< resize relative to hieght delta (offset Right)
-         horizResizeRelativeToYC,     ///< resize relative to hieght delta (offset Right)
+         horizResizeAspectLeft,    ///< resize relative to hieght delta (offset Left)
+         horizResizeAspectRight,   ///< resize relative to hieght delta (offset Right)
+         horizResizeAspectCenter,  ///< resize relative to hieght delta (Centered)
          horizResizeWindowRelative ///< resize window relative
          horizResizeWindowRelative ///< resize window relative
       };
       };
       enum vertSizingOptions
       enum vertSizingOptions
@@ -133,6 +133,9 @@ class GuiControl : public SimGroup
          vertResizeTop,          ///< fixed in height and on the bottom
          vertResizeTop,          ///< fixed in height and on the bottom
          vertResizeCenter,
          vertResizeCenter,
          vertResizeRelative,      ///< resize relative
          vertResizeRelative,      ///< resize relative
+         vertResizeAspectTop,     ///< resize relative to width delta (offset Left)
+         vertResizeAspectBottom,  ///< resize relative to width delta (offset Right)
+         vertResizeAspectCenter,  ///< resize relative to width delta Centered)
          vertResizeWindowRelative ///< resize window relative
          vertResizeWindowRelative ///< resize window relative
       };
       };