mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
Compare commits
6 Commits
V7_8_1
...
CR0-ipdmpr
Author | SHA1 | Date | |
---|---|---|---|
|
fbe1a0f4e7 | ||
|
a2ad59f7e2 | ||
|
36b459e7e8 | ||
|
c87643bb5a | ||
|
3bfa6eeeed | ||
|
3e0b2885dd |
@@ -180,21 +180,22 @@ is
|
|||||||
TOI_IsoV,
|
TOI_IsoV,
|
||||||
TOI_Both;
|
TOI_Both;
|
||||||
---Purpose: Declares the type of isoparameter displayed.
|
---Purpose: Declares the type of isoparameter displayed.
|
||||||
|
|
||||||
enumeration DisplayStatus is
|
enumeration DisplayStatus is
|
||||||
DS_Displayed,
|
DS_Displayed,
|
||||||
DS_Erased,
|
DS_Erased,
|
||||||
DS_Temporary,
|
DS_Temporary,
|
||||||
DS_None;
|
DS_DispImmediate,
|
||||||
---Purpose:
|
DS_None;
|
||||||
-- To give the display status of an Interactive Object.
|
---Purpose:
|
||||||
-- This will be one of the following:
|
-- To give the display status of an Interactive Object.
|
||||||
-- - DS_Displayed: the Interactive Object is
|
-- This will be one of the following:
|
||||||
-- displayed in the main viewer;
|
-- - DS_Displayed: the Interactive Object is displayed in the main viewer;
|
||||||
-- - DS_Erased: the Interactive Object is hidden in main viewer;
|
-- - DS_Erased: the Interactive Object is hidden in main viewer;
|
||||||
-- - DS_Temporary: the Interactive Object is temporarily displayed;
|
-- - DS_Temporary: temporarily displayed (in local context);
|
||||||
-- - DS_None: the Interactive Object is nowhere displayed.
|
-- - DS_DispImmediate: displayed in the list of immediate presentations (highly interactive);
|
||||||
|
-- - DS_None: nowhere displayed.
|
||||||
|
|
||||||
enumeration SelectStatus is
|
enumeration SelectStatus is
|
||||||
SS_Added,
|
SS_Added,
|
||||||
SS_Removed,
|
SS_Removed,
|
||||||
|
@@ -172,30 +172,31 @@ is
|
|||||||
-- local context without selection, use the syntax below,
|
-- local context without selection, use the syntax below,
|
||||||
-- setting aSelectionMode to -1.
|
-- setting aSelectionMode to -1.
|
||||||
|
|
||||||
Display(me : mutable;
|
Display (me : mutable;
|
||||||
anIobj : InteractiveObject from AIS;
|
theIObj : InteractiveObject from AIS;
|
||||||
amode : Integer from Standard ;
|
theDispMode : Integer from Standard;
|
||||||
aSelectionMode : Integer from Standard ;
|
theSelectionMode : Integer from Standard;
|
||||||
updateviewer : Boolean from Standard = Standard_True;
|
theToUpdateViewer : Boolean from Standard = Standard_True;
|
||||||
allowdecomposition : Boolean from Standard = Standard_True);
|
theToAllowDecomposition : Boolean from Standard = Standard_True;
|
||||||
|
theDispStatus : DisplayStatus from AIS = AIS_DS_None);
|
||||||
---Purpose: Controls the choice between the using the display
|
---Purpose: Controls the choice between the using the display
|
||||||
-- and selection modes of open local context which you
|
-- and selection modes of open local context which you
|
||||||
-- have defined and activating those available by default.
|
-- have defined and activating those available by default.
|
||||||
-- If no Local Context is opened. and the Interactive
|
-- If no Local Context is opened. and the Interactive
|
||||||
-- Object aniobj has no display mode of its own, the
|
-- Object theIObj has no display mode of its own, the
|
||||||
-- default display mode, 0, is used. Likewise, if aniobj
|
-- default display mode, 0, is used. Likewise, if theIObj
|
||||||
-- has no selection mode of its own, the default one, 0, is used.
|
-- has no selection mode of its own, the default one, 0, is used.
|
||||||
-- If a local context is open and if updateviewer equals
|
-- If a local context is open and if theToUpdateViewer equals
|
||||||
-- Standard_False, the presentation of the Interactive
|
-- Standard_False, the presentation of the Interactive
|
||||||
-- Object activates the selection mode; the object is
|
-- Object activates the selection mode; the object is
|
||||||
-- displayed but no viewer will be updated.
|
-- displayed but no viewer will be updated.
|
||||||
-- If aSelectionMode equals -1, anIobj will not be
|
-- If theSelectionMode equals -1, theIObj will not be
|
||||||
-- activated: it will be displayed but will not be selectable.
|
-- activated: it will be displayed but will not be selectable.
|
||||||
-- Use this if you want to view the object in open local
|
-- Use this if you want to view the object in open local
|
||||||
-- context without selection. Note: This option is only
|
-- context without selection. Note: This option is only
|
||||||
-- available in Local Context.
|
-- available in Local Context.
|
||||||
-- If allowDecomposition equals true, anIObj can have
|
-- If theToAllowDecomposition equals true, theIObj can have
|
||||||
-- subshapes detected by selection mechanisms. anIObj
|
-- subshapes detected by selection mechanisms. theIObj
|
||||||
-- must be able to give a shape selection modes which
|
-- must be able to give a shape selection modes which
|
||||||
-- fit the AIS_Shape selection modes:
|
-- fit the AIS_Shape selection modes:
|
||||||
-- - vertices: 1
|
-- - vertices: 1
|
||||||
@@ -268,15 +269,6 @@ is
|
|||||||
-- inWhichLocal gives the local context in which anIObj
|
-- inWhichLocal gives the local context in which anIObj
|
||||||
-- is displayed. By default, the index -1 refers to the last
|
-- is displayed. By default, the index -1 refers to the last
|
||||||
-- Local Context opened.
|
-- Local Context opened.
|
||||||
|
|
||||||
Clear(me : mutable;
|
|
||||||
aniobj : InteractiveObject from AIS;
|
|
||||||
updateviewer : Boolean from Standard = Standard_True);
|
|
||||||
---Purpose: Removes the interactive object aniobj from all viewers.
|
|
||||||
-- If a local context is open and if updateviewer equals
|
|
||||||
-- Standard_False, the presentation of the Interactive
|
|
||||||
-- Object activates the selection mode; the object is
|
|
||||||
-- displayed but no viewer will be updated.
|
|
||||||
|
|
||||||
ClearPrs( me :mutable;
|
ClearPrs( me :mutable;
|
||||||
aniobj : InteractiveObject from AIS;
|
aniobj : InteractiveObject from AIS;
|
||||||
@@ -2039,6 +2031,19 @@ is
|
|||||||
---Purpose: returns if possible,
|
---Purpose: returns if possible,
|
||||||
-- the first local context where the object is seen
|
-- the first local context where the object is seen
|
||||||
|
|
||||||
|
SetViewAffinity (me : mutable;
|
||||||
|
theIObj : InteractiveObject from AIS;
|
||||||
|
theView : View from V3d;
|
||||||
|
theIsVisible : Boolean from Standard) is static;
|
||||||
|
---Purpose: setup object visibility in specified view,
|
||||||
|
-- has no effect if object is not disaplyed in this context.
|
||||||
|
|
||||||
|
ObjectsForView (me;
|
||||||
|
theListOfIO : in out ListOfInteractive from AIS;
|
||||||
|
theView : View from V3d;
|
||||||
|
theIsVisibleInView : Boolean from Standard;
|
||||||
|
theStatus : DisplayStatus from AIS = AIS_DS_None) is static;
|
||||||
|
---Purpose: Query objects visible or hidden in specified view due to affinity mask.
|
||||||
|
|
||||||
InitAttributes(me:mutable) is static private;
|
InitAttributes(me:mutable) is static private;
|
||||||
|
|
||||||
@@ -2046,6 +2051,16 @@ is
|
|||||||
PurgeViewer(me:mutable;Vwr:Viewer from V3d)
|
PurgeViewer(me:mutable;Vwr:Viewer from V3d)
|
||||||
returns Integer from Standard is static private;
|
returns Integer from Standard is static private;
|
||||||
|
|
||||||
|
redisplayPrsModes (me : mutable;
|
||||||
|
theIObj : InteractiveObject from AIS;
|
||||||
|
theToUpdateViewer : Boolean from Standard = Standard_True) is static private;
|
||||||
|
---Purpose: UNKNOWN
|
||||||
|
|
||||||
|
redisplayPrsRecModes (me : mutable;
|
||||||
|
theIObj : InteractiveObject from AIS;
|
||||||
|
theToUpdateViewer : Boolean from Standard = Standard_True) is static private;
|
||||||
|
---Purpose: UNKNOWN
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
myObjects : DataMapOfIOStatus from AIS;
|
myObjects : DataMapOfIOStatus from AIS;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -43,6 +43,7 @@
|
|||||||
#include <V3d_SpotLight.hxx>
|
#include <V3d_SpotLight.hxx>
|
||||||
#include <V3d_DirectionalLight.hxx>
|
#include <V3d_DirectionalLight.hxx>
|
||||||
#include <V3d_AmbientLight.hxx>
|
#include <V3d_AmbientLight.hxx>
|
||||||
|
#include <Visual3d_View.hxx>
|
||||||
|
|
||||||
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
#include <TColStd_ListIteratorOfListOfInteger.hxx>
|
||||||
#include <SelectMgr_Selection.hxx>
|
#include <SelectMgr_Selection.hxx>
|
||||||
@@ -84,7 +85,7 @@ AIS_StatusOfDetection AIS_InteractiveContext::MoveTo (const Standard_Integer th
|
|||||||
AIS_StatusOfDetection aStatus = AIS_SOD_Nothing;
|
AIS_StatusOfDetection aStatus = AIS_SOD_Nothing;
|
||||||
Standard_Boolean toUpdateViewer = Standard_False;
|
Standard_Boolean toUpdateViewer = Standard_False;
|
||||||
|
|
||||||
// allonzy
|
myFilters->SetDisabledObjects (theView->View()->HiddenObjects());
|
||||||
myMainSel->Pick (theXPix, theYPix, theView);
|
myMainSel->Pick (theXPix, theYPix, theView);
|
||||||
|
|
||||||
// filling of myAISDetectedSeq sequence storing information about detected AIS objects
|
// filling of myAISDetectedSeq sequence storing information about detected AIS objects
|
||||||
|
@@ -135,13 +135,21 @@ void AIS_Line::Compute(const Handle(Prs3d_Projector)& aProjector, const Handle(G
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void AIS_Line::ComputeSelection(const Handle(SelectMgr_Selection)& aSelection,
|
void AIS_Line::ComputeSelection(const Handle(SelectMgr_Selection)& theSelection,
|
||||||
const Standard_Integer)
|
const Standard_Integer theMode)
|
||||||
{
|
{
|
||||||
|
// Do not support selection modes different from 0 currently
|
||||||
|
if (theMode)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!myLineIsSegment) ComputeInfiniteLineSelection(aSelection);
|
if (!myLineIsSegment)
|
||||||
else ComputeSegmentLineSelection(aSelection);
|
{
|
||||||
|
ComputeInfiniteLineSelection(theSelection);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ComputeSegmentLineSelection(theSelection);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -87,6 +87,7 @@
|
|||||||
#include <SelectBasics_SensitiveEntity.hxx>
|
#include <SelectBasics_SensitiveEntity.hxx>
|
||||||
#include <TCollection_AsciiString.hxx>
|
#include <TCollection_AsciiString.hxx>
|
||||||
#include <NCollection_Map.hxx>
|
#include <NCollection_Map.hxx>
|
||||||
|
#include <Visual3d_View.hxx>
|
||||||
|
|
||||||
#ifdef OCC9026
|
#ifdef OCC9026
|
||||||
#include <SelectMgr_DataMapIteratorOfDataMapOfIntegerSensitive.hxx>
|
#include <SelectMgr_DataMapIteratorOfDataMapOfIntegerSensitive.hxx>
|
||||||
@@ -128,6 +129,7 @@ AIS_StatusOfDetection AIS_LocalContext::MoveTo (const Standard_Integer theXpix,
|
|||||||
|
|
||||||
myCurDetected = 0;
|
myCurDetected = 0;
|
||||||
myDetectedSeq.Clear();
|
myDetectedSeq.Clear();
|
||||||
|
myFilters->SetDisabledObjects (theView->View()->HiddenObjects());
|
||||||
myMainVS->Pick (theXpix, theYpix, theView);
|
myMainVS->Pick (theXpix, theYpix, theView);
|
||||||
|
|
||||||
const Standard_Integer aDetectedNb = myMainVS->NbPicked();
|
const Standard_Integer aDetectedNb = myMainVS->NbPicked();
|
||||||
|
@@ -23,6 +23,9 @@ Graphic3d_CPick.hxx
|
|||||||
Graphic3d_CUserDraw.hxx
|
Graphic3d_CUserDraw.hxx
|
||||||
Graphic3d_CView.hxx
|
Graphic3d_CView.hxx
|
||||||
Graphic3d_CGraduatedTrihedron.hxx
|
Graphic3d_CGraduatedTrihedron.hxx
|
||||||
|
Graphic3d_ViewAffinity.hxx
|
||||||
|
Graphic3d_ViewAffinity.cxx
|
||||||
|
Graphic3d_MapOfObject.hxx
|
||||||
Graphic3d_Structure.lxx
|
Graphic3d_Structure.lxx
|
||||||
Graphic3d_Structure.pxx
|
Graphic3d_Structure.pxx
|
||||||
Graphic3d_ShaderObject.hxx
|
Graphic3d_ShaderObject.hxx
|
||||||
@@ -35,6 +38,8 @@ Graphic3d_ShaderVariable.lxx
|
|||||||
Graphic3d_ShaderObject_Handle.hxx
|
Graphic3d_ShaderObject_Handle.hxx
|
||||||
Graphic3d_ShaderProgram_Handle.hxx
|
Graphic3d_ShaderProgram_Handle.hxx
|
||||||
Graphic3d_ShaderVariable_Handle.hxx
|
Graphic3d_ShaderVariable_Handle.hxx
|
||||||
|
Graphic3d_MapOfStructure.hxx
|
||||||
|
Graphic3d_MapIteratorOfMapOfStructure.hxx
|
||||||
Graphic3d_TypeOfShaderObject.hxx
|
Graphic3d_TypeOfShaderObject.hxx
|
||||||
Graphic3d_DataStructure.pxx
|
Graphic3d_DataStructure.pxx
|
||||||
Graphic3d_StructureManager.pxx
|
Graphic3d_StructureManager.pxx
|
||||||
@@ -69,3 +74,4 @@ Graphic3d_Camera.cxx
|
|||||||
Graphic3d_Camera.hxx
|
Graphic3d_Camera.hxx
|
||||||
Graphic3d_Camera_Handle.hxx
|
Graphic3d_Camera_Handle.hxx
|
||||||
Graphic3d_RenderingParams.hxx
|
Graphic3d_RenderingParams.hxx
|
||||||
|
Graphic3d_NMapOfTransient.hxx
|
||||||
|
@@ -493,20 +493,18 @@ is
|
|||||||
imported Vertex;
|
imported Vertex;
|
||||||
---Category: Classes
|
---Category: Classes
|
||||||
|
|
||||||
|
imported transient class ViewAffinity;
|
||||||
|
imported MapOfStructure;
|
||||||
|
imported SequenceOfDisplayedStructures;
|
||||||
|
imported MapOfObject;
|
||||||
|
imported transient class NMapOfTransient;
|
||||||
|
|
||||||
---------------------------------
|
---------------------------------
|
||||||
-- Category: Instantiated classes
|
-- Category: Instantiated classes
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
imported SequenceOfGroup;
|
imported SequenceOfGroup;
|
||||||
|
|
||||||
---Category: Instantiated classes
|
|
||||||
|
|
||||||
class MapOfStructure instantiates
|
|
||||||
Map from TCollection (Structure from Graphic3d,MapTransientHasher from TColStd);
|
|
||||||
|
|
||||||
|
|
||||||
---Category: Instantiated classes
|
|
||||||
|
|
||||||
class SequenceOfStructure instantiates
|
class SequenceOfStructure instantiates
|
||||||
Sequence from TCollection
|
Sequence from TCollection
|
||||||
(Structure from Graphic3d);
|
(Structure from Graphic3d);
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include <Graphic3d_SequenceOfHClipPlane.hxx>
|
#include <Graphic3d_SequenceOfHClipPlane.hxx>
|
||||||
#include <Graphic3d_TypeOfComposition.hxx>
|
#include <Graphic3d_TypeOfComposition.hxx>
|
||||||
#include <Graphic3d_Vec3.hxx>
|
#include <Graphic3d_Vec3.hxx>
|
||||||
|
#include <Graphic3d_ViewAffinity.hxx>
|
||||||
#include <Standard_Transient.hxx>
|
#include <Standard_Transient.hxx>
|
||||||
#include <Handle_Graphic3d_GraphicDriver.hxx>
|
#include <Handle_Graphic3d_GraphicDriver.hxx>
|
||||||
|
|
||||||
@@ -122,6 +123,8 @@ public:
|
|||||||
|
|
||||||
int ContainsFacet;
|
int ContainsFacet;
|
||||||
|
|
||||||
|
Handle(Graphic3d_ViewAffinity) ViewAffinity; //!< view affinity mask
|
||||||
|
|
||||||
unsigned IsInfinite : 1;
|
unsigned IsInfinite : 1;
|
||||||
unsigned stick : 1;
|
unsigned stick : 1;
|
||||||
unsigned highlight : 1;
|
unsigned highlight : 1;
|
||||||
|
@@ -123,16 +123,16 @@ is
|
|||||||
-- Category: Structure management methods
|
-- Category: Structure management methods
|
||||||
-----------------------------------------
|
-----------------------------------------
|
||||||
|
|
||||||
DisplayStructure ( me : mutable;
|
DisplayStructure ( me : mutable;
|
||||||
theCView : CView from Graphic3d;
|
theCView : CView from Graphic3d;
|
||||||
theCStructure : in out CStructure from Graphic3d;
|
theStructure : Structure from Graphic3d;
|
||||||
thePriority : Integer from Standard )
|
thePriority : Integer from Standard )
|
||||||
is deferred;
|
is deferred;
|
||||||
---Purpose: call_togl_displaystructure
|
---Purpose: call_togl_displaystructure
|
||||||
|
|
||||||
EraseStructure ( me : mutable;
|
EraseStructure ( me : mutable;
|
||||||
theCView : CView from Graphic3d;
|
theCView : CView from Graphic3d;
|
||||||
theCStructure : in out CStructure from Graphic3d )
|
theStructure : Structure from Graphic3d )
|
||||||
is deferred;
|
is deferred;
|
||||||
---Purpose: call_togl_erasestructure
|
---Purpose: call_togl_erasestructure
|
||||||
|
|
||||||
@@ -369,9 +369,9 @@ is
|
|||||||
-- But it works in any case and is especially useful for view dump because the dump image is read from the back buffer.
|
-- But it works in any case and is especially useful for view dump because the dump image is read from the back buffer.
|
||||||
-- @return previous mode.
|
-- @return previous mode.
|
||||||
|
|
||||||
DisplayImmediateStructure ( me : mutable;
|
DisplayImmediateStructure ( me : mutable;
|
||||||
theCView : CView from Graphic3d;
|
theCView : CView from Graphic3d;
|
||||||
theCStructure : CStructure from Graphic3d )
|
theStructure : Structure from Graphic3d )
|
||||||
is deferred;
|
is deferred;
|
||||||
---Purpose: Display structure in immediate mode on top of general presentation
|
---Purpose: Display structure in immediate mode on top of general presentation
|
||||||
|
|
||||||
|
23
src/Graphic3d/Graphic3d_MapIteratorOfMapOfStructure.hxx
Normal file
23
src/Graphic3d/Graphic3d_MapIteratorOfMapOfStructure.hxx
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Created on: 2014-12-18
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#ifndef _Graphic3d_MapIteratorOfMapOfStructure
|
||||||
|
#define _Graphic3d_MapIteratorOfMapOfStructure
|
||||||
|
|
||||||
|
#include <Graphic3d_MapOfStructure.hxx>
|
||||||
|
|
||||||
|
typedef Graphic3d_MapOfStructure::Iterator Graphic3d_MapIteratorOfMapOfStructure;
|
||||||
|
|
||||||
|
#endif // _Graphic3d_MapIteratorOfMapOfStructure
|
24
src/Graphic3d/Graphic3d_MapOfObject.hxx
Normal file
24
src/Graphic3d/Graphic3d_MapOfObject.hxx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// Created on: 2014-12-18
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#ifndef _Graphic3d_MapOfObject
|
||||||
|
#define _Graphic3d_MapOfObject
|
||||||
|
|
||||||
|
#include <Graphic3d_ViewAffinity.hxx>
|
||||||
|
#include <NCollection_DataMap.hxx>
|
||||||
|
|
||||||
|
typedef NCollection_DataMap<const Standard_Transient* , Handle(Graphic3d_ViewAffinity)> Graphic3d_MapOfObject;
|
||||||
|
|
||||||
|
#endif // _Graphic3d_MapOfObject
|
24
src/Graphic3d/Graphic3d_MapOfStructure.hxx
Normal file
24
src/Graphic3d/Graphic3d_MapOfStructure.hxx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// Created on: 2014-12-18
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#ifndef _Graphic3d_MapOfStructure
|
||||||
|
#define _Graphic3d_MapOfStructure
|
||||||
|
|
||||||
|
#include <Handle_Graphic3d_Structure.hxx>
|
||||||
|
#include <NCollection_Map.hxx>
|
||||||
|
|
||||||
|
typedef NCollection_Map<Handle(Graphic3d_Structure)> Graphic3d_MapOfStructure;
|
||||||
|
|
||||||
|
#endif // _Graphic3d_MapOfStructure
|
25
src/Graphic3d/Graphic3d_NMapOfTransient.hxx
Normal file
25
src/Graphic3d/Graphic3d_NMapOfTransient.hxx
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
// Created on: 2014-12-08
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#ifndef _Graphic3d_NMapOfTransient_HeaderFile
|
||||||
|
#define _Graphic3d_NMapOfTransient_HeaderFile
|
||||||
|
|
||||||
|
#include <Standard_Transient.hxx>
|
||||||
|
#include <NCollection_Map.hxx>
|
||||||
|
#include <NCollection_Handle.hxx>
|
||||||
|
|
||||||
|
typedef NCollection_Map<const Standard_Transient* > Graphic3d_NMapOfTransient;
|
||||||
|
typedef NCollection_Handle<Graphic3d_NMapOfTransient> Handle(Graphic3d_NMapOfTransient);
|
||||||
|
|
||||||
|
#endif // _Graphic3d_NMapOfTransient_HeaderFile
|
@@ -190,20 +190,15 @@ is
|
|||||||
-- of the visualiser.
|
-- of the visualiser.
|
||||||
---Category: Methods to modify the class definition
|
---Category: Methods to modify the class definition
|
||||||
|
|
||||||
Highlight ( me : mutable;
|
Highlight ( me : mutable;
|
||||||
Method : TypeOfHighlightMethod from Aspect )
|
theMethod : TypeOfHighlightMethod from Aspect;
|
||||||
|
theColor : Color from Quantity;
|
||||||
|
theToUpdateMgr : Boolean from Standard = Standard_True)
|
||||||
is static;
|
is static;
|
||||||
---Level: Public
|
---Level: Public
|
||||||
---Purpose: Highlights the structure <me> in all the
|
---Purpose: Highlights the structure <me> in all the views of the visualiser, using the following methods:
|
||||||
-- views of the visualiser, using the following methods:
|
-- TOHM_COLOR = drawn in the highlight color
|
||||||
--
|
-- TOHM_BOUNDBOX = enclosed by the boundary box
|
||||||
-- TOHM_COLOR = drawn in the highlight color
|
|
||||||
-- (default white)
|
|
||||||
-- TOHM_BLINK = blinking
|
|
||||||
-- TOHM_BOUNDBOX = enclosed by the boundary box
|
|
||||||
-- (default white)
|
|
||||||
--
|
|
||||||
---Category: Methods to modify the class definition
|
|
||||||
|
|
||||||
Remove ( me : mutable )
|
Remove ( me : mutable )
|
||||||
is static;
|
is static;
|
||||||
@@ -219,14 +214,6 @@ is
|
|||||||
---Purpose: Computes axis-aligned bounding box of a structure.
|
---Purpose: Computes axis-aligned bounding box of a structure.
|
||||||
-- Category: Methods to modify the class definition
|
-- Category: Methods to modify the class definition
|
||||||
|
|
||||||
SetHighlightColor ( me : mutable;
|
|
||||||
AColor : Color from Quantity )
|
|
||||||
is static;
|
|
||||||
---Level: Public
|
|
||||||
---Purpose: Modifies the highlight color for the Highlight method
|
|
||||||
-- with the highlight method TOHM_COLOR or TOHM_BOUNDBOX.
|
|
||||||
---Category: Methods to modify the class definition
|
|
||||||
|
|
||||||
SetInfiniteState (me : mutable; theToSet : Boolean from Standard) is static;
|
SetInfiniteState (me : mutable; theToSet : Boolean from Standard) is static;
|
||||||
---Level: Internal
|
---Level: Internal
|
||||||
---Purpose: If <theToSet> is Standard_True then <me> is infinite and
|
---Purpose: If <theToSet> is Standard_True then <me> is infinite and
|
||||||
|
@@ -28,6 +28,8 @@
|
|||||||
|
|
||||||
#include <Aspect_PolygonOffsetMode.hxx>
|
#include <Aspect_PolygonOffsetMode.hxx>
|
||||||
|
|
||||||
|
#include <Precision.hxx>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
@@ -122,6 +124,25 @@ void Graphic3d_Structure::CalculateBoundBox()
|
|||||||
{
|
{
|
||||||
Graphic3d_BndBox4d aBox;
|
Graphic3d_BndBox4d aBox;
|
||||||
addTransformed (aBox, Standard_True);
|
addTransformed (aBox, Standard_True);
|
||||||
|
|
||||||
|
// Workaround for zero size components, to avoid clipping issues
|
||||||
|
Graphic3d_BndBox4d::BVH_VecNt aSizeVec = aBox.Size();
|
||||||
|
if (aSizeVec.x() < Precision::Confusion())
|
||||||
|
{
|
||||||
|
aBox.CornerMin().x() -= Precision::Confusion();
|
||||||
|
aBox.CornerMax().x() += Precision::Confusion();
|
||||||
|
}
|
||||||
|
if (aSizeVec.y() < Precision::Confusion())
|
||||||
|
{
|
||||||
|
aBox.CornerMin().y() -= Precision::Confusion();
|
||||||
|
aBox.CornerMax().y() += Precision::Confusion();
|
||||||
|
}
|
||||||
|
if (aSizeVec.z() < Precision::Confusion())
|
||||||
|
{
|
||||||
|
aBox.CornerMin().z() -= Precision::Confusion();
|
||||||
|
aBox.CornerMax().z() += Precision::Confusion();
|
||||||
|
}
|
||||||
|
|
||||||
if (aBox.IsValid() && myCStructure->TransformPersistence.Flag == 0)
|
if (aBox.IsValid() && myCStructure->TransformPersistence.Flag == 0)
|
||||||
{
|
{
|
||||||
Graphic3d_Vec4 aMinPt (RealToShortReal (aBox.CornerMin().x()),
|
Graphic3d_Vec4 aMinPt (RealToShortReal (aBox.CornerMin().x()),
|
||||||
@@ -204,6 +225,7 @@ void Graphic3d_Structure::Display()
|
|||||||
}
|
}
|
||||||
|
|
||||||
myCStructure->visible = 1;
|
myCStructure->visible = 1;
|
||||||
|
//myCStructure->UpdateNamedStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
@@ -312,13 +334,17 @@ void Graphic3d_Structure::Erase()
|
|||||||
//function : Highlight
|
//function : Highlight
|
||||||
//purpose :
|
//purpose :
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
void Graphic3d_Structure::Highlight (const Aspect_TypeOfHighlightMethod theMethod)
|
void Graphic3d_Structure::Highlight (const Aspect_TypeOfHighlightMethod theMethod,
|
||||||
|
const Quantity_Color& theColor,
|
||||||
|
const Standard_Boolean theToUpdateMgr)
|
||||||
{
|
{
|
||||||
if (IsDeleted())
|
if (IsDeleted())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
myHighlightColor = theColor;
|
||||||
|
|
||||||
// Highlight on already Highlighted structure.
|
// Highlight on already Highlighted structure.
|
||||||
if (myCStructure->highlight)
|
if (myCStructure->highlight)
|
||||||
{
|
{
|
||||||
@@ -340,6 +366,12 @@ void Graphic3d_Structure::Highlight (const Aspect_TypeOfHighlightMethod theMetho
|
|||||||
SetDisplayPriority (Structure_MAX_PRIORITY - 1);
|
SetDisplayPriority (Structure_MAX_PRIORITY - 1);
|
||||||
|
|
||||||
GraphicHighlight (theMethod);
|
GraphicHighlight (theMethod);
|
||||||
|
|
||||||
|
if (!theToUpdateMgr)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (myCStructure->stick)
|
if (myCStructure->stick)
|
||||||
{
|
{
|
||||||
myStructureManager->Highlight (this, theMethod);
|
myStructureManager->Highlight (this, theMethod);
|
||||||
@@ -348,41 +380,6 @@ void Graphic3d_Structure::Highlight (const Aspect_TypeOfHighlightMethod theMetho
|
|||||||
Update();
|
Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
|
||||||
//function : SetHighlightColor
|
|
||||||
//purpose :
|
|
||||||
//=============================================================================
|
|
||||||
void Graphic3d_Structure::SetHighlightColor (const Quantity_Color& theColor)
|
|
||||||
{
|
|
||||||
if (IsDeleted())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!myCStructure->highlight)
|
|
||||||
{
|
|
||||||
myHighlightColor = theColor;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change highlight color on already Highlighted structure.
|
|
||||||
Aspect_TypeOfUpdate anUpdateMode = myStructureManager->UpdateMode();
|
|
||||||
if (anUpdateMode == Aspect_TOU_WAIT)
|
|
||||||
{
|
|
||||||
UnHighlight();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// To avoid call of method : Update()
|
|
||||||
// Not useful and can be costly.
|
|
||||||
myStructureManager->SetUpdateMode (Aspect_TOU_WAIT);
|
|
||||||
UnHighlight();
|
|
||||||
myStructureManager->SetUpdateMode (anUpdateMode);
|
|
||||||
}
|
|
||||||
myHighlightColor = theColor;
|
|
||||||
Highlight (myHighlightMethod);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//function : SetVisible
|
//function : SetVisible
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@@ -49,6 +49,8 @@ uses
|
|||||||
AspectText3d from Graphic3d,
|
AspectText3d from Graphic3d,
|
||||||
Structure from Graphic3d,
|
Structure from Graphic3d,
|
||||||
MapOfStructure from Graphic3d,
|
MapOfStructure from Graphic3d,
|
||||||
|
MapOfObject from Graphic3d,
|
||||||
|
ViewAffinity from Graphic3d,
|
||||||
SequenceOfStructure from Graphic3d,
|
SequenceOfStructure from Graphic3d,
|
||||||
GraphicDriver from Graphic3d
|
GraphicDriver from Graphic3d
|
||||||
|
|
||||||
@@ -469,6 +471,19 @@ is
|
|||||||
theStructures : MapOfStructure from Graphic3d);
|
theStructures : MapOfStructure from Graphic3d);
|
||||||
---Purpose: Recomputes all structures from theStructures.
|
---Purpose: Recomputes all structures from theStructures.
|
||||||
|
|
||||||
|
RegisterObject (me : mutable;
|
||||||
|
theObject : Transient from Standard)
|
||||||
|
returns ViewAffinity from Graphic3d
|
||||||
|
is static;
|
||||||
|
|
||||||
|
UnregisterObject (me : mutable;
|
||||||
|
theObject : Transient from Standard) is static;
|
||||||
|
|
||||||
|
ObjectAffinity (me;
|
||||||
|
theObject : Transient from Standard)
|
||||||
|
returns ViewAffinity from Graphic3d
|
||||||
|
is static;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
||||||
fields
|
fields
|
||||||
@@ -500,6 +515,8 @@ fields
|
|||||||
MyDisplayedStructure : MapOfStructure from Graphic3d
|
MyDisplayedStructure : MapOfStructure from Graphic3d
|
||||||
is protected;
|
is protected;
|
||||||
|
|
||||||
|
myRegisteredObjects : MapOfObject from Graphic3d is protected;
|
||||||
|
|
||||||
-- the highlighted structures
|
-- the highlighted structures
|
||||||
MyHighlightedStructure : MapOfStructure from Graphic3d
|
MyHighlightedStructure : MapOfStructure from Graphic3d
|
||||||
is protected;
|
is protected;
|
||||||
|
@@ -358,3 +358,28 @@ void Graphic3d_StructureManager::RecomputeStructures (const Graphic3d_MapOfStruc
|
|||||||
aStruct->Compute();
|
aStruct->Compute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Handle(Graphic3d_ViewAffinity) Graphic3d_StructureManager::RegisterObject (const Handle(Standard_Transient)& theObject)
|
||||||
|
{
|
||||||
|
Handle(Graphic3d_ViewAffinity) aResult;
|
||||||
|
if (myRegisteredObjects.Find (theObject.operator->(), aResult))
|
||||||
|
{
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
aResult = new Graphic3d_ViewAffinity();
|
||||||
|
myRegisteredObjects.Bind (theObject.operator->(), aResult);
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Graphic3d_StructureManager::UnregisterObject (const Handle(Standard_Transient)& theObject)
|
||||||
|
{
|
||||||
|
myRegisteredObjects.UnBind (theObject.operator->());
|
||||||
|
}
|
||||||
|
|
||||||
|
Handle(Graphic3d_ViewAffinity) Graphic3d_StructureManager::ObjectAffinity (const Handle(Standard_Transient)& theObject) const
|
||||||
|
{
|
||||||
|
Handle(Graphic3d_ViewAffinity) aResult;
|
||||||
|
myRegisteredObjects.Find (theObject.operator->(), aResult);
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
19
src/Graphic3d/Graphic3d_ViewAffinity.cxx
Normal file
19
src/Graphic3d/Graphic3d_ViewAffinity.cxx
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// Created on: 2014-12-18
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#include <Graphic3d_ViewAffinity.hxx>
|
||||||
|
|
||||||
|
IMPLEMENT_STANDARD_HANDLE (Graphic3d_ViewAffinity, Standard_Transient)
|
||||||
|
IMPLEMENT_STANDARD_RTTIEXT(Graphic3d_ViewAffinity, Standard_Transient)
|
66
src/Graphic3d/Graphic3d_ViewAffinity.hxx
Normal file
66
src/Graphic3d/Graphic3d_ViewAffinity.hxx
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// Created on: 2014-12-18
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#ifndef _Graphic3d_ViewAffinity_HeaderFile
|
||||||
|
#define _Graphic3d_ViewAffinity_HeaderFile
|
||||||
|
|
||||||
|
#include <Graphic3d_Structure.hxx>
|
||||||
|
|
||||||
|
//! Structure display state.
|
||||||
|
class Graphic3d_ViewAffinity : public Standard_Transient
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//! Empty constructor.
|
||||||
|
Graphic3d_ViewAffinity()
|
||||||
|
{
|
||||||
|
::memset (&myMask, 0xFF, sizeof(myMask));
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Return visibility flag.
|
||||||
|
bool IsVisible (const Standard_Integer theViewId) const
|
||||||
|
{
|
||||||
|
const unsigned int aBit = 1 << theViewId;
|
||||||
|
return (myMask & aBit) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Setup visibility flag.
|
||||||
|
void SetVisible (const Standard_Integer theViewId,
|
||||||
|
const bool theIsVisible)
|
||||||
|
{
|
||||||
|
const unsigned int aBit = 1 << theViewId;
|
||||||
|
if (theIsVisible)
|
||||||
|
{
|
||||||
|
myMask |= aBit;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myMask &= ~aBit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
unsigned int myMask; //!< affinity mask
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTI(Graphic3d_ViewAffinity)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(Graphic3d_ViewAffinity, Standard_Transient)
|
||||||
|
|
||||||
|
#endif // _Graphic3d_ViewAffinity_HeaderFile
|
@@ -141,6 +141,7 @@ OpenGl_ShaderManager.hxx
|
|||||||
OpenGl_ShaderManager.cxx
|
OpenGl_ShaderManager.cxx
|
||||||
OpenGl_ShaderStates.hxx
|
OpenGl_ShaderStates.hxx
|
||||||
OpenGl_ShaderStates.cxx
|
OpenGl_ShaderStates.cxx
|
||||||
|
OpenGl_SequenceOfStructure.hxx
|
||||||
Handle_OpenGl_ShaderObject.hxx
|
Handle_OpenGl_ShaderObject.hxx
|
||||||
Handle_OpenGl_ShaderProgram.hxx
|
Handle_OpenGl_ShaderProgram.hxx
|
||||||
Handle_OpenGl_ShaderManager.hxx
|
Handle_OpenGl_ShaderManager.hxx
|
||||||
|
@@ -81,11 +81,9 @@ void OpenGl_BVHClipPrimitiveSet::Assign (const OpenGl_ArrayOfStructure& theStruc
|
|||||||
myStructs.Clear();
|
myStructs.Clear();
|
||||||
|
|
||||||
const Standard_Integer aNbPriorities = theStructs.Length();
|
const Standard_Integer aNbPriorities = theStructs.Length();
|
||||||
OpenGl_SequenceOfStructure::Iterator aStructIter;
|
|
||||||
for (Standard_Integer aPriorityIdx = 0; aPriorityIdx < aNbPriorities; ++aPriorityIdx)
|
for (Standard_Integer aPriorityIdx = 0; aPriorityIdx < aNbPriorities; ++aPriorityIdx)
|
||||||
{
|
{
|
||||||
const OpenGl_SequenceOfStructure& aSeq = theStructs (aPriorityIdx);
|
for (OpenGl_SequenceOfStructure::Iterator aStructIter (theStructs (aPriorityIdx)); aStructIter.More(); aStructIter.Next())
|
||||||
for (aStructIter.Init (aSeq); aStructIter.More(); aStructIter.Next())
|
|
||||||
{
|
{
|
||||||
const OpenGl_Structure* aStruct = aStructIter.Value();
|
const OpenGl_Structure* aStruct = aStructIter.Value();
|
||||||
if (!aStruct->IsAlwaysRendered())
|
if (!aStruct->IsAlwaysRendered())
|
||||||
|
@@ -17,14 +17,12 @@
|
|||||||
#define _OpenGl_BVHClipPrimitiveSet_HeaderFile
|
#define _OpenGl_BVHClipPrimitiveSet_HeaderFile
|
||||||
|
|
||||||
#include <BVH_PrimitiveSet.hxx>
|
#include <BVH_PrimitiveSet.hxx>
|
||||||
|
|
||||||
#include <NCollection_Array1.hxx>
|
#include <NCollection_Array1.hxx>
|
||||||
#include <NCollection_Sequence.hxx>
|
|
||||||
|
|
||||||
#include <OpenGl_Vec.hxx>
|
#include <OpenGl_Vec.hxx>
|
||||||
#include <OpenGl_Structure.hxx>
|
#include <OpenGl_Structure.hxx>
|
||||||
|
#include <OpenGl_SequenceOfStructure.hxx>
|
||||||
|
|
||||||
typedef NCollection_Sequence<const OpenGl_Structure*> OpenGl_SequenceOfStructure;
|
|
||||||
typedef NCollection_Array1<OpenGl_SequenceOfStructure> OpenGl_ArrayOfStructure;
|
typedef NCollection_Array1<OpenGl_SequenceOfStructure> OpenGl_ArrayOfStructure;
|
||||||
|
|
||||||
//! Set of OpenGl_Structures for building BVH tree.
|
//! Set of OpenGl_Structures for building BVH tree.
|
||||||
|
@@ -176,6 +176,24 @@ void OpenGl_FrameBuffer::BindBuffer (const Handle(OpenGl_Context)& theGlCtx)
|
|||||||
theGlCtx->arbFBO->glBindFramebuffer (GL_FRAMEBUFFER, myGlFBufferId);
|
theGlCtx->arbFBO->glBindFramebuffer (GL_FRAMEBUFFER, myGlFBufferId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : BindDrawBuffer
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void OpenGl_FrameBuffer::BindDrawBuffer (const Handle(OpenGl_Context)& theGlCtx)
|
||||||
|
{
|
||||||
|
theGlCtx->arbFBO->glBindFramebuffer (GL_DRAW_FRAMEBUFFER, myGlFBufferId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// =======================================================================
|
||||||
|
// function : BindReadBuffer
|
||||||
|
// purpose :
|
||||||
|
// =======================================================================
|
||||||
|
void OpenGl_FrameBuffer::BindReadBuffer (const Handle(OpenGl_Context)& theGlCtx)
|
||||||
|
{
|
||||||
|
theGlCtx->arbFBO->glBindFramebuffer (GL_READ_FRAMEBUFFER, myGlFBufferId);
|
||||||
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : UnbindBuffer
|
// function : UnbindBuffer
|
||||||
// purpose :
|
// purpose :
|
||||||
|
@@ -92,9 +92,15 @@ public:
|
|||||||
Standard_EXPORT void ChangeViewport (const GLsizei theVPSizeX,
|
Standard_EXPORT void ChangeViewport (const GLsizei theVPSizeX,
|
||||||
const GLsizei theVPSizeY);
|
const GLsizei theVPSizeY);
|
||||||
|
|
||||||
//! Bind frame buffer (to render into the texture).
|
//! Bind frame buffer for drawing and reading (to render into the texture).
|
||||||
Standard_EXPORT virtual void BindBuffer (const Handle(OpenGl_Context)& theGlCtx);
|
Standard_EXPORT virtual void BindBuffer (const Handle(OpenGl_Context)& theGlCtx);
|
||||||
|
|
||||||
|
//! Bind frame buffer for drawing GL_DRAW_FRAMEBUFFER (to render into the texture).
|
||||||
|
Standard_EXPORT virtual void BindDrawBuffer (const Handle(OpenGl_Context)& theGlCtx);
|
||||||
|
|
||||||
|
//! Bind frame buffer for reading GL_READ_FRAMEBUFFER
|
||||||
|
Standard_EXPORT virtual void BindReadBuffer (const Handle(OpenGl_Context)& theGlCtx);
|
||||||
|
|
||||||
//! Unbind frame buffer.
|
//! Unbind frame buffer.
|
||||||
Standard_EXPORT virtual void UnbindBuffer (const Handle(OpenGl_Context)& theGlCtx);
|
Standard_EXPORT virtual void UnbindBuffer (const Handle(OpenGl_Context)& theGlCtx);
|
||||||
|
|
||||||
|
@@ -419,17 +419,16 @@ Standard_Boolean OpenGl_GraphicDriver::SetImmediateModeDrawToFront (const Graphi
|
|||||||
// function : DisplayImmediateStructure
|
// function : DisplayImmediateStructure
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void OpenGl_GraphicDriver::DisplayImmediateStructure (const Graphic3d_CView& theCView,
|
void OpenGl_GraphicDriver::DisplayImmediateStructure (const Graphic3d_CView& theCView,
|
||||||
const Graphic3d_CStructure& theCStructure)
|
const Handle(Graphic3d_Structure)& theStructure)
|
||||||
{
|
{
|
||||||
OpenGl_CView* aCView = (OpenGl_CView* )theCView.ptrView;
|
OpenGl_CView* aCView = (OpenGl_CView* )theCView.ptrView;
|
||||||
OpenGl_Structure* aStructure = (OpenGl_Structure* )&theCStructure;
|
|
||||||
if (aCView == NULL)
|
if (aCView == NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
aCView->View->DisplayImmediateStructure (aStructure);
|
aCView->View->DisplayImmediateStructure (theStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
|
@@ -122,18 +122,18 @@ public:
|
|||||||
|
|
||||||
public: // Methods for graphical structures
|
public: // Methods for graphical structures
|
||||||
|
|
||||||
Standard_EXPORT void DisplayStructure (const Graphic3d_CView& theCView,
|
Standard_EXPORT void DisplayStructure (const Graphic3d_CView& theCView,
|
||||||
Graphic3d_CStructure& theCStructure,
|
const Handle(Graphic3d_Structure)& theStructure,
|
||||||
const Standard_Integer thePriority);
|
const Standard_Integer thePriority);
|
||||||
Standard_EXPORT void EraseStructure (const Graphic3d_CView& theCView,
|
Standard_EXPORT void EraseStructure (const Graphic3d_CView& theCView,
|
||||||
Graphic3d_CStructure& theCStructure);
|
const Handle(Graphic3d_Structure)& theStructure);
|
||||||
Standard_EXPORT void RemoveStructure (Handle(Graphic3d_CStructure)& theCStructure);
|
Standard_EXPORT void RemoveStructure (Handle(Graphic3d_CStructure)& theCStructure);
|
||||||
Standard_EXPORT Handle(Graphic3d_CStructure) Structure (const Handle(Graphic3d_StructureManager)& theManager);
|
Standard_EXPORT Handle(Graphic3d_CStructure) Structure (const Handle(Graphic3d_StructureManager)& theManager);
|
||||||
|
|
||||||
Standard_EXPORT Standard_Boolean SetImmediateModeDrawToFront (const Graphic3d_CView& theCView,
|
Standard_EXPORT Standard_Boolean SetImmediateModeDrawToFront (const Graphic3d_CView& theCView,
|
||||||
const Standard_Boolean theDrawToFrontBuffer);
|
const Standard_Boolean theDrawToFrontBuffer);
|
||||||
Standard_EXPORT void DisplayImmediateStructure (const Graphic3d_CView& theCView,
|
Standard_EXPORT void DisplayImmediateStructure (const Graphic3d_CView& theCView,
|
||||||
const Graphic3d_CStructure& theCStructure);
|
const Handle(Graphic3d_Structure)& theStructure);
|
||||||
Standard_EXPORT void EraseImmediateStructure (const Graphic3d_CView& theCView,
|
Standard_EXPORT void EraseImmediateStructure (const Graphic3d_CView& theCView,
|
||||||
const Graphic3d_CStructure& theCStructure);
|
const Graphic3d_CStructure& theCStructure);
|
||||||
|
|
||||||
|
@@ -19,27 +19,25 @@
|
|||||||
#include <OpenGl_Structure.hxx>
|
#include <OpenGl_Structure.hxx>
|
||||||
#include <OpenGl_CView.hxx>
|
#include <OpenGl_CView.hxx>
|
||||||
|
|
||||||
void OpenGl_GraphicDriver::DisplayStructure (const Graphic3d_CView& theCView,
|
void OpenGl_GraphicDriver::DisplayStructure (const Graphic3d_CView& theCView,
|
||||||
Graphic3d_CStructure& theCStructure,
|
const Handle(Graphic3d_Structure)& theStructure,
|
||||||
const Standard_Integer thePriority)
|
const Standard_Integer thePriority)
|
||||||
{
|
{
|
||||||
const OpenGl_CView* aCView = (const OpenGl_CView* )theCView.ptrView;
|
const OpenGl_CView* aCView = (const OpenGl_CView* )theCView.ptrView;
|
||||||
OpenGl_Structure* aStructure = (OpenGl_Structure* )&theCStructure;
|
|
||||||
if (aCView == NULL)
|
if (aCView == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
aCView->View->DisplayStructure (aStructure, thePriority);
|
aCView->View->DisplayStructure (theStructure, thePriority);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGl_GraphicDriver::EraseStructure (const Graphic3d_CView& theCView,
|
void OpenGl_GraphicDriver::EraseStructure (const Graphic3d_CView& theCView,
|
||||||
Graphic3d_CStructure& theCStructure)
|
const Handle(Graphic3d_Structure)& theStructure)
|
||||||
{
|
{
|
||||||
const OpenGl_CView* aCView = (const OpenGl_CView* )theCView.ptrView;
|
const OpenGl_CView* aCView = (const OpenGl_CView* )theCView.ptrView;
|
||||||
OpenGl_Structure* aStructure = (OpenGl_Structure* )&theCStructure;
|
if (aCView == NULL)
|
||||||
if (aCView == NULL || aStructure == NULL)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
aCView->View->EraseStructure (aStructure);
|
aCView->View->EraseStructure (theStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGl_GraphicDriver::RemoveStructure (Handle(Graphic3d_CStructure)& theCStructure)
|
void OpenGl_GraphicDriver::RemoveStructure (Handle(Graphic3d_CStructure)& theCStructure)
|
||||||
|
@@ -27,7 +27,7 @@ void OpenGl_GraphicDriver::ActivateView (const Graphic3d_CView& ACView)
|
|||||||
{
|
{
|
||||||
const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
|
const OpenGl_CView *aCView = (const OpenGl_CView *)ACView.ptrView;
|
||||||
if (aCView)
|
if (aCView)
|
||||||
aCView->WS->SetActiveView(aCView->View);
|
aCView->WS->SetActiveView(aCView->View, ACView.ViewId);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGl_GraphicDriver::AntiAliasing (const Graphic3d_CView& ACView, const Standard_Boolean AFlag)
|
void OpenGl_GraphicDriver::AntiAliasing (const Graphic3d_CView& ACView, const Standard_Boolean AFlag)
|
||||||
@@ -77,7 +77,7 @@ void OpenGl_GraphicDriver::DeactivateView (const Graphic3d_CView& ACView)
|
|||||||
if (aCView)
|
if (aCView)
|
||||||
{
|
{
|
||||||
const Handle(OpenGl_View) aDummyView;
|
const Handle(OpenGl_View) aDummyView;
|
||||||
aCView->WS->SetActiveView(aDummyView);
|
aCView->WS->SetActiveView (aDummyView, -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ Standard_Boolean OpenGl_GraphicDriver::View (Graphic3d_CView& theCView)
|
|||||||
|
|
||||||
Handle(OpenGl_Workspace) aWS = new OpenGl_Workspace (this, theCView.DefWindow, theCView.GContext, myCaps, aShareCtx);
|
Handle(OpenGl_Workspace) aWS = new OpenGl_Workspace (this, theCView.DefWindow, theCView.GContext, myCaps, aShareCtx);
|
||||||
aCView->WS = aWS;
|
aCView->WS = aWS;
|
||||||
aWS->SetActiveView (aCView->View);
|
aWS->SetActiveView (aCView->View, theCView.ViewId);
|
||||||
|
|
||||||
myMapOfWS.UnBind (theCView.WsId);
|
myMapOfWS.UnBind (theCView.WsId);
|
||||||
myMapOfWS.Bind (theCView.WsId, aWS);
|
myMapOfWS.Bind (theCView.WsId, aWS);
|
||||||
@@ -526,7 +526,7 @@ Standard_Boolean OpenGl_GraphicDriver::View (Graphic3d_CView& theCView)
|
|||||||
aCView->View = aView;
|
aCView->View = aView;
|
||||||
aCView->WS = aWS;
|
aCView->WS = aWS;
|
||||||
theCView.ptrView = aCView;
|
theCView.ptrView = aCView;
|
||||||
aWS->SetActiveView (aCView->View);
|
aWS->SetActiveView (aCView->View, theCView.ViewId);
|
||||||
|
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
@@ -154,18 +154,19 @@ void OpenGl_LayerList::RemoveLayer (const Standard_Integer theLayerId)
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void OpenGl_LayerList::AddStructure (const OpenGl_Structure *theStructure,
|
void OpenGl_LayerList::AddStructure (const OpenGl_Structure* theStruct,
|
||||||
const Standard_Integer theLayerId,
|
const Standard_Integer theLayerId,
|
||||||
const Standard_Integer thePriority,
|
const Standard_Integer thePriority,
|
||||||
Standard_Boolean isForChangePriority)
|
Standard_Boolean isForChangePriority)
|
||||||
{
|
{
|
||||||
// add structure to associated layer,
|
// add structure to associated layer,
|
||||||
// if layer doesn't exists, display structure in default layer
|
// if layer doesn't exists, display structure in default layer
|
||||||
OpenGl_PriorityList& aList = !HasLayer (theLayerId) ? defaultLayer ().PriorityList() :
|
OpenGl_PriorityList& aList = !HasLayer (theLayerId)
|
||||||
myLayers.ChangeValue (myLayerIds.Find (theLayerId)).PriorityList();
|
? defaultLayer().PriorityList()
|
||||||
|
: myLayers.ChangeValue (myLayerIds.Find (theLayerId)).PriorityList();
|
||||||
|
|
||||||
aList.Add (theStructure, thePriority, isForChangePriority);
|
aList.Add (theStruct, thePriority, isForChangePriority);
|
||||||
myNbStructures++;
|
++myNbStructures;
|
||||||
|
|
||||||
// Note: In ray-tracing mode we don't modify modification
|
// Note: In ray-tracing mode we don't modify modification
|
||||||
// state here. It is redundant, because the possible changes
|
// state here. It is redundant, because the possible changes
|
||||||
@@ -174,50 +175,49 @@ void OpenGl_LayerList::AddStructure (const OpenGl_Structure *theStructure,
|
|||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : RemoveStructure
|
//function : RemoveStructure
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void OpenGl_LayerList::RemoveStructure (const OpenGl_Structure *theStructure,
|
void OpenGl_LayerList::RemoveStructure (const Handle(Graphic3d_Structure)& theStructure,
|
||||||
const Standard_Integer theLayerId)
|
const Standard_Integer theLayerId)
|
||||||
{
|
{
|
||||||
Standard_Integer aSeqPos = !HasLayer (theLayerId) ?
|
Standard_Integer aSeqPos = !HasLayer (theLayerId) ? 1 : myLayerIds.Find (theLayerId);
|
||||||
1 : myLayerIds.Find (theLayerId);
|
|
||||||
|
OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
||||||
OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
const OpenGl_Structure* aStruct = reinterpret_cast<const OpenGl_Structure* > (theStructure->CStructure().operator->());
|
||||||
|
Standard_Integer aPriority = -1;
|
||||||
|
|
||||||
// remove structure from associated list
|
// remove structure from associated list
|
||||||
// if the structure is not found there,
|
// if the structure is not found there,
|
||||||
// scan through layers and remove it
|
// scan through layers and remove it
|
||||||
if (aList.Remove (theStructure) >= 0)
|
if (aList.Remove (aStruct, aPriority))
|
||||||
{
|
{
|
||||||
myNbStructures--;
|
--myNbStructures;
|
||||||
|
if (aStruct->IsRaytracable())
|
||||||
if (theStructure->IsRaytracable())
|
|
||||||
{
|
{
|
||||||
myModificationState++;
|
++myModificationState;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// scan through layers and remove it
|
// scan through layers and remove it
|
||||||
Standard_Integer aSeqId = 1;
|
Standard_Integer aSeqId = 1;
|
||||||
OpenGl_SequenceOfLayers::Iterator anIts;
|
for (OpenGl_SequenceOfLayers::Iterator anIts (myLayers); anIts.More(); anIts.Next(), ++aSeqId)
|
||||||
for (anIts.Init (myLayers); anIts.More (); anIts.Next (), aSeqId++)
|
|
||||||
{
|
{
|
||||||
OpenGl_PriorityList& aScanList = anIts.ChangeValue ().PriorityList();
|
OpenGl_PriorityList& aScanList = anIts.ChangeValue().PriorityList();
|
||||||
if (aSeqPos == aSeqId)
|
if (aSeqPos == aSeqId)
|
||||||
continue;
|
|
||||||
|
|
||||||
if (aScanList.Remove (theStructure) >= 0)
|
|
||||||
{
|
{
|
||||||
myNbStructures--;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (theStructure->IsRaytracable())
|
if (aScanList.Remove (aStruct, aPriority))
|
||||||
|
{
|
||||||
|
--myNbStructures;
|
||||||
|
if (aStruct->IsRaytracable())
|
||||||
{
|
{
|
||||||
myModificationState++;
|
++myModificationState;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -242,44 +242,43 @@ void OpenGl_LayerList::InvalidateBVHData (const Standard_Integer theLayerId)
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void OpenGl_LayerList::ChangeLayer (const OpenGl_Structure *theStructure,
|
void OpenGl_LayerList::ChangeLayer (const OpenGl_Structure* theStructure,
|
||||||
const Standard_Integer theOldLayerId,
|
const Standard_Integer theOldLayerId,
|
||||||
const Standard_Integer theNewLayerId)
|
const Standard_Integer theNewLayerId)
|
||||||
{
|
{
|
||||||
Standard_Integer aSeqPos = !HasLayer (theOldLayerId) ?
|
Standard_Integer aSeqPos = !HasLayer (theOldLayerId) ? 1 : myLayerIds.Find (theOldLayerId);
|
||||||
1 : myLayerIds.Find (theOldLayerId);
|
OpenGl_PriorityList& aForcastList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
||||||
|
Standard_Integer aPriority = -1;
|
||||||
OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
|
||||||
Standard_Integer aPriority;
|
|
||||||
|
|
||||||
// take priority and remove structure from list found by <theOldLayerId>
|
// take priority and remove structure from list found by <theOldLayerId>
|
||||||
// if the structure is not found there, scan through all other layers
|
// if the structure is not found there, scan through all other layers
|
||||||
if ((aPriority = aList.Remove (theStructure, Standard_True)) >= 0)
|
if (aForcastList.Remove (theStructure, aPriority, Standard_True))
|
||||||
{
|
{
|
||||||
myNbStructures--;
|
--myNbStructures;
|
||||||
// isForChangePriority should be Standard_False below, because we want
|
// isForChangePriority should be Standard_False below, because we want
|
||||||
// the BVH tree in the target layer to be updated with theStructure
|
// the BVH tree in the target layer to be updated with theStructure
|
||||||
AddStructure (theStructure, theNewLayerId, aPriority);
|
AddStructure (theStructure, theNewLayerId, aPriority);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// scan through layers and remove it
|
||||||
|
Standard_Integer aSeqId = 1;
|
||||||
|
for (OpenGl_SequenceOfLayers::Iterator anIts (myLayers); anIts.More(); anIts.Next(), ++aSeqId)
|
||||||
{
|
{
|
||||||
// scan through layers and remove it
|
if (aSeqPos == aSeqId)
|
||||||
Standard_Integer aSeqId = 1;
|
|
||||||
OpenGl_SequenceOfLayers::Iterator anIts;
|
|
||||||
for (anIts.Init (myLayers); anIts.More (); anIts.Next (), aSeqId++)
|
|
||||||
{
|
{
|
||||||
if (aSeqPos == aSeqId)
|
continue;
|
||||||
continue;
|
}
|
||||||
|
|
||||||
// try to remove structure and get priority value from this layer
|
// try to remove structure and get priority value from this layer
|
||||||
if ((aPriority = aList.Remove (theStructure, Standard_True)) >= 0)
|
OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
||||||
{
|
if (aList.Remove (theStructure, aPriority, Standard_True))
|
||||||
myNbStructures--;
|
{
|
||||||
// isForChangePriority should be Standard_False below, because we want
|
--myNbStructures;
|
||||||
// the BVH tree in the target layer to be updated with theStructure
|
// isForChangePriority should be Standard_False below, because we want
|
||||||
AddStructure (theStructure, theNewLayerId, aPriority);
|
// the BVH tree in the target layer to be updated with theStructure
|
||||||
break;
|
AddStructure (theStructure, theNewLayerId, aPriority);
|
||||||
}
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,35 +287,35 @@ void OpenGl_LayerList::ChangeLayer (const OpenGl_Structure *theStructure,
|
|||||||
//function : ChangePriority
|
//function : ChangePriority
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void OpenGl_LayerList::ChangePriority (const OpenGl_Structure *theStructure,
|
void OpenGl_LayerList::ChangePriority (const OpenGl_Structure* theStructure,
|
||||||
const Standard_Integer theLayerId,
|
const Standard_Integer theLayerId,
|
||||||
const Standard_Integer theNewPriority)
|
const Standard_Integer theNewPriority)
|
||||||
{
|
{
|
||||||
Standard_Integer aSeqPos = !HasLayer (theLayerId) ?
|
Standard_Integer aSeqPos = !HasLayer (theLayerId) ? 1 : myLayerIds.Find (theLayerId);
|
||||||
1 : myLayerIds.Find (theLayerId);
|
OpenGl_PriorityList& aForcastList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
||||||
|
Standard_Integer anOldPriority = -1;
|
||||||
|
|
||||||
OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
if (aForcastList.Remove (theStructure, anOldPriority, Standard_True))
|
||||||
|
|
||||||
if (aList.Remove (theStructure, Standard_True) >= 0)
|
|
||||||
{
|
{
|
||||||
myNbStructures--;
|
--myNbStructures;
|
||||||
AddStructure (theStructure, theLayerId, theNewPriority, Standard_True);
|
AddStructure (theStructure, theLayerId, theNewPriority, Standard_True);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
Standard_Integer aSeqId = 1;
|
|
||||||
OpenGl_SequenceOfLayers::Iterator anIts;
|
|
||||||
for (anIts.Init (myLayers); anIts.More (); anIts.Next (), aSeqId++)
|
|
||||||
{
|
|
||||||
if (aSeqPos == aSeqId)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (aList.Remove (theStructure, Standard_True) >= 0)
|
Standard_Integer aSeqId = 1;
|
||||||
{
|
for (OpenGl_SequenceOfLayers::Iterator anIts (myLayers); anIts.More(); anIts.Next(), ++aSeqId)
|
||||||
myNbStructures--;
|
{
|
||||||
AddStructure (theStructure, theLayerId, theNewPriority, Standard_True);
|
if (aSeqPos == aSeqId)
|
||||||
break;
|
{
|
||||||
}
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
OpenGl_PriorityList& aList = myLayers.ChangeValue (aSeqPos).PriorityList();
|
||||||
|
if (aList.Remove (theStructure, anOldPriority, Standard_True))
|
||||||
|
{
|
||||||
|
--myNbStructures;
|
||||||
|
AddStructure (theStructure, theLayerId, theNewPriority, Standard_True);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,8 +32,8 @@ typedef NCollection_DataMap<int, int> OpenGl_LayerSeqIds;
|
|||||||
|
|
||||||
class OpenGl_LayerList
|
class OpenGl_LayerList
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//! Constructor
|
//! Constructor
|
||||||
OpenGl_LayerList (const Standard_Integer theNbPriorities = 11);
|
OpenGl_LayerList (const Standard_Integer theNbPriorities = 11);
|
||||||
|
|
||||||
@@ -58,14 +58,14 @@ class OpenGl_LayerList
|
|||||||
//! Add structure to list with given priority. The structure will be inserted
|
//! Add structure to list with given priority. The structure will be inserted
|
||||||
//! to specified layer. If the layer isn't found, the structure will be put
|
//! to specified layer. If the layer isn't found, the structure will be put
|
||||||
//! to default bottom-level layer.
|
//! to default bottom-level layer.
|
||||||
void AddStructure (const OpenGl_Structure *theStructure,
|
void AddStructure (const OpenGl_Structure* theStruct,
|
||||||
const Standard_Integer theLayerId,
|
const Standard_Integer theLayerId,
|
||||||
const Standard_Integer thePriority,
|
const Standard_Integer thePriority,
|
||||||
Standard_Boolean isForChangePriority = Standard_False);
|
Standard_Boolean isForChangePriority = Standard_False);
|
||||||
|
|
||||||
//! Remove structure from structure list and return its previous priority
|
//! Remove structure from structure list and return its previous priority
|
||||||
void RemoveStructure (const OpenGl_Structure *theStructure,
|
void RemoveStructure (const Handle(Graphic3d_Structure)& theStructure,
|
||||||
const Standard_Integer theZLayerId);
|
const Standard_Integer theZLayerId);
|
||||||
|
|
||||||
//! Change structure z layer
|
//! Change structure z layer
|
||||||
//! If the new layer is not presented, the structure will be displayed
|
//! If the new layer is not presented, the structure will be displayed
|
||||||
|
@@ -45,20 +45,24 @@ OpenGl_PriorityList::~OpenGl_PriorityList()
|
|||||||
// function : Add
|
// function : Add
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void OpenGl_PriorityList::Add (const OpenGl_Structure* theStructure,
|
void OpenGl_PriorityList::Add (const OpenGl_Structure* theStruct,
|
||||||
const Standard_Integer thePriority,
|
const Standard_Integer thePriority,
|
||||||
Standard_Boolean isForChangePriority)
|
Standard_Boolean isForChangePriority)
|
||||||
{
|
{
|
||||||
const Standard_Integer anIndex = Min (Max (thePriority, 0), myArray.Length() - 1);
|
const Standard_Integer anIndex = Min (Max (thePriority, 0), myArray.Length() - 1);
|
||||||
|
if (theStruct == NULL)
|
||||||
myArray (anIndex).Append (theStructure);
|
|
||||||
if (theStructure->IsAlwaysRendered())
|
|
||||||
{
|
{
|
||||||
theStructure->MarkAsNotCulled();
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
myArray (anIndex).Append (theStruct);
|
||||||
|
if (theStruct->IsAlwaysRendered())
|
||||||
|
{
|
||||||
|
theStruct->MarkAsNotCulled();
|
||||||
}
|
}
|
||||||
else if (!isForChangePriority)
|
else if (!isForChangePriority)
|
||||||
{
|
{
|
||||||
myBVHPrimitives.Add (theStructure);
|
myBVHPrimitives.Add (theStruct);
|
||||||
}
|
}
|
||||||
++myNbStructures;
|
++myNbStructures;
|
||||||
}
|
}
|
||||||
@@ -67,31 +71,39 @@ void OpenGl_PriorityList::Add (const OpenGl_Structure* theStructure,
|
|||||||
// function : Remove
|
// function : Remove
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
Standard_Integer OpenGl_PriorityList::Remove (const OpenGl_Structure* theStructure,
|
bool OpenGl_PriorityList::Remove (const OpenGl_Structure* theStruct,
|
||||||
Standard_Boolean isForChangePriority)
|
Standard_Integer& thePriority,
|
||||||
|
Standard_Boolean isForChangePriority)
|
||||||
{
|
{
|
||||||
|
if (theStruct == NULL)
|
||||||
|
{
|
||||||
|
thePriority = -1;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
const Standard_Integer aNbPriorities = myArray.Length();
|
const Standard_Integer aNbPriorities = myArray.Length();
|
||||||
OpenGl_SequenceOfStructure::Iterator aStructIter;
|
|
||||||
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
||||||
{
|
{
|
||||||
OpenGl_SequenceOfStructure& aSeq = myArray (aPriorityIter);
|
OpenGl_SequenceOfStructure& aSeq = myArray (aPriorityIter);
|
||||||
for (aStructIter.Init (aSeq); aStructIter.More(); aStructIter.Next())
|
for (OpenGl_SequenceOfStructure::Iterator aStructIter (aSeq); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
if (aStructIter.Value() == theStructure)
|
if (aStructIter.Value() == theStruct)
|
||||||
{
|
{
|
||||||
aSeq.Remove (aStructIter);
|
aSeq.Remove (aStructIter);
|
||||||
if (!theStructure->IsAlwaysRendered()
|
if (!theStruct->IsAlwaysRendered()
|
||||||
&& !isForChangePriority)
|
&& !isForChangePriority)
|
||||||
{
|
{
|
||||||
myBVHPrimitives.Remove (theStructure);
|
myBVHPrimitives.Remove (theStruct);
|
||||||
}
|
}
|
||||||
--myNbStructures;
|
--myNbStructures;
|
||||||
return aPriorityIter;
|
thePriority = aPriorityIter;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
thePriority = -1;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -119,12 +131,23 @@ void OpenGl_PriorityList::Render (const Handle(OpenGl_Workspace)& theWorkspace)
|
|||||||
void OpenGl_PriorityList::renderAll (const Handle(OpenGl_Workspace)& theWorkspace) const
|
void OpenGl_PriorityList::renderAll (const Handle(OpenGl_Workspace)& theWorkspace) const
|
||||||
{
|
{
|
||||||
const Standard_Integer aNbPriorities = myArray.Length();
|
const Standard_Integer aNbPriorities = myArray.Length();
|
||||||
OpenGl_SequenceOfStructure::Iterator aStructIter;
|
const Standard_Integer aViewId = theWorkspace->ActiveViewId();
|
||||||
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
||||||
{
|
{
|
||||||
for (aStructIter.Init (myArray (aPriorityIter)); aStructIter.More(); aStructIter.Next())
|
for (OpenGl_SequenceOfStructure::Iterator aStructIter (myArray (aPriorityIter)); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
aStructIter.Value()->Render (theWorkspace);
|
const OpenGl_Structure* aStruct = aStructIter.Value();
|
||||||
|
if (!aStruct->visible)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (!aStruct->ViewAffinity.IsNull()
|
||||||
|
&& !aStruct->ViewAffinity->IsVisible (aViewId))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
aStruct->Render (theWorkspace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,16 +168,25 @@ void OpenGl_PriorityList::renderTraverse (const Handle(OpenGl_Workspace)& theWor
|
|||||||
traverse (aSelector);
|
traverse (aSelector);
|
||||||
|
|
||||||
const Standard_Integer aNbPriorities = myArray.Length();
|
const Standard_Integer aNbPriorities = myArray.Length();
|
||||||
OpenGl_SequenceOfStructure::Iterator aStructIter;
|
const Standard_Integer aViewId = theWorkspace->ActiveViewId();
|
||||||
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
||||||
{
|
{
|
||||||
for (aStructIter.Init (myArray (aPriorityIter)); aStructIter.More(); aStructIter.Next())
|
for (OpenGl_SequenceOfStructure::Iterator aStructIter (myArray (aPriorityIter)); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
if (!aStructIter.Value()->IsCulled())
|
const OpenGl_Structure* aStruct = aStructIter.Value();
|
||||||
|
if (!aStruct->visible
|
||||||
|
|| aStruct->IsCulled())
|
||||||
{
|
{
|
||||||
aStructIter.Value()->Render (theWorkspace);
|
continue;
|
||||||
aStructIter.Value()->ResetCullingStatus();
|
|
||||||
}
|
}
|
||||||
|
else if (!aStruct->ViewAffinity.IsNull()
|
||||||
|
&& !aStruct->ViewAffinity->IsVisible (aViewId))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
aStruct->Render (theWorkspace);
|
||||||
|
aStruct->ResetCullingStatus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -248,11 +280,9 @@ Standard_Boolean OpenGl_PriorityList::Append (const OpenGl_PriorityList& theOthe
|
|||||||
}
|
}
|
||||||
|
|
||||||
// add all structures to destination priority list
|
// add all structures to destination priority list
|
||||||
OpenGl_SequenceOfStructure::Iterator aStructIter;
|
|
||||||
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
for (Standard_Integer aPriorityIter = 0; aPriorityIter < aNbPriorities; ++aPriorityIter)
|
||||||
{
|
{
|
||||||
const OpenGl_SequenceOfStructure& aSeq = theOther.myArray (aPriorityIter);
|
for (OpenGl_SequenceOfStructure::Iterator aStructIter (theOther.myArray (aPriorityIter)); aStructIter.More(); aStructIter.Next())
|
||||||
for (aStructIter.Init (aSeq); aStructIter.More(); aStructIter.Next())
|
|
||||||
{
|
{
|
||||||
Add (aStructIter.Value(), aPriorityIter);
|
Add (aStructIter.Value(), aPriorityIter);
|
||||||
}
|
}
|
||||||
|
@@ -25,11 +25,6 @@
|
|||||||
#include <OpenGl_BVHClipPrimitiveSet.hxx>
|
#include <OpenGl_BVHClipPrimitiveSet.hxx>
|
||||||
#include <OpenGl_BVHTreeSelector.hxx>
|
#include <OpenGl_BVHTreeSelector.hxx>
|
||||||
|
|
||||||
class OpenGl_Structure;
|
|
||||||
|
|
||||||
typedef NCollection_Sequence<const OpenGl_Structure*> OpenGl_SequenceOfStructure;
|
|
||||||
typedef NCollection_Array1<OpenGl_SequenceOfStructure> OpenGl_ArrayOfStructure;
|
|
||||||
|
|
||||||
class OpenGl_PriorityList
|
class OpenGl_PriorityList
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@@ -40,13 +35,14 @@ public:
|
|||||||
//! Destructor.
|
//! Destructor.
|
||||||
virtual ~OpenGl_PriorityList();
|
virtual ~OpenGl_PriorityList();
|
||||||
|
|
||||||
void Add (const OpenGl_Structure* theStructure,
|
void Add (const OpenGl_Structure* theStruct,
|
||||||
const Standard_Integer thePriority,
|
const Standard_Integer thePriority,
|
||||||
Standard_Boolean isForChangePriority = Standard_False);
|
Standard_Boolean isForChangePriority = Standard_False);
|
||||||
|
|
||||||
//! Remove structure and returns its priority, if the structure is not found, method returns negative value
|
//! Remove structure and returns its priority, if the structure is not found, method returns negative value
|
||||||
Standard_Integer Remove (const OpenGl_Structure* theStructure,
|
bool Remove (const OpenGl_Structure* theStruct,
|
||||||
Standard_Boolean isForChangePriority = Standard_False);
|
Standard_Integer& thePriority,
|
||||||
|
Standard_Boolean isForChangePriority = Standard_False);
|
||||||
|
|
||||||
//! @return the number of structures
|
//! @return the number of structures
|
||||||
Standard_Integer NbStructures() const { return myNbStructures; }
|
Standard_Integer NbStructures() const { return myNbStructures; }
|
||||||
|
24
src/OpenGl/OpenGl_SequenceOfStructure.hxx
Normal file
24
src/OpenGl/OpenGl_SequenceOfStructure.hxx
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
// Created on: 2014-12-18
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 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.
|
||||||
|
|
||||||
|
#ifndef _OpenGl_SequenceOfStructure
|
||||||
|
#define _OpenGl_SequenceOfStructure
|
||||||
|
|
||||||
|
#include <NCollection_Sequence.hxx>
|
||||||
|
|
||||||
|
class OpenGl_Structure;
|
||||||
|
typedef NCollection_Sequence<const OpenGl_Structure*> OpenGl_SequenceOfStructure;
|
||||||
|
|
||||||
|
#endif // _OpenGl_SequenceOfStructure
|
@@ -73,10 +73,10 @@ public:
|
|||||||
const Handle(OpenGl_Texture) aPrevTexture = theWorkspace->DisableTexture();
|
const Handle(OpenGl_Texture) aPrevTexture = theWorkspace->DisableTexture();
|
||||||
|
|
||||||
glDisable (GL_LIGHTING);
|
glDisable (GL_LIGHTING);
|
||||||
if ((theWorkspace->NamedStatus & OPENGL_NS_IMMEDIATE) != 0)
|
/**if ((theWorkspace->NamedStatus & OPENGL_NS_IMMEDIATE) != 0)
|
||||||
{
|
{
|
||||||
glDepthMask (GL_FALSE);
|
glDepthMask (GL_FALSE);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Use highlight colors
|
// Use highlight colors
|
||||||
theWorkspace->GetGlContext()->core11->glColor3fv ((theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT) ? theWorkspace->HighlightColor->rgb : anAspectLine->Color().rgb);
|
theWorkspace->GetGlContext()->core11->glColor3fv ((theWorkspace->NamedStatus & OPENGL_NS_HIGHLIGHT) ? theWorkspace->HighlightColor->rgb : anAspectLine->Color().rgb);
|
||||||
|
@@ -139,14 +139,14 @@ class OpenGl_View : public MMgt_TShared
|
|||||||
//! The structure will be added to associated with it z layer.
|
//! The structure will be added to associated with it z layer.
|
||||||
//! If the z layer is not presented in the view, the structure will
|
//! If the z layer is not presented in the view, the structure will
|
||||||
//! be displayed in default bottom-level z layer.
|
//! be displayed in default bottom-level z layer.
|
||||||
void DisplayStructure (const OpenGl_Structure* theStructure,
|
void DisplayStructure (const Handle(Graphic3d_Structure)& theStructure,
|
||||||
const Standard_Integer thePriority);
|
const Standard_Integer thePriority);
|
||||||
|
|
||||||
//! Erase structure from display list.
|
//! Erase structure from display list.
|
||||||
void EraseStructure (const OpenGl_Structure* theStructure);
|
void EraseStructure (const Handle(Graphic3d_Structure)& theStructure);
|
||||||
|
|
||||||
//! Add structure to the list of immediate structures.
|
//! Add structure to the list of immediate structures.
|
||||||
void DisplayImmediateStructure (const OpenGl_Structure* theStructure);
|
void DisplayImmediateStructure (const Handle(Graphic3d_Structure)& theStructure);
|
||||||
|
|
||||||
//! Erase structure from display list.
|
//! Erase structure from display list.
|
||||||
void EraseImmediateStructure (const OpenGl_Structure* theStructure);
|
void EraseImmediateStructure (const OpenGl_Structure* theStructure);
|
||||||
|
@@ -1024,11 +1024,12 @@ void OpenGl_View::RemoveZLayer (const Standard_Integer theLayerId)
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void OpenGl_View::DisplayStructure (const OpenGl_Structure *theStructure,
|
void OpenGl_View::DisplayStructure (const Handle(Graphic3d_Structure)& theStructure,
|
||||||
const Standard_Integer thePriority)
|
const Standard_Integer thePriority)
|
||||||
{
|
{
|
||||||
Standard_Integer aZLayer = theStructure->GetZLayer ();
|
const Standard_Integer aZLayer = theStructure->GetZLayer();
|
||||||
myZLayers.AddStructure (theStructure, aZLayer, thePriority);
|
const OpenGl_Structure* aStruct = reinterpret_cast<const OpenGl_Structure*> (theStructure->CStructure().operator->());
|
||||||
|
myZLayers.AddStructure (aStruct, aZLayer, thePriority);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -1036,18 +1037,19 @@ void OpenGl_View::DisplayStructure (const OpenGl_Structure *theStructure,
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void OpenGl_View::DisplayImmediateStructure (const OpenGl_Structure* theStructure)
|
void OpenGl_View::DisplayImmediateStructure (const Handle(Graphic3d_Structure)& theStructure)
|
||||||
{
|
{
|
||||||
|
const OpenGl_Structure* aStruct = reinterpret_cast<const OpenGl_Structure*> (theStructure->CStructure().operator->());
|
||||||
for (OpenGl_SequenceOfStructure::Iterator anIter (myImmediateList);
|
for (OpenGl_SequenceOfStructure::Iterator anIter (myImmediateList);
|
||||||
anIter.More(); anIter.Next())
|
anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
if (anIter.Value() == theStructure)
|
if (anIter.Value() == aStruct)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
myImmediateList.Append (theStructure);
|
myImmediateList.Append (aStruct);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -1055,7 +1057,7 @@ void OpenGl_View::DisplayImmediateStructure (const OpenGl_Structure* theStructur
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
|
||||||
void OpenGl_View::EraseStructure (const OpenGl_Structure *theStructure)
|
void OpenGl_View::EraseStructure (const Handle(Graphic3d_Structure)& theStructure)
|
||||||
{
|
{
|
||||||
Standard_Integer aZLayer = theStructure->GetZLayer ();
|
Standard_Integer aZLayer = theStructure->GetZLayer ();
|
||||||
myZLayers.RemoveStructure (theStructure, aZLayer);
|
myZLayers.RemoveStructure (theStructure, aZLayer);
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
// commercial license or contractual agreement.
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
#include <OpenGl_GlCore15.hxx>
|
#include <OpenGl_GlCore15.hxx>
|
||||||
|
#include <OpenGl_ArbFBO.hxx>
|
||||||
|
|
||||||
#include <InterfaceGraphic.hxx>
|
#include <InterfaceGraphic.hxx>
|
||||||
|
|
||||||
@@ -152,6 +153,7 @@ OpenGl_Workspace::OpenGl_Workspace (const Handle(OpenGl_GraphicDriver)& theDrive
|
|||||||
//
|
//
|
||||||
myRaytraceFilter (new OpenGl_RaytraceFilter()),
|
myRaytraceFilter (new OpenGl_RaytraceFilter()),
|
||||||
myToRedrawGL (Standard_True),
|
myToRedrawGL (Standard_True),
|
||||||
|
myViewId (-1),
|
||||||
myAntiAliasingMode (3),
|
myAntiAliasingMode (3),
|
||||||
myTransientDrawToFront (Standard_True),
|
myTransientDrawToFront (Standard_True),
|
||||||
myBackBufferRestored (Standard_False),
|
myBackBufferRestored (Standard_False),
|
||||||
@@ -179,6 +181,7 @@ OpenGl_Workspace::OpenGl_Workspace (const Handle(OpenGl_GraphicDriver)& theDrive
|
|||||||
PolygonOffset_applied (THE_DEFAULT_POFFSET)
|
PolygonOffset_applied (THE_DEFAULT_POFFSET)
|
||||||
{
|
{
|
||||||
myGlContext->core11fwd->glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
|
myGlContext->core11fwd->glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
|
||||||
|
myResultFBO = new OpenGl_FrameBuffer();
|
||||||
|
|
||||||
if (!myGlContext->GetResource ("OpenGl_LineAttributes", myLineAttribs))
|
if (!myGlContext->GetResource ("OpenGl_LineAttributes", myLineAttribs))
|
||||||
{
|
{
|
||||||
@@ -234,6 +237,12 @@ OpenGl_Workspace::~OpenGl_Workspace()
|
|||||||
myGlContext->ReleaseResource ("OpenGl_LineAttributes", Standard_True);
|
myGlContext->ReleaseResource ("OpenGl_LineAttributes", Standard_True);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!myResultFBO.IsNull())
|
||||||
|
{
|
||||||
|
myResultFBO->Release (myGlContext.operator->());
|
||||||
|
myResultFBO.Nullify();
|
||||||
|
}
|
||||||
|
|
||||||
ReleaseRaytraceResources();
|
ReleaseRaytraceResources();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,6 +658,22 @@ void OpenGl_Workspace::Redraw (const Graphic3d_CView& theCView,
|
|||||||
aGlCtx->core11fwd->glViewport (0, 0, myWidth, myHeight);
|
aGlCtx->core11fwd->glViewport (0, 0, myWidth, myHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Standard_Integer aSizeX = aFrameBuffer != NULL ? aFrameBuffer->GetVPSizeX() : myWidth;
|
||||||
|
Standard_Integer aSizeY = aFrameBuffer != NULL ? aFrameBuffer->GetVPSizeY() : myHeight;
|
||||||
|
|
||||||
|
if (myResultFBO->GetVPSizeX() != aSizeX
|
||||||
|
|| myResultFBO->GetVPSizeY() != aSizeY)
|
||||||
|
{
|
||||||
|
myResultFBO->Init (aGlCtx, aSizeX, aSizeY);
|
||||||
|
}
|
||||||
|
if (myResultFBO->IsValid())
|
||||||
|
{
|
||||||
|
myResultFBO->SetupViewport (aGlCtx);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Standard_Boolean isImmediate = !myView->ImmediateStructures().IsEmpty()
|
||||||
|
|| myResultFBO->IsValid();
|
||||||
|
|
||||||
myToRedrawGL = Standard_True;
|
myToRedrawGL = Standard_True;
|
||||||
if (theCView.RenderParams.Method == Graphic3d_RM_RAYTRACING
|
if (theCView.RenderParams.Method == Graphic3d_RM_RAYTRACING
|
||||||
&& myComputeInitStatus != OpenGl_RT_FAIL)
|
&& myComputeInitStatus != OpenGl_RT_FAIL)
|
||||||
@@ -662,9 +687,6 @@ void OpenGl_Workspace::Redraw (const Graphic3d_CView& theCView,
|
|||||||
myRaytraceFilter->SetPrevRenderFilter (aRenderFilter);
|
myRaytraceFilter->SetPrevRenderFilter (aRenderFilter);
|
||||||
SetRenderFilter (myRaytraceFilter);
|
SetRenderFilter (myRaytraceFilter);
|
||||||
|
|
||||||
Standard_Integer aSizeX = aFrameBuffer != NULL ? aFrameBuffer->GetVPSizeX() : myWidth;
|
|
||||||
Standard_Integer aSizeY = aFrameBuffer != NULL ? aFrameBuffer->GetVPSizeY() : myHeight;
|
|
||||||
|
|
||||||
if (myOpenGlFBO.IsNull())
|
if (myOpenGlFBO.IsNull())
|
||||||
{
|
{
|
||||||
myOpenGlFBO = new OpenGl_FrameBuffer();
|
myOpenGlFBO = new OpenGl_FrameBuffer();
|
||||||
@@ -684,13 +706,13 @@ void OpenGl_Workspace::Redraw (const Graphic3d_CView& theCView,
|
|||||||
redraw1 (theCView, anEmptyCLayer, anEmptyCLayer, 0);
|
redraw1 (theCView, anEmptyCLayer, anEmptyCLayer, 0);
|
||||||
myOpenGlFBO->UnbindBuffer (aGlCtx);
|
myOpenGlFBO->UnbindBuffer (aGlCtx);
|
||||||
|
|
||||||
const Standard_Boolean isImmediate = !myView->ImmediateStructures().IsEmpty();
|
|
||||||
Raytrace (theCView, aSizeX, aSizeY, isImmediate ? 0 : toSwap,
|
Raytrace (theCView, aSizeX, aSizeY, isImmediate ? 0 : toSwap,
|
||||||
theCOverLayer, theCUnderLayer, aFrameBuffer);
|
theCOverLayer, theCUnderLayer,
|
||||||
|
myResultFBO->IsValid() ? myResultFBO.operator->() : aFrameBuffer);
|
||||||
|
|
||||||
if (isImmediate)
|
if (isImmediate)
|
||||||
{
|
{
|
||||||
RedrawImmediate (theCView, theCUnderLayer, theCOverLayer, Standard_True);
|
RedrawImmediate (theCView, theCUnderLayer, theCOverLayer, Standard_True, aFrameBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetRenderFilter (aRenderFilter);
|
SetRenderFilter (aRenderFilter);
|
||||||
@@ -702,16 +724,19 @@ void OpenGl_Workspace::Redraw (const Graphic3d_CView& theCView,
|
|||||||
if (myToRedrawGL)
|
if (myToRedrawGL)
|
||||||
{
|
{
|
||||||
// draw entire frame using normal OpenGL pipeline
|
// draw entire frame using normal OpenGL pipeline
|
||||||
if (aFrameBuffer != NULL)
|
if (myResultFBO->IsValid())
|
||||||
|
{
|
||||||
|
myResultFBO->BindBuffer (aGlCtx);
|
||||||
|
}
|
||||||
|
else if (aFrameBuffer != NULL)
|
||||||
{
|
{
|
||||||
aFrameBuffer->BindBuffer (aGlCtx);
|
aFrameBuffer->BindBuffer (aGlCtx);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Standard_Boolean isImmediate = !myView->ImmediateStructures().IsEmpty();
|
|
||||||
redraw1 (theCView, theCUnderLayer, theCOverLayer, isImmediate ? 0 : toSwap);
|
redraw1 (theCView, theCUnderLayer, theCOverLayer, isImmediate ? 0 : toSwap);
|
||||||
if (isImmediate)
|
if (isImmediate)
|
||||||
{
|
{
|
||||||
RedrawImmediate (theCView, theCUnderLayer, theCOverLayer, Standard_True);
|
RedrawImmediate (theCView, theCUnderLayer, theCOverLayer, Standard_True, aFrameBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
theCView.WasRedrawnGL = Standard_True;
|
theCView.WasRedrawnGL = Standard_True;
|
||||||
@@ -895,7 +920,8 @@ void OpenGl_Workspace::DisplayCallback (const Graphic3d_CView& theCView,
|
|||||||
void OpenGl_Workspace::RedrawImmediate (const Graphic3d_CView& theCView,
|
void OpenGl_Workspace::RedrawImmediate (const Graphic3d_CView& theCView,
|
||||||
const Aspect_CLayer2d& theCUnderLayer,
|
const Aspect_CLayer2d& theCUnderLayer,
|
||||||
const Aspect_CLayer2d& theCOverLayer,
|
const Aspect_CLayer2d& theCOverLayer,
|
||||||
const Standard_Boolean theToForce)
|
const Standard_Boolean theToForce,
|
||||||
|
OpenGl_FrameBuffer* theTargetFBO)
|
||||||
{
|
{
|
||||||
if (!Activate())
|
if (!Activate())
|
||||||
{
|
{
|
||||||
@@ -906,7 +932,8 @@ void OpenGl_Workspace::RedrawImmediate (const Graphic3d_CView& theCView,
|
|||||||
#if !defined(GL_ES_VERSION_2_0)
|
#if !defined(GL_ES_VERSION_2_0)
|
||||||
glGetBooleanv (GL_DOUBLEBUFFER, &isDoubleBuffer);
|
glGetBooleanv (GL_DOUBLEBUFFER, &isDoubleBuffer);
|
||||||
#endif
|
#endif
|
||||||
if (myView->ImmediateStructures().IsEmpty())
|
if (myView->ImmediateStructures().IsEmpty()
|
||||||
|
&& !myResultFBO->IsValid())
|
||||||
{
|
{
|
||||||
if (theToForce
|
if (theToForce
|
||||||
|| !myIsImmediateDrawn)
|
|| !myIsImmediateDrawn)
|
||||||
@@ -928,7 +955,36 @@ void OpenGl_Workspace::RedrawImmediate (const Graphic3d_CView& theCView,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isDoubleBuffer && myTransientDrawToFront)
|
if (myResultFBO->IsValid())
|
||||||
|
{
|
||||||
|
if (!myBackBufferRestored)
|
||||||
|
{
|
||||||
|
Redraw (theCView, theCUnderLayer, theCOverLayer);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
myResultFBO->BindReadBuffer (myGlContext);
|
||||||
|
if (theTargetFBO != NULL)
|
||||||
|
{
|
||||||
|
theTargetFBO->BindDrawBuffer (myGlContext);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myGlContext->arbFBO->glBindFramebuffer (GL_DRAW_FRAMEBUFFER, OpenGl_FrameBuffer::NO_FRAMEBUFFER);
|
||||||
|
}
|
||||||
|
myGlContext->arbFBO->glBlitFramebuffer (0, 0, myResultFBO->GetVPSizeX(), myResultFBO->GetVPSizeY(),
|
||||||
|
0, 0, myResultFBO->GetVPSizeX(), myResultFBO->GetVPSizeY(),
|
||||||
|
GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT, GL_NEAREST);
|
||||||
|
if (theTargetFBO != NULL)
|
||||||
|
{
|
||||||
|
theTargetFBO->BindBuffer (myGlContext);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myGlContext->arbFBO->glBindFramebuffer (GL_FRAMEBUFFER, OpenGl_FrameBuffer::NO_FRAMEBUFFER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (isDoubleBuffer && myTransientDrawToFront)
|
||||||
{
|
{
|
||||||
if (!myBackBufferRestored)
|
if (!myBackBufferRestored)
|
||||||
{
|
{
|
||||||
@@ -945,20 +1001,40 @@ void OpenGl_Workspace::RedrawImmediate (const Graphic3d_CView& theCView,
|
|||||||
myIsImmediateDrawn = Standard_True;
|
myIsImmediateDrawn = Standard_True;
|
||||||
|
|
||||||
NamedStatus |= OPENGL_NS_IMMEDIATE;
|
NamedStatus |= OPENGL_NS_IMMEDIATE;
|
||||||
///glDisable (GL_LIGHTING);
|
|
||||||
glDisable (GL_DEPTH_TEST);
|
///glDisable (GL_DEPTH_TEST);
|
||||||
|
glDepthFunc (GL_LEQUAL);
|
||||||
|
glDepthMask (GL_TRUE);
|
||||||
|
glEnable (GL_DEPTH_TEST);
|
||||||
|
|
||||||
Handle(OpenGl_Workspace) aWS (this);
|
Handle(OpenGl_Workspace) aWS (this);
|
||||||
for (OpenGl_SequenceOfStructure::Iterator anIter (myView->ImmediateStructures());
|
for (OpenGl_SequenceOfStructure::Iterator anIter (myView->ImmediateStructures());
|
||||||
anIter.More(); anIter.Next())
|
anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
const OpenGl_Structure* aStructure = anIter.Value();
|
const OpenGl_Structure* aStructure = anIter.Value();
|
||||||
|
if (!aStructure->visible)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (!aStructure->ViewAffinity.IsNull()
|
||||||
|
&& !aStructure->ViewAffinity->IsVisible (myViewId))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
aStructure->Render (aWS);
|
aStructure->Render (aWS);
|
||||||
}
|
}
|
||||||
|
|
||||||
NamedStatus &= ~OPENGL_NS_IMMEDIATE;
|
NamedStatus &= ~OPENGL_NS_IMMEDIATE;
|
||||||
|
|
||||||
if (isDoubleBuffer && myTransientDrawToFront)
|
if (myResultFBO->IsValid())
|
||||||
|
{
|
||||||
|
if (theTargetFBO == NULL)
|
||||||
|
{
|
||||||
|
myGlContext->SwapBuffers();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (isDoubleBuffer && myTransientDrawToFront)
|
||||||
{
|
{
|
||||||
glFlush();
|
glFlush();
|
||||||
MakeBackBufCurrent();
|
MakeBackBufCurrent();
|
||||||
|
@@ -140,8 +140,16 @@ public:
|
|||||||
//! Destructor
|
//! Destructor
|
||||||
virtual ~OpenGl_Workspace();
|
virtual ~OpenGl_Workspace();
|
||||||
|
|
||||||
void SetActiveView (const Handle(OpenGl_View)& theView) { myView = theView; }
|
void SetActiveView (const Handle(OpenGl_View)& theView,
|
||||||
const Handle(OpenGl_View)& ActiveView () const { return myView; }
|
const Standard_Integer theViewId)
|
||||||
|
{
|
||||||
|
myView = theView;
|
||||||
|
myViewId = theViewId;
|
||||||
|
}
|
||||||
|
|
||||||
|
const Handle(OpenGl_View)& ActiveView() const { return myView; }
|
||||||
|
|
||||||
|
Standard_Integer ActiveViewId() const { return myViewId; }
|
||||||
|
|
||||||
//! Redraw the window.
|
//! Redraw the window.
|
||||||
void Redraw (const Graphic3d_CView& theCView,
|
void Redraw (const Graphic3d_CView& theCView,
|
||||||
@@ -152,7 +160,8 @@ public:
|
|||||||
void RedrawImmediate (const Graphic3d_CView& theCView,
|
void RedrawImmediate (const Graphic3d_CView& theCView,
|
||||||
const Aspect_CLayer2d& theCUnderLayer,
|
const Aspect_CLayer2d& theCUnderLayer,
|
||||||
const Aspect_CLayer2d& theCOverLayer,
|
const Aspect_CLayer2d& theCOverLayer,
|
||||||
const Standard_Boolean theToForce = Standard_False);
|
const Standard_Boolean theToForce = Standard_False,
|
||||||
|
OpenGl_FrameBuffer* theTargetFBO = NULL);
|
||||||
|
|
||||||
void Invalidate (const Graphic3d_CView& /*theCView*/)
|
void Invalidate (const Graphic3d_CView& /*theCView*/)
|
||||||
{
|
{
|
||||||
@@ -634,6 +643,8 @@ protected: //! @name fields related to ray-tracing
|
|||||||
//! Framebuffer (FBO) for pre-raytrace rendering by OpenGL.
|
//! Framebuffer (FBO) for pre-raytrace rendering by OpenGL.
|
||||||
Handle(OpenGl_FrameBuffer) myOpenGlFBO;
|
Handle(OpenGl_FrameBuffer) myOpenGlFBO;
|
||||||
|
|
||||||
|
Handle(OpenGl_FrameBuffer) myResultFBO;
|
||||||
|
|
||||||
//! State of OpenGL view.
|
//! State of OpenGL view.
|
||||||
Standard_Size myViewModificationStatus;
|
Standard_Size myViewModificationStatus;
|
||||||
//! State of OpenGL layer list.
|
//! State of OpenGL layer list.
|
||||||
@@ -659,6 +670,7 @@ protected: //! @name protected fields
|
|||||||
Handle(OpenGl_PrinterContext) myPrintContext;
|
Handle(OpenGl_PrinterContext) myPrintContext;
|
||||||
Handle(OpenGl_View) myView;
|
Handle(OpenGl_View) myView;
|
||||||
Handle(OpenGl_LineAttributes) myLineAttribs;
|
Handle(OpenGl_LineAttributes) myLineAttribs;
|
||||||
|
Standard_Integer myViewId;
|
||||||
Standard_Integer myAntiAliasingMode;
|
Standard_Integer myAntiAliasingMode;
|
||||||
Standard_Boolean myTransientDrawToFront; //!< optimization flag for immediate mode (to render directly to the front buffer)
|
Standard_Boolean myTransientDrawToFront; //!< optimization flag for immediate mode (to render directly to the front buffer)
|
||||||
Standard_Boolean myBackBufferRestored;
|
Standard_Boolean myBackBufferRestored;
|
||||||
|
@@ -80,9 +80,7 @@ Standard_Boolean OpenGl_Workspace::UpdateRaytraceGeometry (GeomUpdateMode theMod
|
|||||||
|
|
||||||
for (Standard_Integer anIndex = 0; anIndex < aStructArray.Length(); ++anIndex)
|
for (Standard_Integer anIndex = 0; anIndex < aStructArray.Length(); ++anIndex)
|
||||||
{
|
{
|
||||||
OpenGl_SequenceOfStructure::Iterator aStructIt;
|
for (OpenGl_SequenceOfStructure::Iterator aStructIt (aStructArray (anIndex)); aStructIt.More(); aStructIt.Next())
|
||||||
|
|
||||||
for (aStructIt.Init (aStructArray (anIndex)); aStructIt.More(); aStructIt.Next())
|
|
||||||
{
|
{
|
||||||
const OpenGl_Structure* aStructure = aStructIt.Value();
|
const OpenGl_Structure* aStructure = aStructIt.Value();
|
||||||
|
|
||||||
@@ -96,8 +94,15 @@ Standard_Boolean OpenGl_Workspace::UpdateRaytraceGeometry (GeomUpdateMode theMod
|
|||||||
else if (theMode == OpenGl_GUM_PREPARE)
|
else if (theMode == OpenGl_GUM_PREPARE)
|
||||||
{
|
{
|
||||||
if (!aStructure->IsRaytracable()
|
if (!aStructure->IsRaytracable()
|
||||||
|| !aStructure->IsVisible())
|
|| !aStructure->visible)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
else if (!aStructure->ViewAffinity.IsNull()
|
||||||
|
&& !aStructure->ViewAffinity->IsVisible (myViewId))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
for (OpenGl_Structure::GroupIterator aGroupIter (aStructure->DrawGroups()); aGroupIter.More(); aGroupIter.Next())
|
for (OpenGl_Structure::GroupIterator aGroupIter (aStructure->DrawGroups()); aGroupIter.More(); aGroupIter.Next())
|
||||||
{
|
{
|
||||||
|
@@ -82,21 +82,6 @@ is
|
|||||||
---Purpose: Returns the new Structure defined for the new visualization
|
---Purpose: Returns the new Structure defined for the new visualization
|
||||||
---Category: Methods to modify the class definition
|
---Category: Methods to modify the class definition
|
||||||
|
|
||||||
|
|
||||||
---Category: Highlighting methods.
|
|
||||||
--
|
|
||||||
Highlight(me: mutable) is static;
|
|
||||||
---Purpose: displays the whole content of the presentation in white.
|
|
||||||
Color(me: mutable; aColor: NameOfColor from Quantity) is static;
|
|
||||||
---Purpose: displays the whole content of the presentation in the specified color.
|
|
||||||
BoundBox(me: mutable) is static;
|
|
||||||
|
|
||||||
SetIsForHighlight (me : mutable;
|
|
||||||
isForHighlight : Boolean from Standard)
|
|
||||||
is virtual;
|
|
||||||
---Purpose: marks the structure <me> representing wired structure needed for
|
|
||||||
-- highlight only so it won't be added to BVH tree.
|
|
||||||
|
|
||||||
---Category: Global modification methods.
|
---Category: Global modification methods.
|
||||||
SetShadingAspect(me: mutable; aShadingAspect: ShadingAspect from Prs3d);
|
SetShadingAspect(me: mutable; aShadingAspect: ShadingAspect from Prs3d);
|
||||||
|
|
||||||
|
@@ -99,38 +99,6 @@ Prs3d_Presentation::Prs3d_Presentation (const Handle(Graphic3d_StructureManager)
|
|||||||
SetPrimitivesAspect (aDefAspect);
|
SetPrimitivesAspect (aDefAspect);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Highlight
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void Prs3d_Presentation::Highlight()
|
|
||||||
{
|
|
||||||
SetHighlightColor(Quantity_Color(Quantity_NOC_GRAY99));
|
|
||||||
Aspect_TypeOfHighlightMethod Method = Aspect_TOHM_COLOR;
|
|
||||||
Graphic3d_Structure::Highlight(Method);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Color
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void Prs3d_Presentation::Color(const Quantity_NameOfColor aColor)
|
|
||||||
{
|
|
||||||
SetHighlightColor(Quantity_Color(aColor));
|
|
||||||
Graphic3d_Structure::Highlight(Aspect_TOHM_COLOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : BoundBox
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void Prs3d_Presentation::BoundBox()
|
|
||||||
{
|
|
||||||
SetHighlightColor(Quantity_Color(Quantity_NOC_GRAY99));
|
|
||||||
Graphic3d_Structure::Highlight(Aspect_TOHM_BOUNDBOX);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : SetShadingAspect
|
//function : SetShadingAspect
|
||||||
//purpose :
|
//purpose :
|
||||||
@@ -287,15 +255,6 @@ Handle(Graphic3d_Group) Prs3d_Presentation::CurrentGroup () const
|
|||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//=======================================================================
|
|
||||||
//function : SetIsForHighlight
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void Prs3d_Presentation::SetIsForHighlight (const Standard_Boolean isForHighlight)
|
|
||||||
{
|
|
||||||
Graphic3d_Structure::SetIsForHighlight (isForHighlight);
|
|
||||||
}
|
|
||||||
|
|
||||||
//function : Compute
|
//function : Compute
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
|
@@ -33,9 +33,12 @@ uses
|
|||||||
|
|
||||||
MMgt,TCollection,
|
MMgt,TCollection,
|
||||||
TopLoc,
|
TopLoc,
|
||||||
Prs3d,Graphic3d,
|
Aspect,
|
||||||
|
Prs3d,
|
||||||
|
Graphic3d,
|
||||||
Quantity,Geom,
|
Quantity,Geom,
|
||||||
V3d,
|
Visual3d,
|
||||||
|
V3d,
|
||||||
TColStd,
|
TColStd,
|
||||||
gp
|
gp
|
||||||
|
|
||||||
|
@@ -21,9 +21,11 @@ uses
|
|||||||
|
|
||||||
PresentationManager from PrsMgr,
|
PresentationManager from PrsMgr,
|
||||||
NameOfColor from Quantity,
|
NameOfColor from Quantity,
|
||||||
|
Color from Quantity,
|
||||||
Transformation from Geom,
|
Transformation from Geom,
|
||||||
Length from Quantity,
|
Length from Quantity,
|
||||||
ShadingAspect from Prs3d,
|
ShadingAspect from Prs3d,
|
||||||
|
TypeOfHighlightMethod from Aspect,
|
||||||
TypeOfPresentation3d from PrsMgr,
|
TypeOfPresentation3d from PrsMgr,
|
||||||
DataStructureManager from Graphic3d,
|
DataStructureManager from Graphic3d,
|
||||||
Structure from Graphic3d,
|
Structure from Graphic3d,
|
||||||
@@ -59,7 +61,9 @@ is
|
|||||||
theValue : Boolean from Standard)
|
theValue : Boolean from Standard)
|
||||||
is virtual private;
|
is virtual private;
|
||||||
|
|
||||||
Highlight (me : mutable) is virtual private;
|
Highlight (me : mutable;
|
||||||
|
theMethod : TypeOfHighlightMethod from Aspect;
|
||||||
|
theColor : Color from Quantity) is virtual private;
|
||||||
|
|
||||||
Unhighlight (me) is virtual private;
|
Unhighlight (me) is virtual private;
|
||||||
|
|
||||||
@@ -89,13 +93,6 @@ is
|
|||||||
---Purpose: removes the whole content of the presentation.
|
---Purpose: removes the whole content of the presentation.
|
||||||
-- Does not remove the other connected presentations.
|
-- Does not remove the other connected presentations.
|
||||||
|
|
||||||
Color (me : mutable;
|
|
||||||
theColor : NameOfColor from Quantity)
|
|
||||||
is virtual private;
|
|
||||||
|
|
||||||
BoundBox (me)
|
|
||||||
is static private;
|
|
||||||
|
|
||||||
---Category: references to other presentation.
|
---Category: references to other presentation.
|
||||||
|
|
||||||
Connect (me;
|
Connect (me;
|
||||||
|
@@ -116,7 +116,8 @@ void PrsMgr_Presentation::SetVisible (const Standard_Boolean theValue)
|
|||||||
//function : Highlight
|
//function : Highlight
|
||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
void PrsMgr_Presentation::Highlight()
|
void PrsMgr_Presentation::Highlight (const Aspect_TypeOfHighlightMethod theMethod,
|
||||||
|
const Quantity_Color& theColor)
|
||||||
{
|
{
|
||||||
if (!IsHighlighted())
|
if (!IsHighlighted())
|
||||||
{
|
{
|
||||||
@@ -124,7 +125,7 @@ void PrsMgr_Presentation::Highlight()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Display (Standard_True);
|
Display (Standard_True);
|
||||||
myStructure->Highlight();
|
myStructure->Highlight (theMethod, theColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -134,7 +135,13 @@ void PrsMgr_Presentation::Highlight()
|
|||||||
void PrsMgr_Presentation::Unhighlight() const
|
void PrsMgr_Presentation::Unhighlight() const
|
||||||
{
|
{
|
||||||
myStructure->UnHighlight();
|
myStructure->UnHighlight();
|
||||||
switch (myBeforeHighlightState)
|
if (myBeforeHighlightState == State_Visible)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
myStructure->SetVisible (Standard_False);
|
||||||
|
/**switch (myBeforeHighlightState)
|
||||||
{
|
{
|
||||||
case State_Visible:
|
case State_Visible:
|
||||||
return;
|
return;
|
||||||
@@ -144,7 +151,7 @@ void PrsMgr_Presentation::Unhighlight() const
|
|||||||
case State_Empty:
|
case State_Empty:
|
||||||
myStructure->Erase();
|
myStructure->Erase();
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
@@ -169,30 +176,6 @@ void PrsMgr_Presentation::Clear()
|
|||||||
myStructure->RemoveAll();
|
myStructure->RemoveAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : Color
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void PrsMgr_Presentation::Color (const Quantity_NameOfColor theColor)
|
|
||||||
{
|
|
||||||
if (!IsHighlighted())
|
|
||||||
{
|
|
||||||
myBeforeHighlightState = StructureState (myStructure);
|
|
||||||
}
|
|
||||||
|
|
||||||
Display (Standard_True);
|
|
||||||
myStructure->Color (theColor);
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
|
||||||
//function : BoundBox
|
|
||||||
//purpose :
|
|
||||||
//=======================================================================
|
|
||||||
void PrsMgr_Presentation::BoundBox() const
|
|
||||||
{
|
|
||||||
myStructure->BoundBox();
|
|
||||||
}
|
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : IsDisplayed
|
//function : IsDisplayed
|
||||||
//purpose :
|
//purpose :
|
||||||
|
@@ -28,10 +28,12 @@ uses
|
|||||||
PresentableObject from PrsMgr,
|
PresentableObject from PrsMgr,
|
||||||
ListOfPresentations from PrsMgr,
|
ListOfPresentations from PrsMgr,
|
||||||
Length,NameOfColor from Quantity,
|
Length,NameOfColor from Quantity,
|
||||||
|
Color from Quantity,
|
||||||
Transformation from Geom,
|
Transformation from Geom,
|
||||||
NameOfMaterial from Graphic3d,
|
NameOfMaterial from Graphic3d,
|
||||||
Presentation from PrsMgr,
|
Presentation from PrsMgr,
|
||||||
View from V3d,
|
View from V3d,
|
||||||
|
ViewManager from Visual3d,
|
||||||
ShadingAspect from Prs3d,
|
ShadingAspect from Prs3d,
|
||||||
Presentation from Prs3d
|
Presentation from Prs3d
|
||||||
|
|
||||||
@@ -41,14 +43,15 @@ raises
|
|||||||
|
|
||||||
is
|
is
|
||||||
|
|
||||||
Create (theStructureManager : StructureManager from Graphic3d)
|
Create (theStructureManager : ViewManager from Visual3d)
|
||||||
returns PresentationManager from PrsMgr;
|
returns PresentationManager from PrsMgr;
|
||||||
---Purpose:
|
---Purpose:
|
||||||
-- Creates a framework to manage displays and graphic entities with the 3D view theStructureManager.
|
-- Creates a framework to manage displays and graphic entities with the 3D view theStructureManager.
|
||||||
|
|
||||||
Display (me : mutable;
|
Display (me : mutable;
|
||||||
thePrsObject : PresentableObject from PrsMgr;
|
thePrsObject : PresentableObject from PrsMgr;
|
||||||
theMode : Integer from Standard = 0)
|
theMode : Integer from Standard = 0;
|
||||||
|
theIsImmediate : Boolean from Standard = Standard_False)
|
||||||
---Purpose: Displays the presentation of the object in the given Presentation manager with the given mode.
|
---Purpose: Displays the presentation of the object in the given Presentation manager with the given mode.
|
||||||
-- The mode should be enumerated by the object which inherits PresentableObject.
|
-- The mode should be enumerated by the object which inherits PresentableObject.
|
||||||
is static;
|
is static;
|
||||||
@@ -167,7 +170,8 @@ is
|
|||||||
Color (me : mutable;
|
Color (me : mutable;
|
||||||
thePrsObject : PresentableObject from PrsMgr;
|
thePrsObject : PresentableObject from PrsMgr;
|
||||||
theColor : NameOfColor from Quantity = Quantity_NOC_YELLOW;
|
theColor : NameOfColor from Quantity = Quantity_NOC_YELLOW;
|
||||||
theMode : Integer from Standard = 0)
|
theMode : Integer from Standard = 0;
|
||||||
|
theSelObj : PresentableObject from PrsMgr = NULL)
|
||||||
---Purpose: Highlights the graphic object thePrsObject in the color theColor.
|
---Purpose: Highlights the graphic object thePrsObject in the color theColor.
|
||||||
-- thePrsObject has the display mode theMode;
|
-- thePrsObject has the display mode theMode;
|
||||||
-- this has the default value of 0, that is, the wireframe display mode.
|
-- this has the default value of 0, that is, the wireframe display mode.
|
||||||
@@ -232,30 +236,28 @@ is
|
|||||||
|
|
||||||
Presentation (me;
|
Presentation (me;
|
||||||
thePrsObject : PresentableObject from PrsMgr;
|
thePrsObject : PresentableObject from PrsMgr;
|
||||||
theMode : Integer from Standard = 0)
|
theMode : Integer from Standard = 0;
|
||||||
|
theToCreate : Boolean from Standard = Standard_False;
|
||||||
|
theSelObj : PresentableObject from PrsMgr = NULL)
|
||||||
returns Presentation from PrsMgr
|
returns Presentation from PrsMgr
|
||||||
raises NoSuchObject from Standard
|
|
||||||
is static;
|
is static;
|
||||||
---Purpose: Returns the presentation Presentation of the presentable object thePrsObject in this framework. thePrsObject has the display mode theMode.
|
---Purpose: Returns the presentation Presentation of the presentable object thePrsObject in this framework.
|
||||||
|
-- When theToCreate is true - automatically creates presentation for specified mode when not exist.
|
||||||
AddPresentation (me : mutable;
|
-- Optional argument theSelObj specifies parent decomposed object to inherit its view affinity.
|
||||||
thePrsObject : PresentableObject from PrsMgr;
|
|
||||||
theMode : Integer from Standard = 0)
|
|
||||||
---Purpose: Adds a presentation of the presentable object thePrsObject to this framework.
|
|
||||||
-- thePrsObject has the display mode theMode.
|
|
||||||
is protected;
|
|
||||||
|
|
||||||
RemovePresentation (me : mutable;
|
RemovePresentation (me : mutable;
|
||||||
thePrsObject : PresentableObject from PrsMgr;
|
thePrsObject : PresentableObject from PrsMgr;
|
||||||
theMode : Integer from Standard = 0)
|
theMode : Integer from Standard = 0)
|
||||||
|
returns Boolean from Standard
|
||||||
---Purpose: Removes a presentation of the presentable object thePrsObject to this framework. thePrsObject has the display mode theMode.
|
---Purpose: Removes a presentation of the presentable object thePrsObject to this framework. thePrsObject has the display mode theMode.
|
||||||
is protected;
|
is protected;
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
myStructureManager : StructureManager from Graphic3d is protected;
|
myStructureManager : ViewManager from Visual3d is protected;
|
||||||
myImmediateModeOn : Integer from Standard is protected;
|
myImmediateModeOn : Integer from Standard is protected;
|
||||||
myImmediateList : ListOfPresentations from PrsMgr is protected;
|
myImmediateList : ListOfPresentations from PrsMgr is protected;
|
||||||
myImmediateView : View from V3d is protected;
|
myImmediateView : View from V3d is protected;
|
||||||
|
mySelectionColor : Color from Quantity is protected;
|
||||||
|
|
||||||
end PresentationManager from PrsMgr;
|
end PresentationManager from PrsMgr;
|
||||||
|
@@ -29,9 +29,10 @@
|
|||||||
// function : PrsMgr_PresentationManager
|
// function : PrsMgr_PresentationManager
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
PrsMgr_PresentationManager::PrsMgr_PresentationManager (const Handle(Graphic3d_StructureManager)& theStructureManager)
|
PrsMgr_PresentationManager::PrsMgr_PresentationManager (const Handle(Visual3d_ViewManager)& theStructureManager)
|
||||||
: myStructureManager (theStructureManager),
|
: myStructureManager (theStructureManager),
|
||||||
myImmediateModeOn (0)
|
myImmediateModeOn (0),
|
||||||
|
mySelectionColor (Quantity_NOC_GRAY99)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
@@ -41,25 +42,30 @@ PrsMgr_PresentationManager::PrsMgr_PresentationManager (const Handle(Graphic3d_S
|
|||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::Display (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
void PrsMgr_PresentationManager::Display (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Standard_Integer theMode)
|
const Standard_Integer theMode,
|
||||||
|
const Standard_Boolean theIsImmediate)
|
||||||
{
|
{
|
||||||
if (thePrsObj->HasOwnPresentations())
|
if (thePrsObj->HasOwnPresentations())
|
||||||
{
|
{
|
||||||
if (!HasPresentation (thePrsObj, theMode))
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode, Standard_True);
|
||||||
{
|
|
||||||
AddPresentation (thePrsObj, theMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
|
||||||
|
|
||||||
if (aPrs.IsNull()) return;
|
|
||||||
|
|
||||||
if (aPrs->MustBeUpdated())
|
if (aPrs->MustBeUpdated())
|
||||||
{
|
{
|
||||||
Update (thePrsObj, theMode);
|
Update (thePrsObj, theMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (myImmediateModeOn > 0)
|
if (theIsImmediate)
|
||||||
|
{
|
||||||
|
aPrs->Presentation()->CStructure()->stick = 1; ///
|
||||||
|
aPrs->Presentation()->CStructure()->visible = 1; ///
|
||||||
|
///aPrs->Display();
|
||||||
|
const Visual3d_SequenceOfView& aViews = myStructureManager->DefinedViews();
|
||||||
|
for (Standard_Integer aViewIter = 1; aViewIter <= aViews.Length(); ++aViewIter)
|
||||||
|
{
|
||||||
|
const Handle(Visual3d_View)& aView = aViews.Value (aViewIter);
|
||||||
|
aView->DisplayImmediate (aPrs->Presentation(), Standard_False);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (myImmediateModeOn > 0)
|
||||||
{
|
{
|
||||||
AddToImmediateList (aPrs->Presentation());
|
AddToImmediateList (aPrs->Presentation());
|
||||||
}
|
}
|
||||||
@@ -75,7 +81,7 @@ void PrsMgr_PresentationManager::Display (const Handle(PrsMgr_PresentableObject)
|
|||||||
|
|
||||||
for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
|
for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
Display (anIter.Value(), theMode);
|
Display (anIter.Value(), theMode, theIsImmediate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,9 +97,10 @@ void PrsMgr_PresentationManager::Erase (const Handle(PrsMgr_PresentableObject)&
|
|||||||
Erase (anIter.Value(), theMode);
|
Erase (anIter.Value(), theMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasPresentation (thePrsObj, theMode))
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode, Standard_False);
|
||||||
|
if (!aPrs.IsNull())
|
||||||
{
|
{
|
||||||
Presentation (thePrsObj, theMode)->Erase();
|
aPrs->Erase();
|
||||||
RemovePresentation (thePrsObj, theMode);
|
RemovePresentation (thePrsObj, theMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -152,14 +159,7 @@ void PrsMgr_PresentationManager::Highlight (const Handle(PrsMgr_PresentableObjec
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!HasPresentation (thePrsObj, theMode))
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode, Standard_True);
|
||||||
{
|
|
||||||
AddPresentation (thePrsObj, theMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!HasPresentation (thePrsObj, theMode)) return;
|
|
||||||
|
|
||||||
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
|
||||||
if (aPrs->MustBeUpdated())
|
if (aPrs->MustBeUpdated())
|
||||||
{
|
{
|
||||||
Update (thePrsObj, theMode);
|
Update (thePrsObj, theMode);
|
||||||
@@ -168,12 +168,12 @@ void PrsMgr_PresentationManager::Highlight (const Handle(PrsMgr_PresentableObjec
|
|||||||
if (myImmediateModeOn > 0)
|
if (myImmediateModeOn > 0)
|
||||||
{
|
{
|
||||||
Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
|
Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
|
||||||
aShadow->Highlight();
|
aShadow->Highlight (Aspect_TOHM_COLOR, mySelectionColor);
|
||||||
AddToImmediateList (aShadow);
|
AddToImmediateList (aShadow);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aPrs->Highlight();
|
aPrs->Highlight (Aspect_TOHM_COLOR, mySelectionColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -189,9 +189,10 @@ void PrsMgr_PresentationManager::Unhighlight (const Handle(PrsMgr_PresentableObj
|
|||||||
Unhighlight (anIter.Value(), theMode);
|
Unhighlight (anIter.Value(), theMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasPresentation (thePrsObj, theMode))
|
const Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
|
if (!aPrs.IsNull())
|
||||||
{
|
{
|
||||||
Presentation (thePrsObj, theMode)->Unhighlight();
|
aPrs->Unhighlight();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,9 +209,10 @@ void PrsMgr_PresentationManager::SetDisplayPriority (const Handle(PrsMgr_Present
|
|||||||
SetDisplayPriority (anIter.Value(), theMode, theNewPrior);
|
SetDisplayPriority (anIter.Value(), theMode, theNewPrior);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasPresentation (thePrsObj, theMode))
|
const Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
|
if (!aPrs.IsNull())
|
||||||
{
|
{
|
||||||
Presentation (thePrsObj, theMode)->SetDisplayPriority (theNewPrior);
|
aPrs->SetDisplayPriority (theNewPrior);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,9 +232,10 @@ Standard_Integer PrsMgr_PresentationManager::DisplayPriority (const Handle(PrsMg
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return HasPresentation (thePrsObj, theMode)
|
const Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
? Presentation (thePrsObj, theMode)->DisplayPriority()
|
return !aPrs.IsNull()
|
||||||
: 0;
|
? aPrs->DisplayPriority()
|
||||||
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -250,8 +253,9 @@ Standard_Boolean PrsMgr_PresentationManager::IsDisplayed (const Handle(PrsMgr_Pr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return HasPresentation (thePrsObj, theMode)
|
const Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
&& Presentation (thePrsObj, theMode)->IsDisplayed();
|
return !aPrs.IsNull()
|
||||||
|
&& aPrs->IsDisplayed();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -269,8 +273,9 @@ Standard_Boolean PrsMgr_PresentationManager::IsHighlighted (const Handle(PrsMgr_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return HasPresentation (thePrsObj, theMode)
|
const Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
&& Presentation (thePrsObj, theMode)->IsHighlighted();
|
return !aPrs.IsNull()
|
||||||
|
&& aPrs->IsHighlighted();
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -284,10 +289,6 @@ void PrsMgr_PresentationManager::Update (const Handle(PrsMgr_PresentableObject)&
|
|||||||
{
|
{
|
||||||
Update (anIter.Value(), theMode);
|
Update (anIter.Value(), theMode);
|
||||||
}
|
}
|
||||||
if (!HasPresentation(thePrsObj, theMode))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
if (!aPrs.IsNull())
|
if (!aPrs.IsNull())
|
||||||
@@ -405,14 +406,11 @@ Standard_Boolean PrsMgr_PresentationManager::HasPresentation (const Handle(PrsMg
|
|||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
Handle(PrsMgr_Presentation) PrsMgr_PresentationManager::Presentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
Handle(PrsMgr_Presentation) PrsMgr_PresentationManager::Presentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Standard_Integer theMode) const
|
const Standard_Integer theMode,
|
||||||
|
const Standard_Boolean theToCreate,
|
||||||
|
const Handle(PrsMgr_PresentableObject)& theSelObj) const
|
||||||
{
|
{
|
||||||
const PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
|
const PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
|
||||||
if (aPrsList.IsEmpty())
|
|
||||||
{
|
|
||||||
return Handle(PrsMgr_Presentation)();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
|
for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
|
||||||
{
|
{
|
||||||
const PrsMgr_ModedPresentation& aModedPrs = aPrsList.Value (aPrsIter);
|
const PrsMgr_ModedPresentation& aModedPrs = aPrsList.Value (aPrsIter);
|
||||||
@@ -424,17 +422,13 @@ Handle(PrsMgr_Presentation) PrsMgr_PresentationManager::Presentation (const Hand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Handle(PrsMgr_Presentation)();
|
if (!theToCreate)
|
||||||
}
|
{
|
||||||
|
return Handle(PrsMgr_Presentation)();
|
||||||
|
}
|
||||||
|
|
||||||
// =======================================================================
|
|
||||||
// function : AddPresentation
|
|
||||||
// purpose :
|
|
||||||
// =======================================================================
|
|
||||||
void PrsMgr_PresentationManager::AddPresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
|
||||||
const Standard_Integer theMode)
|
|
||||||
{
|
|
||||||
Handle(PrsMgr_Presentation) aPrs = new PrsMgr_Presentation (this, thePrsObj);
|
Handle(PrsMgr_Presentation) aPrs = new PrsMgr_Presentation (this, thePrsObj);
|
||||||
|
aPrs->Presentation()->CStructure()->ViewAffinity = myStructureManager->ObjectAffinity (!theSelObj.IsNull() ? theSelObj : thePrsObj);
|
||||||
thePrsObj->Presentations().Append (PrsMgr_ModedPresentation (aPrs, theMode));
|
thePrsObj->Presentations().Append (PrsMgr_ModedPresentation (aPrs, theMode));
|
||||||
thePrsObj->Fill (this, aPrs, theMode);
|
thePrsObj->Fill (this, aPrs, theMode);
|
||||||
|
|
||||||
@@ -445,25 +439,29 @@ void PrsMgr_PresentationManager::AddPresentation (const Handle(PrsMgr_Presentabl
|
|||||||
aPrs->SetZLayer (aZLayerId);
|
aPrs->SetZLayer (aZLayerId);
|
||||||
}
|
}
|
||||||
aPrs->SetUpdateStatus (Standard_False);
|
aPrs->SetUpdateStatus (Standard_False);
|
||||||
|
return aPrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
// function : RemovePresentation
|
// function : RemovePresentation
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::RemovePresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
Standard_Boolean PrsMgr_PresentationManager::RemovePresentation (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Standard_Integer theMode)
|
const Standard_Integer theMode)
|
||||||
{
|
{
|
||||||
PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
|
PrsMgr_Presentations& aPrsList = thePrsObj->Presentations();
|
||||||
for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
|
for (Standard_Integer aPrsIter = 1; aPrsIter <= aPrsList.Length(); ++aPrsIter)
|
||||||
{
|
{
|
||||||
if (theMode == aPrsList (aPrsIter).Mode())
|
const PrsMgr_ModedPresentation& aModedPrs = aPrsList.Value (aPrsIter);
|
||||||
// && this == aPrsMgr) ??
|
const Handle(PrsMgr_PresentationManager)& aPrsMgr = aModedPrs.Presentation()->PresentationManager();
|
||||||
|
if (theMode == aPrsList (aPrsIter).Mode()
|
||||||
|
&& this == aPrsMgr)
|
||||||
{
|
{
|
||||||
aPrsList.Remove (aPrsIter);
|
aPrsList.Remove (aPrsIter);
|
||||||
break;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -531,15 +529,9 @@ void PrsMgr_PresentationManager::Connect (const Handle(PrsMgr_PresentableObject)
|
|||||||
const Standard_Integer theMode,
|
const Standard_Integer theMode,
|
||||||
const Standard_Integer theOtherMode)
|
const Standard_Integer theOtherMode)
|
||||||
{
|
{
|
||||||
if (!HasPresentation (thePrsObject, theMode))
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObject, theMode, Standard_True);
|
||||||
{
|
Handle(PrsMgr_Presentation) aPrsOther = Presentation (theOtherObject, theOtherMode, Standard_True);
|
||||||
AddPresentation (thePrsObject, theMode);
|
aPrs->Connect (aPrsOther);
|
||||||
}
|
|
||||||
if (!HasPresentation (theOtherObject, theOtherMode))
|
|
||||||
{
|
|
||||||
AddPresentation (theOtherObject, theOtherMode);
|
|
||||||
}
|
|
||||||
Presentation (thePrsObject, theMode)->Connect (Presentation (theOtherObject, theOtherMode));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -560,7 +552,8 @@ void PrsMgr_PresentationManager::Transform (const Handle(PrsMgr_PresentableObjec
|
|||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Quantity_NameOfColor theColor,
|
const Quantity_NameOfColor theColor,
|
||||||
const Standard_Integer theMode)
|
const Standard_Integer theMode,
|
||||||
|
const Handle(PrsMgr_PresentableObject)& theSelObj)
|
||||||
{
|
{
|
||||||
for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
|
for (PrsMgr_ListOfPresentableObjectsIter anIter (thePrsObj->Children()); anIter.More(); anIter.Next())
|
||||||
{
|
{
|
||||||
@@ -571,14 +564,7 @@ void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)&
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!HasPresentation (thePrsObj, theMode))
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode, Standard_True, theSelObj);
|
||||||
{
|
|
||||||
AddPresentation (thePrsObj, theMode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!HasPresentation (thePrsObj, theMode)) return;
|
|
||||||
|
|
||||||
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
|
||||||
if (aPrs->MustBeUpdated())
|
if (aPrs->MustBeUpdated())
|
||||||
{
|
{
|
||||||
Update (thePrsObj, theMode);
|
Update (thePrsObj, theMode);
|
||||||
@@ -587,12 +573,12 @@ void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)&
|
|||||||
if (myImmediateModeOn > 0)
|
if (myImmediateModeOn > 0)
|
||||||
{
|
{
|
||||||
Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
|
Handle(Prs3d_PresentationShadow) aShadow = new Prs3d_PresentationShadow (myStructureManager, aPrs->Presentation());
|
||||||
aShadow->Color (theColor);
|
aShadow->Highlight (Aspect_TOHM_COLOR, theColor);
|
||||||
AddToImmediateList (aShadow);
|
AddToImmediateList (aShadow);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aPrs->Color (theColor);
|
aPrs->Highlight (Aspect_TOHM_COLOR, theColor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -600,18 +586,15 @@ void PrsMgr_PresentationManager::Color (const Handle(PrsMgr_PresentableObject)&
|
|||||||
// function : BoundBox
|
// function : BoundBox
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::BoundBox (const Handle(PrsMgr_PresentableObject)& thePrsObject,
|
void PrsMgr_PresentationManager::BoundBox (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Standard_Integer theMode)
|
const Standard_Integer theMode)
|
||||||
{
|
{
|
||||||
if (!HasPresentation (thePrsObject, theMode))
|
Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode, Standard_True);
|
||||||
|
if (aPrs->MustBeUpdated())
|
||||||
{
|
{
|
||||||
AddPresentation (thePrsObject, theMode);
|
Update (thePrsObj, theMode);
|
||||||
}
|
}
|
||||||
else if (Presentation (thePrsObject, theMode)->MustBeUpdated())
|
aPrs->Highlight (Aspect_TOHM_BOUNDBOX, mySelectionColor);
|
||||||
{
|
|
||||||
Update (thePrsObject, theMode);
|
|
||||||
}
|
|
||||||
Presentation (thePrsObject, theMode)->BoundBox();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
@@ -633,12 +616,13 @@ void PrsMgr_PresentationManager::SetShadingAspect (const Handle(PrsMgr_Presentab
|
|||||||
// function : SetShadingAspect
|
// function : SetShadingAspect
|
||||||
// purpose :
|
// purpose :
|
||||||
// =======================================================================
|
// =======================================================================
|
||||||
void PrsMgr_PresentationManager::SetShadingAspect (const Handle(PrsMgr_PresentableObject)& thePrsObject,
|
void PrsMgr_PresentationManager::SetShadingAspect (const Handle(PrsMgr_PresentableObject)& thePrsObj,
|
||||||
const Handle(Prs3d_ShadingAspect)& theShadingAspect,
|
const Handle(Prs3d_ShadingAspect)& theShadingAspect,
|
||||||
const Standard_Integer theMode)
|
const Standard_Integer theMode)
|
||||||
{
|
{
|
||||||
if (HasPresentation (thePrsObject, theMode))
|
const Handle(PrsMgr_Presentation) aPrs = Presentation (thePrsObj, theMode);
|
||||||
|
if (!aPrs.IsNull())
|
||||||
{
|
{
|
||||||
Presentation (thePrsObject, theMode)->SetShadingAspect (theShadingAspect);
|
aPrs->SetShadingAspect (theShadingAspect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -236,10 +236,10 @@ static Standard_Integer OCC136 (Draw_Interpretor& di, Standard_Integer argc, con
|
|||||||
anAISCtx->AddOrRemoveCurrentObject(aSh4);
|
anAISCtx->AddOrRemoveCurrentObject(aSh4);
|
||||||
|
|
||||||
//remove all this objects from context
|
//remove all this objects from context
|
||||||
anAISCtx->Clear(aSh1, Standard_False);
|
anAISCtx->Remove (aSh1, Standard_False);
|
||||||
anAISCtx->Clear(aSh2, Standard_False);
|
anAISCtx->Remove (aSh2, Standard_False);
|
||||||
anAISCtx->Clear(aSh3, Standard_False);
|
anAISCtx->Remove (aSh3, Standard_False);
|
||||||
anAISCtx->Clear(aSh4, Standard_False);
|
anAISCtx->Remove (aSh4, Standard_False);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1 +1 @@
|
|||||||
SelectMgr_CompareResults.hxx
|
SelectMgr_CompareResults.hxx
|
||||||
|
@@ -23,9 +23,10 @@ class OrFilter from SelectMgr inherits CompositionFilter from SelectMgr
|
|||||||
-- This selects one or another type of sensitive entity.
|
-- This selects one or another type of sensitive entity.
|
||||||
uses
|
uses
|
||||||
|
|
||||||
Filter from SelectMgr,
|
Filter from SelectMgr,
|
||||||
Transient from Standard,
|
Transient from Standard,
|
||||||
EntityOwner from SelectMgr
|
EntityOwner from SelectMgr,
|
||||||
|
NMapOfTransient from Graphic3d
|
||||||
|
|
||||||
is
|
is
|
||||||
|
|
||||||
@@ -35,4 +36,12 @@ is
|
|||||||
IsOk(me; anobj : EntityOwner from SelectMgr)
|
IsOk(me; anobj : EntityOwner from SelectMgr)
|
||||||
returns Boolean from Standard ;
|
returns Boolean from Standard ;
|
||||||
|
|
||||||
|
SetDisabledObjects (me : mutable;
|
||||||
|
theObjects : NMapOfTransient from Graphic3d) is static;
|
||||||
|
---Purpose: Disable selection of specified objects.
|
||||||
|
|
||||||
|
fields
|
||||||
|
|
||||||
|
myDisabledObjects : NMapOfTransient from Graphic3d;
|
||||||
|
|
||||||
end OrFilter;
|
end OrFilter;
|
||||||
|
@@ -16,19 +16,49 @@
|
|||||||
|
|
||||||
#include <SelectMgr_Filter.hxx>
|
#include <SelectMgr_Filter.hxx>
|
||||||
#include <SelectMgr_ListIteratorOfListOfFilter.hxx>
|
#include <SelectMgr_ListIteratorOfListOfFilter.hxx>
|
||||||
|
#include <SelectMgr_SelectableObject.hxx>
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//function : SelectMgr_OrFilter
|
||||||
|
//purpose :
|
||||||
|
//=============================================================================
|
||||||
SelectMgr_OrFilter::SelectMgr_OrFilter()
|
SelectMgr_OrFilter::SelectMgr_OrFilter()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
Standard_Boolean SelectMgr_OrFilter::IsOk(const Handle(SelectMgr_EntityOwner)& anobj) const
|
//function : SetDisabledObjects
|
||||||
|
//purpose :
|
||||||
|
//=============================================================================
|
||||||
|
void SelectMgr_OrFilter::SetDisabledObjects (const Handle(Graphic3d_NMapOfTransient)& theObjects)
|
||||||
{
|
{
|
||||||
|
myDisabledObjects = theObjects;
|
||||||
|
}
|
||||||
|
|
||||||
if(myFilters.IsEmpty())
|
//=============================================================================
|
||||||
|
//function : IsOk
|
||||||
|
//purpose :
|
||||||
|
//=============================================================================
|
||||||
|
Standard_Boolean SelectMgr_OrFilter::IsOk (const Handle(SelectMgr_EntityOwner)& theObj) const
|
||||||
|
{
|
||||||
|
const SelectMgr_SelectableObject* aSelectable = theObj->Selectable().operator->();
|
||||||
|
if (!myDisabledObjects.IsNull()
|
||||||
|
&& myDisabledObjects->Contains (aSelectable))
|
||||||
|
{
|
||||||
|
return Standard_False;
|
||||||
|
}
|
||||||
|
else if (myFilters.IsEmpty())
|
||||||
|
{
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
SelectMgr_ListIteratorOfListOfFilter it(myFilters);
|
}
|
||||||
for ( ; it.More();it.Next())
|
|
||||||
if(it.Value()->IsOk(anobj))
|
for (SelectMgr_ListIteratorOfListOfFilter aFilterIter (myFilters); aFilterIter.More(); aFilterIter.Next())
|
||||||
|
{
|
||||||
|
if (aFilterIter.Value()->IsOk (theObj))
|
||||||
|
{
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
@@ -133,6 +133,7 @@ void StdSelect_BRepOwner::HilightWithColor(const Handle(PrsMgr_PresentationManag
|
|||||||
#else
|
#else
|
||||||
Standard_Integer M = (myCurMode==-1) ? aMode:myCurMode;
|
Standard_Integer M = (myCurMode==-1) ? aMode:myCurMode;
|
||||||
#endif
|
#endif
|
||||||
|
Handle(SelectMgr_SelectableObject) aSel = Selectable();
|
||||||
if (myFromDecomposition)
|
if (myFromDecomposition)
|
||||||
{
|
{
|
||||||
// do the update flag check
|
// do the update flag check
|
||||||
@@ -158,8 +159,7 @@ void StdSelect_BRepOwner::HilightWithColor(const Handle(PrsMgr_PresentationManag
|
|||||||
}
|
}
|
||||||
|
|
||||||
// highlight with color and set layer
|
// highlight with color and set layer
|
||||||
PM->Color (myPrsSh, aCol, M);
|
PM->Color (myPrsSh, aCol, M, aSel);
|
||||||
Handle(SelectMgr_SelectableObject) aSel = Selectable();
|
|
||||||
if (!aSel.IsNull())
|
if (!aSel.IsNull())
|
||||||
{
|
{
|
||||||
Standard_Integer aLayer = aSel->GetZLayer (PM);
|
Standard_Integer aLayer = aSel->GetZLayer (PM);
|
||||||
@@ -169,10 +169,14 @@ void StdSelect_BRepOwner::HilightWithColor(const Handle(PrsMgr_PresentationManag
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(myPrsSh.IsNull())
|
if (!myPrsSh.IsNull())
|
||||||
PM->Color(Selectable(),aCol,M);
|
{
|
||||||
|
PM->Color (myPrsSh, aCol, M, aSel);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
PM->Color(myPrsSh,aCol,M);
|
{
|
||||||
|
PM->Color (aSel, aCol, M);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -35,6 +35,7 @@ uses
|
|||||||
TColStd,
|
TColStd,
|
||||||
Graphic3d,
|
Graphic3d,
|
||||||
Visual3d,
|
Visual3d,
|
||||||
|
SelectMgr,
|
||||||
MMgt,
|
MMgt,
|
||||||
TCollection,
|
TCollection,
|
||||||
Quantity,
|
Quantity,
|
||||||
|
@@ -241,7 +241,7 @@ Standard_EXPORT Standard_Boolean VDisplayAISObject (const TCollection_AsciiStrin
|
|||||||
Handle(AIS_InteractiveObject)::DownCast (aMap.Find2 (theName));
|
Handle(AIS_InteractiveObject)::DownCast (aMap.Find2 (theName));
|
||||||
|
|
||||||
if (!anOldObj.IsNull())
|
if (!anOldObj.IsNull())
|
||||||
aContextAIS->Clear (anOldObj, Standard_True);
|
aContextAIS->Remove (anOldObj, Standard_True);
|
||||||
|
|
||||||
// remove name and old object from map
|
// remove name and old object from map
|
||||||
aMap.UnBind2 (theName);
|
aMap.UnBind2 (theName);
|
||||||
@@ -2223,8 +2223,9 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
Standard_Integer theArgNb,
|
Standard_Integer theArgNb,
|
||||||
const char** theArgVec)
|
const char** theArgVec)
|
||||||
{
|
{
|
||||||
const Handle(AIS_InteractiveContext)& aCtx = ViewerTest::GetAISContext();
|
const Handle(AIS_InteractiveContext)& aCtx = ViewerTest::GetAISContext();
|
||||||
ViewerTest_AutoUpdater anUpdateTool (aCtx, ViewerTest::CurrentView());
|
const Handle(V3d_View)& aView = ViewerTest::CurrentView();
|
||||||
|
ViewerTest_AutoUpdater anUpdateTool (aCtx, aView);
|
||||||
if (aCtx.IsNull())
|
if (aCtx.IsNull())
|
||||||
{
|
{
|
||||||
std::cerr << "Error: no active view!\n";
|
std::cerr << "Error: no active view!\n";
|
||||||
@@ -2234,7 +2235,8 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
const Standard_Boolean toEraseAll = TCollection_AsciiString (theArgNb > 0 ? theArgVec[0] : "") == "veraseall";
|
const Standard_Boolean toEraseAll = TCollection_AsciiString (theArgNb > 0 ? theArgVec[0] : "") == "veraseall";
|
||||||
|
|
||||||
Standard_Integer anArgIter = 1;
|
Standard_Integer anArgIter = 1;
|
||||||
Standard_Boolean toEraseLocal = Standard_False;
|
Standard_Boolean toEraseLocal = Standard_False;
|
||||||
|
Standard_Boolean toEraseInView = Standard_False;
|
||||||
TColStd_SequenceOfAsciiString aNamesOfEraseIO;
|
TColStd_SequenceOfAsciiString aNamesOfEraseIO;
|
||||||
for (; anArgIter < theArgNb; ++anArgIter)
|
for (; anArgIter < theArgNb; ++anArgIter)
|
||||||
{
|
{
|
||||||
@@ -2248,6 +2250,11 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
{
|
{
|
||||||
toEraseLocal = Standard_True;
|
toEraseLocal = Standard_True;
|
||||||
}
|
}
|
||||||
|
else if (anArgCase == "-view"
|
||||||
|
|| anArgCase == "-inview")
|
||||||
|
{
|
||||||
|
toEraseInView = Standard_True;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aNamesOfEraseIO.Append (theArgVec[anArgIter]);
|
aNamesOfEraseIO.Append (theArgVec[anArgIter]);
|
||||||
@@ -2286,7 +2293,14 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
theDI << aName.ToCString() << " ";
|
theDI << aName.ToCString() << " ";
|
||||||
if (!anIO.IsNull())
|
if (!anIO.IsNull())
|
||||||
{
|
{
|
||||||
aCtx->Erase (anIO, Standard_False);
|
if (toEraseInView)
|
||||||
|
{
|
||||||
|
aCtx->SetViewAffinity (anIO, aView, Standard_False);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aCtx->Erase (anIO, Standard_False);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2309,7 +2323,14 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
&& aCtx->IsCurrent (anIO))
|
&& aCtx->IsCurrent (anIO))
|
||||||
{
|
{
|
||||||
theDI << anIter.Key2().ToCString() << " ";
|
theDI << anIter.Key2().ToCString() << " ";
|
||||||
aCtx->Erase (anIO, Standard_False);
|
if (toEraseInView)
|
||||||
|
{
|
||||||
|
aCtx->SetViewAffinity (anIO, aView, Standard_False);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aCtx->Erase (anIO, Standard_False);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2322,7 +2343,14 @@ int VErase (Draw_Interpretor& theDI,
|
|||||||
const Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast (anIter.Key1());
|
const Handle(AIS_InteractiveObject) anIO = Handle(AIS_InteractiveObject)::DownCast (anIter.Key1());
|
||||||
if (!anIO.IsNull())
|
if (!anIO.IsNull())
|
||||||
{
|
{
|
||||||
aCtx->Erase (anIO, Standard_False);
|
if (toEraseInView)
|
||||||
|
{
|
||||||
|
aCtx->SetViewAffinity (anIO, aView, Standard_False);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aCtx->Erase (anIO, Standard_False);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2473,7 +2501,7 @@ inline void bndPresentation (Draw_Interpretor& theDI,
|
|||||||
}
|
}
|
||||||
case BndAction_Show:
|
case BndAction_Show:
|
||||||
{
|
{
|
||||||
thePrs->Presentation()->BoundBox();
|
thePrs->Presentation()->Highlight (Aspect_TOHM_BOUNDBOX, Quantity_NOC_GRAY99);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case BndAction_Print:
|
case BndAction_Print:
|
||||||
@@ -2751,7 +2779,7 @@ Standard_Integer VTexture (Draw_Interpretor& theDi, Standard_Integer theArgsNb,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
anAISContext->Clear (anIO, Standard_False);
|
anAISContext->Remove (anIO, Standard_False);
|
||||||
aTexturedIO = new AIS_TexturedShape (DBRep::Get (theArgv[1]));
|
aTexturedIO = new AIS_TexturedShape (DBRep::Get (theArgv[1]));
|
||||||
GetMapOfAIS().UnBind1 (anIO);
|
GetMapOfAIS().UnBind1 (anIO);
|
||||||
GetMapOfAIS().UnBind2 (aShapeName);
|
GetMapOfAIS().UnBind2 (aShapeName);
|
||||||
@@ -2905,9 +2933,12 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
|
|
||||||
// Parse input arguments
|
// Parse input arguments
|
||||||
ViewerTest_AutoUpdater anUpdateTool (aCtx, ViewerTest::CurrentView());
|
ViewerTest_AutoUpdater anUpdateTool (aCtx, ViewerTest::CurrentView());
|
||||||
Standard_Integer isMutable = -1;
|
Standard_Integer isMutable = -1;
|
||||||
Standard_Boolean toDisplayLocal = Standard_False;
|
Standard_Boolean toDisplayLocal = Standard_False;
|
||||||
|
Standard_Boolean toReDisplay = Standard_False;
|
||||||
TColStd_SequenceOfAsciiString aNamesOfDisplayIO;
|
TColStd_SequenceOfAsciiString aNamesOfDisplayIO;
|
||||||
|
AIS_DisplayStatus aDispStatus = AIS_DS_None;
|
||||||
|
Standard_Integer toDisplayInView = Standard_False;
|
||||||
for (Standard_Integer anArgIter = 1; anArgIter < theArgNb; ++anArgIter)
|
for (Standard_Integer anArgIter = 1; anArgIter < theArgNb; ++anArgIter)
|
||||||
{
|
{
|
||||||
const TCollection_AsciiString aName = theArgVec[anArgIter];
|
const TCollection_AsciiString aName = theArgVec[anArgIter];
|
||||||
@@ -2921,10 +2952,25 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
{
|
{
|
||||||
isMutable = 1;
|
isMutable = 1;
|
||||||
}
|
}
|
||||||
|
else if (aNameCase == "-immediate"
|
||||||
|
|| aNameCase == "-dynamic")
|
||||||
|
{
|
||||||
|
aDispStatus = AIS_DS_DispImmediate;
|
||||||
|
}
|
||||||
|
else if (aNameCase == "-view"
|
||||||
|
|| aNameCase == "-inview")
|
||||||
|
{
|
||||||
|
toDisplayInView = Standard_True;
|
||||||
|
}
|
||||||
else if (aNameCase == "-local")
|
else if (aNameCase == "-local")
|
||||||
{
|
{
|
||||||
|
aDispStatus = AIS_DS_Temporary;
|
||||||
toDisplayLocal = Standard_True;
|
toDisplayLocal = Standard_True;
|
||||||
}
|
}
|
||||||
|
else if (aNameCase == "-redisplay")
|
||||||
|
{
|
||||||
|
toReDisplay = Standard_True;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aNamesOfDisplayIO.Append (aName);
|
aNamesOfDisplayIO.Append (aName);
|
||||||
@@ -2963,7 +3009,27 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
aShape->SetMutable (isMutable == 1);
|
aShape->SetMutable (isMutable == 1);
|
||||||
}
|
}
|
||||||
GetMapOfAIS().Bind (aShape, aName);
|
GetMapOfAIS().Bind (aShape, aName);
|
||||||
aCtx->Display (aShape, Standard_False);
|
|
||||||
|
Standard_Integer aDispMode = aShape->HasDisplayMode()
|
||||||
|
? aShape->DisplayMode()
|
||||||
|
: (aShape->AcceptDisplayMode (aCtx->DisplayMode())
|
||||||
|
? aCtx->DisplayMode()
|
||||||
|
: 0);
|
||||||
|
Standard_Integer aSelMode = aShape->HasSelectionMode() && aCtx->GetAutoActivateSelection()
|
||||||
|
? aShape->SelectionMode() : -1;
|
||||||
|
|
||||||
|
aCtx->Display (aShape, aDispMode, aSelMode,
|
||||||
|
Standard_False, aShape->AcceptShapeDecomposition(),
|
||||||
|
aDispStatus);
|
||||||
|
|
||||||
|
if (toDisplayInView)
|
||||||
|
{
|
||||||
|
for (aCtx->CurrentViewer()->InitDefinedViews(); aCtx->CurrentViewer()->MoreDefinedViews(); aCtx->CurrentViewer()->NextDefinedViews())
|
||||||
|
{
|
||||||
|
aCtx->SetViewAffinity (aShape, aCtx->CurrentViewer()->DefinedView(), Standard_False);
|
||||||
|
}
|
||||||
|
aCtx->SetViewAffinity (aShape, ViewerTest::CurrentView(), Standard_True);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -2977,6 +3043,14 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
aShape->SetMutable (isMutable == 1);
|
aShape->SetMutable (isMutable == 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Standard_Integer aDispMode = aShape->HasDisplayMode()
|
||||||
|
? aShape->DisplayMode()
|
||||||
|
: (aShape->AcceptDisplayMode (aCtx->DisplayMode())
|
||||||
|
? aCtx->DisplayMode()
|
||||||
|
: 0);
|
||||||
|
Standard_Integer aSelMode = aShape->HasSelectionMode() && aCtx->GetAutoActivateSelection()
|
||||||
|
? aShape->SelectionMode() : -1;
|
||||||
|
|
||||||
if (aShape->Type() == AIS_KOI_Datum)
|
if (aShape->Type() == AIS_KOI_Datum)
|
||||||
{
|
{
|
||||||
aCtx->Display (aShape, Standard_False);
|
aCtx->Display (aShape, Standard_False);
|
||||||
@@ -2984,17 +3058,30 @@ static int VDisplay2 (Draw_Interpretor& theDI,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
theDI << "Display " << aName.ToCString() << "\n";
|
theDI << "Display " << aName.ToCString() << "\n";
|
||||||
// get the Shape from a name
|
|
||||||
TopoDS_Shape aNewShape = GetShapeFromName (aName.ToCString());
|
|
||||||
|
|
||||||
// update the Shape in the AIS_Shape
|
// update the Shape in the AIS_Shape
|
||||||
|
TopoDS_Shape aNewShape = GetShapeFromName (aName.ToCString());
|
||||||
Handle(AIS_Shape) aShapePrs = Handle(AIS_Shape)::DownCast(aShape);
|
Handle(AIS_Shape) aShapePrs = Handle(AIS_Shape)::DownCast(aShape);
|
||||||
if (!aShapePrs.IsNull())
|
if (!aShapePrs.IsNull())
|
||||||
{
|
{
|
||||||
|
if (!aShapePrs->Shape().IsEqual (aNewShape))
|
||||||
|
{
|
||||||
|
toReDisplay = Standard_True;
|
||||||
|
}
|
||||||
aShapePrs->Set (aNewShape);
|
aShapePrs->Set (aNewShape);
|
||||||
}
|
}
|
||||||
aCtx->Redisplay (aShape, Standard_False);
|
if (toReDisplay)
|
||||||
aCtx->Display (aShape, Standard_False);
|
{
|
||||||
|
aCtx->Redisplay (aShape, Standard_False);
|
||||||
|
}
|
||||||
|
|
||||||
|
aCtx->Display (aShape, aDispMode, aSelMode,
|
||||||
|
Standard_False, aShape->AcceptShapeDecomposition(),
|
||||||
|
aDispStatus);
|
||||||
|
if (toDisplayInView)
|
||||||
|
{
|
||||||
|
aCtx->SetViewAffinity (aShape, ViewerTest::CurrentView(), Standard_True);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (anObj->IsKind (STANDARD_TYPE (NIS_InteractiveObject)))
|
else if (anObj->IsKind (STANDARD_TYPE (NIS_InteractiveObject)))
|
||||||
|
@@ -107,6 +107,8 @@ uses
|
|||||||
AsciiString from TCollection,
|
AsciiString from TCollection,
|
||||||
ExtendedString from TCollection,
|
ExtendedString from TCollection,
|
||||||
CGraduatedTrihedron from Graphic3d,
|
CGraduatedTrihedron from Graphic3d,
|
||||||
|
NMapOfTransient from Graphic3d,
|
||||||
|
TypeOfStructure from Graphic3d,
|
||||||
|
|
||||||
PixMap from Image,
|
PixMap from Image,
|
||||||
Box from Bnd
|
Box from Bnd
|
||||||
@@ -752,14 +754,12 @@ is
|
|||||||
-- Category: Private methods
|
-- Category: Private methods
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
AcceptDisplay ( me;
|
acceptDisplay ( me;
|
||||||
AStructure : Structure from Graphic3d )
|
theStructType : TypeOfStructure from Graphic3d )
|
||||||
returns TypeOfAnswer from Visual3d
|
returns TypeOfAnswer from Visual3d
|
||||||
is static private;
|
is static private;
|
||||||
---Level: Internal
|
---Level: Internal
|
||||||
---Purpose: Is it possible to display the structure
|
---Purpose: Is it possible to display the structure in the view?
|
||||||
-- <AStructure> in the view <me> ?
|
|
||||||
---Category: Private methods
|
|
||||||
|
|
||||||
ReCompute ( me : mutable;
|
ReCompute ( me : mutable;
|
||||||
AStructure : Structure from Graphic3d );
|
AStructure : Structure from Graphic3d );
|
||||||
@@ -1155,6 +1155,16 @@ is
|
|||||||
-- In contrast to Bitmaps, Vector graphics is scalable (so you may got quality benefits on printing to laser printer).
|
-- In contrast to Bitmaps, Vector graphics is scalable (so you may got quality benefits on printing to laser printer).
|
||||||
-- Notice however that results may differ a lot and do not contain some elements.
|
-- Notice however that results may differ a lot and do not contain some elements.
|
||||||
|
|
||||||
|
HiddenObjects (me) returns NMapOfTransient from Graphic3d is static;
|
||||||
|
---C++: return const &
|
||||||
|
---Level: Public
|
||||||
|
---Purpose: Returns map of objects hidden within this specific view (not viewer-wise).
|
||||||
|
|
||||||
|
ChangeHiddenObjects (me : mutable) returns NMapOfTransient from Graphic3d is static;
|
||||||
|
---C++: return &
|
||||||
|
---Level: Public
|
||||||
|
---Purpose: Returns map of objects hidden within this specific view (not viewer-wise).
|
||||||
|
|
||||||
fields
|
fields
|
||||||
|
|
||||||
-- the ViewManager associated with the view
|
-- the ViewManager associated with the view
|
||||||
@@ -1196,6 +1206,8 @@ fields
|
|||||||
|
|
||||||
myStructuresUpdated : Boolean from Standard;
|
myStructuresUpdated : Boolean from Standard;
|
||||||
|
|
||||||
|
myHiddenObjects : NMapOfTransient from Graphic3d;
|
||||||
|
|
||||||
friends
|
friends
|
||||||
|
|
||||||
class ViewManager from Visual3d
|
class ViewManager from Visual3d
|
||||||
|
@@ -28,7 +28,6 @@
|
|||||||
#include <Graphic3d_Vertex.hxx>
|
#include <Graphic3d_Vertex.hxx>
|
||||||
#include <Visual3d_DepthCueingDefinitionError.hxx>
|
#include <Visual3d_DepthCueingDefinitionError.hxx>
|
||||||
#include <Visual3d_Light.hxx>
|
#include <Visual3d_Light.hxx>
|
||||||
#include <Visual3d_HSequenceOfView.hxx>
|
|
||||||
#include <Visual3d_ZClippingDefinitionError.hxx>
|
#include <Visual3d_ZClippingDefinitionError.hxx>
|
||||||
#include <OSD.hxx>
|
#include <OSD.hxx>
|
||||||
#include <TColStd_HArray2OfReal.hxx>
|
#include <TColStd_HArray2OfReal.hxx>
|
||||||
@@ -54,6 +53,8 @@ Visual3d_View::Visual3d_View (const Handle(Visual3d_ViewManager)& theMgr)
|
|||||||
myAutoZFitScaleFactor (1.0),
|
myAutoZFitScaleFactor (1.0),
|
||||||
myStructuresUpdated (Standard_True)
|
myStructuresUpdated (Standard_True)
|
||||||
{
|
{
|
||||||
|
myHiddenObjects = new Graphic3d_NMapOfTransient();
|
||||||
|
|
||||||
MyCView.ViewId = theMgr->Identification (this);
|
MyCView.ViewId = theMgr->Identification (this);
|
||||||
MyCView.Active = 0;
|
MyCView.Active = 0;
|
||||||
MyCView.IsDeleted = 0;
|
MyCView.IsDeleted = 0;
|
||||||
@@ -712,10 +713,10 @@ void Visual3d_View::SetContext (const Visual3d_ContextView& theViewCtx)
|
|||||||
// It is not necessary to warn ViewManager as this structure should not disappear from
|
// It is not necessary to warn ViewManager as this structure should not disappear from
|
||||||
// the list of structures displayed in it.
|
// the list of structures displayed in it.
|
||||||
NCollection_Sequence<Handle(Graphic3d_Structure)> aStructs;
|
NCollection_Sequence<Handle(Graphic3d_Structure)> aStructs;
|
||||||
for (Graphic3d_MapIteratorOfMapOfStructure aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
for (Graphic3d_MapOfStructure::Iterator aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aStruct = aStructIter.Key();
|
const Handle(Graphic3d_Structure)& aStruct = aStructIter.Key();
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
if (anAnswer == Visual3d_TOA_NO
|
if (anAnswer == Visual3d_TOA_NO
|
||||||
|| anAnswer == Visual3d_TOA_COMPUTE)
|
|| anAnswer == Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
@@ -743,7 +744,7 @@ void Visual3d_View::SetContext (const Visual3d_ContextView& theViewCtx)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
if (anAnswer == Visual3d_TOA_YES
|
if (anAnswer == Visual3d_TOA_YES
|
||||||
|| anAnswer == Visual3d_TOA_COMPUTE)
|
|| anAnswer == Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
@@ -780,7 +781,7 @@ void Visual3d_View::DisplayedStructures (Graphic3d_MapOfStructure& theStructures
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Graphic3d_MapIteratorOfMapOfStructure aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
for (Graphic3d_MapOfStructure::Iterator aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
theStructures.Add (aStructIter.Key());
|
theStructures.Add (aStructIter.Key());
|
||||||
}
|
}
|
||||||
@@ -825,7 +826,7 @@ void Visual3d_View::Activate()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the structure can be displayed in the new context of the view, it is displayed.
|
// If the structure can be displayed in the new context of the view, it is displayed.
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
if (anAnswer == Visual3d_TOA_YES
|
if (anAnswer == Visual3d_TOA_YES
|
||||||
|| anAnswer == Visual3d_TOA_COMPUTE)
|
|| anAnswer == Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
@@ -898,7 +899,7 @@ void Visual3d_View::Deactivate()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
if (anAnswer == Visual3d_TOA_YES
|
if (anAnswer == Visual3d_TOA_YES
|
||||||
|| anAnswer == Visual3d_TOA_COMPUTE)
|
|| anAnswer == Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
@@ -1131,13 +1132,13 @@ void Visual3d_View::ZFitAll (const Standard_Real theScaleFactor)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
// function : AcceptDisplay
|
// function : acceptDisplay
|
||||||
// purpose :
|
// purpose :
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
Visual3d_TypeOfAnswer Visual3d_View::AcceptDisplay (const Handle(Graphic3d_Structure)& theStruct) const
|
Visual3d_TypeOfAnswer Visual3d_View::acceptDisplay (const Graphic3d_TypeOfStructure theStructType) const
|
||||||
{
|
{
|
||||||
const Visual3d_TypeOfVisualization ViewType = MyContext.Visualization();
|
const Visual3d_TypeOfVisualization aViewType = MyContext.Visualization();
|
||||||
switch (theStruct->Visual())
|
switch (theStructType)
|
||||||
{
|
{
|
||||||
case Graphic3d_TOS_ALL:
|
case Graphic3d_TOS_ALL:
|
||||||
{
|
{
|
||||||
@@ -1145,19 +1146,19 @@ Visual3d_TypeOfAnswer Visual3d_View::AcceptDisplay (const Handle(Graphic3d_Struc
|
|||||||
}
|
}
|
||||||
case Graphic3d_TOS_SHADING:
|
case Graphic3d_TOS_SHADING:
|
||||||
{
|
{
|
||||||
return ViewType == Visual3d_TOV_SHADING
|
return aViewType == Visual3d_TOV_SHADING
|
||||||
? Visual3d_TOA_YES
|
? Visual3d_TOA_YES
|
||||||
: Visual3d_TOA_NO;
|
: Visual3d_TOA_NO;
|
||||||
}
|
}
|
||||||
case Graphic3d_TOS_WIREFRAME:
|
case Graphic3d_TOS_WIREFRAME:
|
||||||
{
|
{
|
||||||
return ViewType == Visual3d_TOV_WIREFRAME
|
return aViewType == Visual3d_TOV_WIREFRAME
|
||||||
? Visual3d_TOA_YES
|
? Visual3d_TOA_YES
|
||||||
: Visual3d_TOA_NO;
|
: Visual3d_TOA_NO;
|
||||||
}
|
}
|
||||||
case Graphic3d_TOS_COMPUTED:
|
case Graphic3d_TOS_COMPUTED:
|
||||||
{
|
{
|
||||||
return (ViewType == Visual3d_TOV_SHADING || ViewType == Visual3d_TOV_WIREFRAME)
|
return (aViewType == Visual3d_TOV_SHADING || aViewType == Visual3d_TOV_WIREFRAME)
|
||||||
? Visual3d_TOA_COMPUTE
|
? Visual3d_TOA_COMPUTE
|
||||||
: Visual3d_TOA_NO;
|
: Visual3d_TOA_NO;
|
||||||
}
|
}
|
||||||
@@ -1260,18 +1261,18 @@ Standard_Boolean Visual3d_View::DisplayImmediate (const Handle(Graphic3d_Structu
|
|||||||
|
|
||||||
if (theIsSingleView)
|
if (theIsSingleView)
|
||||||
{
|
{
|
||||||
Handle(Visual3d_HSequenceOfView) aViews = myViewManager->DefinedView();
|
const Visual3d_SequenceOfView& aViews = myViewManager->DefinedViews();
|
||||||
|
for (Standard_Integer aViewIter = 1; aViewIter <= aViews.Length(); ++aViewIter)
|
||||||
for (int i=1;i<=aViews->Length();i++)
|
|
||||||
{
|
{
|
||||||
if (aViews->Value(i).Access() != this)
|
const Handle(Visual3d_View)& aView = aViews.Value (aViewIter);
|
||||||
|
if (aView.Access() != this)
|
||||||
{
|
{
|
||||||
aViews->Value(i)->EraseImmediate (theStructure);
|
aView->EraseImmediate (theStructure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
myGraphicDriver->DisplayImmediateStructure (MyCView, *theStructure->CStructure());
|
myGraphicDriver->DisplayImmediateStructure (MyCView, theStructure);
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1301,9 +1302,9 @@ Standard_Boolean Visual3d_View::ClearImmediate()
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Graphic3d_MapIteratorOfMapOfStructure anIter (myImmediateStructures); anIter.More(); anIter.Next())
|
for (Graphic3d_MapOfStructure::Iterator aStructIter (myImmediateStructures); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
myGraphicDriver->EraseImmediateStructure (MyCView, *anIter.Key()->CStructure());
|
myGraphicDriver->EraseImmediateStructure (MyCView, *aStructIter.Key()->CStructure());
|
||||||
}
|
}
|
||||||
myImmediateStructures.Clear();
|
myImmediateStructures.Clear();
|
||||||
return Standard_True;
|
return Standard_True;
|
||||||
@@ -1345,7 +1346,7 @@ void Visual3d_View::Display (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
anIndex = 0;
|
anIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (theStruct);
|
Visual3d_TypeOfAnswer anAnswer = acceptDisplay (theStruct->Visual());
|
||||||
if (anAnswer == Visual3d_TOA_NO)
|
if (anAnswer == Visual3d_TOA_NO)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -1358,14 +1359,13 @@ void Visual3d_View::Display (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
|
|
||||||
if (anAnswer == Visual3d_TOA_YES)
|
if (anAnswer == Visual3d_TOA_YES)
|
||||||
{
|
{
|
||||||
if (IsDisplayed (theStruct))
|
if (!myStructsDisplayed.Add (theStruct))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
theStruct->CalculateBoundBox();
|
theStruct->CalculateBoundBox();
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *theStruct->CStructure(), theStruct->DisplayPriority());
|
myGraphicDriver->DisplayStructure (MyCView, theStruct, theStruct->DisplayPriority());
|
||||||
myStructsDisplayed.Add (theStruct);
|
|
||||||
Update (theUpdateMode);
|
Update (theUpdateMode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1380,14 +1380,14 @@ void Visual3d_View::Display (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
const Handle(Graphic3d_Structure)& anOldStruct = myStructsComputed.Value (anIndex);
|
const Handle(Graphic3d_Structure)& anOldStruct = myStructsComputed.Value (anIndex);
|
||||||
if (anOldStruct->HLRValidation())
|
if (anOldStruct->HLRValidation())
|
||||||
{
|
{
|
||||||
// Case COMPUTED valid
|
// Case COMPUTED valid, to be displayed
|
||||||
// to be displayed
|
if (!myStructsDisplayed.Add (theStruct))
|
||||||
if (!IsDisplayed (theStruct))
|
|
||||||
{
|
{
|
||||||
myStructsDisplayed.Add (theStruct);
|
return;
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *anOldStruct->CStructure(), theStruct->DisplayPriority());
|
|
||||||
Update (theUpdateMode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
myGraphicDriver->DisplayStructure (MyCView, anOldStruct, theStruct->DisplayPriority());
|
||||||
|
Update (theUpdateMode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1401,25 +1401,25 @@ void Visual3d_View::Display (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
const Standard_Integer aNewIndex = HaveTheSameOwner (theStruct);
|
const Standard_Integer aNewIndex = HaveTheSameOwner (theStruct);
|
||||||
if (aNewIndex != 0)
|
if (aNewIndex != 0)
|
||||||
{
|
{
|
||||||
// Case of COMPUTED invalid, WITH a valid of replacement
|
// Case of COMPUTED invalid, WITH a valid of replacement; to be displayed
|
||||||
// to be displayed
|
if (!myStructsDisplayed.Add (theStruct))
|
||||||
if (!IsDisplayed (theStruct))
|
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aNewStruct = myStructsComputed.Value (aNewIndex);
|
return;
|
||||||
myStructsComputed.SetValue (anIndex, aNewStruct);
|
|
||||||
myStructsDisplayed.Add (theStruct);
|
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *aNewStruct->CStructure(), theStruct->DisplayPriority());
|
|
||||||
Update (theUpdateMode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Handle(Graphic3d_Structure)& aNewStruct = myStructsComputed.Value (aNewIndex);
|
||||||
|
myStructsComputed.SetValue (anIndex, aNewStruct);
|
||||||
|
myGraphicDriver->DisplayStructure (MyCView, aNewStruct, theStruct->DisplayPriority());
|
||||||
|
Update (theUpdateMode);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Case COMPUTED invalid, WITHOUT a valid of replacement
|
// Case COMPUTED invalid, WITHOUT a valid of replacement
|
||||||
// COMPUTED is removed if displayed
|
// COMPUTED is removed if displayed
|
||||||
if (IsDisplayed (theStruct))
|
if (myStructsDisplayed.Contains (theStruct))
|
||||||
{
|
{
|
||||||
myGraphicDriver->EraseStructure (MyCView, *anOldStruct->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, anOldStruct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1484,26 +1484,26 @@ void Visual3d_View::Display (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
aStruct->SetVisual (toComputeWireframe ? Graphic3d_TOS_WIREFRAME : Graphic3d_TOS_SHADING);
|
aStruct->SetVisual (toComputeWireframe ? Graphic3d_TOS_WIREFRAME : Graphic3d_TOS_SHADING);
|
||||||
anAnswer = AcceptDisplay (aStruct);
|
anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (theStruct->IsHighlighted())
|
if (theStruct->IsHighlighted())
|
||||||
{
|
{
|
||||||
aStruct->SetHighlightColor (theStruct->HighlightColor());
|
aStruct->Highlight (Aspect_TOHM_COLOR, theStruct->HighlightColor(), Standard_False);
|
||||||
aStruct->GraphicHighlight (Aspect_TOHM_COLOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// It is displayed only if the calculated structure
|
// It is displayed only if the calculated structure
|
||||||
// has a proper type corresponding to the one of the view.
|
// has a proper type corresponding to the one of the view.
|
||||||
if (anAnswer != Visual3d_TOA_NO)
|
if (anAnswer == Visual3d_TOA_NO)
|
||||||
{
|
{
|
||||||
if (!IsDisplayed (theStruct))
|
return;
|
||||||
{
|
|
||||||
myStructsDisplayed.Add (theStruct);
|
|
||||||
}
|
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *aStruct->CStructure(), theStruct->DisplayPriority());
|
|
||||||
Update (theUpdateMode);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (myStructsDisplayed.Add (theStruct))
|
||||||
|
{
|
||||||
|
myGraphicDriver->DisplayStructure (MyCView, aStruct, theStruct->DisplayPriority());
|
||||||
|
}
|
||||||
|
Update (theUpdateMode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
@@ -1531,7 +1531,7 @@ void Visual3d_View::Erase (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (theStruct);
|
Visual3d_TypeOfAnswer anAnswer = acceptDisplay (theStruct->Visual());
|
||||||
if (!ComputedMode())
|
if (!ComputedMode())
|
||||||
{
|
{
|
||||||
anAnswer = Visual3d_TOA_YES;
|
anAnswer = Visual3d_TOA_YES;
|
||||||
@@ -1539,7 +1539,7 @@ void Visual3d_View::Erase (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
|
|
||||||
if (anAnswer != Visual3d_TOA_COMPUTE)
|
if (anAnswer != Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
myGraphicDriver->EraseStructure (MyCView, *theStruct->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, theStruct);
|
||||||
}
|
}
|
||||||
else if (anAnswer == Visual3d_TOA_COMPUTE
|
else if (anAnswer == Visual3d_TOA_COMPUTE
|
||||||
&& myIsInComputedMode)
|
&& myIsInComputedMode)
|
||||||
@@ -1548,7 +1548,7 @@ void Visual3d_View::Erase (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
if (anIndex != 0)
|
if (anIndex != 0)
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.ChangeValue (anIndex);
|
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.ChangeValue (anIndex);
|
||||||
myGraphicDriver->EraseStructure (MyCView, *aCompStruct->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, aCompStruct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
myStructsDisplayed.Remove (theStruct);
|
myStructsDisplayed.Remove (theStruct);
|
||||||
@@ -1566,8 +1566,7 @@ void Visual3d_View::Highlight (const Handle(Graphic3d_Structure)& theStruct,
|
|||||||
if (anIndex != 0)
|
if (anIndex != 0)
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.ChangeValue (anIndex);
|
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.ChangeValue (anIndex);
|
||||||
aCompStruct->SetHighlightColor (theStruct->HighlightColor());
|
aCompStruct->Highlight (theMethod, theStruct->HighlightColor(), Standard_False);
|
||||||
aCompStruct->GraphicHighlight (theMethod);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1657,7 +1656,14 @@ Standard_Boolean Visual3d_View::IsDisplayed (const Handle(Graphic3d_Structure)&
|
|||||||
// ========================================================================
|
// ========================================================================
|
||||||
Standard_Boolean Visual3d_View::ContainsFacet() const
|
Standard_Boolean Visual3d_View::ContainsFacet() const
|
||||||
{
|
{
|
||||||
return ContainsFacet (myStructsDisplayed);
|
for (Graphic3d_MapOfStructure::Iterator aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
||||||
|
{
|
||||||
|
if (aStructIter.Key()->ContainsFacet())
|
||||||
|
{
|
||||||
|
return Standard_True;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
@@ -1676,14 +1682,51 @@ Standard_Boolean Visual3d_View::ContainsFacet (const Graphic3d_MapOfStructure& t
|
|||||||
return Standard_False;
|
return Standard_False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! Auxiliary method for MinMaxValues() method
|
||||||
|
inline void addStructureBndBox (const Handle(Graphic3d_Structure)& theStruct,
|
||||||
|
const Standard_Boolean theToIgnoreInfiniteFlag,
|
||||||
|
Bnd_Box& theBndBox)
|
||||||
|
{
|
||||||
|
if (!theStruct->IsVisible())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (theStruct->IsInfinite()
|
||||||
|
&& !theToIgnoreInfiniteFlag)
|
||||||
|
{
|
||||||
|
// XMin, YMin .... ZMax are initialized by means of infinite line data
|
||||||
|
const Bnd_Box aBox = theStruct->MinMaxValues (Standard_False);
|
||||||
|
if (!aBox.IsWhole()
|
||||||
|
&& !aBox.IsVoid())
|
||||||
|
{
|
||||||
|
theBndBox.Add (aBox);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only non-empty and non-infinite structures
|
||||||
|
// are taken into account for calculation of MinMax
|
||||||
|
if (theStruct->IsEmpty()
|
||||||
|
&& theStruct->TransformPersistenceMode() != Graphic3d_TMF_None)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// "FitAll" operation ignores object with transform persistence parameter
|
||||||
|
const Bnd_Box aBox = theStruct->MinMaxValues (theToIgnoreInfiniteFlag);
|
||||||
|
theBndBox.Add (aBox);
|
||||||
|
}
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
// function : MinMaxValues
|
// function : MinMaxValues
|
||||||
// purpose :
|
// purpose :
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
Bnd_Box Visual3d_View::MinMaxValues (const Standard_Boolean theToIgnoreInfiniteFlag) const
|
Bnd_Box Visual3d_View::MinMaxValues (const Standard_Boolean theToIgnoreInfiniteFlag) const
|
||||||
{
|
{
|
||||||
return MinMaxValues (myStructsDisplayed,
|
Bnd_Box aResult = MinMaxValues (myStructsDisplayed, theToIgnoreInfiniteFlag);
|
||||||
theToIgnoreInfiniteFlag);
|
Bnd_Box anImmediate = MinMaxValues (myImmediateStructures, theToIgnoreInfiniteFlag);
|
||||||
|
aResult.Add (anImmediate);
|
||||||
|
return aResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
@@ -1691,45 +1734,24 @@ Bnd_Box Visual3d_View::MinMaxValues (const Standard_Boolean theToIgnoreInfiniteF
|
|||||||
// purpose :
|
// purpose :
|
||||||
// ========================================================================
|
// ========================================================================
|
||||||
Bnd_Box Visual3d_View::MinMaxValues (const Graphic3d_MapOfStructure& theSet,
|
Bnd_Box Visual3d_View::MinMaxValues (const Graphic3d_MapOfStructure& theSet,
|
||||||
const Standard_Boolean theToIgnoreInfiniteFlag) const
|
const Standard_Boolean theToIgnoreInfiniteFlag) const
|
||||||
{
|
{
|
||||||
Bnd_Box aResult;
|
Bnd_Box aResult;
|
||||||
if (theSet.IsEmpty ())
|
const Standard_Integer aViewId = MyCView.ViewId;
|
||||||
|
for (Graphic3d_MapIteratorOfMapOfStructure aStructIter (theSet); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
// Return an empty box.
|
const Handle(Graphic3d_Structure)& aStructure = aStructIter.Key();
|
||||||
return aResult;
|
if (!aStructIter.Value()->IsVisible())
|
||||||
}
|
{
|
||||||
Graphic3d_MapIteratorOfMapOfStructure anIterator (theSet);
|
|
||||||
for (anIterator.Initialize (theSet); anIterator.More(); anIterator.Next())
|
|
||||||
{
|
|
||||||
const Handle(Graphic3d_Structure)& aStructure = anIterator.Key();
|
|
||||||
|
|
||||||
if (!aStructure->IsVisible())
|
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
if (aStructure->IsInfinite() && !theToIgnoreInfiniteFlag)
|
else if (!aStructIter.Value()->CStructure()->ViewAffinity.IsNull()
|
||||||
|
&& !aStructIter.Value()->CStructure()->ViewAffinity->IsVisible (aViewId))
|
||||||
{
|
{
|
||||||
//XMin, YMin .... ZMax are initialized by means of infinite line data
|
continue;
|
||||||
Bnd_Box aBox = aStructure->MinMaxValues (Standard_False);
|
|
||||||
if (!aBox.IsWhole() && !aBox.IsVoid())
|
|
||||||
{
|
|
||||||
aResult.Add (aBox);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only non-empty and non-infinite structures
|
addStructureBndBox (aStructure, theToIgnoreInfiniteFlag, aResult);
|
||||||
// are taken into account for calculation of MinMax
|
|
||||||
if ((!aStructure->IsInfinite() || theToIgnoreInfiniteFlag) && !aStructure->IsEmpty())
|
|
||||||
{
|
|
||||||
Bnd_Box aBox = aStructure->MinMaxValues (theToIgnoreInfiniteFlag);
|
|
||||||
|
|
||||||
/* ABD 29/10/04 Transform Persistence of Presentation( pan, zoom, rotate ) */
|
|
||||||
//"FitAll" operation ignores object with transform persitence parameter
|
|
||||||
if(aStructure->TransformPersistenceMode() == Graphic3d_TMF_None )
|
|
||||||
{
|
|
||||||
aResult.Add (aBox);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return aResult;
|
return aResult;
|
||||||
}
|
}
|
||||||
@@ -1862,9 +1884,9 @@ void Visual3d_View::Compute()
|
|||||||
// Remove structures that were calculated for the previous orientation.
|
// Remove structures that were calculated for the previous orientation.
|
||||||
// Recalculation of new structures.
|
// Recalculation of new structures.
|
||||||
NCollection_Sequence<Handle(Graphic3d_Structure)> aStructsSeq;
|
NCollection_Sequence<Handle(Graphic3d_Structure)> aStructsSeq;
|
||||||
for (Graphic3d_MapIteratorOfMapOfStructure aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
for (Graphic3d_MapOfStructure::Iterator aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStructIter.Key());
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStructIter.Key()->Visual());
|
||||||
if (anAnswer == Visual3d_TOA_COMPUTE)
|
if (anAnswer == Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
aStructsSeq.Append (aStructIter.Key()); // if the structure was calculated, it is recalculated
|
aStructsSeq.Append (aStructIter.Key()); // if the structure was calculated, it is recalculated
|
||||||
@@ -1902,7 +1924,7 @@ void Visual3d_View::ReCompute (const Handle(Graphic3d_Structure)& theStruct)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (theStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (theStruct->Visual());
|
||||||
if (anAnswer != Visual3d_TOA_COMPUTE)
|
if (anAnswer != Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -1950,13 +1972,12 @@ void Visual3d_View::ReCompute (const Handle(Graphic3d_Structure)& theStruct)
|
|||||||
|
|
||||||
if (theStruct->IsHighlighted())
|
if (theStruct->IsHighlighted())
|
||||||
{
|
{
|
||||||
aCompStruct->SetHighlightColor (theStruct->HighlightColor());
|
aCompStruct->Highlight (Aspect_TOHM_COLOR, theStruct->HighlightColor(), Standard_False);
|
||||||
aCompStruct->GraphicHighlight (Aspect_TOHM_COLOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The previous calculation is removed and the new one is dislayed
|
// The previous calculation is removed and the new one is displayed
|
||||||
myGraphicDriver->EraseStructure (MyCView, *aCompStructOld->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, aCompStructOld);
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *aCompStruct->CStructure(), theStruct->DisplayPriority());
|
myGraphicDriver->DisplayStructure (MyCView, aCompStruct, theStruct->DisplayPriority());
|
||||||
|
|
||||||
// why not just replace existing items?
|
// why not just replace existing items?
|
||||||
//myStructsToCompute.ChangeValue (anIndex) = theStruct;
|
//myStructsToCompute.ChangeValue (anIndex) = theStruct;
|
||||||
@@ -2324,10 +2345,10 @@ void Visual3d_View::SetComputedMode (const Standard_Boolean theMode)
|
|||||||
myIsInComputedMode = theMode;
|
myIsInComputedMode = theMode;
|
||||||
if (!myIsInComputedMode)
|
if (!myIsInComputedMode)
|
||||||
{
|
{
|
||||||
for (Graphic3d_MapIteratorOfMapOfStructure aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
for (Graphic3d_MapOfStructure::Iterator aStructIter (myStructsDisplayed); aStructIter.More(); aStructIter.Next())
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aStruct = aStructIter.Key();
|
const Handle(Graphic3d_Structure)& aStruct = aStructIter.Key();
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
if (anAnswer != Visual3d_TOA_COMPUTE)
|
if (anAnswer != Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -2337,17 +2358,17 @@ void Visual3d_View::SetComputedMode (const Standard_Boolean theMode)
|
|||||||
if (anIndex != 0)
|
if (anIndex != 0)
|
||||||
{
|
{
|
||||||
const Handle(Graphic3d_Structure)& aStructComp = myStructsComputed.Value (anIndex);
|
const Handle(Graphic3d_Structure)& aStructComp = myStructsComputed.Value (anIndex);
|
||||||
myGraphicDriver->EraseStructure (MyCView, *aStructComp->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, aStructComp);
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *aStruct->CStructure(), aStruct->DisplayPriority());
|
myGraphicDriver->DisplayStructure (MyCView, aStruct, aStruct->DisplayPriority());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Graphic3d_MapIteratorOfMapOfStructure aDispStructIter (myStructsDisplayed); aDispStructIter.More(); aDispStructIter.Next())
|
for (Graphic3d_MapOfStructure::Iterator aDispStructIter (myStructsDisplayed); aDispStructIter.More(); aDispStructIter.Next())
|
||||||
{
|
{
|
||||||
Handle(Graphic3d_Structure) aStruct = aDispStructIter.Key();
|
Handle(Graphic3d_Structure) aStruct = aDispStructIter.Key();
|
||||||
const Visual3d_TypeOfAnswer anAnswer = AcceptDisplay (aStruct);
|
const Visual3d_TypeOfAnswer anAnswer = acceptDisplay (aStruct->Visual());
|
||||||
if (anAnswer != Visual3d_TOA_COMPUTE)
|
if (anAnswer != Visual3d_TOA_COMPUTE)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@@ -2356,8 +2377,8 @@ void Visual3d_View::SetComputedMode (const Standard_Boolean theMode)
|
|||||||
const Standard_Integer anIndex = IsComputed (aStruct);
|
const Standard_Integer anIndex = IsComputed (aStruct);
|
||||||
if (anIndex != 0)
|
if (anIndex != 0)
|
||||||
{
|
{
|
||||||
myGraphicDriver->EraseStructure (MyCView, *aStruct->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, aStruct);
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *(myStructsComputed.Value (anIndex)->CStructure()), aStruct->DisplayPriority());
|
myGraphicDriver->DisplayStructure (MyCView, myStructsComputed.Value (anIndex), aStruct->DisplayPriority());
|
||||||
|
|
||||||
Display (aStruct, Aspect_TOU_WAIT);
|
Display (aStruct, Aspect_TOU_WAIT);
|
||||||
if (aStruct->IsHighlighted())
|
if (aStruct->IsHighlighted())
|
||||||
@@ -2365,8 +2386,7 @@ void Visual3d_View::SetComputedMode (const Standard_Boolean theMode)
|
|||||||
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.Value (anIndex);
|
const Handle(Graphic3d_Structure)& aCompStruct = myStructsComputed.Value (anIndex);
|
||||||
if (!aCompStruct->IsHighlighted())
|
if (!aCompStruct->IsHighlighted())
|
||||||
{
|
{
|
||||||
aCompStruct->SetHighlightColor (aStruct->HighlightColor());
|
aCompStruct->Highlight (Aspect_TOHM_COLOR, aStruct->HighlightColor(), Standard_False);
|
||||||
aCompStruct->GraphicHighlight (Aspect_TOHM_COLOR);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2387,8 +2407,7 @@ void Visual3d_View::SetComputedMode (const Standard_Boolean theMode)
|
|||||||
|
|
||||||
if (aStruct->IsHighlighted())
|
if (aStruct->IsHighlighted())
|
||||||
{
|
{
|
||||||
aCompStruct->SetHighlightColor (aStruct->HighlightColor());
|
aCompStruct->Highlight (Aspect_TOHM_COLOR, aStruct->HighlightColor(), Standard_False);
|
||||||
aCompStruct->GraphicHighlight (Aspect_TOHM_COLOR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean hasResult = Standard_False;
|
Standard_Boolean hasResult = Standard_False;
|
||||||
@@ -2410,8 +2429,8 @@ void Visual3d_View::SetComputedMode (const Standard_Boolean theMode)
|
|||||||
myStructsComputed .Append (aCompStruct);
|
myStructsComputed .Append (aCompStruct);
|
||||||
}
|
}
|
||||||
|
|
||||||
myGraphicDriver->EraseStructure (MyCView, *aStruct->CStructure());
|
myGraphicDriver->EraseStructure (MyCView, aStruct);
|
||||||
myGraphicDriver->DisplayStructure (MyCView, *aCompStruct->CStructure(), aStruct->DisplayPriority());
|
myGraphicDriver->DisplayStructure (MyCView, aCompStruct, aStruct->DisplayPriority());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Update (myViewManager->UpdateMode());
|
Update (myViewManager->UpdateMode());
|
||||||
@@ -2679,3 +2698,21 @@ Standard_Boolean Visual3d_View::Print (const Handle(Visual3d_Layer)& theUnderLay
|
|||||||
thePrintDC, theToShowBackground, theFilename,
|
thePrintDC, theToShowBackground, theFilename,
|
||||||
thePrintAlgorithm, theScaleFactor);
|
thePrintAlgorithm, theScaleFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//function : HiddenObjects
|
||||||
|
//purpose :
|
||||||
|
//=============================================================================
|
||||||
|
const Handle(Graphic3d_NMapOfTransient)& Visual3d_View::HiddenObjects() const
|
||||||
|
{
|
||||||
|
return myHiddenObjects;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//function : HiddenObjects
|
||||||
|
//purpose :
|
||||||
|
//=============================================================================
|
||||||
|
Handle(Graphic3d_NMapOfTransient)& Visual3d_View::ChangeHiddenObjects()
|
||||||
|
{
|
||||||
|
return myHiddenObjects;
|
||||||
|
}
|
||||||
|
@@ -129,9 +129,10 @@ is
|
|||||||
---Purpose: Returns the group of views activated in the visualiser <me>.
|
---Purpose: Returns the group of views activated in the visualiser <me>.
|
||||||
---Category: Inquire methods
|
---Category: Inquire methods
|
||||||
|
|
||||||
DefinedView ( me )
|
DefinedViews (me)
|
||||||
returns HSequenceOfView from Visual3d
|
returns SequenceOfView from Visual3d
|
||||||
is static;
|
is static;
|
||||||
|
---C++: return const &
|
||||||
---Level: Internal
|
---Level: Internal
|
||||||
---Purpose: Returns the group of views defined in the visualiser <me>.
|
---Purpose: Returns the group of views defined in the visualiser <me>.
|
||||||
---Category: Inquire methods
|
---Category: Inquire methods
|
||||||
|
@@ -81,7 +81,7 @@
|
|||||||
Visual3d_ViewManager::Visual3d_ViewManager (const Handle(Graphic3d_GraphicDriver)& theDriver):
|
Visual3d_ViewManager::Visual3d_ViewManager (const Handle(Graphic3d_GraphicDriver)& theDriver):
|
||||||
Graphic3d_StructureManager (theDriver),
|
Graphic3d_StructureManager (theDriver),
|
||||||
MyDefinedView (),
|
MyDefinedView (),
|
||||||
MyViewGenId (View_IDMIN+((View_IDMIN+View_IDMAX)/(Visual3d_ViewManager::Limit ()))*(Visual3d_ViewManager::CurrentId ()-1),View_IDMIN+((View_IDMIN+View_IDMAX)/(Visual3d_ViewManager::Limit ()))*Visual3d_ViewManager::CurrentId ()-1),
|
MyViewGenId (0, 31),
|
||||||
MyZBufferAuto (Standard_False)
|
MyZBufferAuto (Standard_False)
|
||||||
{
|
{
|
||||||
// default layer is always presented in display layer sequence
|
// default layer is always presented in display layer sequence
|
||||||
@@ -423,16 +423,9 @@ Standard_Boolean Visual3d_ViewManager::ContainsComputedStructure () const
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Handle(Visual3d_HSequenceOfView) Visual3d_ViewManager::DefinedView () const
|
const Visual3d_SequenceOfView& Visual3d_ViewManager::DefinedViews() const
|
||||||
{
|
{
|
||||||
Handle (Visual3d_HSequenceOfView) SG = new Visual3d_HSequenceOfView();
|
return MyDefinedView;
|
||||||
|
|
||||||
for(int i=1; i<=MyDefinedView.Length(); i++)
|
|
||||||
{
|
|
||||||
SG->Append(MyDefinedView.Value(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
return (SG);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Standard_Boolean Visual3d_ViewManager::ViewExists (const Handle(Aspect_Window)& AWindow, Graphic3d_CView& TheCView) const
|
Standard_Boolean Visual3d_ViewManager::ViewExists (const Handle(Aspect_Window)& AWindow, Graphic3d_CView& TheCView) const
|
||||||
|
Reference in New Issue
Block a user