File indexing completed on 2026-09-16 09:16:53
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _Draw_Drawable3D_HeaderFile
0018 #define _Draw_Drawable3D_HeaderFile
0019
0020 #include <Standard_CString.hxx>
0021 #include <Standard_Type.hxx>
0022 #include <Standard_Transient.hxx>
0023 #include <Standard_IStream.hxx>
0024 #include <Standard_OStream.hxx>
0025 #include <Draw_Interpretor.hxx>
0026
0027 class Draw_Display;
0028
0029 class Draw_Drawable3D : public Standard_Transient
0030 {
0031 DEFINE_STANDARD_RTTIEXT(Draw_Drawable3D, Standard_Transient)
0032 public:
0033
0034 typedef occ::handle<Draw_Drawable3D> (*FactoryFunction_t)(Standard_IStream& theStream);
0035
0036
0037
0038
0039 Standard_EXPORT static void RegisterFactory(const char* const theType,
0040 const FactoryFunction_t& theFactory);
0041
0042
0043
0044
0045
0046 Standard_EXPORT static occ::handle<Draw_Drawable3D> Restore(const char* const theType,
0047 Standard_IStream& theStream);
0048
0049
0050
0051 #define Draw_Drawable3D_FACTORY \
0052 static void RegisterFactory() { Draw_Drawable3D::RegisterFactory(get_type_name(), &Restore); } \
0053 Standard_EXPORT static occ::handle<Draw_Drawable3D> Restore(Standard_IStream& theStream);
0054
0055 public:
0056 Standard_EXPORT virtual void DrawOn(Draw_Display& dis) const = 0;
0057
0058
0059 Standard_EXPORT virtual bool PickReject(const double X, const double Y, const double Prec) const;
0060
0061
0062 Standard_EXPORT virtual occ::handle<Draw_Drawable3D> Copy() const;
0063
0064
0065 Standard_EXPORT virtual void Dump(Standard_OStream& S) const;
0066
0067
0068 Standard_EXPORT virtual void Save(Standard_OStream& theStream) const;
0069
0070
0071 Standard_EXPORT virtual void Whatis(Draw_Interpretor& I) const;
0072
0073
0074 virtual bool Is3D() const { return true; }
0075
0076
0077 virtual bool IsDisplayable() const { return true; }
0078
0079 void SetBounds(const double theXMin,
0080 const double theXMax,
0081 const double theYMin,
0082 const double theYMax)
0083 {
0084 myXmin = theXMin;
0085 myXmax = theXMax;
0086 myYmin = theYMin;
0087 myYmax = theYMax;
0088 }
0089
0090 void Bounds(double& theXMin, double& theXMax, double& theYMin, double& theYMax) const
0091 {
0092 theXMin = myXmin;
0093 theXMax = myXmax;
0094 theYMin = myYmin;
0095 theYMax = myYmax;
0096 }
0097
0098 bool Visible() const { return isVisible; }
0099
0100 void Visible(const bool V) { isVisible = V; }
0101
0102 bool Protected() const { return isProtected; }
0103
0104 void Protected(const bool P) { isProtected = P; }
0105
0106 const char* Name() const { return myName; }
0107
0108 virtual void Name(const char* const N) { myName = N; }
0109
0110 protected:
0111 Standard_EXPORT Draw_Drawable3D();
0112
0113 private:
0114 double myXmin;
0115 double myXmax;
0116 double myYmin;
0117 double myYmax;
0118 const char* myName;
0119 bool isVisible;
0120 bool isProtected;
0121 };
0122
0123 #endif