changeset 15215:c68f3c67204d draft

(svn r19844) -Fix: Move NWidgetBase::StoreSizePosition() to an include file, and use proper inline macro.
author alberth <alberth@openttd.org>
date Sun, 16 May 2010 19:17:02 +0000
parents 238a73de7bcf
children 7be3e18b9c57
files src/widget.cpp src/widget_type.h
diffstat 2 files changed, 32 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/src/widget.cpp
+++ b/src/widget.cpp
@@ -707,26 +707,6 @@
  */
 
 /**
- * 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::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::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 @@
 	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 @@
 	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::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);
--- a/src/widget_type.h
+++ b/src/widget_type.h
@@ -137,7 +137,7 @@
 	 * @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 @@
 		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 @@
 	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 @@
  * 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 {