00001
00017 #ifndef INC_RVC_OPPROFILING_H
00018 #define INC_RVC_OPPROFILING_H
00019
00020 #ifndef INC_POLYLINE_H
00021 #include <mi32/polyline.h>
00022 #endif
00023
00024 #ifndef INC_ELEMSTYL_H
00025 #include <mi32/elemstyl.h>
00026 #endif
00027
00028 namespace RVC {
00029
00030 #ifndef GENERATING_DOXYGEN_OUTPUT
00031 class OBJITEM;
00032 #endif // GENERATING_DOXYGEN_OUTPUT
00033
00034 namespace OP {
00035
00037 class PROFILING {
00038 public:
00039
00040 enum METHOD {
00041 METHOD_Invalid = -1,
00042 METHOD_First = 0,
00043 METHOD_StackProfiles = 0,
00044 METHOD_Last = 0,
00045 METHOD_Count = 1
00046 };
00047
00049 class DESTINATION_PARAMETERS {
00050 public:
00051 POLYSTYLE m_PolygonStyle;
00052 LINESTYLE m_LineStyle;
00053 };
00054
00056 class METHOD_PARAMETERS {
00057 public:
00058
00059 METHOD_PARAMETERS (
00060 const METHOD method
00061 ) : m_Method(Check(method)) {}
00062 virtual ~METHOD_PARAMETERS (
00063 ) {}
00064
00066 METHOD GetMethod (
00067 ) const { return m_Method; };
00068
00069 private:
00070
00071 #ifndef GENERATING_DOXYGEN_OUTPUT
00072
00073 const METHOD m_Method;
00074
00075 METHOD_PARAMETERS ();
00076
00077 static METHOD Check (
00078 const METHOD method
00079 ) {
00080 if (method < METHOD_First) return METHOD_Invalid;
00081 if (method > METHOD_Last) return METHOD_Invalid;
00082 return method;
00083 }
00084
00085 #endif // GENERATING_DOXYGEN_OUTPUT
00086
00087 };
00088
00103 class STACKPROFILES_PARAMETERS : public METHOD_PARAMETERS {
00104 public:
00105
00106 STACKPROFILES_PARAMETERS (
00107 ) :
00108 METHOD_PARAMETERS(METHOD_StackProfiles),
00109 m_DistanceAcross(12),
00110 m_DistanceAlong(4),
00111 m_MaximumAmplitude(32),
00112 m_RotationAngle(0.0),
00113 m_SplineType(POLYLINE::SPLINE_NoSpline),
00114 m_ShowBaselines(false),
00115 m_ShowAreaAbove(false)
00116 {}
00117
00118 ~STACKPROFILES_PARAMETERS () {}
00119
00121 INT32 GetDistanceAcross (
00122 ) const { return m_DistanceAcross; }
00123
00125 INT32 GetDistanceAlong (
00126 ) const { return m_DistanceAlong; }
00127
00129 INT32 GetMaximumAmplitude (
00130 ) const { return m_MaximumAmplitude; }
00131
00133 double GetRotationAngle (
00134 ) const { return m_RotationAngle; }
00135
00137 bool GetShowAreaAbove (
00138 ) const { return m_ShowAreaAbove; }
00139
00141 bool GetShowBaselines (
00142 ) const {return m_ShowBaselines; }
00143
00144 POLYLINE::SPLINE GetSplineType (
00145 ) const {return m_SplineType; }
00146
00148 INT32 SetDistanceAcross (
00149 const INT32 distance
00150 ) { m_DistanceAcross = bound(distance, 1, 8192); return m_DistanceAcross; }
00151
00153 INT32 SetDistanceAlong (
00154 const INT32 distance
00155 ) { m_DistanceAlong = bound(distance, 1, 8192); return m_DistanceAlong; }
00156
00158 INT32 SetMaximumAmplitude (
00159 const INT32 amplitude
00160 ) { m_MaximumAmplitude = bound(amplitude, 1, 8192); return m_MaximumAmplitude; }
00161
00163 double SetRotationAngle (
00164 const double angle
00165 ) { m_RotationAngle = bound(angle, -90.0, 90.0); return m_RotationAngle; }
00166
00168 void SetShowAreaAbove (
00169 const bool show
00170 ) { m_ShowAreaAbove = show; }
00171
00173 void SetShowBaselines (
00174 const bool show
00175 ) { m_ShowBaselines = show; }
00176
00178 void SetSplineType (
00179 const POLYLINE::SPLINE spline
00180 ) { m_SplineType = spline; }
00181
00182 private:
00183
00184 #ifndef GENERATING_DOXYGEN_OUTPUT
00185
00186 INT32 m_DistanceAcross;
00187 INT32 m_DistanceAlong;
00188 INT32 m_MaximumAmplitude;
00189 double m_RotationAngle;
00190
00191 POLYLINE::SPLINE m_SplineType;
00192
00193 bool m_ShowBaselines;
00194 bool m_ShowAreaAbove;
00195
00196 #endif // GENERATING_DOXYGEN_OUTPUT
00197
00198 };
00199
00201 static ERRVALUE Process (
00202 const RVC::OBJITEM& SrcObjItem,
00203 RVC::OBJITEM& DestObjItem,
00204 const METHOD_PARAMETERS* MethodParameters,
00205 const DESTINATION_PARAMETERS& DestParameters
00206 );
00207
00209 static ERRVALUE ProcessStackProfiles (
00210 const RVC::OBJITEM& SrcObjItem,
00211 RVC::OBJITEM& DestObjItem,
00212 const STACKPROFILES_PARAMETERS& MethodParameters,
00213 const DESTINATION_PARAMETERS& DestParameters
00214 );
00215
00216 };
00217
00218 }
00219 }
00220
00221
00222 #endif // INC_RVC_OPPROFILING_H