#include <Geom_Transformation.hxx>
#include <PrsMgr_ModedPresentation.hxx>
-#include <PrsMgr_Presentation3d.hxx>
+#include <PrsMgr_Presentation.hxx>
#include <OSD_Timer.hxx>
//=======================================================================
//function : Disconnect
-//purpose :
+//purpose :
//=======================================================================
void AIS_ConnectedInteractive::Disconnect()
{
- for(Standard_Integer i =1;i<=myPresentations.Length();i++)
+ for(Standard_Integer aPrsIter = 1; aPrsIter <= myPresentations.Length(); ++aPrsIter)
+ {
+ const Handle(PrsMgr_Presentation)& aPrs = myPresentations (aPrsIter).Presentation();
+ if (!aPrs.IsNull())
{
- Handle(PrsMgr_Presentation3d) P = Handle(PrsMgr_Presentation3d)::DownCast(myPresentations(i).Presentation());
- if(!P.IsNull()) {
- P->Presentation()->DisconnectAll(Graphic3d_TOC_DESCENDANT);
- }
+ aPrs->Presentation()->DisconnectAll (Graphic3d_TOC_DESCENDANT);
}
+ }
}
//=======================================================================
//function : Compute
// instead a restricted object NameOfColor.
// Add SetCurrentFacingModel() method
-#define IMP020200 //GG Add SetTransformation() method
-
-#define IMP140200 //GG Add HasPresentation() and Presentation() methods
-// Add SetAspect() method.
-
#define BUC60632 //GG 15/03/00 Add protection on SetDisplayMode()
// method, compute only authorized presentation.
-#define IMP220501 //GG CADPAK_V2 Update selection properly
-
#define OCC708 //SAV unsetting transformation correctly
#include <AIS_InteractiveObject.ixx>
P->SetInfiniteState(myInfiniteState);}
}
-#ifdef IMP020200
//=======================================================================
//function : SetTransformation
-//purpose :
+//purpose :
//=======================================================================
-void AIS_InteractiveObject::SetTransformation(const Handle(Geom_Transformation)& aTrsf, const Standard_Boolean postConcatenate, const Standard_Boolean updateSelection) {
-
- if(!GetContext().IsNull()){
- const PrsMgr_Presentations& prs = Presentations();
- Handle(Prs3d_Presentation) P;
- Standard_Integer mode;
- myHasTransformation = Standard_True;
- for( Standard_Integer i=1 ; i<=prs.Length() ; i++ ) {
- mode = prs(i).Mode();
- P = GetContext()->MainPrsMgr()->CastPresentation(this,mode)->Presentation();
- if( postConcatenate ) P->Multiply(aTrsf);
- else P->Transform(aTrsf);
- if( updateSelection ) {
-#ifdef IMP220501
- myCTXPtr->ClearSelected(Standard_True);
- myCTXPtr->RecomputeSelectionOnly(this);
-#else
- if( HasSelection(mode) ) {
- UpdateSelection(mode);
- }
-#endif
- }
+void AIS_InteractiveObject::SetTransformation (const Handle(Geom_Transformation)& theTrsf,
+ const Standard_Boolean theToPostConcatenate,
+ const Standard_Boolean theToUpdateSelection)
+{
+ if (GetContext().IsNull())
+ {
+ return;
+ }
+
+ const PrsMgr_Presentations& aPrsList = Presentations();
+ myHasTransformation = Standard_True;
+ for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
+ {
+ const Standard_Integer aMode = aPrsList (aPrsIter).Mode();
+ Handle(Prs3d_Presentation) aPrs = GetContext()->MainPrsMgr()->Presentation (this, aMode)->Presentation();
+ theToPostConcatenate ? aPrs->Multiply (theTrsf)
+ : aPrs->Transform (theTrsf);
+ if (theToUpdateSelection)
+ {
+ myCTXPtr->ClearSelected (Standard_True);
+ myCTXPtr->RecomputeSelectionOnly (this);
}
}
}
//=======================================================================
//function : Transformation
-//purpose :
+//purpose :
//=======================================================================
-Handle(Geom_Transformation) AIS_InteractiveObject::Transformation() {
-Handle(Geom_Transformation) trsf;
-
- if(!GetContext().IsNull() ) {
- const PrsMgr_Presentations& prs = Presentations();
- if( prs.Length() > 0 ) {
- Handle(Prs3d_Presentation) P =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
- trsf = P->Transformation();
- }
+Handle(Geom_Transformation) AIS_InteractiveObject::Transformation()
+{
+ if (GetContext().IsNull())
+ {
+ return Handle(Geom_Transformation)();
}
- return trsf;
+ const PrsMgr_Presentations& aPrsList = Presentations();
+ if (aPrsList.Length() > 0)
+ {
+ Handle(Prs3d_Presentation) aPrs = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
+ return aPrs->Transformation();
+ }
+ return Handle(Geom_Transformation)();
}
//=======================================================================
return myHasTransformation;
}
-#endif
-#ifdef IMP140200
//=======================================================================
//function : HasPresentation
-//purpose :
+//purpose :
//=======================================================================
-Standard_Boolean AIS_InteractiveObject::HasPresentation() const {
-
- if( !GetContext().IsNull() &&
- GetContext()->MainPrsMgr()->HasPresentation(this,myDisplayMode) ) {
- return Standard_True;
- }
-
- return Standard_False;
+Standard_Boolean AIS_InteractiveObject::HasPresentation() const
+{
+ return !GetContext().IsNull()
+ && GetContext()->MainPrsMgr()->HasPresentation (this, myDisplayMode);
}
//=======================================================================
//function : Presentation
-//purpose :
+//purpose :
//=======================================================================
-Handle(Prs3d_Presentation) AIS_InteractiveObject::Presentation() const {
-Handle(Prs3d_Presentation) prs;
-
- if( HasPresentation() ) {
- prs = GetContext()->MainPrsMgr()->
- CastPresentation(this,myDisplayMode)->Presentation();
- }
-
- return prs;
+Handle(Prs3d_Presentation) AIS_InteractiveObject::Presentation() const
+{
+ return HasPresentation()
+ ? GetContext()->MainPrsMgr()->Presentation (this, myDisplayMode)->Presentation()
+ : Handle(Prs3d_Presentation)();
}
//=======================================================================
}
}
}
-#endif
-
-// OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets
//=======================================================================
//function : SetPolygonOffsets
myDrawer->ShadingAspect()->Aspect()->SetPolygonOffsets( aMode, aFactor, aUnits );
// Modify existing presentations
- Handle(Graphic3d_Structure) aStruct;
- for( Standard_Integer i = 1, n = myPresentations.Length(); i <= n; i++ ) {
- Handle(PrsMgr_Presentation3d) aPrs3d =
- Handle(PrsMgr_Presentation3d)::DownCast( myPresentations(i).Presentation() );
+ for (Standard_Integer aPrsIter = 1, n = myPresentations.Length(); aPrsIter <= n; ++aPrsIter)
+ {
+ const Handle(PrsMgr_Presentation)& aPrs3d = myPresentations (aPrsIter).Presentation();
if ( !aPrs3d.IsNull() ) {
- aStruct = Handle(Graphic3d_Structure)::DownCast( aPrs3d->Presentation() );
+ const Handle(Graphic3d_Structure)& aStruct = aPrs3d->Presentation();
if( !aStruct.IsNull() ) {
aStruct->SetPrimitivesAspect( myDrawer->ShadingAspect()->Aspect() );
// Workaround for issue 23115: Need to update also groups, because their
}
}
-
//=======================================================================
//function : HasPolygonOffsets
//purpose :
if( HasPolygonOffsets() )
myDrawer->ShadingAspect()->Aspect()->PolygonOffsets( aMode, aFactor, aUnits );
}
-// OCC4895 SAN 22/03/04 High-level interface for controlling polygon offsets
return Standard_False;
}
- myMainPM->AddToImmediateList (myMainPM->CastPresentation (theObj, theMode)->Presentation());
+ myMainPM->AddToImmediateList (myMainPM->Presentation (theObj, theMode)->Presentation());
return Standard_True;
}
#include <AIS_MultipleConnectedInteractive.ixx>
#include <PrsMgr_ModedPresentation.hxx>
-#include <PrsMgr_Presentation3d.hxx>
+#include <PrsMgr_Presentation.hxx>
static Standard_Boolean IsInSeq (const AIS_SequenceOfInteractive& theSeq,
const Handle(AIS_InteractiveObject)& theItem)
void AIS_MultipleConnectedInteractive::DisconnectAll ()
{
-/* for(Standard_Integer i =1;i<=myPresentations.Length();i++)
+/* for (Standard_Integer aPrsIter = 1; aPrsIter <= myPresentations.Length(); ++aPrsIter)
{
- Handle(PrsMgr_Presentation3d) P = Handle(PrsMgr_Presentation3d)::DownCast(myPresentations(i).Presentation());
- if(!P.IsNull()) {
- P->Presentation()->DisconnectAll(Graphic3d_TOC_DESCENDANT);
+ const Handle(PrsMgr_Presentation)& aPrs = myPresentations (aPrsIter).Presentation();
+ if (!aPrs.IsNull())
+ {
+ aPrs->Presentation()->DisconnectAll (Graphic3d_TOC_DESCENDANT);
}
}*/
myPreviousReferences = myReferences; // pour garder les poignees au chaud!!!!
// fast shading modification...
if(!GetContext().IsNull()){
if( GetContext()->MainPrsMgr()->HasPresentation(this,1)){
- Handle(Prs3d_Presentation) aPresentation =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
+ Handle(Prs3d_Presentation) aPresentation = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
Handle(Graphic3d_Group) aCurGroup = Prs3d_Root::CurrentGroup(aPresentation);
Handle(Graphic3d_AspectFillArea3d) anAreaAspect = myDrawer->ShadingAspect()->Aspect();
Handle(Graphic3d_AspectLine3d) aLineAspect = myDrawer->LineAspect()->Aspect();
if(!GetContext().IsNull()){
if(GetContext()->MainPrsMgr()->HasPresentation(this,1)){
- Handle(Prs3d_Presentation) aPresentation =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
+ Handle(Prs3d_Presentation) aPresentation = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(aPresentation);
Handle(Graphic3d_AspectFillArea3d) anAreaAsp = myDrawer->Link()->ShadingAspect()->Aspect();
myDrawer->ShadingAspect()->SetTransparency(myTransparency,myCurrentFacingModel);
if(!GetContext().IsNull()){
- if(GetContext()->MainPrsMgr()->HasPresentation(this,1)){
- Handle(Prs3d_Presentation) aPresentation =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
+ if(GetContext()->MainPrsMgr()->HasPresentation(this,1))
+ {
+ Handle(Prs3d_Presentation) aPresentation = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(aPresentation);
Handle(Graphic3d_AspectFillArea3d) anAreaAsp = myDrawer->ShadingAspect()->Aspect();
hasOwnMaterial = Standard_False;
if(!GetContext().IsNull()){
if(GetContext()->MainPrsMgr()->HasPresentation(this,1)){
- Handle(Prs3d_Presentation) aPresentation =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
+ Handle(Prs3d_Presentation) aPresentation = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(aPresentation);
Handle(Graphic3d_AspectFillArea3d) anAreaAsp = myDrawer->ShadingAspect()->Aspect();
aPresentation->SetPrimitivesAspect(anAreaAsp);
if(!GetContext().IsNull()){
if(GetContext()->MainPrsMgr()->HasPresentation(this,1)){
- Handle(Prs3d_Presentation) aPresentation =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
+ Handle(Prs3d_Presentation) aPresentation = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(aPresentation);
Handle(Graphic3d_AspectFillArea3d) anAreaAsp = myDrawer->ShadingAspect()->Aspect();
aPresentation->SetPrimitivesAspect(anAreaAsp);
if(!GetContext().IsNull()){
if(GetContext()->MainPrsMgr()->HasPresentation(this,1)){
- Handle(Prs3d_Presentation) aPresentation =
- GetContext()->MainPrsMgr()->CastPresentation(this,1)->Presentation();
+ Handle(Prs3d_Presentation) aPresentation = GetContext()->MainPrsMgr()->Presentation (this, 1)->Presentation();
Handle(Graphic3d_Group) aGroup = Prs3d_Root::CurrentGroup(aPresentation);
Handle(Graphic3d_AspectFillArea3d) anAreaAsp = myDrawer->ShadingAspect()->Aspect();
aPresentation->SetPrimitivesAspect(anAreaAsp);
is
- enumeration KindOfPrs is KOP_2D,KOP_3D
- end KindOfPrs;
-
enumeration TypeOfPresentation3d is TOP_AllView, TOP_ProjectorDependant
end TypeOfPresentation3d;
---Purpose: To declare the type of presentation as follows
class PresentationManager;
alias PresentationManager3d is PresentationManager;
- deferred class Presentation;
+ class Presentation;
+ alias Presentation3d is Presentation;
deferred class PresentableObject;
imported ListOfPresentations;
class Prs;
- class Presentation3d;
class ModedPresentation;
class Presentations instantiates Sequence from TCollection
(ModedPresentation from PrsMgr);
- pointer Presentation3dPointer to Presentation3d from PrsMgr;
+ pointer PresentationPointer to Presentation from PrsMgr;
pointer PresentableObjectPointer to PresentableObject from PrsMgr;
end PrsMgr;
class ModedPresentation from PrsMgr
uses
- Presentation from PrsMgr
+
+ Presentation from PrsMgr
is
- Create
- returns ModedPresentation from PrsMgr;
-
- Create(aPresentation:Presentation from PrsMgr;
- aMode: Integer from Standard)
- returns ModedPresentation from PrsMgr;
-
- Presentation(me) returns Presentation from PrsMgr
- is static;
-
- Mode(me) returns Integer from Standard;
-
-
+
+ Create
+ returns ModedPresentation from PrsMgr;
+
+ Create (thePrs : Presentation from PrsMgr;
+ theMode : Integer from Standard)
+ returns ModedPresentation from PrsMgr;
+
+ Presentation (me) returns Presentation from PrsMgr
+ is static;
+ ---C++: return const&
+
+ Mode (me) returns Integer from Standard;
+
fields
myPresentation: Presentation from PrsMgr;
myMode: Integer from Standard;
-
+
end ModedPresentation from PrsMgr;
-
#include <PrsMgr_ModedPresentation.ixx>
-PrsMgr_ModedPresentation::PrsMgr_ModedPresentation() {}
+PrsMgr_ModedPresentation::PrsMgr_ModedPresentation()
+: myMode (0) {}
-PrsMgr_ModedPresentation::PrsMgr_ModedPresentation(const Handle(PrsMgr_Presentation)& aPresentation, const Standard_Integer aMode): myPresentation(aPresentation), myMode(aMode) {
+PrsMgr_ModedPresentation::PrsMgr_ModedPresentation (const Handle(PrsMgr_Presentation)& thePrs,
+ const Standard_Integer theMode)
+: myPresentation (thePrs),
+ myMode (theMode)
+{
+ //
}
-Handle(PrsMgr_Presentation) PrsMgr_ModedPresentation::Presentation () const {
-
+const Handle(PrsMgr_Presentation)& PrsMgr_ModedPresentation::Presentation() const
+{
return myPresentation;
-
}
-Standard_Integer PrsMgr_ModedPresentation::Mode () const {
+Standard_Integer PrsMgr_ModedPresentation::Mode() const
+{
return myMode;
}
myTransformPersistence : CTransPersStruct from Graphic3d;
friends
- class Presentation3d from PrsMgr,
+ class Presentation from PrsMgr,
class PresentationManager from PrsMgr,
- Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d),
- Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
- aGivenStruct : Structure from Graphic3d),
- Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
- TheTrsf : Transformation from Geom),
- Compute from Presentation3d from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
- TheTrsf : Transformation from Geom;
- aGivenStruct : Structure from Graphic3d)
+ Compute from Presentation from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d),
+ Compute from Presentation from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
+ aGivenStruct : Structure from Graphic3d),
+ Compute from Presentation from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
+ TheTrsf : Transformation from Geom),
+ Compute from Presentation from PrsMgr(me : mutable; aProjector : DataStructureManager from Graphic3d;
+ TheTrsf : Transformation from Geom;
+ aGivenStruct : Structure from Graphic3d)
end PresentableObject from PrsMgr;
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
-// Modified by Rob
-// 16-dec-1997 : Update Flag for Presentations.
-
-
#include <PrsMgr_PresentableObject.ixx>
#include <PrsMgr_Presentation.hxx>
-#include <PrsMgr_Presentation3d.hxx>
#include <PrsMgr_ModedPresentation.hxx>
#include <PrsMgr_PresentationManager.hxx>
#include <TColStd_ListIteratorOfListOfInteger.hxx>
//function : Fill
//purpose :
//=======================================================================
-void PrsMgr_PresentableObject::Fill (const Handle(PrsMgr_PresentationManager)& aPresentationManager,
- const Handle(PrsMgr_Presentation)& aPresentation,
- const Standard_Integer aMode)
+void PrsMgr_PresentableObject::Fill (const Handle(PrsMgr_PresentationManager)& thePrsMgr,
+ const Handle(PrsMgr_Presentation)& thePrs,
+ const Standard_Integer theMode)
{
- if (aPresentation->DynamicType() == STANDARD_TYPE (PrsMgr_Presentation3d))
- {
- Handle(PrsMgr_PresentationManager3d) aPrsMgr3d =
- (Handle(PrsMgr_PresentationManager3d)&)aPresentationManager;
- Handle(PrsMgr_Presentation3d) aPrs3d =
- (Handle(PrsMgr_Presentation3d)&)aPresentation;
- Handle(Prs3d_Presentation) aStruct3d = aPrs3d->Presentation();
-
- Compute (aPrsMgr3d, aStruct3d, aMode);
- UpdateLocation (aStruct3d);
- aStruct3d->SetClipPlanes (myClipPlanes);
- aStruct3d->SetTransformPersistence (GetTransformPersistenceMode(), GetTransformPersistencePoint());
- }
+ Handle(Prs3d_Presentation) aStruct3d = thePrs->Presentation();
+ Compute (thePrsMgr, aStruct3d, theMode);
+ UpdateLocation (aStruct3d);
+ aStruct3d->SetClipPlanes (myClipPlanes);
+ aStruct3d->SetTransformPersistence (GetTransformPersistenceMode(), GetTransformPersistencePoint());
}
//=======================================================================
//function : Compute
-//purpose :
+//purpose :
//=======================================================================
-void PrsMgr_PresentableObject::Compute(const Handle(PrsMgr_PresentationManager3d)& /*aPresentationManager*/,
- const Handle(Prs3d_Presentation)& /*aPresentation*/,
- const Standard_Integer /*aMode*/)
+void PrsMgr_PresentableObject::Compute (const Handle(PrsMgr_PresentationManager)& /*aPresentationManager*/,
+ const Handle(Prs3d_Presentation)& /*aPresentation*/,
+ const Standard_Integer /*aMode*/)
{
Standard_NotImplemented::Raise("cannot compute in a 3d visualizer");
}
//=======================================================================
//function : SetTypeOfPresentation
-//purpose :
+//purpose :
//=======================================================================
-void PrsMgr_PresentableObject::SetTypeOfPresentation(const PrsMgr_TypeOfPresentation3d aType)
+void PrsMgr_PresentableObject::SetTypeOfPresentation (const PrsMgr_TypeOfPresentation3d theType)
{
- myTypeOfPresentation3d = aType;
-
- for(Standard_Integer IP =1; IP<=myPresentations.Length();IP++){
- const Handle(PrsMgr_Presentation)& P = myPresentations(IP).Presentation();
- if(P->KindOfPresentation()==PrsMgr_KOP_3D){
- Graphic3d_TypeOfStructure Typ =
- (myTypeOfPresentation3d == PrsMgr_TOP_ProjectorDependant)?
- Graphic3d_TOS_COMPUTED : Graphic3d_TOS_ALL;
- (*(Handle(PrsMgr_Presentation3d)*)&P)->Presentation()->SetVisual(Typ);
- }
+ myTypeOfPresentation3d = theType;
+ for(Standard_Integer aPrsIter = 1; aPrsIter <= myPresentations.Length(); ++aPrsIter)
+ {
+ const Handle(PrsMgr_Presentation)& aPrs = myPresentations (aPrsIter).Presentation();
+ aPrs->Presentation()->SetVisual (myTypeOfPresentation3d == PrsMgr_TOP_ProjectorDependant
+ ? Graphic3d_TOS_COMPUTED
+ : Graphic3d_TOS_ALL);
}
}
void PrsMgr_PresentableObject::ResetLocation()
{
TopLoc_Location aLoc;
- Handle(Geom_Transformation) G = new Geom_Transformation(aLoc.Transformation());
-
- for(Standard_Integer i=1;i<=myPresentations.Length();i++){
- const Handle(PrsMgr_Presentation)& P = myPresentations(i).Presentation();
- if(P->KindOfPresentation()==PrsMgr_KOP_3D){
- (*((Handle(PrsMgr_Presentation3d)*)&P))->Transform(G);
- }
+ Handle(Geom_Transformation) aTrsf = new Geom_Transformation (aLoc.Transformation());
+ for (Standard_Integer aPrsIter = 1; aPrsIter <= myPresentations.Length(); ++aPrsIter)
+ {
+ myPresentations (aPrsIter).Presentation()->Transform (aTrsf);
}
myLocation = aLoc;
}
//=======================================================================
void PrsMgr_PresentableObject::UpdateLocation()
{
- if(!HasLocation()) return;
- Handle(Geom_Transformation) G = new Geom_Transformation(Location().Transformation());
- if(G->Trsf().Form()==gp_Identity) return;
- for (Standard_Integer i=1;i<=myPresentations.Length();i++){
- const Handle(PrsMgr_Presentation)& P = myPresentations(i).Presentation();
- if(P->KindOfPresentation()==PrsMgr_KOP_3D){
- (*((Handle(PrsMgr_Presentation3d)*)&P))->Transform(G);
- }
+ if (!HasLocation())
+ {
+ return;
+ }
+
+ Handle(Geom_Transformation) aTrsf = new Geom_Transformation (Location().Transformation());
+ if (aTrsf->Trsf().Form() == gp_Identity)
+ {
+ return;
+ }
+
+ for (Standard_Integer aPrsIter = 1; aPrsIter <= myPresentations.Length(); ++aPrsIter)
+ {
+ myPresentations (aPrsIter).Presentation()->Transform (aTrsf);
}
}
//=======================================================================
//function : SetTransformPersistence
-//purpose :
+//purpose :
//=======================================================================
-void PrsMgr_PresentableObject::SetTransformPersistence( const Graphic3d_TransModeFlags& TheFlag,
- const gp_Pnt& ThePoint )
+void PrsMgr_PresentableObject::SetTransformPersistence (const Graphic3d_TransModeFlags& theFlag,
+ const gp_Pnt& thePoint)
{
- myTransformPersistence.Flag = TheFlag;
- myTransformPersistence.Point.x = (Standard_ShortReal)ThePoint.X();
- myTransformPersistence.Point.y = (Standard_ShortReal)ThePoint.Y();
- myTransformPersistence.Point.z = (Standard_ShortReal)ThePoint.Z();
-
- Handle(Graphic3d_Structure) aStruct;
- for( Standard_Integer i = 1, n = myPresentations.Length(); i <= n; i++ )
+ myTransformPersistence.Flag = theFlag;
+ myTransformPersistence.Point.x = (Standard_ShortReal )thePoint.X();
+ myTransformPersistence.Point.y = (Standard_ShortReal )thePoint.Y();
+ myTransformPersistence.Point.z = (Standard_ShortReal )thePoint.Z();
+ for (Standard_Integer aPrsIter = 1; aPrsIter <= myPresentations.Length(); ++aPrsIter)
+ {
+ const Handle(PrsMgr_Presentation)& aPrs3d = myPresentations (aPrsIter).Presentation();
+ if (!aPrs3d.IsNull()
+ && !aPrs3d->Presentation().IsNull())
{
- Handle(PrsMgr_Presentation3d) aPrs3d =
- Handle(PrsMgr_Presentation3d)::DownCast( myPresentations(i).Presentation() );
- if ( !aPrs3d.IsNull() )
- {
- aStruct = Handle(Graphic3d_Structure)::DownCast( aPrs3d->Presentation() );
- if( !aStruct.IsNull() )
- aStruct->SetTransformPersistence( TheFlag, ThePoint );
- }
+ aPrs3d->Presentation()->SetTransformPersistence (theFlag, thePoint);
}
+ }
}
//=======================================================================
// pass over presentation manager 3d mechanism right to the structures -
// we do not interested in display mode collections.
const PrsMgr_ModedPresentation& aModedPrs = myPresentations (aPrsIt);
-
- Handle(PrsMgr_Presentation3d) aPrs =
- Handle(PrsMgr_Presentation3d)::DownCast (aModedPrs.Presentation());
-
- if (aPrs.IsNull())
- continue;
-
- Handle(Prs3d_Presentation) aStruct3d = aPrs->Presentation();
- if (aStruct3d.IsNull())
+ if (aModedPrs.Presentation().IsNull()
+ || aModedPrs.Presentation()->Presentation().IsNull())
+ {
continue;
+ }
- aStruct3d->SetClipPlanes (myClipPlanes);
+ aModedPrs.Presentation()->Presentation()->SetClipPlanes (myClipPlanes);
}
}
-- Alternatively, this file may be used under the terms of Open CASCADE
-- commercial license or contractual agreement.
--- Modified by Rob : 20-feb-1997
--- Modified by Rob : 16-dec-1997 : kind of presentation
-
-deferred class Presentation from PrsMgr
-inherits TShared from MMgt
+class Presentation from PrsMgr
+inherits TShared from MMgt
uses
- PresentationManager from PrsMgr,
- KindOfPrs from PrsMgr
+ PresentationManager from PrsMgr,
+ NameOfColor from Quantity,
+ Transformation from Geom,
+ Length from Quantity,
+ ShadingAspect from Prs3d,
+ TypeOfPresentation3d from PrsMgr,
+ DataStructureManager from Graphic3d,
+ Structure from Graphic3d,
+ PresentableObjectPointer from PrsMgr,PresentableObject from PrsMgr,
+ Prs from PrsMgr,
+ Projector from Prs3d,
+ Presentation from Prs3d
is
- Initialize(aPresentationManager: PresentationManager from PrsMgr)
- is protected;
-
- KindOfPresentation(me) returns KindOfPrs from PrsMgr is deferred;
- ---Purpose: 2D or 3D
-
- Display(me: mutable) is deferred private;
-
- Erase(me: mutable) is deferred private;
-
- SetVisible (me: mutable; theValue: Boolean from Standard) is deferred private;
-
- Highlight(me: mutable) is deferred private;
-
- Unhighlight (me) is deferred private;
-
- IsHighlighted(me) returns Boolean from Standard
- is deferred private;
-
- IsDisplayed(me) returns Boolean from Standard
- is deferred private;
-
- Destroy ( me : mutable )
- is virtual;
- ---Level: Public
- ---Purpose: Destructor
- ---C++: alias ~
-
- DisplayPriority(me) returns Integer from Standard
- is deferred private;
-
- SetDisplayPriority(me:mutable;aNewPrior:Integer from Standard)
- is deferred private;
-
- SetZLayer ( me : mutable;
- theLayerId : Integer from Standard )
- is deferred private;
- ---Purpose: Set Z layer ID for the presentation
-
- GetZLayer ( me )
- returns Integer from Standard is deferred private;
- ---Purpose: Get Z layer ID for the presentation
-
- Clear(me: mutable)
- is deferred private;
-
+ Create (thePresentationManager : PresentationManager from PrsMgr;
+ thePresentableObject : PresentableObject from PrsMgr)
+ returns mutable Presentation from PrsMgr
+ is private;
+
+ Destroy (me : mutable) is virtual;
+ ---Level: Public
+ ---Purpose: Destructor
+ ---C++: alias ~
+
+ Display (me : mutable)
+ is virtual private;
+
+ Display (me : mutable;
+ theIsHighlight : Boolean from Standard)
+ is static private;
+ ---Purpose: Displays myStructure and sets myDisplayReason to theIsHighlight value if
+ -- myStructure was not displayed or was invisible
+
+ Erase (me : mutable)
+ is virtual private;
+
+ SetVisible (me : mutable;
+ theValue : Boolean from Standard)
+ is virtual private;
+
+ Highlight (me : mutable) is virtual private;
+
+ Unhighlight (me) is virtual private;
+
+ IsHighlighted (me) returns Boolean from Standard
+ is virtual private;
+
+ IsDisplayed (me) returns Boolean from Standard
+ is virtual private;
+
+ DisplayPriority(me) returns Integer from Standard
+ is virtual private;
+
+ SetDisplayPriority(me:mutable;aNewPrior:Integer from Standard)
+ is virtual private;
+
+ SetZLayer (me : mutable;
+ theLayerId : Integer from Standard)
+ is virtual private;
+ ---Purpose: Set Z layer ID for the presentation
+
+ GetZLayer (me) returns Integer from Standard
+ is virtual private;
+ ---Purpose: Get Z layer ID for the presentation
+
+ Clear (me : mutable)
+ is virtual private;
+ ---Purpose: removes the whole content of the presentation.
+ -- Does not remove the other connected presentations.
+
+ Color (me : mutable;
+ theColor : NameOfColor from Quantity)
+ is static private;
+
+ BoundBox (me)
+ is static private;
+
+---Category: references to other presentation.
+
+ Connect (me;
+ theOther : Presentation from PrsMgr)
+ is static private;
+
+---Category: Transformation methods.
+
+ Transform (me;
+ theTrsf : Transformation from Geom)
+ is static private;
+
+ Place (me;
+ theX, theY, theZ : Length from Quantity)
+ is static private;
+
+ Multiply (me;
+ theTrsf : Transformation from Geom)
+ is static private;
+
+ Move (me;
+ theX, theY, theZ : Length from Quantity)
+ is static private;
+
+---Category: Global Aspect methods
+
+ SetShadingAspect (me;
+ theShadingAspect : ShadingAspect from Prs3d)
+ is static private;
+
+ Presentation (me) returns mutable Presentation from Prs3d
+ is static;
+ ---C++: inline
+ ---C++: return const&
+
+---Category: Computed Structures
+
+ Compute (me : mutable;
+ theStructure : Structure from Graphic3d)
+ is static private;
+
+ Compute (me : mutable;
+ theProjector : DataStructureManager from Graphic3d)
+ returns Structure from Graphic3d
+ is static private;
+
+ Compute (me : mutable;
+ theProjector : DataStructureManager from Graphic3d;
+ theTrsf : Transformation from Geom)
+ returns Structure from Graphic3d
+ is static private;
+
+ Compute (me : mutable;
+ theProjector : DataStructureManager from Graphic3d;
+ theGivenStruct : Structure from Graphic3d)
+ is static private;
+
+ Compute (me : mutable;
+ theProjector : DataStructureManager from Graphic3d;
+ theTrsf : Transformation from Geom;
+ theGivenStruct : Structure from Graphic3d)
+ is static private;
+
---Category: Inquire Methods
---
- PresentationManager(me) returns mutable PresentationManager
- ---Purpose: returns the PresentationManager in which the
- -- presentation has been created.
- is static;
- ---C++: inline
- ---C++: return const&
+ PresentationManager (me) returns mutable PresentationManager
+ ---Purpose: returns the PresentationManager in which the presentation has been created.
+ is static;
+ ---C++: inline
+ ---C++: return const&
+
+ Projector (myclass;
+ theProjector : DataStructureManager from Graphic3d)
+ returns Projector from Prs3d
+ is private;
---Category: Internal Methods
- SetUpdateStatus(me:mutable; aStat : Boolean from Standard);
- ---C++: inline
-
- MustBeUpdated(me) returns Boolean from Standard;
- ---C++: inline
+ SetUpdateStatus (me : mutable;
+ theStat : Boolean from Standard);
+ ---C++: inline
+ MustBeUpdated (me) returns Boolean from Standard;
+ ---C++: inline
fields
- myPresentationManager: PresentationManager from PrsMgr is protected;
- myMustBeUpdated : Boolean from Standard is protected;
+ myPresentationManager : PresentationManager from PrsMgr;
+ myStructure : Prs from PrsMgr;
+ myPresentableObject : PresentableObjectPointer from PrsMgr;
+ myMustBeUpdated : Boolean from Standard;
+ myDisplayReason : Boolean from Standard;
friends
- class PresentationManager from PrsMgr
-
+
+ class PresentationManager from PrsMgr,
+ class PresentableObject from PrsMgr,
+ class Prs from PrsMgr
+
end Presentation from PrsMgr;
// commercial license or contractual agreement.
#include <PrsMgr_Presentation.ixx>
+#include <PrsMgr_PresentationManager.hxx>
+#include <PrsMgr_Prs.hxx>
+#include <PrsMgr_ModedPresentation.hxx>
-PrsMgr_Presentation::PrsMgr_Presentation
-(const Handle(PrsMgr_PresentationManager)& aPresentationManager)
-:myPresentationManager(aPresentationManager),myMustBeUpdated(Standard_False) {}
+#include <Graphic3d_Structure.hxx>
+#include <Visual3d_View.hxx>
+#include <Precision.hxx>
-void PrsMgr_Presentation::Destroy () {
+//=======================================================================
+//function : PrsMgr_Presentation
+//purpose :
+//=======================================================================
+PrsMgr_Presentation::PrsMgr_Presentation (const Handle(PrsMgr_PresentationManager3d)& thePrsMgr,
+ const Handle(PrsMgr_PresentableObject)& thePrsObject)
+: myPresentationManager (thePrsMgr),
+ myPresentableObject (thePrsObject.operator->()),
+ myMustBeUpdated (Standard_False),
+ myDisplayReason (Standard_False)
+{
+ myStructure = new PrsMgr_Prs (thePrsMgr->StructureManager(),
+ this, thePrsObject->TypeOfPresentation3d());
+ myStructure->SetOwner (myPresentableObject);
+}
+
+//=======================================================================
+//function : Display
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Display()
+{
+ Display (Standard_False);
+ myDisplayReason = Standard_False;
+}
+
+//=======================================================================
+//function : Display
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Display (const Standard_Boolean theIsHighlight)
+{
+ if (!myStructure->IsDisplayed())
+ {
+ myStructure->Display();
+ myDisplayReason = theIsHighlight;
+ }
+ else if (!myStructure->IsVisible())
+ {
+ myStructure->SetVisible (Standard_True);
+ myDisplayReason = theIsHighlight;
+ }
+}
+
+//=======================================================================
+//function : Erase
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Erase()
+{
+ if (myStructure.IsNull())
+ {
+ return;
+ }
+
+ // Erase structure from structure manager
+ myStructure->Erase();
+ myStructure->Clear();
+ // Disconnect other structures
+ myStructure->DisconnectAll (Graphic3d_TOC_DESCENDANT);
+ // Clear groups and remove graphic structure
+ myStructure.Nullify();
+}
+
+//=======================================================================
+//function : SetVisible
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::SetVisible (const Standard_Boolean theValue)
+{
+ myStructure->SetVisible (theValue);
+}
+
+//=======================================================================
+//function : Highlight
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Highlight()
+{
+ Display (Standard_True);
+ myStructure->Highlight();
+}
+
+//=======================================================================
+//function : Unhighlight
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Unhighlight() const
+{
+ myStructure->UnHighlight();
+ if (myDisplayReason)
+ {
+ myStructure->SetVisible (Standard_False);
+ }
+}
+
+//=======================================================================
+//function : Clear
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Clear()
+{
+ // This modification remove the contain of the structure:
+ // Consequence:
+ // 1. The memory zone of the group is reused
+ // 2. The speed for animation is constant
+ //myPresentableObject = NULL;
+ SetUpdateStatus (Standard_True);
+ if (myStructure.IsNull())
+ {
+ return;
+ }
+
+ myStructure->Clear (Standard_True);
+ // myStructure->Clear(Standard_False);
+ myStructure->RemoveAll();
+}
+
+//=======================================================================
+//function : Color
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Color (const Quantity_NameOfColor theColor)
+{
+ Display (Standard_True);
+ myStructure->Color (theColor);
+}
+
+//=======================================================================
+//function : BoundBox
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::BoundBox() const
+{
+ myStructure->BoundBox();
+}
+
+//=======================================================================
+//function : IsDisplayed
+//purpose :
+//=======================================================================
+Standard_Boolean PrsMgr_Presentation::IsDisplayed() const
+{
+ return myStructure->IsDisplayed()
+ && myStructure->IsVisible()
+ && !myDisplayReason;
+}
+
+//=======================================================================
+//function : IsHighlighted
+//purpose :
+//=======================================================================
+Standard_Boolean PrsMgr_Presentation::IsHighlighted() const
+{
+ return myStructure->IsHighlighted();
+}
+
+//=======================================================================
+//function : DisplayPriority
+//purpose :
+//=======================================================================
+Standard_Integer PrsMgr_Presentation::DisplayPriority() const
+{
+ return myStructure->DisplayPriority();
+}
+
+//=======================================================================
+//function : SetDisplayPriority
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::SetDisplayPriority (const Standard_Integer theNewPrior)
+{
+ myStructure->SetDisplayPriority (theNewPrior);
+}
+
+//=======================================================================
+//function : Connect
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Connect (const Handle(PrsMgr_Presentation)& theOther) const
+{
+ myStructure->Connect (theOther->Presentation());
+}
+
+//=======================================================================
+//function : Transform
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Transform (const Handle(Geom_Transformation)& theTrsf) const
+{
+ myStructure->Transform (theTrsf);
+}
+
+//=======================================================================
+//function : Place
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Place (const Quantity_Length theX,
+ const Quantity_Length theY,
+ const Quantity_Length theZ) const
+{
+ myStructure->Place (theX, theY, theZ);
+}
+
+//=======================================================================
+//function : Multiply
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Multiply (const Handle(Geom_Transformation)& theTrsf) const
+{
+ myStructure->Multiply (theTrsf);
+}
+
+//=======================================================================
+//function : Move
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Move (const Quantity_Length theX,
+ const Quantity_Length theY,
+ const Quantity_Length theZ) const
+{
+ myStructure->Move (theX, theY, theZ);
+}
+
+//=======================================================================
+//function : SetShadingAspect
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::SetShadingAspect (const Handle(Prs3d_ShadingAspect)& theShadingAspect) const
+{
+ myStructure->SetShadingAspect (theShadingAspect);
+}
+
+//=======================================================================
+//function : Compute
+//purpose : Methods for hidden parts...
+//=======================================================================
+Handle(Graphic3d_Structure) PrsMgr_Presentation::Compute (const Handle(Graphic3d_DataStructureManager)& theProjector)
+{
+ Handle(Prs3d_Presentation) aPrs = new Prs3d_Presentation (myPresentationManager->StructureManager());
+ myPresentableObject->Compute (Projector (theProjector), aPrs);
+ return aPrs;
+}
+
+//=======================================================================
+//function : Compute
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Compute (const Handle(Graphic3d_Structure)& theStructure)
+{
+ Standard_Integer aDispMode = 0;
+ Standard_Integer aPresentationsNumber = myPresentableObject->myPresentations.Length();
+ for (Standard_Integer anIter = 1; anIter <= aPresentationsNumber; ++anIter)
+ {
+ const PrsMgr_ModedPresentation& aModedPresentation = myPresentableObject->myPresentations.Value (anIter);
+ if (aModedPresentation.Presentation().operator->() == this)
+ {
+ aDispMode = aModedPresentation.Mode();
+ break;
+ }
+ }
+
+ Handle(Prs3d_Presentation) aPrs3d = Handle(Prs3d_Presentation)::DownCast (theStructure);
+ myPresentableObject->Compute (myPresentationManager, aPrs3d, aDispMode);
+}
+
+//=======================================================================
+//function : Compute
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Compute (const Handle(Graphic3d_DataStructureManager)& theProjector,
+ const Handle(Graphic3d_Structure)& theStructToFill)
+{
+ theStructToFill->Clear();
+ const Handle(Prs3d_Presentation)& aPrs = *((Handle(Prs3d_Presentation)* )&theStructToFill);
+ myPresentableObject->Compute (Projector (theProjector), aPrs);
+}
+
+//=======================================================================
+//function : Compute
+//purpose :
+//=======================================================================
+Handle(Graphic3d_Structure) PrsMgr_Presentation::Compute (const Handle(Graphic3d_DataStructureManager)& theProjector,
+ const Handle(Geom_Transformation)& theTrsf)
+{
+ Handle(Prs3d_Presentation) aPrs3d = new Prs3d_Presentation (myPresentationManager->StructureManager());
+ if (theTrsf->Form() == gp_Translation)
+ {
+ myPresentableObject->Compute (Projector (theProjector), aPrs3d);
+ aPrs3d->Transform (theTrsf);
+ return aPrs3d;
+ }
+
+ // waiting that something is done in gp_Trsf...rob
+ for (Standard_Integer i = 1; i <= 3; ++i)
+ {
+ for (Standard_Integer j = 1; j <= 3; ++j)
+ {
+ if (i != j)
+ {
+ if (Abs (theTrsf->Value (i, j)) > Precision::Confusion())
+ {
+ myPresentableObject->Compute (Projector (theProjector), theTrsf, aPrs3d);
+ return aPrs3d;
+ }
+ }
+ }
+ }
+
+ myPresentableObject->Compute (Projector (theProjector), aPrs3d);
+ aPrs3d->Transform (theTrsf);
+ return aPrs3d;
+}
+
+//=======================================================================
+//function : Compute
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Compute (const Handle(Graphic3d_DataStructureManager)& theProjector,
+ const Handle(Geom_Transformation)& theTrsf,
+ const Handle(Graphic3d_Structure)& theStructToFill)
+{
+ // recompute HLR after transformation in all the case
+ Handle(Prs3d_Presentation) aPrs = *((Handle(Prs3d_Presentation)*)&theStructToFill);
+ theStructToFill->Clear();
+ myPresentableObject->Compute (Projector (theProjector), theTrsf, aPrs);
+}
+
+//=======================================================================
+//function : Projector
+//purpose :
+//=======================================================================
+Handle(Prs3d_Projector) PrsMgr_Presentation::Projector (const Handle(Graphic3d_DataStructureManager)& theProjector)
+{
+ const Handle(Graphic3d_Camera)& aCamera = Handle(Visual3d_View)::DownCast (theProjector)->Camera();
+ const gp_Dir aDir = aCamera->Direction().Reversed();
+ const gp_Pnt anAt = aCamera->Center();
+ const gp_Dir anUp = aCamera->Up();
+ Handle(Prs3d_Projector) aProj = new Prs3d_Projector (!aCamera->IsOrthographic(),
+ aCamera->Scale(),
+ aDir.X(), aDir.Y(), aDir.Z(),
+ anAt.X(), anAt.Y(), anAt.Z(),
+ anUp.X(), anUp.Y(), anUp.Z());
+ return aProj;
+}
+
+//=======================================================================
+//function : Destroy
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::Destroy()
+{
+ if (!myStructure.IsNull())
+ {
+ myStructure->Clear();
+ myStructure.Nullify();
+ }
+}
+
+//=======================================================================
+//function : SetZLayer
+//purpose :
+//=======================================================================
+void PrsMgr_Presentation::SetZLayer (Standard_Integer theLayerId)
+{
+ myStructure->SetZLayer (theLayerId);
+}
+
+//=======================================================================
+//function : GetZLayer
+//purpose :
+//=======================================================================
+Standard_Integer PrsMgr_Presentation::GetZLayer() const
+{
+ return myStructure->GetZLayer();
}
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
-inline void PrsMgr_Presentation::SetUpdateStatus(const Standard_Boolean TheUpdateStatus)
-{myMustBeUpdated = TheUpdateStatus ;}
+inline void PrsMgr_Presentation::SetUpdateStatus (const Standard_Boolean theUpdateStatus)
+{
+ myMustBeUpdated = theUpdateStatus;
+}
-inline Standard_Boolean PrsMgr_Presentation::MustBeUpdated() const
-{return myMustBeUpdated;}
+inline Standard_Boolean PrsMgr_Presentation::MustBeUpdated() const
+{
+ return myMustBeUpdated;
+}
inline const Handle(PrsMgr_PresentationManager)& PrsMgr_Presentation::PresentationManager() const
-{return myPresentationManager;}
+{
+ return myPresentationManager;
+}
+
+inline const Handle(Prs3d_Presentation)& PrsMgr_Presentation::Presentation() const
+{
+ return myStructure;
+}
+++ /dev/null
--- Created on: 1993-10-21
--- Created by: Jean-Louis FRENKEL
--- Copyright (c) 1993-1999 Matra Datavision
--- Copyright (c) 1999-2014 OPEN CASCADE SAS
---
--- This file is part of Open CASCADE Technology software library.
---
--- 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.
---
--- Alternatively, this file may be used under the terms of Open CASCADE
--- commercial license or contractual agreement.
-
--- Modified by rob 09-oct-96
-
-
-
-class Presentation3d from PrsMgr inherits Presentation from PrsMgr
-
-uses
- PresentationManager from PrsMgr,
- Presentation from Prs3d,
- NameOfColor from Quantity,
- Transformation from Geom,
- Length from Quantity,
- ShadingAspect from Prs3d,
- TypeOfPresentation3d from PrsMgr,
- DataStructureManager from Graphic3d,
- Structure from Graphic3d,
- PresentableObjectPointer from PrsMgr,PresentableObject from PrsMgr,
- Prs from PrsMgr,
- Projector from Prs3d,
- KindOfPrs from PrsMgr
-is
- Create(aPresentationManager: PresentationManager from PrsMgr;
- aPresentableObject: PresentableObject from PrsMgr)
- returns mutable Presentation3d from PrsMgr
- is private;
-
- KindOfPresentation(me) returns KindOfPrs from PrsMgr is redefined static;
-
- Destroy(me: mutable) is redefined;
- ---Level: Public
- ---Purpose: Destructor
- ---C++: alias ~
-
- Display(me: mutable)
- is redefined static private;
-
- Display (me: mutable;
- theIsHighlight: Boolean from Standard)
- is static private;
- ---Level: Private;
- ---Purpose: displays myStructure and sets myDisplayReason to theIsHighlight value if
- -- myStructure was not displayed or was invisible
-
- Erase(me: mutable) is redefined static private;
-
- SetVisible (me: mutable; theValue: Boolean from Standard) is redefined static private;
-
- Highlight(me: mutable) is redefined static private;
-
- Unhighlight (me) is redefined static private;
-
- IsDisplayed (me) returns Boolean from Standard
- is redefined static private;
-
- IsHighlighted (me) returns Boolean from Standard
- is redefined static private;
-
-
- DisplayPriority(me) returns Integer from Standard
- is redefined static private;
-
- SetDisplayPriority(me:mutable;aNewPrior:Integer from Standard)
- is redefined static private;
-
- SetZLayer ( me : mutable;
- theLayerId : Integer from Standard )
- is redefined static private;
- ---Purpose: Set Z layer ID for the presentation
-
- GetZLayer ( me )
- returns Integer from Standard is redefined static private;
- ---Purpose: Get Z layer ID for the presentation
-
- Clear(me:mutable)
- ---Purpose: removes the whole content of the presentation.
- -- Does not remove the other connected presentations.
- --
- is redefined static private;
-
-
- Color(me:mutable; aColor: NameOfColor from Quantity)
- is static private;
-
- BoundBox(me)
- is static private;
-
----Category: references to other presentation.
-
- Connect(me; anOtherPresentation: Presentation3d from PrsMgr)
- is static private;
-
----Category: Transformation methods.
-
- Transform (me; aTransformation: Transformation from Geom)
- is static private;
-
- Place (me; X,Y,Z: Length from Quantity)
- is static private;
-
- Multiply (me; aTransformation: Transformation from Geom)
- is static private;
-
- Move (me; X,Y,Z: Length from Quantity)
- is static private;
-
- ---Category: Global Aspect methods
-
- SetShadingAspect(me;
- aShadingAspect: ShadingAspect from Prs3d)
- is static private;
-
- Presentation (me) returns mutable Presentation from Prs3d
- is static;
-
-
- ---Category: Computed Structures
-
- Compute(me : mutable; theStructure: Structure from Graphic3d)
- is static private;
-
- Compute(me : mutable; aProjector: DataStructureManager from Graphic3d)
- returns Structure from Graphic3d
- is static private;
-
- Compute(me : mutable;
- aProjector : DataStructureManager from Graphic3d;
- TheTrsf : Transformation from Geom)
- returns Structure from Graphic3d
- is static private;
-
- Compute(me : mutable;
- aProjector : DataStructureManager from Graphic3d;
- aGivenStruct : Structure from Graphic3d)
- is static private;
-
- Compute(me : mutable;
- aProjector : DataStructureManager from Graphic3d;
- TheTrsf : Transformation from Geom;
- aGivenStruct : Structure from Graphic3d)
- is static private;
-
-
-
- Projector(myclass; aProjector: DataStructureManager from Graphic3d)
- returns Projector from Prs3d
- is private;
-
-fields
-
- myStructure: Prs from PrsMgr;
- myDisplayReason: Boolean from Standard;
- myPresentableObject: PresentableObjectPointer from PrsMgr;
-friends
- class PresentationManager from PrsMgr,
- class PresentableObject from PrsMgr,
- class Prs from PrsMgr
-end Presentation3d from PrsMgr;
+++ /dev/null
-// Created on: 1993-10-21
-// Created by: Jean-Louis FRENKEL
-// Copyright (c) 1993-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// 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.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-// Modified by rob 09-oct-96
-
-
-#define IMP040200 //GG Recompute HLR after transformation
-// in all the case.
-
-#include <PrsMgr_Presentation3d.ixx>
-#include <PrsMgr_PresentationManager.hxx>
-#include <PrsMgr_Prs.hxx>
-#include <PrsMgr_ModedPresentation.hxx>
-#include <Visual3d_View.hxx>
-#include <Graphic3d_Structure.hxx>
-#include <Precision.hxx>
-
-PrsMgr_Presentation3d::PrsMgr_Presentation3d (const Handle(PrsMgr_PresentationManager3d)& aPresentationManager,
- const Handle(PrsMgr_PresentableObject)& aPresentableObject)
-: PrsMgr_Presentation(aPresentationManager),
- myDisplayReason(Standard_False),
- myPresentableObject (aPresentableObject.operator->())
-{
- myStructure = new PrsMgr_Prs(aPresentationManager->StructureManager(),
- this, aPresentableObject->TypeOfPresentation3d());
- myStructure->SetOwner(myPresentableObject);
-}
-
-PrsMgr_KindOfPrs PrsMgr_Presentation3d::KindOfPresentation() const
-{return PrsMgr_KOP_3D;}
-
-
-void PrsMgr_Presentation3d::Display()
-{
- Display (Standard_False);
- myDisplayReason = Standard_False;
-}
-
-void PrsMgr_Presentation3d::Display(const Standard_Boolean theIsHighlight)
-{
- if (!myStructure->IsDisplayed())
- {
- myStructure->Display();
- myDisplayReason = theIsHighlight;
- }
- else if (!myStructure->IsVisible())
- {
- myStructure->SetVisible (Standard_True);
- myDisplayReason = theIsHighlight;
- }
-}
-
-void PrsMgr_Presentation3d::Erase ()
-{
- if (myStructure.IsNull())
- {
- return;
- }
-
- // Erase structure from structure manager
- myStructure->Erase();
- myStructure->Clear();
- // Disconnect other structures
- myStructure->DisconnectAll (Graphic3d_TOC_DESCENDANT);
- // Clear groups and remove graphic structure
- myStructure.Nullify();
-}
-
-void PrsMgr_Presentation3d::SetVisible (const Standard_Boolean theValue)
-{
- myStructure->SetVisible (theValue);
-}
-
-void PrsMgr_Presentation3d::Highlight () {
- Display (Standard_True);
- myStructure->Highlight();}
-
-void PrsMgr_Presentation3d::Unhighlight () const {
- myStructure->UnHighlight();
- if (myDisplayReason) myStructure->SetVisible (Standard_False);
-}
-
-void PrsMgr_Presentation3d::Clear() {
- // This modification remove the contain of the structure:
- // Consequence:
- // 1. The memory zone of the group is reused
- // 2. The speed for animation is constant
- //myPresentableObject = NULL;
- SetUpdateStatus(Standard_True);
- if (myStructure.IsNull())
- {
- return;
- }
-
- myStructure->Clear(Standard_True);
- // myStructure->Clear(Standard_False);
- myStructure->RemoveAll();
-}
-
-void PrsMgr_Presentation3d::Color(const Quantity_NameOfColor aColor){
- Display (Standard_True);
- myStructure->Color(aColor);
-}
-
-void PrsMgr_Presentation3d::BoundBox() const {
- myStructure->BoundBox();
-}
-
-Standard_Boolean PrsMgr_Presentation3d::IsDisplayed () const {
- return myStructure->IsDisplayed() && myStructure->IsVisible() && !myDisplayReason;
-}
-
-Standard_Boolean PrsMgr_Presentation3d::IsHighlighted () const {
- return myStructure->IsHighlighted();
-}
-
-
-Standard_Integer PrsMgr_Presentation3d::DisplayPriority() const {
-return myStructure->DisplayPriority();
-}
-
-void PrsMgr_Presentation3d::SetDisplayPriority(const Standard_Integer TheNewPrior)
-{
- myStructure->SetDisplayPriority(TheNewPrior);
-}
-
-Handle(Prs3d_Presentation) PrsMgr_Presentation3d::Presentation() const {
- return myStructure;
-}
-void PrsMgr_Presentation3d::Connect(const Handle(PrsMgr_Presentation3d)& anOtherPresentation) const {
- myStructure->Connect(anOtherPresentation->Presentation());
-}
-
-void PrsMgr_Presentation3d::Transform (const Handle(Geom_Transformation)& aTransformation) const {
- myStructure->Transform(aTransformation);
-}
-
-void PrsMgr_Presentation3d::Place (const Quantity_Length X,
- const Quantity_Length Y,
- const Quantity_Length Z) const {
- myStructure->Place(X,Y,Z);
-}
-
-void PrsMgr_Presentation3d::Multiply (const Handle(Geom_Transformation)& aTransformation) const {
- myStructure->Multiply(aTransformation);
-}
-
-void PrsMgr_Presentation3d::Move (const Quantity_Length X,
- const Quantity_Length Y,
- const Quantity_Length Z) const {
- myStructure->Move(X,Y,Z);
-}
-
-void PrsMgr_Presentation3d::SetShadingAspect(const Handle(Prs3d_ShadingAspect)& aShadingAspect) const {
- myStructure->SetShadingAspect(aShadingAspect);
-}
-
-
-
-//=======================================================================
-//function : Compute
-//purpose : Methods for hidden parts...
-//=======================================================================
-
-Handle(Graphic3d_Structure) PrsMgr_Presentation3d::
-Compute(const Handle(Graphic3d_DataStructureManager)& aProjector)
-{
-#ifdef DEB
- cout<<"passage in g = Compute(P) "<<endl;
-#endif
- Handle(Prs3d_Presentation) g = new Prs3d_Presentation(Handle(PrsMgr_PresentationManager3d)::DownCast(PresentationManager())->StructureManager());
- myPresentableObject->Compute(Projector(aProjector),g);
- return g;
-}
-
-//=======================================================================
-//function : Compute
-//purpose :
-//=======================================================================
-
-void PrsMgr_Presentation3d::Compute (const Handle(Graphic3d_Structure)& theStructure)
-{
- Standard_Integer aDispMode = 0;
-
- Standard_Integer aPresentationsNumber = myPresentableObject->myPresentations.Length();
- for (Standard_Integer anIter = 1; anIter <= aPresentationsNumber; anIter++)
- {
- const PrsMgr_ModedPresentation& aModedPresentation = myPresentableObject->myPresentations.Value (anIter);
- Handle(PrsMgr_Presentation) aPresentation = aModedPresentation.Presentation();
- PrsMgr_Presentation3d* aPresentation3d = (PrsMgr_Presentation3d* )aPresentation.operator->();
- if (aPresentation3d == this)
- {
- aDispMode = aModedPresentation.Mode();
- break;
- }
- }
-
- Handle(Prs3d_Presentation) aPrs3d = Handle(Prs3d_Presentation)::DownCast (theStructure);
-
- myPresentableObject->Compute(
- Handle(PrsMgr_PresentationManager3d)::DownCast (PresentationManager()),
- aPrs3d,
- aDispMode);
-}
-
-//=======================================================================
-//function : Compute
-//purpose :
-//=======================================================================
-
-void PrsMgr_Presentation3d::Compute(const Handle(Graphic3d_DataStructureManager)& aProjector,
- const Handle(Graphic3d_Structure)& TheStructToFill)
-{
-#ifdef DEB
- cout<<"passage in Compute(P,Str)"<<endl;
-#endif
- TheStructToFill->Clear();
- const Handle(Prs3d_Presentation)& P = *((Handle(Prs3d_Presentation)*) &TheStructToFill);
- myPresentableObject->Compute(Projector(aProjector),P);
-}
-
-//=======================================================================
-//function : Compute
-//purpose :
-//=======================================================================
-Handle(Graphic3d_Structure) PrsMgr_Presentation3d::
-Compute(const Handle(Graphic3d_DataStructureManager)& aProjector,
- const Handle(Geom_Transformation)& TheTrsf)
-{
-#ifdef DEB
- cout<<"passage in G = Compute(P,Trsf)"<<endl;
-#endif
- Handle(Prs3d_Presentation) g = new Prs3d_Presentation(Handle(PrsMgr_PresentationManager3d)::DownCast(PresentationManager())->StructureManager());
-
-
- if(TheTrsf->Form()== gp_Translation){
-#ifdef DEB
- cout<<"\tla Trsf est une translation"<<endl;
-#endif
-
- myPresentableObject->Compute(Projector(aProjector),g);
- g->Transform(TheTrsf);
- }
- else{
- // waiting that something is done in gp_Trsf...rob
- Standard_Boolean good (Standard_True);
- for (Standard_Integer i=1;i<=3 && good ;i++){
- for (Standard_Integer j=1;j<=3 && good ;j++){
- if(i!=j){
- if(Abs(TheTrsf->Value(i,j)) > Precision::Confusion())
- good = Standard_False;
- }
- }
- }
-
- if(good){
-#ifdef DEB
- cout<<"\t it is checked if Trsf is a Translation"<<endl;
-#endif
- myPresentableObject->Compute(Projector(aProjector),g);
- g->Transform(TheTrsf);
-
- }
- else{
-#ifdef DEB
- cout<<"\t Trsf is not only translation..."<<endl;
-#endif
- myPresentableObject->Compute(Projector(aProjector),TheTrsf,g);
- }
- }
- return g;
-}
-
-//=======================================================================
-//function : Compute
-//purpose :
-//=======================================================================
-void PrsMgr_Presentation3d::Compute(const Handle(Graphic3d_DataStructureManager)& aProjector,
- const Handle(Geom_Transformation)& TheTrsf,
- const Handle(Graphic3d_Structure)& TheStructToFill)
-{
-
-#ifdef DEB
- cout<<"passage in Compute(P,Trsf,Str)"<<endl;
-#endif
-
- Handle(Prs3d_Presentation) P = *((Handle(Prs3d_Presentation)*)&TheStructToFill);
-
-#ifdef IMP040200
- TheStructToFill->Clear();
- myPresentableObject->Compute(Projector(aProjector),TheTrsf,P);
-#else //Does not work properly, HLR seems deactivated for view rotation
- if(TheTrsf->Form()== gp_Translation){
-#ifdef DEB
- cout<<"\t Trsf is a translation"<<endl;
-#endif
-// myPresentableObject->Compute(Projector(aProjector),P);
- P->Transform(TheTrsf);
- }
- else{
- // waiting that something is done in gp_Trsf...rob
- Standard_Boolean good (Standard_True);
- for (Standard_Integer i=1;i<=3 && good ;i++){
- for (Standard_Integer j=1;j<=3 && good ;j++){
- if(i!=j){
- if(Abs(TheTrsf->Value(i,j)) > Precision::Confusion())
- good = Standard_False;
- }
- }
- }
- if(good && !TheStructToFill->IsEmpty()){
-#ifdef DEB
- cout<<"\t it is checked if Trsf is a Translation"<<endl;
-#endif
-
- P->Transform(TheTrsf);
- }
- else{
- TheStructToFill->Clear();
-
-#ifdef DEB
- cout<<"\t Trsf is not only translation..."<<endl;
-#endif
-
- myPresentableObject->Compute(Projector(aProjector),TheTrsf,P);
- }
- }
-#endif
-}
-
-
-
-
-
-
-//=======================================================================
-//function : Projector
-//purpose :
-//=======================================================================
-
-Handle(Prs3d_Projector) PrsMgr_Presentation3d::Projector(const Handle(Graphic3d_DataStructureManager)& aProjector)
-{
- const Handle(Graphic3d_Camera)& aCamera = Handle(Visual3d_View)::DownCast (aProjector)->Camera();
-
- Standard_Real DX, DY, DZ,XAt, YAt , ZAt,XUp, YUp, ZUp;
- gp_Dir aDir = aCamera->Direction().Reversed();
- DX = aDir.X(); DY = aDir.Y(); DZ = aDir.Z();
-
- gp_Pnt anAt = aCamera->Center();
- XAt = anAt.X(); YAt = anAt.Y(); ZAt = anAt.Z();
-
- gp_Dir anUp = aCamera->Up();
- XUp = anUp.X(); YUp = anUp.Y(); ZUp = anUp.Z();
-
- Standard_Boolean pers = !aCamera->IsOrthographic();
- Standard_Real focale = aCamera->Scale();
-
- Handle(Prs3d_Projector) aProj =
- new Prs3d_Projector(pers, focale, DX, DY, DZ, XAt, YAt, ZAt, XUp, YUp, ZUp);
- return aProj;
-
-}
-
-void PrsMgr_Presentation3d::Destroy () {
- if (!myStructure.IsNull())
- myStructure->Clear();
- myStructure.Nullify();
-}
-
-//=======================================================================
-//function : SetZLayer
-//purpose :
-//=======================================================================
-
-void PrsMgr_Presentation3d::SetZLayer (Standard_Integer theLayerId)
-{
- myStructure->SetZLayer (theLayerId);
-}
-
-//=======================================================================
-//function : GetZLayer
-//purpose :
-//=======================================================================
-
-Standard_Integer PrsMgr_Presentation3d::GetZLayer () const
-{
- return myStructure->GetZLayer ();
-}
Transformation from Geom,
NameOfMaterial from Graphic3d,
Presentation from PrsMgr,
- Presentation3d from PrsMgr,
View from V3d,
ShadingAspect from Prs3d,
Presentation from Prs3d
---Purpose: this method will change the color and the aspect of the presentations containing shaded structures.
is static;
- CastPresentation (me;
- thePrsObject : PresentableObject from PrsMgr;
- theMode : Integer from Standard = 0)
- returns mutable Presentation3d from PrsMgr
- is static;
-
---Category: Private & deferred methods.
HasPresentation (me;
AddPresentation (thePrsObj, theMode);
}
- Handle(PrsMgr_Presentation3d) aPrs = CastPresentation (thePrsObj, theMode);
+ Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
if (aPrs->MustBeUpdated())
{
Update (thePrsObj, theMode);
AddPresentation (thePrsObj, theMode);
}
- Handle(PrsMgr_Presentation3d) aPrs = CastPresentation (thePrsObj, theMode);
+ Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
if (aPrs->MustBeUpdated())
{
Update (thePrsObj, theMode);
void PrsMgr_PresentationManager::AddPresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
const Standard_Integer theMode)
{
- Handle(PrsMgr_Presentation) aPrs = new PrsMgr_Presentation3d (this, thePrsObj);
+ Handle(PrsMgr_Presentation) aPrs = new PrsMgr_Presentation (this, thePrsObj);
thePrsObj->Presentations().Append (PrsMgr_ModedPresentation (aPrs, theMode));
thePrsObj->Fill (this, aPrs, theMode);
{
AddPresentation (theOtherObject, theOtherMode);
}
- CastPresentation (thePrsObject, theMode)->Connect (CastPresentation (theOtherObject, theMode));
+ Presentation (thePrsObject, theMode)->Connect (Presentation (theOtherObject, theMode));
}
// =======================================================================
const Handle(Geom_Transformation)& theTransformation,
const Standard_Integer theMode)
{
- CastPresentation (thePrsObj, theMode)->Transform (theTransformation);
+ Presentation (thePrsObj, theMode)->Transform (theTransformation);
}
// =======================================================================
const Quantity_Length theZ,
const Standard_Integer theMode)
{
- CastPresentation (thePrsObj, theMode)->Place (theX, theY, theZ);
+ Presentation (thePrsObj, theMode)->Place (theX, theY, theZ);
}
// =======================================================================
const Handle(Geom_Transformation)& theTransformation,
const Standard_Integer theMode)
{
- CastPresentation (thePrsObj, theMode)->Multiply (theTransformation);
+ Presentation (thePrsObj, theMode)->Multiply (theTransformation);
}
// =======================================================================
const Quantity_Length theZ,
const Standard_Integer theMode)
{
- CastPresentation (thePrsObj, theMode)->Move (theX, theY, theZ);
+ Presentation (thePrsObj, theMode)->Move (theX, theY, theZ);
}
// =======================================================================
AddPresentation (thePrsObj, theMode);
}
- Handle(PrsMgr_Presentation3d) aPrs = CastPresentation (thePrsObj, theMode);
+ Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
if (aPrs->MustBeUpdated())
{
Update (thePrsObj, theMode);
{
Update (thePrsObject, theMode);
}
- CastPresentation (thePrsObject, theMode)->BoundBox();
+ Presentation (thePrsObject, theMode)->BoundBox();
}
// =======================================================================
{
if (HasPresentation (thePrsObject, theMode))
{
- CastPresentation (thePrsObject, theMode)->SetShadingAspect (theShadingAspect);
+ Presentation (thePrsObject, theMode)->SetShadingAspect (theShadingAspect);
}
}
-
-// =======================================================================
-// function : CastPresentation
-// purpose :
-// =======================================================================
-Handle(PrsMgr_Presentation3d) PrsMgr_PresentationManager::CastPresentation (const Handle(PrsMgr_PresentableObject)& thePrsObject,
- const Standard_Integer theMode) const
-{
- return Handle(PrsMgr_Presentation3d)::DownCast (Presentation (thePrsObject, theMode));
-}
Structure from Graphic3d,
DataStructureManager from Graphic3d,
TypeOfPresentation3d from PrsMgr,
- Presentation3dPointer from PrsMgr
+ PresentationPointer from PrsMgr
is
- Create(aStructureManager : StructureManager from Graphic3d;
- aPresentation : Presentation3dPointer from PrsMgr;
- aTypeOfPresentation3d : TypeOfPresentation3d from PrsMgr)
+ Create (theStructManager : StructureManager from Graphic3d;
+ thePresentation : PresentationPointer from PrsMgr;
+ theTypeOfPresentation3d : TypeOfPresentation3d from PrsMgr)
returns mutable Prs from PrsMgr;
Compute (me: mutable)
fields
- myPresentation3d: Presentation3dPointer from PrsMgr;
+ myPresentation3d: PresentationPointer from PrsMgr;
end Prs from PrsMgr;
// commercial license or contractual agreement.
#include <PrsMgr_Prs.ixx>
-#include <PrsMgr_Presentation3d.hxx>
+#include <PrsMgr_Presentation.hxx>
#include <Precision.hxx>
#include <gp_Trsf.hxx>
#include <Geom_Transformation.hxx>
-PrsMgr_Prs::PrsMgr_Prs (const Handle(Graphic3d_StructureManager)& aStructureManager,
- const PrsMgr_Presentation3dPointer& aPresentation3d,
- const PrsMgr_TypeOfPresentation3d aTypeOfPresentation)
-:Prs3d_Presentation(aStructureManager),myPresentation3d(aPresentation3d)
+PrsMgr_Prs::PrsMgr_Prs (const Handle(Graphic3d_StructureManager)& theStructManager,
+ const PrsMgr_PresentationPointer& thePrs,
+ const PrsMgr_TypeOfPresentation3d theTypeOfPresentation)
+: Prs3d_Presentation (theStructManager),
+ myPresentation3d (thePrs)
{
-
- if (aTypeOfPresentation == PrsMgr_TOP_ProjectorDependant)
+ if (theTypeOfPresentation == PrsMgr_TOP_ProjectorDependant)
SetVisual(Graphic3d_TOS_COMPUTED);
}
#include <TColStd_ListIteratorOfListOfInteger.hxx>
#include <PrsMgr_Presentation.hxx>
#include <Prs3d_Presentation.hxx>
-#include <PrsMgr_Presentation3d.hxx>
-#include <PrsMgr_PresentationManager3d.hxx>
+#include <PrsMgr_PresentationManager.hxx>
#include <Geom_Transformation.hxx>
#undef OPTIM_UPDATE // If this variable is defined there will be done