// Copyright (c) 1995-1999 Matra Datavision
-// Copyright (c) 1999-2012 OPEN CASCADE SAS
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
//
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
//
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
//
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
#ifndef _Graphic3d_CStructure_HeaderFile
#define _Graphic3d_CStructure_HeaderFile
+#include <Graphic3d_CStructure_Handle.hxx>
#include <Graphic3d_CGroup.hxx>
+#include <Graphic3d_SequenceOfHClipPlane.hxx>
+#include <Graphic3d_TypeOfComposition.hxx>
+#include <Graphic3d_Vec3.hxx>
+#include <Standard_Transient.hxx>
+#include <Handle_Graphic3d_GraphicDriver.hxx>
-class Graphic3d_CStructure
+class Handle(Graphic3d_StructureManager);
+
+//! Low-level graphic structure interface
+class Graphic3d_CStructure : public Standard_Transient
{
public:
- int Id;
- void* ptrStructure;
+ //! @return graphic driver created this structure
+ const Handle(Graphic3d_GraphicDriver)& GraphicDriver() const
+ {
+ return myGraphicDriver;
+ }
+
+ //! @return associated clip planes
+ const Graphic3d_SequenceOfHClipPlane& ClipPlanes() const
+ {
+ return myClipPlanes;
+ }
+
+ //! Pass clip planes to the associated graphic driver structure
+ void SetClipPlanes (const Graphic3d_SequenceOfHClipPlane& thePlanes) { myClipPlanes = thePlanes; }
+
+public:
+
+ //! Update structure visibility state
+ virtual void UpdateNamedStatus() = 0;
+
+ //! Clear graphic data
+ virtual void Clear() = 0;
+
+ //! Connect other structure to this one
+ virtual void Connect (Graphic3d_CStructure& theStructure) = 0;
+
+ //! Disconnect other structure to this one
+ virtual void Disconnect (Graphic3d_CStructure& theStructure) = 0;
+
+ //! Synchronize structure aspects
+ virtual void UpdateAspects() = 0;
+
+ //! Synchronize structure transformation
+ virtual void UpdateTransformation() = 0;
+
+ //! Highlight entire structure with color
+ virtual void HighlightWithColor (const Graphic3d_Vec3& theColor,
+ const Standard_Boolean theToCreate) = 0;
+ //! Highlight structure using boundary box
+ virtual void HighlightWithBndBox (const Standard_Boolean theToCreate) = 0;
+
+ //! Create shadow link to this structure
+ virtual Handle(Graphic3d_CStructure) ShadowLink (const Handle(Graphic3d_StructureManager)& theManager) const = 0;
+
+public:
+
+ int Id;
int Priority;
int PreviousPriority;
CALL_DEF_BOUNDBOX BoundBox;
float Transformation[4][4];
- int Composition;
+ Graphic3d_TypeOfComposition Composition;
int ContainsFacet;
- unsigned IsDeleted : 1;
- unsigned IsOpen : 1;
unsigned IsInfinite : 1;
unsigned stick : 1;
unsigned highlight : 1;
CALL_DEF_TRANSFORM_PERSISTENCE TransformPersistence;
-};
+protected:
-///typedef Graphic3d_CStructure CALL_DEF_STRUCTURE;
+ //! Create empty structure.
+ Standard_EXPORT Graphic3d_CStructure (const Handle(Graphic3d_StructureManager)& theManager);
-const Handle(Standard_Type)& TYPE(Graphic3d_CStructure);
+protected:
+
+ Handle(Graphic3d_GraphicDriver) myGraphicDriver;
+ Graphic3d_SequenceOfHClipPlane myClipPlanes;
+
+public:
+
+ DEFINE_STANDARD_RTTI(Graphic3d_CStructure) // Type definition
+
+};
-#endif // Graphic3d_CStructure_HeaderFile
+#endif // _Graphic3d_CStructure_HeaderFile