00001
00011 #ifndef __TVU_GEOMV_OBJECTS_H__
00012 #define __TVU_GEOMV_OBJECTS_H__
00013
00014 #ifndef __TVU_TYPESDEF_H__
00015 #include "tvu_typesdef.h"
00016 #endif
00017
00018 #ifndef __TVU_VISU3D_APPLICATION_H__
00019 #include "tvu_visu3d.application.h"
00020 #endif
00021
00022
00023 struct scene_model;
00024
00025
00028 #define WLD_ONAME_PLANE "wdef_plane"
00029 #define WLD_ONAME_AREA "wdef_area"
00030 #define WLD_ONAME_AOI "wdef_aoi"
00031 #define WLD_ONAME_ZONE "wdef_zone"
00032 #define WLD_ONAME_OBJECT "wdef_object"
00033 #define WLD_ONAME_EXPECTEDOBJECT "wdef_expected_object"
00034 #define WLD_ONAME_MOBILEOBJECT "wdef_mobile_object"
00035 #define WLD_ONAME_BLOB "wdef_blob"
00036 #define WLD_ONAME_INDIVIDUAL "wdef_individual"
00037 #define WLD_ONAME_GROUP "wdef_group"
00038 #define WLD_ONAME_CAMERA "wdef_camera"
00039 #define WLD_ONAME_PERSON "wdef_person"
00040 #define WLD_ONAME_WALL "wdef_wall"
00041
00042 #define WLD_ONAME_GROUP_DESCRIPTOR "wdef_group_descriptor"
00043
00044 #define WLD_ONAME_INDIVIDUAL_DESCRIPTOR "wdef_individual_descriptor"
00047 #define WLD_TRACK "track"
00048 #define WLD_WALL "wall"
00049 #define WLD_ZONE "zone"
00050
00052 #define CLASSNAME_GEOM_OBJECT_ID 10200
00053 #define CLASSNAME_GEOM_OBJECT "GeomvObject"
00054 #define CLASSNAME_GEOM_CAMERA_ID 10201
00055 #define CLASSNAME_GEOM_CAMERA "Camera"
00056 #define CLASSNAME_GEOM_POLYGON_ID 10202
00057 #define CLASSNAME_GEOM_POLYGON "Polygon"
00058 #define CLASSNAME_GEOM_ZONE_ID 10203
00059 #define CLASSNAME_GEOM_ZONE "WLDZone"
00060 #define CLASSNAME_GEOM_WLDOBJECT_ID 10204
00061 #define CLASSNAME_GEOM_WLDOBJECT "WLD3DObject"
00062 #define CLASSNAME_GEOM_MOBILEOBJECT_ID 10205
00063 #define CLASSNAME_GEOM_MOBILEOBJECT "GeomvMobileObject"
00064 #define CLASSNAME_GEOM_PERSON_ID 10206
00065 #define CLASSNAME_GEOM_PERSON "GeomvPerson"
00066 #define CLASSNAME_GEOM_WALL_ID 10207
00067 #define CLASSNAME_GEOM_WALL "Wall"
00068 #define CLASSNAME_GEOM_PERSONPIPE_ID 10208
00069 #define CLASSNAME_GEOM_PERSONPIPE "PersonPipe"
00070
00072 #define ENAME_GEOM_RGB "color"
00073 #define ENAME_GEOM_STATE "state"
00074 #define ENAME_GEOM_POSITION "position"
00075 #define ENAME_GEOM_DIRECTION "direction"
00076 #define ENAME_GEOM_FOV "fov"
00077 #define ENAME_GEOM_BKGCOLOR "bkg_color"
00078 #define ENAME_GEOM_SZWINDOW "win_size"
00079 #define ENAME_GEOM_CAMERAFILE "file_name"
00080 #define ENAME_GEOM_CHILDREN "children"
00081 #define ENAME_GEOM_SIBLINGS "siblings"
00082 #define ENAME_GEOM_POLYGON "vertices"
00083 #define ENAME_GEOM_HEIGHT "height"
00084 #define ENAME_GEOM_START_POINT "start_point"
00085 #define ENAME_GEOM_STOP_POINT "stop_point"
00086
00087 #define OTYPE_GEOM_ZONE 10200
00088 #define OTYPE_GEOM_ZONE_STR "Zone"
00089 #define OTYPE_GEOM_EQUIPMENT 10201
00090 #define OTYPE_GEOM_EQUIPMENT_STR "Equipment"
00091 #define OTYPE_GEOM_WALL 10202
00092 #define OTYPE_GEOM_WALL_STR "Wall"
00093
00094 #define GEOM_REGISTER_ATTRIBUTE_CONSTRUCTOR(NameItem, class) \
00095 REGISTER_ATTRIBUTE_CONSTRUCTOR(CGeomvObject::m_ItemConstructors, NameItem, class)
00096
00098 class CGeomvObject : public CTObject
00099 {
00100 public:
00102 CGeomvObject();
00103 virtual ~CGeomvObject()
00104 { DELETE_OBJECT(m_Children); DELETE_OBJECT(m_Siblings); };
00106 DEFINE_ID_FUNCTIONS(CGeomvObject, CTObject, CLASSNAME_GEOM_OBJECT_ID, CLASSNAME_GEOM_OBJECT)
00107 public:
00108 virtual TBOOL OnPreLoad(LPTBYTE* lpBuffers);
00109 virtual TBOOL OnPostLoad(LPTBYTE* lpBuffers);
00110 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00111 virtual TBOOL OnPreSave(LPCTFile pFile);
00112 virtual TBOOL OnPostSave(LPCTFile pFile);
00113 public:
00114 #ifdef VSIS
00115
00116 virtual TBOOL FromStruct( int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL) { return TTRUE; };
00118 #ifdef VSIS_DISPLAY
00119 virtual TBOOL DisplayOnVSIS(struct scene_model *pTp_sm_node) { return TTRUE; };
00120 #endif // VSIS_DISPLAY
00121
00122 virtual TBOOL FC_FromStruct(void* lpStruct, TLPCSTR lpObjectType = TNULL) { return TTRUE; };
00123 virtual TBOOL MM_FromStruct(void* lpBlob, TLPCSTR lpObjectType = TNULL, int r=0, int g=0, int b=0) { return TTRUE; };
00124 virtual TBOOL MM_FromStruct2(int H3d, int x, int y, int z, int r, int g, int b) { return TTRUE; };
00126 #endif // VSIS
00129 virtual TBOOL Display(FILE* lpDevice = TNULL) { return TTRUE; };
00130
00131 virtual void Project(CTPoint3D& NewPosition, double Rotate = 0.) {};
00133 virtual void Delete(){};
00134 public:
00136 virtual CGeomvObject& operator = (CGeomvObject& obj)
00137 { m_RGB = obj.m_RGB; *m_Children = *obj.m_Children; *m_Siblings = *obj.m_Siblings; SetName(obj.GetName()); m_State.m_i = obj.m_State.m_i; return *this; };
00140 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00141 public:
00143 virtual CTList GetSons() { return m_Children; };
00144 virtual CTList GetBrothers() { return m_Siblings; };
00145 virtual LPCTRGB GetRGB() { return &m_RGB; };
00147 void SetColor(CTRGB& RGBColor) { SetColor(RGBColor.r, RGBColor.g, RGBColor.b); };
00148 void SetColor(TINT r, TINT g, TINT b) { m_RGB.Set(r, g, b); };
00150 virtual CTInt& ChangeState(TINT bNewState) { m_State.m_i = bNewState; return m_State; };
00151 protected:
00154 CTRGB m_RGB;
00156 CTList m_Children;
00157 CTList m_Siblings;
00159 CTInt m_State;
00160
00161 public:
00163 CTTree m_OldItemConstructors;
00164 static CTTree m_ItemConstructors;
00165 };
00167 typedef CGeomvObject* LPCGeomvObject;
00168
00170 class CCamera : public CGeomvObject
00171 {
00172 public:
00174 CCamera();
00175 ~CCamera() { if (m_lpBuffers) delete [] m_lpBuffers; };
00177 DEFINE_ID_FUNCTIONS(CCamera, CGeomvObject, CLASSNAME_GEOM_CAMERA_ID, CLASSNAME_GEOM_CAMERA)
00178 public:
00179 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00181 virtual TBOOL Is3DObject() { return TTRUE; };
00182 virtual TPOINT3D GetLocation() { return m_Position.POINT3D(); };
00183 public:
00185 #ifdef VSIS
00186
00187 virtual TBOOL FromStruct( int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL);
00188 #endif // VSIS
00191 virtual TBOOL Display(FILE* lpDevice = TNULL);
00192
00193 virtual TLPCSTR SetCamera(CTList pContext, TBOOL bReset = TTRUE);
00195 virtual void Project(CTPoint3D& NewPosition, double Rotate = 0.);
00196 public:
00198 virtual CCamera& operator = (CCamera& ca);
00199 public:
00201 virtual CTPoint3D& GetPosition() { return m_Position; };
00202 virtual CTAngles& GetDirection() { return m_Direction; };
00203 virtual CTDouble& GetFOV() { return m_FOV; };
00204 protected:
00207 enum {CM_SIZE_W = 15, CM_SIZE_H = 20, CM_SIZE_Z = 20};
00209 CTPoint3D m_Position;
00210
00211 CTAngles m_Direction;
00213 CTDouble m_FOV;
00215 CTRGB m_BkgRGB;
00217 CTSize2D m_SizeWindow;
00219 CTString m_CameraFile;
00221 TLPSTR m_lpBuffers;
00222 };
00223
00225 class CTWall : public CGeomvObject
00226 {
00227 public:
00229 CTWall();
00230 virtual ~CTWall();
00232 DEFINE_ID_FUNCTIONS(CTWall, CGeomvObject, CLASSNAME_GEOM_WALL_ID, CLASSNAME_GEOM_WALL)
00233 public:
00234 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00236 virtual TPOINT3D GetLocation();
00237 virtual LPCTPoint3D GetLocationObject();
00238 public:
00241 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00242 public:
00244 #ifdef VSIS
00245 virtual TBOOL FromStruct(int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL);
00246 #ifdef VSIS_DISPLAY
00247
00248 virtual TBOOL DisplayOnVSIS(struct scene_model *pTp_sm_node);
00249 #endif // VSIS_DISPLAY
00250 #endif // VSIS
00251 virtual void Project(CTPoint3D& NewPosition, double Rotate = 0.);
00252 virtual TBOOL Display(FILE* lpDevice);
00253 public:
00255 virtual CTWall& operator = (CTWall& wall)
00256 { *((CGeomvObject*)this) = wall; m_Start = wall.m_Start; m_End = wall.m_End;
00257 m_Height = wall.m_Height; return *this; };
00258 public:
00260 CTPoint3D m_Start, m_End;
00262 CTDouble m_Height;
00264 LPCTPoint3D m_Location;
00265 };
00266
00268 class CTPolygon : public CGeomvObject
00269 {
00270 public:
00272 CTPolygon();
00273 virtual ~CTPolygon();
00275 DEFINE_ID_FUNCTIONS(CTPolygon, CGeomvObject, CLASSNAME_GEOM_POLYGON_ID, CLASSNAME_GEOM_POLYGON)
00276 public:
00277 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00279 virtual TPOINT3D GetLocation();
00280 virtual LPCTPoint3D GetLocationObject();
00282 virtual TBOOL GetBoundary(BOUNDARY& b);
00285 virtual TBOOL Contain(TPOINT3D p);
00286 public:
00289 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00290 public:
00292 #ifdef VSIS
00293 virtual TBOOL FromStruct( int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL);
00294 #ifdef VSIS_DISPLAY
00295
00296 virtual TBOOL DisplayOnVSIS(struct scene_model *pTp_sm_node);
00297 #endif // VSIS_DISPLAY
00298 #endif // VSIS
00299 virtual TBOOL Display(FILE* lpDevice);
00300 virtual void Project(CTPoint3D& NewPosition, double Rotate = 0.);
00301 virtual void Delete();
00302 public:
00304 virtual CTPolygon& operator = (CTPolygon& pol)
00305 { *((CGeomvObject*)this) = pol; m_Polygon = pol.m_Polygon; return *this; };
00306 public:
00309 CTList GetPolygon() { return m_Polygon; };
00310 protected:
00312 CTList m_Polygon;
00313
00314 LPCTPoint3D m_Location;
00315 };
00316
00318 class CTGeomvZone : public CTPolygon
00319 {
00320 public:
00322 CTGeomvZone();
00323 virtual ~CTGeomvZone();
00325 DEFINE_ID_FUNCTIONS(CTGeomvZone, CTPolygon, CLASSNAME_GEOM_ZONE_ID, CLASSNAME_GEOM_ZONE)
00326 public:
00329 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00330 public:
00332 #ifdef VSIS
00333 virtual TBOOL FromStruct( int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL);
00334 #endif // VSIS
00335 };
00336
00338 class CTGeomvWLDObject : public CTPolygon
00339 {
00340 public:
00342 CTGeomvWLDObject();
00343 virtual ~CTGeomvWLDObject();
00345 DEFINE_ID_FUNCTIONS(CTGeomvWLDObject, CTPolygon, CLASSNAME_GEOM_WLDOBJECT_ID, CLASSNAME_GEOM_WLDOBJECT)
00346 public:
00347 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00349 virtual TBOOL Is3DObject() { return TTRUE; };
00351 virtual TBOOL GetBoundary(BOUNDARY& b);
00354 virtual CTObject* Calculate(TINT iOperator, CTObject* Object);
00355 public:
00357 #ifdef VSIS
00358 virtual TBOOL FromStruct( int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL);
00359 #ifdef VSIS_DISPLAY
00360
00361 virtual TBOOL DisplayOnVSIS(struct scene_model *pTp_sm_node);
00362 #endif // VSIS_DISPLAY
00363 #endif // VSIS
00364 virtual TBOOL Display(FILE* lpDevice);
00365 public:
00368 CTDouble& GetHeight() { return m_Height; };
00370 double SetHeight(double newHeight) { return m_Height.m_d = newHeight; };
00371 public:
00373 virtual CTGeomvWLDObject& operator = (CTGeomvWLDObject& wobj)
00374 { *((CTPolygon*)this) = wobj; m_Height = wobj.m_Height; return *this; };
00375 protected:
00378 CTDouble m_Height;
00379 };
00380 typedef CTGeomvWLDObject* LPCTGeomvWLDObject;
00381
00383 class CTGeomvMobileObject : public CTGeomvWLDObject
00384 {
00385 public:
00387 CTGeomvMobileObject();
00388 virtual ~CTGeomvMobileObject();
00390 DEFINE_ID_FUNCTIONS(CTGeomvMobileObject, CTGeomvWLDObject, CLASSNAME_GEOM_MOBILEOBJECT_ID, CLASSNAME_GEOM_MOBILEOBJECT)
00391 public:
00393 #ifdef VSIS
00394 virtual TBOOL FromStruct( int id_camera, void* lpStruct, TLPCSTR lpObjectType = TNULL);
00396 virtual TBOOL FC_FromStruct(void* lpStruct, TLPCSTR lpObjectType = TNULL);
00398 #endif // VSIS
00399 protected:
00401 TBOOL FromBlob(void* lpBlob);
00402 TBOOL FromIndividual(void* lpIndividual);
00403 TBOOL FromMobile(void* lpMobile);
00405 TBOOL FC_FromMobile(void* lpMobile);
00407 TBOOL FC_FromGroupDescriptor(void* lpGroup);
00409 TBOOL FC_FromIndividualDescriptor(void* lpIndividual);
00411 protected:
00413 };
00414
00416 class CTPerson : public CGeomvObject
00417 {
00418 public:
00420 CTPerson();
00421 ~CTPerson() {};
00423 DEFINE_ID_FUNCTIONS(CTPerson, CGeomvObject, CLASSNAME_GEOM_PERSON_ID, CLASSNAME_GEOM_PERSON)
00424 public:
00425 virtual CTList GetSaveLoadObjects(TBOOL bOnLoad = TTRUE);
00427 virtual TBOOL Is3DObject() { return TTRUE; };
00428 virtual TPOINT3D GetLocation() { return m_Position.POINT3D(); };
00429 public:
00430 enum { PERSON_MAX_OBJECTS = 100 };
00431 public:
00433 #ifdef VSIS
00434
00435 virtual TBOOL FromStruct( int id_camera, void* lpBlob, TLPCSTR lpObjectType = TNULL);
00437 virtual TBOOL MM_FromStruct(void* lpBlob, TLPCSTR lpObjectType = TNULL, int r=0, int g=0, int b=0);
00438 virtual TBOOL MM_FromStruct2(int H3d, int x, int y, int z, int r, int g, int b);
00439 #endif // VSIS
00442 virtual TBOOL FromPersonPipe(CTPersonPipe* pp, TINT type = CTPersonPipe::TS_ALL);
00445 virtual TBOOL Display(FILE* lpDevice = TNULL);
00446
00447 virtual void Project(CTPoint3D& NewPosition, double Rotate = 0.);
00448 public:
00450 virtual CTPoint3D& GetPosition() { return m_Position; };
00451 virtual LPCTObject GetPerson() { return m_Person; };
00452 public:
00454 static double GetCorrectWidth(double Height);
00455 static double GetCorrectThick(double Height);
00456 static double IsCorrectHeight(double Height);
00457 static double IsCorrectWidth(double Width);
00458 protected:
00461 CTPoint3D m_Position;
00462
00463 LPCTObject m_Person;
00464 protected:
00466 static TINT m_nObjects;
00467 static LPTBYTE* m_Objects;
00468 public:
00469 static TINT m_iCount;
00470 };
00471
00472 class CTPersonPipeVSIS : public CTPersonPipe
00473 {
00474 public:
00475 CTPersonPipeVSIS() {};
00476 ~CTPersonPipeVSIS() {};
00477 DEFINE_ID_FUNCTIONS(CTPersonPipeVSIS, CTPersonPipe, CLASSNAME_TYPE_PERSONPIPE_ID, CLASSNAME_TYPE_PERSONPIPE)
00478 public:
00479 #ifdef VSIS
00480 TINT FromBlob(void* pBlob);
00481 TINT FromMobile(void* pMobile);
00482 TINT FromIndividual(void* pIndividual);
00483
00484 TINT Display(TINT Bound = 0);
00485 #endif // VSIS
00486 };
00487
00488 class CTAlarmVSIS : public CTAlarm
00489 {
00490 public:
00491 CTAlarmVSIS() {};
00492 ~CTAlarmVSIS() {};
00493 DEFINE_ID_FUNCTIONS(CTAlarmVSIS, CTAlarm, CLASSNAME_TYPE_ALARM_ID, CLASSNAME_TYPE_ALARM)
00494 public:
00495 #ifdef VSIS
00496
00497 virtual TINT DisplayAlarm();
00498 virtual TINT DisplayAlarm(int step);
00499 #endif // VSIS
00500 };
00501
00502 #endif