Main Page   Class Hierarchy   Data Structures   File List   Data Fields   Globals  

/lib/libtvuvisu3D/tvu_geomv_objects.h

Go to the documentation of this file.
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 //Forward declarations
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() {/* DELETE_OBJECT(m_Person); */};
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                 // Display on a image window
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                 // Display on a window
00497                 virtual TINT DisplayAlarm();
00498                 virtual TINT DisplayAlarm(int step);
00499 #endif //       VSIS
00500 };
00501 /*========================================================*/
00502 #endif 

Generated at Wed Aug 6 15:58:58 2003 for TVU's libraries for video surveillance: by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001