summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralberth <alberth@openttd.org>2010-05-16 19:17:02 +0000
committeralberth <alberth@openttd.org>2010-05-16 19:17:02 +0000
commit638cfe86e3c821ff4756b4b959b46ab19b55c451 (patch)
tree69cc0d8420c3360a46c9ee66082e717e1529481e
parentb3be440d78f155f6aa0d69cfe7824d65b1394381 (diff)
downloadopenttd-638cfe86e3c821ff4756b4b959b46ab19b55c451.tar.xz
(svn r19844) -Fix: Move NWidgetBase::StoreSizePosition() to an include file, and use proper inline macro.
-rw-r--r--src/widget.cpp30
-rw-r--r--src/widget_type.h33
2 files changed, 32 insertions, 31 deletions
diff --git a/src/widget.cpp b/src/widget.cpp
index 9a9c3094a..350dcde80 100644
--- a/src/widget.cpp
+++ b/src/widget.cpp
@@ -707,26 +707,6 @@ NWidgetBase::NWidgetBase(WidgetType tp) : ZeroedMemoryAllocator()
*/
/**
- * Store size and position.
- * @param sizing Type of resizing to perform.
- * @param x Horizontal offset of the widget relative to the left edge of the window.
- * @param y Vertical offset of the widget relative to the top edge of the window.
- * @param given_width Width allocated to the widget.
- * @param given_height Height allocated to the widget.
- */
-inline void NWidgetBase::StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height)
-{
- this->pos_x = x;
- this->pos_y = y;
- if (sizing == ST_SMALLEST) {
- this->smallest_x = given_width;
- this->smallest_y = given_height;
- }
- this->current_x = given_width;
- this->current_y = given_height;
-}
-
-/**
* @fn void NWidgetBase::Draw(const Window *w)
* Draw the widgets of the tree.
* The function calls #Window::DrawWidget for each widget with a non-negative index, after the widget itself is painted.
@@ -820,7 +800,7 @@ void NWidgetResizeBase::SetResize(uint resize_x, uint resize_y)
void NWidgetResizeBase::AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl)
{
- StoreSizePosition(sizing, x, y, given_width, given_height);
+ this->StoreSizePosition(sizing, x, y, given_width, given_height);
}
/**
@@ -1001,7 +981,7 @@ void NWidgetStacked::SetupSmallestSize(Window *w, bool init_array)
void NWidgetStacked::AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl)
{
assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
- StoreSizePosition(sizing, x, y, given_width, given_height);
+ this->StoreSizePosition(sizing, x, y, given_width, given_height);
if (this->shown_plane >= SZSP_BEGIN) return;
@@ -1177,7 +1157,7 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, uint x, uint y, ui
assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
uint additional_length = given_width - this->smallest_x; // Additional width given to us.
- StoreSizePosition(sizing, x, y, given_width, given_height);
+ this->StoreSizePosition(sizing, x, y, given_width, given_height);
/* In principle, the additional horizontal space is distributed evenly over the available resizable childs. Due to step sizes, this may not always be feasible.
* To make resizing work as good as possible, first childs with biggest step sizes are done. These may get less due to rounding down.
@@ -1329,7 +1309,7 @@ void NWidgetVertical::AssignSizePosition(SizingType sizing, uint x, uint y, uint
assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
int additional_length = given_height - this->smallest_y; // Additional height given to us.
- StoreSizePosition(sizing, x, y, given_width, given_height);
+ this->StoreSizePosition(sizing, x, y, given_width, given_height);
/* Like the horizontal container, the vertical container also distributes additional height evenly, starting with the childs with the biggest resize steps.
* It also stores computed widths and heights into current_x and current_y values of the child.
@@ -1528,7 +1508,7 @@ void NWidgetBackground::SetupSmallestSize(Window *w, bool init_array)
void NWidgetBackground::AssignSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height, bool rtl)
{
- StoreSizePosition(sizing, x, y, given_width, given_height);
+ this->StoreSizePosition(sizing, x, y, given_width, given_height);
if (this->child != NULL) {
uint x_offset = (rtl ? this->child->padding_right : this->child->padding_left);
diff --git a/src/widget_type.h b/src/widget_type.h
index 29cb13acd..fcb8aa4d0 100644
--- a/src/widget_type.h
+++ b/src/widget_type.h
@@ -137,7 +137,7 @@ public:
* @param bottom Amount of additional space below the widget.
* @param left Amount of additional space left of the widget.
*/
- inline void SetPadding(uint8 top, uint8 right, uint8 bottom, uint8 left)
+ FORCEINLINE void SetPadding(uint8 top, uint8 right, uint8 bottom, uint8 left)
{
this->padding_top = top;
this->padding_right = right;
@@ -145,8 +145,8 @@ public:
this->padding_left = left;
};
- inline uint GetHorizontalStepSize(SizingType sizing) const;
- inline uint GetVerticalStepSize(SizingType sizing) const;
+ FORCEINLINE uint GetHorizontalStepSize(SizingType sizing) const;
+ FORCEINLINE uint GetVerticalStepSize(SizingType sizing) const;
virtual void Draw(const Window *w) = 0;
virtual void SetDirty(const Window *w) const;
@@ -177,14 +177,14 @@ public:
uint8 padding_left; ///< Paddings added to the left of the widget. Managed by parent container widget.
protected:
- inline void StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height);
+ FORCEINLINE void StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height);
};
/**
* Get the horizontal sizing step.
* @param sizing Type of resize being performed.
*/
-inline uint NWidgetBase::GetHorizontalStepSize(SizingType sizing) const
+FORCEINLINE uint NWidgetBase::GetHorizontalStepSize(SizingType sizing) const
{
return (sizing == ST_RESIZE) ? this->resize_x : this->fill_x;
}
@@ -193,11 +193,32 @@ inline uint NWidgetBase::GetHorizontalStepSize(SizingType sizing) const
* Get the vertical sizing step.
* @param sizing Type of resize being performed.
*/
-inline uint NWidgetBase::GetVerticalStepSize(SizingType sizing) const
+FORCEINLINE uint NWidgetBase::GetVerticalStepSize(SizingType sizing) const
{
return (sizing == ST_RESIZE) ? this->resize_y : this->fill_y;
}
+/**
+ * Store size and position.
+ * @param sizing Type of resizing to perform.
+ * @param x Horizontal offset of the widget relative to the left edge of the window.
+ * @param y Vertical offset of the widget relative to the top edge of the window.
+ * @param given_width Width allocated to the widget.
+ * @param given_height Height allocated to the widget.
+ */
+FORCEINLINE void NWidgetBase::StoreSizePosition(SizingType sizing, uint x, uint y, uint given_width, uint given_height)
+{
+ this->pos_x = x;
+ this->pos_y = y;
+ if (sizing == ST_SMALLEST) {
+ this->smallest_x = given_width;
+ this->smallest_y = given_height;
+ }
+ this->current_x = given_width;
+ this->current_y = given_height;
+}
+
+
/** Base class for a resizable nested widget.
* @ingroup NestedWidgets */
class NWidgetResizeBase : public NWidgetBase {