00001
00024 #ifndef INC_RVC_OPVIEWSHED_H
00025 #define INC_RVC_OPVIEWSHED_H
00026
00027 #ifndef INC_MI32_POINT_H
00028 #include <mi32/point.h>
00029 #endif
00030
00031 #ifndef INC_MI32_DOUBLEAR_H
00032 #include <mi32/doublear.h>
00033 #endif
00034
00035 #ifndef INC_MEMORY_H
00036 #define INC_MEMORY_H
00037 #include <memory.h>
00038 #endif
00039
00040
00041 #ifndef GENERATING_DOXYGEN_OUTPUT
00042 namespace RVC {
00043 class OBJITEM;
00044 }
00045 #endif
00046
00047
00048 namespace RVC {
00049 namespace OP {
00050
00052 class VIEWSHED {
00053 public:
00054 enum FLAGS {
00055 FLAG_None = 0x0000,
00056 FLAG_EarthCurvature = 0x0001,
00057 FLAG_InvertTransparency = 0x0002
00058 };
00059
00060 struct VIEWPOINTINFO {
00061 DPOINT3D m_Point;
00062 double m_Height;
00063 double m_Distance;
00064 DRANGE m_HrzAngle;
00065 DRANGE m_VrtAngle;
00066 VIEWPOINTINFO (
00067 ) { memset(this, 0, sizeof(*this)); }
00068 };
00069
00070 VIEWSHED () { }
00071
00072 static ERRVALUE Compute (
00073 const RVC::OBJITEM& SrcItem,
00074 RVC::OBJITEM& DestItem,
00075 DOUBLE_ARRAY<RVC::OP::VIEWSHED::VIEWPOINTINFO>& ViewpointInfo,
00076 double zscale,
00077 UINT8 enviewpts,
00078 FLAGS flags = FLAG_None
00079 );
00080
00081 static ERRVALUE Compute (
00082 const RVC::OBJITEM& SrcItem,
00083 RVC::OBJITEM& DestItem,
00084 const LPOINT2D *viewpts,
00085 double height,
00086 double zscale,
00087 UINT8 numviewpts,
00088 UINT8 enviewpts,
00089 double maxdistance,
00090 DRANGE hrzAngle,
00091 DRANGE vrtAngle,
00092 FLAGS flags = FLAG_None
00093 );
00094 };
00095
00096 #ifndef GENERATING_DOXYGEN_OUTPUT
00097 DEFINE_ENUM_OP_BITWISE(OP::VIEWSHED::FLAGS)
00098 #endif
00099
00100 }
00101 }
00102
00103 #endif // INC_RVC_OPVIEWSHED_H