/src/contrib/geom-5.1.2.7/inc/GEOMImpl_BlockDriver.hxx

http://pythonocc.googlecode.com/ · C++ Header · 174 lines · 120 code · 29 blank · 25 comment · 4 complexity · ff9f3a87cb51f09eca3e10064cc0c6f5 MD5 · raw file

  1. // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
  2. // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
  3. //
  4. // This library is free software; you can redistribute it and/or
  5. // modify it under the terms of the GNU Lesser General Public
  6. // License as published by the Free Software Foundation; either
  7. // version 2.1 of the License.
  8. //
  9. // This library is distributed in the hope that it will be useful
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. // Lesser General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU Lesser General Public
  15. // License along with this library; if not, write to the Free Software
  16. // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17. //
  18. // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
  19. //
  20. // File : GEOMImpl_BlockDriver.ixx
  21. // Module : GEOMImpl
  22. #ifndef _GEOMImpl_BlockDriver_HeaderFile
  23. #define _GEOMImpl_BlockDriver_HeaderFile
  24. #ifndef _TColStd_SequenceOfExtendedString_HeaderFile
  25. #include <TColStd_SequenceOfExtendedString.hxx>
  26. #endif
  27. #ifndef _Standard_TypeMismatch_HeaderFile
  28. #include <Standard_TypeMismatch.hxx>
  29. #endif
  30. #ifndef _Standard_HeaderFile
  31. #include <Standard.hxx>
  32. #endif
  33. #ifndef _Standard_Macro_HeaderFile
  34. #include <Standard_Macro.hxx>
  35. #endif
  36. #ifndef _Standard_HeaderFile
  37. #include <Standard.hxx>
  38. #endif
  39. #ifndef _Standard_GUID_HeaderFile
  40. #include <Standard_GUID.hxx>
  41. #endif
  42. #ifndef _Handle_TFunction_Driver_HeaderFile
  43. #include <Handle_TFunction_Driver.hxx>
  44. #endif
  45. class Standard_Transient;
  46. class Handle_Standard_Type;
  47. class Handle(TFunction_Driver);
  48. class GEOMImpl_BlockDriver;
  49. Standard_EXPORT Handle_Standard_Type& STANDARD_TYPE(GEOMImpl_BlockDriver);
  50. class Handle(GEOMImpl_BlockDriver) : public Handle(TFunction_Driver) {
  51. public:
  52. inline void* operator new(size_t,void* anAddress)
  53. {
  54. return anAddress;
  55. }
  56. inline void* operator new(size_t size)
  57. {
  58. return Standard::Allocate(size);
  59. }
  60. inline void operator delete(void *anAddress)
  61. {
  62. if (anAddress) Standard::Free((Standard_Address&)anAddress);
  63. }
  64. Handle(GEOMImpl_BlockDriver)():Handle(TFunction_Driver)() {}
  65. Handle(GEOMImpl_BlockDriver)(const Handle(GEOMImpl_BlockDriver)& aHandle) : Handle(TFunction_Driver)(aHandle)
  66. {
  67. }
  68. Handle(GEOMImpl_BlockDriver)(const GEOMImpl_BlockDriver* anItem) : Handle(TFunction_Driver)((TFunction_Driver *)anItem)
  69. {
  70. }
  71. Handle(GEOMImpl_BlockDriver)& operator=(const Handle(GEOMImpl_BlockDriver)& aHandle)
  72. {
  73. Assign(aHandle.Access());
  74. return *this;
  75. }
  76. Handle(GEOMImpl_BlockDriver)& operator=(const GEOMImpl_BlockDriver* anItem)
  77. {
  78. Assign((Standard_Transient *)anItem);
  79. return *this;
  80. }
  81. GEOMImpl_BlockDriver* operator->()
  82. {
  83. return (GEOMImpl_BlockDriver *)ControlAccess();
  84. }
  85. GEOMImpl_BlockDriver* operator->() const
  86. {
  87. return (GEOMImpl_BlockDriver *)ControlAccess();
  88. }
  89. Standard_EXPORT ~Handle(GEOMImpl_BlockDriver)() {};
  90. Standard_EXPORT static const Handle(GEOMImpl_BlockDriver) DownCast(const Handle(Standard_Transient)& AnObject);
  91. };
  92. #ifndef _TFunction_Driver_HeaderFile
  93. #include <TFunction_Driver.hxx>
  94. #endif
  95. #ifndef _TFunction_Logbook_HeaderFile
  96. #include <TFunction_Logbook.hxx>
  97. #endif
  98. #ifndef _Standard_CString_HeaderFile
  99. #include <Standard_CString.hxx>
  100. #endif
  101. #include <TopoDS_Shape.hxx>
  102. class TColStd_SequenceOfExtendedString;
  103. class GEOMImpl_BlockDriver : public TFunction_Driver {
  104. public:
  105. inline void* operator new(size_t,void* anAddress)
  106. {
  107. return anAddress;
  108. }
  109. inline void* operator new(size_t size)
  110. {
  111. return Standard::Allocate(size);
  112. }
  113. inline void operator delete(void *anAddress)
  114. {
  115. if (anAddress) Standard::Free((Standard_Address&)anAddress);
  116. }
  117. // Methods PUBLIC
  118. //
  119. Standard_EXPORT GEOMImpl_BlockDriver();
  120. Standard_EXPORT virtual Standard_Integer Execute(TFunction_Logbook& log) const;
  121. Standard_EXPORT virtual void Validate(TFunction_Logbook&) const {}
  122. Standard_EXPORT Standard_Boolean MustExecute(const TFunction_Logbook&) const { return Standard_True; }
  123. Standard_EXPORT static const Standard_GUID& GetID();
  124. Standard_EXPORT ~GEOMImpl_BlockDriver() {};
  125. // Type management
  126. //
  127. Standard_EXPORT friend Handle_Standard_Type& GEOMImpl_BlockDriver_Type_();
  128. Standard_EXPORT const Handle(Standard_Type)& DynamicType() const { return STANDARD_TYPE(GEOMImpl_BlockDriver) ; }
  129. Standard_EXPORT Standard_Boolean IsKind(const Handle(Standard_Type)& AType) const { return (STANDARD_TYPE(GEOMImpl_BlockDriver) == AType || TFunction_Driver::IsKind(AType)); }
  130. private:
  131. void MultiTransformate1D (const TopoDS_Shape& theBlock,
  132. const TopoDS_Shape& theFace1,
  133. const TopoDS_Shape& theFace2,
  134. const Standard_Integer theNbIter,
  135. TopoDS_Shape& theResult) const;
  136. void MultiTransformate2D (const TopoDS_Shape& theBlock,
  137. const TopoDS_Shape& theFace1U,
  138. const TopoDS_Shape& theFace2U,
  139. const Standard_Integer theNbIterU,
  140. const TopoDS_Shape& theFace1V,
  141. const TopoDS_Shape& theFace2V,
  142. const Standard_Integer theNbIterV,
  143. TopoDS_Shape& theResult) const;
  144. };
  145. #endif