sgObject.h
Upload User: kairuinn
Upload Date: 2009-02-07
Package Size: 2922k
Code Size: 3k
Category:

Graph program

Development Platform:

Visual C++

  1. #ifndef  __sgObject__
  2. #define  __sgObject__
  3. #define  SG_OBJ_NAME_MAX_LEN 64
  4. #define  SG_OBJ_GEOMETRY_ID_MAX_LEN     39
  5. typedef enum 
  6. {
  7. SG_OT_BAD_OBJECT,
  8. SG_OT_POINT,
  9. SG_OT_LINE,
  10. SG_OT_CIRCLE,
  11. SG_OT_ARC,
  12. SG_OT_SPLINE,
  13. SG_OT_TEXT,
  14. SG_OT_CONTOUR,
  15. SG_OT_DIM,
  16. SG_OT_3D,
  17. SG_OT_GROUP
  18. } SG_OBJECT_TYPE;
  19. typedef enum
  20. {
  21. SG_OA_COLOR,
  22. SG_OA_LINE_TYPE,
  23. SG_OA_LINE_THICKNESS,
  24. SG_OA_LAYER,
  25. SG_OA_DRAW_STATE
  26. } SG_OBJECT_ATTR_ID;
  27. /* SG_OA_DRAW_STATE values*/
  28. #define  SG_DS_FRAME     0x0200 
  29. #define  SG_DS_HIDE      0x0100 
  30. #define  SG_DS_GABARITE  0x0080 
  31. #define  SG_DS_FULL      0x0040 
  32. #define  SG_DS_USER_1    0x8000 
  33. #define  SG_DS_USER_2    0x4000
  34. #define  SG_DS_USER_3    0x2000
  35. #define  SG_DS_USER_4    0x1000
  36. #define  SG_DS_USER_5    0x0800
  37. #define  SG_DS_USER_6    0x0400
  38. #define  SG_DS_USER_7    0x0020
  39. #define  SG_DS_USER_8    0x0010
  40. #define  SG_DS_USER_9    0x0008
  41. #define  SG_DS_USER_10   0x0004
  42. #define  SG_DS_USER_11   0x0002
  43. #define  SG_DS_USER_12   0x0001
  44. class sgCore_API  sgCObject
  45. {
  46. SG_OBJ_HANDLE    m_object_handle;
  47. protected:
  48. sgCObject();
  49. sgCObject(SG_OBJ_HANDLE);
  50. virtual          ~sgCObject();
  51. void             PostCreate();
  52. public:
  53. sgCObject*       Clone();
  54. SG_OBJECT_TYPE  GetType() const;
  55. bool             SetUserGeometry(const char* user_geometry_ID,
  56. const unsigned short user_geometry_size,
  57. const void* user_geometry_data);
  58. const char*  GetUserGeometryID() const;
  59. const void*      GetUserGeometry(unsigned short& user_geometry_size) const;
  60. bool                SetUserDynamicData(const SG_USER_DYNAMIC_DATA* u_d_d);
  61. SG_USER_DYNAMIC_DATA*  GetUserDymanicData() const;
  62. unsigned short   GetAttribute(SG_OBJECT_ATTR_ID attributeId) const;
  63. virtual  bool    SetAttribute(SG_OBJECT_ATTR_ID attributeId, unsigned short attributeValue);
  64. const char*      GetName() const;
  65. bool             SetName(const char* object_name);
  66. const sgCObject* GetParent() const;
  67. void             GetGabarits(SG_POINT& p_min, SG_POINT& p_max);
  68. void             Select(bool);
  69. bool             IsSelect() const;
  70. bool             IsAttachedToScene() const;
  71. sgCMatrix*       InitTempMatrix();
  72. bool             DestroyTempMatrix();
  73. sgCMatrix*       GetTempMatrix();
  74. virtual  bool    ApplyTempMatrix();
  75. public:
  76. static   void    DeleteObject(sgCObject*);
  77. protected:
  78. SG_POINT             m_min;
  79. SG_POINT             m_max;
  80. sgCMatrix*           m_temp_matrix;
  81. SG_USER_DYNAMIC_DATA* m_user_dynamic_data;
  82. PRIVATE_ACCESS
  83. };
  84. #define    sgDeleteObject   sgCObject::DeleteObject
  85. class  IObjectsList
  86. {
  87. public:
  88. virtual  int         GetCount() const = 0;
  89. virtual  sgCObject*  GetHead() const = 0;
  90. virtual  sgCObject*  GetNext(sgCObject*) const      = 0;  
  91. virtual  sgCObject*  GetTail() const = 0;
  92. virtual  sgCObject*  GetPrev(sgCObject*) const      = 0;  
  93. };
  94. #endif