mirror of https://github.com/OpenTTD/OpenTTD
(svn r19844) -Fix: Move NWidgetBase::StoreSizePosition() to an include file, and use proper inline macro.
parent
b3be440d78
commit
638cfe86e3
|
@ -706,26 +706,6 @@ NWidgetBase::NWidgetBase(WidgetType tp) : ZeroedMemoryAllocator()
|
||||||
* @param length Length of the array.
|
* @param length Length of the array.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
* 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)
|
* @fn void NWidgetBase::Draw(const Window *w)
|
||||||
* Draw the widgets of the tree.
|
* Draw the widgets of the tree.
|
||||||
|
@ -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)
|
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)
|
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);
|
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;
|
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);
|
assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
|
||||||
|
|
||||||
uint additional_length = given_width - this->smallest_x; // Additional width given to us.
|
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.
|
/* 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.
|
* 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);
|
assert(given_width >= this->smallest_x && given_height >= this->smallest_y);
|
||||||
|
|
||||||
int additional_length = given_height - this->smallest_y; // Additional height given to us.
|
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.
|
/* 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.
|
* 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)
|
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) {
|
if (this->child != NULL) {
|
||||||
uint x_offset = (rtl ? this->child->padding_right : this->child->padding_left);
|
uint x_offset = (rtl ? this->child->padding_right : this->child->padding_left);
|
||||||
|
|
|
@ -137,7 +137,7 @@ public:
|
||||||
* @param bottom Amount of additional space below the widget.
|
* @param bottom Amount of additional space below the widget.
|
||||||
* @param left Amount of additional space left of 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_top = top;
|
||||||
this->padding_right = right;
|
this->padding_right = right;
|
||||||
|
@ -145,8 +145,8 @@ public:
|
||||||
this->padding_left = left;
|
this->padding_left = left;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline uint GetHorizontalStepSize(SizingType sizing) const;
|
FORCEINLINE uint GetHorizontalStepSize(SizingType sizing) const;
|
||||||
inline uint GetVerticalStepSize(SizingType sizing) const;
|
FORCEINLINE uint GetVerticalStepSize(SizingType sizing) const;
|
||||||
|
|
||||||
virtual void Draw(const Window *w) = 0;
|
virtual void Draw(const Window *w) = 0;
|
||||||
virtual void SetDirty(const Window *w) const;
|
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.
|
uint8 padding_left; ///< Paddings added to the left of the widget. Managed by parent container widget.
|
||||||
|
|
||||||
protected:
|
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.
|
* Get the horizontal sizing step.
|
||||||
* @param sizing Type of resize being performed.
|
* @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;
|
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.
|
* Get the vertical sizing step.
|
||||||
* @param sizing Type of resize being performed.
|
* @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;
|
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.
|
/** Base class for a resizable nested widget.
|
||||||
* @ingroup NestedWidgets */
|
* @ingroup NestedWidgets */
|
||||||
class NWidgetResizeBase : public NWidgetBase {
|
class NWidgetResizeBase : public NWidgetBase {
|
||||||
|
|
Loading…
Reference in New Issue