00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "xrb_sizeproperties.hpp"
00012
00013 namespace Xrb
00014 {
00015
00016 SizeProperties::SizeProperties ()
00017 :
00018 m_min_size_enabled(false, false),
00019 m_min_size(DefaultMinSizeComponent(), DefaultMinSizeComponent()),
00020 m_max_size_enabled(false, false),
00021 m_max_size(DefaultMaxSizeComponent(), DefaultMaxSizeComponent())
00022 {
00023 m_data = NULL;
00024 }
00025
00026 ScreenCoord SizeProperties::AdjustedSizeComponent (
00027 Uint32 const index,
00028 ScreenCoord component) const
00029 {
00030 ASSERT1(index <= 1);
00031 if (m_max_size_enabled.m[index] && component > m_max_size.m[index])
00032 component = m_max_size.m[index];
00033
00034 if (m_min_size_enabled.m[index] && component < m_min_size.m[index])
00035 component = m_min_size.m[index];
00036 return component;
00037 }
00038
00039 ScreenCoordVector2 SizeProperties::AdjustedSize (
00040 ScreenCoordVector2 const &size) const
00041 {
00042 return ScreenCoordVector2(
00043 AdjustedSizeComponent(Dim::X, size[Dim::X]),
00044 AdjustedSizeComponent(Dim::Y, size[Dim::Y]));
00045 }
00046
00047 void SizeProperties::AdjustSizeComponent (
00048 Uint32 const index,
00049 ScreenCoord *const component) const
00050 {
00051 ASSERT1(index <= 1);
00052 ASSERT1(component != NULL);
00053 if (m_max_size_enabled[index] && *component > m_max_size[index])
00054 *component = m_max_size[index];
00055
00056 if (m_min_size_enabled[index] && *component < m_min_size[index])
00057 *component = m_min_size[index];
00058 }
00059
00060 void SizeProperties::AdjustSize (ScreenCoordVector2 *const size) const
00061 {
00062 ASSERT1(size != NULL);
00063 AdjustSizeComponent(Dim::X, &size->m[Dim::X]);
00064 AdjustSizeComponent(Dim::Y, &size->m[Dim::Y]);
00065 }
00066
00067 }