00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef INC_MI32_TRANSMOD_H
00023 #define INC_MI32_TRANSMOD_H
00024
00025 #ifndef INC_MI32_TRANS2DMODEL_H
00026 #include <mi32/trans2dmodel.h>
00027 #endif
00028
00029 class MISTRING;
00030
00031
00034 class TRANSMODEL {
00035 public:
00036
00037 enum FLAGS {
00038 FLAGS_None = 0,
00039 FLAGS_OrientInvert = TRANS2DMODEL_OrientInvert,
00040 FLAGS_Piecewise = TRANS2DMODEL_Piecewise,
00041 FLAGS_3D = TRANS2DMODEL_3D
00042 };
00043
00045 enum TYPE {
00046 TYPE_None = 0,
00047 TYPE_Affine = 1,
00048 TYPE_PlaneProj,
00049 TYPE_Bilinear,
00050 TYPE_Polynomial,
00051 TYPE_Quintic,
00052 TYPE_SpaceResect,
00053 TYPE_Conformal,
00054 TYPE_RubberSheet,
00055 TYPE_RationalPolynomial
00056 };
00057
00059 TRANSMODEL (
00060 ):
00061 m_Order(0),
00062 m_Flags(FLAGS_None),
00063 m_Type(TYPE_None)
00064 { }
00065
00067 TRANSMODEL (
00068 TRANS2DMODEL model
00069 ) { SetModel(model); }
00070
00072 TRANSMODEL (
00073 UINT16 model
00074 ) { SetModel(model); }
00075
00077 TRANSMODEL (
00078 TYPE dfttype
00079 ) :
00080 m_Order(0),
00081 m_Flags(FLAGS_None),
00082 m_Type(dfttype)
00083 { }
00084
00087 FLAGS GetFlags (
00088 ) const { return (m_Flags); }
00089
00092 TRANS2DMODEL GetModel () const
00093 { return (static_cast<TRANS2DMODEL>(m_Flags | (m_Type << 8) | m_Order)); }
00094
00096 void GetName (
00097 MISTRING& name
00098 ) const;
00099
00102 UINT16 GetOrder (
00103 ) const { return (m_Order); }
00104
00107 TYPE GetType (
00108 ) const { return (m_Type); }
00109
00112 bool Is3D (
00113 ) const { return ((m_Flags & FLAGS_3D) != 0); }
00114
00117 bool IsOrientInvert (
00118 ) const { return ((m_Flags & FLAGS_OrientInvert) != 0); }
00119
00122 bool IsPiecewise (
00123 ) const { return ((m_Flags & FLAGS_Piecewise) != 0); }
00124
00126 void SetModel (
00127 TRANS2DMODEL model
00128 ) {
00129 m_Order = static_cast<UINT16>(model & 0x00FF),
00130 m_Flags = static_cast<FLAGS>(model & 0xF000);
00131 m_Type = static_cast<TYPE>((model & 0xF00) >> 8);
00132 }
00133
00135 void SetModel (
00136 UINT16 model
00137 ) { SetModel(static_cast<TRANS2DMODEL>(model)); }
00138
00140 void SetFlags (
00141 FLAGS flags
00142 ) { m_Flags = flags; }
00143
00145 void SetOrder (
00146 UINT16 order
00147 ) { m_Order = order; }
00148
00150 void SetType (
00151 TYPE type
00152 ) { m_Type = type; }
00153
00154 private:
00155 #ifndef GENERATING_DOXYGEN_OUTPUT
00156 FLAGS m_Flags;
00157 TYPE m_Type;
00158 UINT16 m_Order;
00159 #endif // GENERATING_DOXYGEN_OUTPUT
00160 };
00161
00162 #ifndef GENERATING_DOXYGEN_OUTPUT
00163 DEFINE_ENUM_OP_BITWISE(TRANSMODEL::FLAGS);
00164 #endif
00165
00166 #endif // INC_MI32_TRANSMOD_H