KDChartPosition.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <KDChartPosition.h>
00024 #include <KDChartEnums.h>
00025
00026 #include <QString>
00027 #include <QStringList>
00028 #include <QList>
00029 #include <QByteArray>
00030
00031 #include <KDABLibFakes>
00032
00033 #include <cassert>
00034
00035 using namespace KDChart;
00036
00037 namespace {
00042 static const char * staticPositionNames[] = {
00043 QT_TRANSLATE_NOOP("Position","Unknown Position"),
00044 QT_TRANSLATE_NOOP("Position","Center"),
00045 QT_TRANSLATE_NOOP("Position","NorthWest"),
00046 QT_TRANSLATE_NOOP("Position","North"),
00047 QT_TRANSLATE_NOOP("Position","NorthEast"),
00048 QT_TRANSLATE_NOOP("Position","East"),
00049 QT_TRANSLATE_NOOP("Position","SouthEast"),
00050 QT_TRANSLATE_NOOP("Position","South"),
00051 QT_TRANSLATE_NOOP("Position","SouthWest"),
00052 QT_TRANSLATE_NOOP("Position","West"),
00053 QT_TRANSLATE_NOOP("Position","Floating")
00054 };
00055
00056
00061 static Position staticPositionUnknown = Position( KDChartEnums::PositionUnknown );
00062 static Position staticPositionCenter = Position( KDChartEnums::PositionCenter );
00063 static Position staticPositionNorthWest = Position( KDChartEnums::PositionNorthWest );
00064 static Position staticPositionNorth = Position( KDChartEnums::PositionNorth );
00065 static Position staticPositionNorthEast = Position( KDChartEnums::PositionNorthEast );
00066 static Position staticPositionEast = Position( KDChartEnums::PositionEast );
00067 static Position staticPositionSouthEast = Position( KDChartEnums::PositionSouthEast );
00068 static Position staticPositionSouth = Position( KDChartEnums::PositionSouth );
00069 static Position staticPositionSouthWest = Position( KDChartEnums::PositionSouthWest );
00070 static Position staticPositionWest = Position( KDChartEnums::PositionWest );
00071 static Position staticPositionFloating = Position( KDChartEnums::PositionFloating );
00072
00073 static int maxPositionValue = 10;
00074
00075 }
00076
00077 const Position& Position::Unknown = staticPositionUnknown;
00078 const Position& Position::Center = staticPositionCenter;
00079 const Position& Position::NorthWest = staticPositionNorthWest;
00080 const Position& Position::North = staticPositionNorth;
00081 const Position& Position::NorthEast = staticPositionNorthEast;
00082 const Position& Position::East = staticPositionEast;
00083 const Position& Position::SouthEast = staticPositionSouthEast;
00084 const Position& Position::South = staticPositionSouth;
00085 const Position& Position::SouthWest = staticPositionSouthWest;
00086 const Position& Position::West = staticPositionWest;
00087 const Position& Position::Floating = staticPositionFloating;
00088
00089
00093 Position::Position()
00094 : m_value( KDChartEnums::PositionUnknown )
00095 {
00096
00097 }
00098
00099 Position::Position( int value )
00100 : m_value( value )
00101 {
00102 assert( 0 <= value ); assert( value <= maxPositionValue );
00103 }
00104
00117 Position::Position( KDChartEnums::PositionValue value )
00118 : m_value( value )
00119 {
00120
00121 }
00122
00126 KDChartEnums::PositionValue Position::value() const
00127 {
00128 return static_cast<KDChartEnums::PositionValue>( m_value );
00129 }
00130
00131 bool Position::isUnknown() const
00132 {
00133 return m_value == Position::Unknown.value();
00134 }
00135
00136 bool Position::isWestSide() const
00137 {
00138 return m_value == Position::SouthWest.value() ||
00139 m_value == Position::West.value() ||
00140 m_value == Position::NorthWest.value();
00141 }
00142 bool Position::isNorthSide() const
00143 {
00144 return m_value == Position::NorthWest.value() ||
00145 m_value == Position::North.value() ||
00146 m_value == Position::NorthEast.value();
00147 }
00148 bool Position::isEastSide() const
00149 {
00150 return m_value == Position::NorthEast.value() ||
00151 m_value == Position::East.value() ||
00152 m_value == Position::SouthEast.value();
00153 }
00154 bool Position::isSouthSide() const
00155 {
00156 return m_value == Position::SouthWest.value() ||
00157 m_value == Position::South.value() ||
00158 m_value == Position::SouthEast.value();
00159 }
00160
00161 bool Position::isCorner() const
00162 {
00163 return m_value == Position::NorthWest.value() ||
00164 m_value == Position::NorthEast.value() ||
00165 m_value == Position::SouthEast.value() ||
00166 m_value == Position::SouthWest.value();
00167 }
00168 bool Position::isPole() const
00169 {
00170 return m_value == Position::North.value() ||
00171 m_value == Position::South.value();
00172 }
00173
00174 bool Position::isFloating() const
00175 {
00176 return m_value == Position::Floating.value();
00177 }
00178
00182 const char * Position::name() const
00183 {
00184 return staticPositionNames[m_value];
00185 }
00186
00190 QString Position::printableName() const
00191 {
00192 return tr(staticPositionNames[m_value]);
00193 }
00194
00195
00203 QList<QByteArray> Position::names( Options options )
00204 {
00205 QList<QByteArray> list;
00206 const int start = ( options & IncludeCenter ) ? 1 : 2;
00207 const int end = ( options & IncludeFloating ) ? maxPositionValue : maxPositionValue-1;
00208 for( int i=start; i<=end; ++i)
00209 list.append( staticPositionNames[i] );
00210 return list;
00211 }
00212
00220 QStringList Position::printableNames( Options options )
00221 {
00222 QStringList list;
00223 const int start = ( options & IncludeCenter ) ? 1 : 2;
00224 const int end = ( options & IncludeFloating ) ? maxPositionValue : maxPositionValue-1;
00225 for( int i=start; i<=end; ++i)
00226 list.append( Position(i).printableName() );
00227 return list;
00228 }
00229
00230 Position Position::fromName(const char * name)
00231 {
00232 for( int i=1; i<=maxPositionValue; ++i)
00233 if ( !qstricmp( name, staticPositionNames[i] ) )
00234 return Position(i);
00235 return Position(0);
00236 }
00237
00238 Position Position::fromName( const QByteArray & name ) {
00239 return fromName( name.data() );
00240 }
00241
00242 bool Position::operator==( const Position& r ) const
00243 {
00244 return ( value() == r.value() );
00245 }
00246
00247
00248 bool Position::operator==( int value_ ) const
00249 {
00250 return ( value() == value_ );
00251 }
00252
00253
00254 #if !defined(QT_NO_DEBUG_STREAM)
00255 QDebug operator<<(QDebug dbg, const KDChart::Position& p )
00256 {
00257 dbg << "KDChart::Position("
00258 << p.name() << ")";
00259 return dbg;
00260 }
00261 #endif