+// Copyright (c) 1995-1999 Matra Datavision
+// Copyright (c) 1999-2012 OPEN CASCADE SAS
+//
+// The content of this file is subject to the Open CASCADE Technology Public
+// License Version 6.5 (the "License"). You may not use the content of this file
+// except in compliance with the License. Please obtain a copy of the License
+// at http://www.opencascade.org and read it completely before using this file.
+//
+// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
+// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+//
+// The Original Code and all software distributed under the License is
+// distributed on an "AS IS" basis, without warranty of any kind, and the
+// Initial Developer hereby disclaims all such warranties, including without
+// limitation, any warranties of merchantability, fitness for a particular
+// purpose or non-infringement. Please see the License for the specific terms
+// and conditions governing the rights and limitations under the License.
+
/***********************************************************************
FONCTION :
??-11-97 : CAL ; Retrait de la dependance avec math. Calcul developpe.
??-11-97 : CAL ; Ajout de NumberOfDisplayedStructures
07-08-97 : PCT ; ajout support texture mapping
- 05-01-98 : CAL ; Ajout de AnimationMode
15-01-98 : FMN ; FRA60019 calcul Ratio pour MyViewMappingReset
15-01-98 : CAL ; Ajout de la transformation d'une TOS_COMPUTED
26-01-98 : CAL ; Ajout de la methode HaveTheSameOwner
#define GER61454 //GG 14-09-99 Activates model clipping planes
-#define IMP140100 //GG14-01-00 Add ViewManager( ) method
-
-#define G003 //EUG 30-09-00 Degeneration management
-// Backfacing management
-
#define RIC120302 //GG Add a NEW SetWindow method which enable
// to connect a graphic widget and context to OGL.
-#define BUC61044 /* 25/10/01 SAV ; added functionality to control gl depth testing
- from higher API */
-#define BUC61045 /* 25/10/01 SAV ; added functionality to control gl lighting
- from higher API */
+//BUC61044 25/10/01 SAV ; added functionality to control gl depth testing from higher API
+//BUC61045 25/10/01 SAV ; added functionality to control gl lighting from higher API
-#define OCC1188 //SAV Added methods to set background image
+//OCC1188 SAV Added methods to set background image
/*----------------------------------------------------------------------*/
/*
#include <Graphic3d_DataStructureManager.hxx>
#include <Graphic3d_GraphicDriver.hxx>
-#include <Graphic3d_GraphicDevice.hxx>
#include <Graphic3d_Vector.hxx>
#include <Graphic3d_Vertex.hxx>
#include <Visual3d_HSetOfLight.hxx>
#include <Visual3d_SetIteratorOfSetOfLight.hxx>
-#include <Visual3d_ClipPlane.hxx>
-#include <Visual3d_SetOfClipPlane.hxx>
-#include <Visual3d_HSetOfClipPlane.hxx>
-#include <Visual3d_SetIteratorOfSetOfClipPlane.hxx>
-
#include <Visual3d_SetIteratorOfSetOfView.hxx>
#include <Graphic3d_TextureEnv.hxx>
#include <TColStd_HArray2OfReal.hxx>
-#ifndef WNT
-# include <Xw_Window.hxx>
+#if (defined(_WIN32) || defined(__WIN32__))
+ #include <WNT_Window.hxx>
+#elif (defined(__APPLE__) && !defined(MACOSX_USE_GLX))
+ #include <Cocoa_Window.hxx>
#else
-# include <WNT_Window.hxx>
-#endif // WNT
+ #include <Xw_Window.hxx>
+#endif
#include <float.h>
{
Standard_Integer i, j;
-#ifdef IMP140100
MyPtrViewManager = AManager.operator->();
-#else
- MyPtrViewManager = (void *) AManager.operator->();
-#endif
-
- memset (&MyCView, 0, sizeof(MyCView));
MyCView.ViewId = int (AManager->Identification (this));
MyCView.Active = 0;
MyCView.IsDeleted = 0;
- MyCView.WsId = -1;
- MyCView.DefWindow.IsDefined = 0;
+ MyCView.WsId = -1;
+ MyCView.DefWindow.IsDefined = 0;
- MyCView.Context.NbActiveLight = 0;
- MyCView.Context.NbActivePlane = 0;
-#ifdef GER61454
- MyCView.Context.ActivePlane = NULL;
-#endif
+ MyCView.Context.NbActiveLight = 0;
for (i=0; i<=3; i++)
for (j=0; j<=3; j++)
MyCView.Context.ZBufferActivity = -1;
- MyMatOfMapIsModified = Standard_True;
- MyMatOfOriIsModified = Standard_True;
MyMatOfMapIsEvaluated = Standard_False;
MyMatOfOriIsEvaluated = Standard_False;
- DegenerateModeIsActive = Standard_False;
- AnimationModeIsActive = Standard_False;
-#ifdef G003
- MyCView.IsDegenerates = 0;
- MyCView.IsDegeneratesPrev = 0;
+ IsInitialized = Standard_False;
ComputedModeIsActive = Standard_False;
MyCView.Backfacing = 0;
-#endif // G003
- MyCView.DefBitmap.bitmap = 0;
MyCView.ptrUnderLayer = 0;
MyCView.ptrOverLayer = 0;
MyCView.GContext = 0;
MyCView.GDisplayCB = 0;
MyCView.GClientData = 0;
-Handle(Aspect_GraphicDriver) agd =
- (MyViewManager->GraphicDevice ())->GraphicDriver ();
-
- MyGraphicDriver = *(Handle(Graphic3d_GraphicDriver) *) &agd;
+ MyGraphicDriver = MyViewManager->GraphicDriver();
}
{
Standard_Integer i, j;
-#ifdef IMP140100
MyPtrViewManager = AManager.operator->();
-#else
- MyPtrViewManager = (void *) AManager.operator->();
-#endif
-
MyViewOrientation = VO;
MyViewMapping = VM;
MyContext = CTX;
MyViewOrientationReset = VO;
MyViewMappingReset = VM;
- memset (&MyCView, 0, sizeof(MyCView));
MyCView.ViewId = int (AManager->Identification (this));
MyCView.Active = 0;
MyCView.IsDeleted = 0;
- MyCView.WsId = -1;
- MyCView.DefWindow.IsDefined = 0;
+ MyCView.WsId = -1;
+ MyCView.DefWindow.IsDefined = 0;
- MyCView.Context.NbActiveLight = 0;
- MyCView.Context.NbActivePlane = 0;
-#ifdef GER61454
- MyCView.Context.ActivePlane = NULL;
-#endif
+ MyCView.Context.NbActiveLight = 0;
for (i=0; i<=3; i++)
for (j=0; j<=3; j++)
MyCView.Orientation.IsCustomMatrix = 1;
for ( i = 0; i < 4; i++)
for ( j = 0; j < 4; j++)
- MyCView.Orientation.ModelViewMatrix[i][j] = MyViewOrientation.MyModelViewMatrix->Value(i,j);
+ MyCView.Orientation.ModelViewMatrix[i][j] =
+ (Standard_ShortReal)MyViewOrientation.MyModelViewMatrix->Value(i,j);
}
else {
MyCView.Orientation.IsCustomMatrix = 0;
MyCView.Mapping.IsCustomMatrix = 1;
for ( i = 0; i < 4; i++)
for ( j = 0; j < 4; j++)
- MyCView.Mapping.ProjectionMatrix[i][j] = MyViewMapping.MyProjectionMatrix->Value(i,j);
+ MyCView.Mapping.ProjectionMatrix[i][j] =
+ (Standard_ShortReal)MyViewMapping.MyProjectionMatrix->Value(i,j);
}
else {
MyCView.Mapping.IsCustomMatrix = 0;
MyCView.Context.ZBufferActivity = -1;
- MyMatOfMapIsModified = Standard_True;
- MyMatOfOriIsModified = Standard_True;
MyMatOfMapIsEvaluated = Standard_False;
MyMatOfOriIsEvaluated = Standard_False;
-#ifdef G003
- AnimationModeIsActive = Standard_False;
- MyCView.IsDegenerates = 0;
- MyCView.IsDegeneratesPrev = 0;
+
+ IsInitialized = Standard_False;
ComputedModeIsActive = Standard_False;
-#endif // G003
- MyCView.DefBitmap.bitmap = 0;
MyCView.ptrUnderLayer = 0;
MyCView.ptrOverLayer = 0;
MyCView.GContext = 0;
MyCView.GDisplayCB = 0;
MyCView.GClientData = 0;
-Handle(Aspect_GraphicDriver) agd =
- (MyViewManager->GraphicDevice ())->GraphicDriver ();
-
- MyGraphicDriver = *(Handle(Graphic3d_GraphicDriver) *) &agd;
+ MyGraphicDriver = MyViewManager->GraphicDriver();
}
}
// RIC120302
-void Visual3d_View::SetWindow (const Handle(Aspect_Window)& AWindow) {
+void Visual3d_View::SetWindow (const Handle(Aspect_Window)& theWindow)
+{
if (IsDeleted ()) return;
if (IsDefined ())
Visual3d_ViewDefinitionError::Raise ("Window already defined");
- MyWindow = AWindow;
+ MyWindow = theWindow;
MyCView.WsId = MyCView.ViewId;
MyCView.DefWindow.IsDefined = 1;
-#ifndef WNT
-const Handle(Xw_Window) theWindow = *(Handle(Xw_Window) *) &AWindow;
- MyCView.DefWindow.XWindow = theWindow->XWindow ();
-#ifdef RIC120302
- MyCView.DefWindow.XParentWindow = theWindow->XParentWindow ();
-#endif
+
+#if (defined(_WIN32) || defined(__WIN32__))
+ const Handle(WNT_Window) aWin = Handle(WNT_Window)::DownCast (theWindow);
+ MyCView.DefWindow.XWindow = (HWND )(aWin->HWindow());
+ MyCView.DefWindow.XParentWindow = (HWND )(aWin->HParentWindow());
+ WNT_WindowData* aWinData = (WNT_WindowData* )GetWindowLongPtr ((HWND )(aWin->HWindow()), GWLP_USERDATA);
+ aWinData->WNT_WDriver_Ptr = (void* )this;
+ aWinData->WNT_VMgr = (void* )MyPtrViewManager;
+#elif (defined(__APPLE__) && !defined(MACOSX_USE_GLX))
+ const Handle(Cocoa_Window) aWin = Handle(Cocoa_Window)::DownCast (theWindow);
+ MyCView.DefWindow.XWindow = (Aspect_Drawable )aWin->HView();
+ MyCView.DefWindow.XParentWindow = NULL;
+ //MyCView.DefWindow.XParentWindow = aWin->HParentWindow();
#else
-WNT_WindowData* wd;
-const Handle(WNT_Window) theWindow = *(Handle(WNT_Window) *) &AWindow;
- MyCView.DefWindow.XWindow = ( HWND )(theWindow->HWindow());
-#ifdef RIC120302
- MyCView.DefWindow.XParentWindow = ( HWND )(theWindow->HParentWindow());
+ const Handle(Xw_Window) aWin = Handle(Xw_Window)::DownCast (theWindow);
+ MyCView.DefWindow.XWindow = aWin->XWindow();
+ //MyCView.DefWindow.XParentWindow = aWin->XParentWindow();
#endif
- wd = ( WNT_WindowData* )GetWindowLongPtr (( HWND )(theWindow->HWindow()), GWLP_USERDATA);
- wd -> WNT_WDriver_Ptr = ( void* )this;
- wd -> WNT_VMgr = ( void* )MyPtrViewManager;
-#endif /* WNT */
Standard_Integer Width, Height;
- AWindow->Size (Width, Height);
+ theWindow->Size (Width, Height);
MyCView.DefWindow.dx = float( Width );
MyCView.DefWindow.dy = float( Height );
MyGraphicDriver->ClipLimit (MyCView, AWait);
MyGraphicDriver->Environment(MyCView);
+ // Make view manager z layer list consistent with the view's list.
+ MyViewManager->InstallZLayers (this);
+
// Update planses of model clipping
UpdatePlanes ();
- // Update light sources
+ // Update light sources
UpdateLights ();
/*
MyCView.IsDeleted = 1;
MyCView.DefWindow.IsDefined = 0;
- MyMatOfMapIsModified = Standard_True;
- MyMatOfOriIsModified = Standard_True;
MyMatOfMapIsEvaluated = Standard_False;
MyMatOfOriIsEvaluated = Standard_False;
+ IsInitialized = Standard_False;
+
MyWindow.Nullify ();
}
Standard_Real X, Y, Z;
-Standard_Real LightConcentration;
-Standard_Real LightAttenuation1;
-Standard_Real LightAttenuation2;
-Standard_Real LightAngle;
+Standard_Real LightConcentration = 0.;
+Standard_Real LightAttenuation1 = 0.;
+Standard_Real LightAttenuation2 = 0.;
+Standard_Real LightAngle = 0.;
Quantity_Color LightColor;
Graphic3d_Vertex LightPosition;
Graphic3d_Vector LightDirection;
}
-void Visual3d_View::UpdatePlanes () {
-
-Standard_Integer i, j;
-CALL_DEF_PLANE *planes=NULL;
-
- i = MyContext.NumberOfActivatedClipPlanes ();
- j = MyGraphicDriver->InquirePlaneLimit ();
- MyCView.Context.NbActivePlane = (i > j ? j : i);
-
- if (MyCView.Context.NbActivePlane > 0) {
-
- // Dynamic Allocation
-#ifdef GER61454 //Keep the plane address for the next Update !
- if( !MyCView.Context.ActivePlane )
- MyCView.Context.ActivePlane = new CALL_DEF_PLANE [j];
- planes = MyCView.Context.ActivePlane;
-#else
- planes = new CALL_DEF_PLANE [MyCView.Context.NbActivePlane];
-
- MyCView.Context.ActivePlane = planes;
-#endif
-Standard_Real A, B, C, D;
-
- // Parcing of clipping planes
- for (j=0; j<MyCView.Context.NbActivePlane; j++) {
-
- planes[j].WsId = MyCView.ViewId;
- planes[j].ViewId = MyCView.ViewId;
-
- planes[j].Active = 1;
- planes[j].PlaneId =
- int ((MyContext.ActivatedClipPlane (j+1))->Identification ());
-
- (MyContext.ActivatedClipPlane (j+1))->Plane (A, B, C, D);
- planes[j].CoefA = float (A);
- planes[j].CoefB = float (B);
- planes[j].CoefC = float (C);
- planes[j].CoefD = float (D);
- }
-
- }
-
- // Management of planes of clipping model
- if (! IsDeleted ())
- if (IsDefined ())
- MyGraphicDriver->SetPlane (MyCView);
-
- // Dynamic allocation
-#ifdef GER61454
- if ( MyCView.Context.ActivePlane && (MyCView.Context.NbActivePlane == 0)
- ) {
- delete [] MyCView.Context.ActivePlane;
- MyCView.Context.ActivePlane = NULL;
- }
-#else
- if (MyCView.Context.NbActivePlane > 0) delete [] planes;
-#endif
+void Visual3d_View::UpdatePlanes()
+{
+ MyCView.Context.ClipPlanes = MyContext.GetClipPlanes();
+
+ if (IsDeleted() || !IsDefined())
+ return;
+ MyGraphicDriver->SetClipPlanes (MyCView);
}
void Visual3d_View::SetBackground (const Aspect_Background& ABack) {
const Aspect_FillMethod FillStyle,
const Standard_Boolean update )
{
-#ifdef OCC1188
if ( IsDeleted() )
return;
if ( !IsDefined() )
Update();
else if ( MyViewManager->UpdateMode() == Aspect_TOU_ASAP )
Update();
-#endif
}
void Visual3d_View::SetBgImageStyle( const Aspect_FillMethod FillStyle,
const Standard_Boolean update )
{
-#ifdef OCC1188
if ( IsDeleted() )
return;
if ( !IsDefined() )
Update();
else if ( MyViewManager->UpdateMode() == Aspect_TOU_ASAP )
Update();
-#endif
}
Aspect_Background Visual3d_View::Background () const {
SetViewOrientation (NewViewOrientation);
- MyMatOfOriIsModified = Standard_True;
MyMatOfOriIsEvaluated = Standard_False;
}
MyViewOrientation = VO;
-Standard_Real X, Y, Z;
-
+ Standard_Real X, Y, Z;
// Tests on modification of parameters.
-Standard_Boolean VUPIsModified = Standard_False;
-Standard_Boolean VRPIsModified = Standard_False;
-Standard_Boolean VRUIsModified = Standard_False;
-Standard_Boolean ScaleIsModified = Standard_False;
-Standard_Boolean CustomIsModified = Standard_False;
+ Standard_Boolean VUPIsModified = Standard_False;
+ Standard_Boolean VRPIsModified = Standard_False;
+ Standard_Boolean VRUIsModified = Standard_False;
+ Standard_Boolean ScaleIsModified = Standard_False;
+ Standard_Boolean CustomIsModified = Standard_False;
(MyViewOrientation.ViewReferencePoint ()).Coord (X, Y, Z);
VUPIsModified =
- MyCView.Orientation.ViewReferencePoint.x != float (X)
- || MyCView.Orientation.ViewReferencePoint.y != float (Y)
- || MyCView.Orientation.ViewReferencePoint.z != float (Z);
+ MyCView.Orientation.ViewReferencePoint.x != float (X)
+ || MyCView.Orientation.ViewReferencePoint.y != float (Y)
+ || MyCView.Orientation.ViewReferencePoint.z != float (Z);
MyCView.Orientation.ViewReferencePoint.x = float (X);
MyCView.Orientation.ViewReferencePoint.y = float (Y);
MyCView.Orientation.ViewReferencePoint.z = float (Z);
(MyViewOrientation.ViewReferencePlane ()).Coord (X, Y, Z);
VRPIsModified =
- MyCView.Orientation.ViewReferencePlane.x != float (X)
- || MyCView.Orientation.ViewReferencePlane.y != float (Y)
- || MyCView.Orientation.ViewReferencePlane.z != float (Z);
+ MyCView.Orientation.ViewReferencePlane.x != float (X)
+ || MyCView.Orientation.ViewReferencePlane.y != float (Y)
+ || MyCView.Orientation.ViewReferencePlane.z != float (Z);
MyCView.Orientation.ViewReferencePlane.x = float (X);
MyCView.Orientation.ViewReferencePlane.y = float (Y);
MyCView.Orientation.ViewReferencePlane.z = float (Z);
(MyViewOrientation.ViewReferenceUp ()).Coord (X, Y, Z);
VRUIsModified =
- MyCView.Orientation.ViewReferenceUp.x != float (X)
- || MyCView.Orientation.ViewReferenceUp.y != float (Y)
- || MyCView.Orientation.ViewReferenceUp.z != float (Z);
+ MyCView.Orientation.ViewReferenceUp.x != float (X)
+ || MyCView.Orientation.ViewReferenceUp.y != float (Y)
+ || MyCView.Orientation.ViewReferenceUp.z != float (Z);
MyCView.Orientation.ViewReferenceUp.x = float (X);
MyCView.Orientation.ViewReferenceUp.y = float (Y);
MyCView.Orientation.ViewReferenceUp.z = float (Z);
-Standard_Real Sx, Sy, Sz;
-
- MyViewOrientation.AxialScale(Sx, Sy, Sz);
- ScaleIsModified =
- MyCView.Orientation.ViewScaleX != float (X)
- || MyCView.Orientation.ViewScaleY != float (Y)
- || MyCView.Orientation.ViewScaleZ != float (Z);
- MyCView.Orientation.ViewScaleX = float (Sx);
- MyCView.Orientation.ViewScaleY = float (Sy);
- MyCView.Orientation.ViewScaleZ = float (Sz);
+ MyViewOrientation.AxialScale(X, Y, Z);
+ ScaleIsModified =
+ MyCView.Orientation.ViewScaleX != float (X)
+ || MyCView.Orientation.ViewScaleY != float (Y)
+ || MyCView.Orientation.ViewScaleZ != float (Z);
+ MyCView.Orientation.ViewScaleX = float (X);
+ MyCView.Orientation.ViewScaleY = float (Y);
+ MyCView.Orientation.ViewScaleZ = float (Z);
CustomIsModified =
- MyCView.Orientation.IsCustomMatrix != MyViewOrientation.IsCustomMatrix();
+ (MyCView.Orientation.IsCustomMatrix != MyViewOrientation.IsCustomMatrix());
MyCView.Orientation.IsCustomMatrix = MyViewOrientation.IsCustomMatrix();
if ( MyViewOrientation.IsCustomMatrix() ) {
Standard_Integer i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++) {
- if (!CustomIsModified) CustomIsModified =
- MyCView.Orientation.ModelViewMatrix[i][j] != MyViewOrientation.MyModelViewMatrix->Value(i,j);
- MyCView.Orientation.ModelViewMatrix[i][j] = MyViewOrientation.MyModelViewMatrix->Value(i,j);
+ if (!CustomIsModified) CustomIsModified =
+ MyCView.Orientation.ModelViewMatrix[i][j] != MyViewOrientation.MyModelViewMatrix->Value(i,j);
}
}
#ifdef TRACE_TRSF
-cout << "Visual3d_View::SetViewOrientation\n";
- if (VUPIsModified || VRPIsModified || VRUIsModified || CustomIsModified)
- cout << "VUPIsModified : " << VUPIsModified
- << ", VRPIsModified : " << VRPIsModified
- << ", VRUIsModified : " << VRUIsModified
- << ", CustomIsModified : " << CustomIsModified << "\n" << flush;
+ cout << "Visual3d_View::SetViewOrientation\n";
+ if (VUPIsModified || VRPIsModified || VRUIsModified || ScaleIsModified || CustomIsModified)
+ cout << "VUPIsModified : " << VUPIsModified
+ << ", VRPIsModified : " << VRPIsModified
+ << ", VRUIsModified : " << VRUIsModified
+ << ", CustomIsModified : " << CustomIsModified
+ << ", ScaleIsModified : " << ScaleIsModified << "\n" << flush;
else
- cout << "no modification\n" << flush;
+ cout << "no modification\n" << flush;
#endif
// restart if one of parameters is modified
- if (VUPIsModified || VRPIsModified || VRUIsModified || ScaleIsModified || CustomIsModified) {
-
- if (VUPIsModified || VRPIsModified || VRUIsModified || CustomIsModified) {
- MyMatOfOriIsModified = Standard_True;
- MyMatOfOriIsEvaluated = Standard_False;
- }
+ if (!IsInitialized || VUPIsModified || VRPIsModified
+ || VRUIsModified || ScaleIsModified || CustomIsModified) {
- if (! IsDefined ()) return;
+ MyMatOfOriIsEvaluated = !VUPIsModified && !VRPIsModified
+ && !VRUIsModified && !ScaleIsModified;
-Standard_Boolean AWait = Standard_False; // => immediate update
- MyGraphicDriver->ViewOrientation (MyCView, AWait);
+ if (! IsDefined ()) return;
- Compute ();
+ Standard_Boolean AWait = Standard_False; // => immediate update
+ MyGraphicDriver->ViewOrientation (MyCView, AWait);
+ IsInitialized = Standard_True;
+ Compute ();
- if (MyViewManager->UpdateMode () == Aspect_TOU_ASAP) Update ();
+ if (MyViewManager->UpdateMode () == Aspect_TOU_ASAP) Update ();
}
}
MyViewOrientation = MyViewOrientationReset;
-Standard_Real X, Y, Z;
+ Standard_Real X, Y, Z;
// Tests on modification of parameters.
-Standard_Boolean VUPIsModified = Standard_False;
-Standard_Boolean VRPIsModified = Standard_False;
-Standard_Boolean VRUIsModified = Standard_False;
-Standard_Boolean ScaleIsModified = Standard_False;
-Standard_Boolean CustomIsModified = Standard_False;
+ Standard_Boolean VUPIsModified = Standard_False;
+ Standard_Boolean VRPIsModified = Standard_False;
+ Standard_Boolean VRUIsModified = Standard_False;
+ Standard_Boolean ScaleIsModified = Standard_False;
+ Standard_Boolean CustomIsModified = Standard_False;
(MyViewOrientation.ViewReferencePoint ()).Coord (X, Y, Z);
VUPIsModified =
- MyCView.Orientation.ViewReferencePoint.x != float (X)
- || MyCView.Orientation.ViewReferencePoint.y != float (Y)
- || MyCView.Orientation.ViewReferencePoint.y != float (Y);
+ MyCView.Orientation.ViewReferencePoint.x != float (X)
+ || MyCView.Orientation.ViewReferencePoint.y != float (Y)
+ || MyCView.Orientation.ViewReferencePoint.z != float (Z);
MyCView.Orientation.ViewReferencePoint.x = float (X);
MyCView.Orientation.ViewReferencePoint.y = float (Y);
MyCView.Orientation.ViewReferencePoint.z = float (Z);
(MyViewOrientation.ViewReferencePlane ()).Coord (X, Y, Z);
VRPIsModified =
- MyCView.Orientation.ViewReferencePlane.x != float (X)
- || MyCView.Orientation.ViewReferencePlane.y != float (Y)
- || MyCView.Orientation.ViewReferencePlane.y != float (Y);
+ MyCView.Orientation.ViewReferencePlane.x != float (X)
+ || MyCView.Orientation.ViewReferencePlane.y != float (Y)
+ || MyCView.Orientation.ViewReferencePlane.z != float (Z);
MyCView.Orientation.ViewReferencePlane.x = float (X);
MyCView.Orientation.ViewReferencePlane.y = float (Y);
MyCView.Orientation.ViewReferencePlane.z = float (Z);
(MyViewOrientation.ViewReferenceUp ()).Coord (X, Y, Z);
VRUIsModified =
- MyCView.Orientation.ViewReferenceUp.x != float (X)
- || MyCView.Orientation.ViewReferenceUp.y != float (Y)
- || MyCView.Orientation.ViewReferenceUp.y != float (Y);
+ MyCView.Orientation.ViewReferenceUp.x != float (X)
+ || MyCView.Orientation.ViewReferenceUp.y != float (Y)
+ || MyCView.Orientation.ViewReferenceUp.z != float (Z);
MyCView.Orientation.ViewReferenceUp.x = float (X);
MyCView.Orientation.ViewReferenceUp.y = float (Y);
MyCView.Orientation.ViewReferenceUp.z = float (Z);
-Standard_Real Sx, Sy, Sz;
-
- MyViewOrientation.AxialScale(Sx, Sy, Sz);
- ScaleIsModified =
- MyCView.Orientation.ViewScaleX != float (X)
- || MyCView.Orientation.ViewScaleY != float (Y)
- || MyCView.Orientation.ViewScaleZ != float (Z);
- MyCView.Orientation.ViewScaleX = float (Sx);
- MyCView.Orientation.ViewScaleY = float (Sy);
- MyCView.Orientation.ViewScaleZ = float (Sz);
+ MyViewOrientation.AxialScale(X, Y, Z);
+ ScaleIsModified =
+ MyCView.Orientation.ViewScaleX != float (X)
+ || MyCView.Orientation.ViewScaleY != float (Y)
+ || MyCView.Orientation.ViewScaleZ != float (Z);
+ MyCView.Orientation.ViewScaleX = float (X);
+ MyCView.Orientation.ViewScaleY = float (Y);
+ MyCView.Orientation.ViewScaleZ = float (Z);
CustomIsModified =
- MyCView.Orientation.IsCustomMatrix != MyViewOrientation.IsCustomMatrix();
+ MyCView.Orientation.IsCustomMatrix != MyViewOrientation.IsCustomMatrix();
MyCView.Orientation.IsCustomMatrix = MyViewOrientation.IsCustomMatrix();
if ( MyViewOrientation.IsCustomMatrix() ) {
Standard_Integer i, j;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++) {
- if (!CustomIsModified) CustomIsModified =
- MyCView.Orientation.ModelViewMatrix[i][j] != MyViewOrientation.MyModelViewMatrix->Value(i,j);
- MyCView.Orientation.ModelViewMatrix[i][j] = MyViewOrientation.MyModelViewMatrix->Value(i,j);
+ if (!CustomIsModified) CustomIsModified =
+ MyCView.Orientation.ModelViewMatrix[i][j] != MyViewOrientation.MyModelViewMatrix->Value(i,j);
}
}
+
#ifdef TRACE_TRSF
-cout << "Visual3d_View::ViewOrientationReset\n";
-if (VUPIsModified || VRPIsModified || VRUIsModified || CustomIsModified)
-cout << "VUPIsModified : " << VUPIsModified
- << ", VRPIsModified : " << VRPIsModified
- << ", VRUIsModified : " << VRUIsModified
- << ", CustomIsModified : " << CustomIsModified << "\n" << flush;
-else
-cout << "no modification\n" << flush;
+ cout << "Visual3d_View::ViewOrientationReset\n";
+ if (VUPIsModified || VRPIsModified || VRUIsModified || ScaleIsModified || CustomIsModified)
+ cout << "VUPIsModified : " << VUPIsModified
+ << ", VRPIsModified : " << VRPIsModified
+ << ", VRUIsModified : " << VRUIsModified
+ << ", CustomIsModified : " << CustomIsModified
+ << ", ScaleIsModified : " << ScaleIsModified << "\n" << flush;
+ else
+ cout << "no modification\n" << flush;
#endif
// Restart if one of parameters is modified
- if (VUPIsModified || VRPIsModified || VRUIsModified || CustomIsModified) {
-
- if (VUPIsModified || VRPIsModified || VRUIsModified || CustomIsModified) {
- MyMatOfOriIsModified = Standard_True;
- MyMatOfOriIsEvaluated = Standard_False;
- }
+ if (!IsInitialized || VUPIsModified || VRPIsModified
+ || VRUIsModified || ScaleIsModified || CustomIsModified) {
- if (! IsDefined ()) return;
+ MyMatOfOriIsEvaluated = !VUPIsModified && !VRPIsModified
+ && !VRUIsModified && !ScaleIsModified;
-Standard_Boolean AWait = Standard_False; // => immediate update
- MyGraphicDriver->ViewOrientation (MyCView, AWait);
+ if (! IsDefined ()) return;
- Compute ();
+ Standard_Boolean AWait = Standard_False; // => immediate update
+ MyGraphicDriver->ViewOrientation (MyCView, AWait);
+ IsInitialized = Standard_True;
+ Compute ();
- if (MyViewManager->UpdateMode () == Aspect_TOU_ASAP) Update ();
+ if (MyViewManager->UpdateMode () == Aspect_TOU_ASAP) Update ();
}
-
}
void Visual3d_View::SetViewMapping (const Visual3d_ViewMapping& VM) {
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
MyCView.Mapping.ProjectionMatrix[i][j] =
- MyViewMapping.MyProjectionMatrix->Value(i,j);
+ (Standard_ShortReal)MyViewMapping.MyProjectionMatrix->Value(i,j);
}
- MyMatOfMapIsModified = Standard_True;
MyMatOfMapIsEvaluated = Standard_False;
if (! IsDefined ()) return;
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
MyCView.Mapping.ProjectionMatrix[i][j] =
- MyViewMapping.MyProjectionMatrix->Value(i,j);
+ (Standard_ShortReal)MyViewMapping.MyProjectionMatrix->Value(i,j);
}
- MyMatOfMapIsModified = Standard_True;
MyMatOfMapIsEvaluated = Standard_False;
if (! IsDefined ()) return;
Visual3d_TypeOfVisualization OldVisualMode;
Visual3d_TypeOfVisualization NewVisualMode;
- // To manage display only in case of
+ // To manage display only in case of
// change of visualisation mode.
OldVisualMode = MyContext.Visualization ();
NewVisualMode = CTX.Visualization ();
Visual3d_TypeOfModel OldModel;
Visual3d_TypeOfModel NewModel;
- // To manage change of visualisation only in case
+ // To manage change of visualisation only in case
// of change of mode of visualisation or of type of shading.
OldModel = MyContext.Model ();
NewModel = CTX.Model ();
OldZClippingBackPlane = MyContext.ZClippingBackPlane ();
NewZClippingBackPlane = CTX.ZClippingBackPlane ();
-Standard_Integer OldTexEnvId;
-Standard_Integer NewTexEnvId;
-Visual3d_TypeOfSurfaceDetail OldSurfaceDetail;
-Visual3d_TypeOfSurfaceDetail NewSurfaceDetail;
+ Handle(Graphic3d_TextureEnv) aTexEnvOld = MyContext.TextureEnv();
+ Handle(Graphic3d_TextureEnv) aTexEnvNew = CTX.TextureEnv();
- Handle(Graphic3d_TextureEnv) TempTextureEnv1 = MyContext.TextureEnv();
- if (! TempTextureEnv1.IsNull()) OldTexEnvId = TempTextureEnv1->TextureId();
- else OldTexEnvId = -1;
-
- Handle(Graphic3d_TextureEnv) TempTextureEnv2 = CTX.TextureEnv();
-
- if (! TempTextureEnv2.IsNull()) NewTexEnvId = TempTextureEnv2->TextureId();
- else NewTexEnvId = -1;
-
- OldSurfaceDetail = MyContext.SurfaceDetail();
- NewSurfaceDetail = CTX.SurfaceDetail();
+ Visual3d_TypeOfSurfaceDetail OldSurfaceDetail = MyContext.SurfaceDetail();
+ Visual3d_TypeOfSurfaceDetail NewSurfaceDetail = CTX.SurfaceDetail();
MyContext = CTX;
}
// management of textures
- if ( (OldTexEnvId != NewTexEnvId) ||
- (OldSurfaceDetail != NewSurfaceDetail) )
+ if ((aTexEnvOld != aTexEnvNew) || (OldSurfaceDetail != NewSurfaceDetail))
+ {
MyGraphicDriver->Environment(MyCView);
+ }
// Update of planes of model clipping
UpdatePlanes ();
- // Update of light sources
+ // Update of light sources
UpdateLights ();
}
while (S1Iterator.More ()) {
Answer = AcceptDisplay (S1Iterator.Key ());
- // If the structure can't be displayed in the
+ // If the structure can't be displayed in the
// new context of the view, it is removed.
if ((Answer == Visual3d_TOA_NO) ||
(Answer == Visual3d_TOA_COMPUTE))
/*
* Change of context =>
- * Display structures that can be displayed
+ * Display structures that can be displayed
* with the new visualisation mode.
- * All structures with status Displayed are removed from the ViewManager
- * and displayed in the view directly, if the structure is not already
+ * All structures with status Displayed are removed from the ViewManager
+ * and displayed in the view directly, if the structure is not already
* displayed and if the view accepts it in its context.
*/
Handle(Graphic3d_Structure) SG = it.Key();
if (! IsDisplayed (SG)) {
Answer = AcceptDisplay(SG);
- // If the structure can be displayed in the
+ // If the structure can be displayed in the
// new context of the view, it is displayed.
if ((Answer == Visual3d_TOA_YES) ||
(Answer == Visual3d_TOA_COMPUTE))
* Activation of a new view =>
* Display structures that can be displayed in this new view.
* All structures with status
- * Displayed in ViewManager are returned and displayed in
- * the view directly, if the structure is not already
+ * Displayed in ViewManager are returned and displayed in
+ * the view directly, if the structure is not already
* displayed and if the view accepts it in its context.
*/
* Deactivation of a view =>
* Removal of structures displayed in this view.
* All structures with status
- * Displayed in ViewManager are returned and removed from
- * the view directly, if the structure is not already
+ * Displayed in ViewManager are returned and removed from
+ * the view directly, if the structure is not already
* displayed and if the view accepts it in its context.
*/
MyGraphicDriver->Update (MyCView, UnderCLayer, OverCLayer);
//OSD::SetSignal (Standard_True);
- MyMatOfMapIsModified = Standard_False;
- MyMatOfOriIsModified = Standard_False;
-
}
Visual3d_TypeOfAnswer Visual3d_View::AcceptDisplay (const Handle(Graphic3d_Structure)& AStructure) const {
}
-void Visual3d_View::ChangeDisplayPriority (const Handle(Graphic3d_Structure)& AStructure, const Standard_Integer OldPriority, const Standard_Integer NewPriority) {
+void Visual3d_View::ChangeDisplayPriority (const Handle(Graphic3d_Structure)& AStructure, const Standard_Integer /*OldPriority*/, const Standard_Integer NewPriority) {
if (IsDeleted ()) return;
if (! IsDefined ()) return;
if (! IsDisplayed (AStructure)) return;
Standard_Integer Index = IsComputed (AStructure);
-#ifdef G003
- if ( Index != 0 && ComputedMode () && !DegenerateModeIsOn () )
-#else
- if ((Index != 0) && (! DegenerateModeIsOn ()))
-#endif // G003
+ if (Index != 0 && ComputedMode())
{
#ifdef TRACE
Standard_Integer StructId = MyCOMPUTEDSequence.Value (Index)->Identification ();
if (! IsActive ()) return;
// If Display on a structure present in the list
- // of calculated structures while it is not
+ // of calculated structures while it is not
// or more, of calculated type =>
// - removes it as well as the associated old computed
// THis happens when hlhsr becomes again of type e
return;
}
- // Mode degenerated active
-#ifdef G003
- if ( !ComputedMode () || DegenerateModeIsOn () )
- Answer = Visual3d_TOA_YES;
-#else
- if (DegenerateModeIsOn ()) Answer = Visual3d_TOA_YES;
-;
-#endif // G003
+ if (!ComputedMode())
+ {
+ Answer = Visual3d_TOA_YES;
+ }
if (Answer == Visual3d_TOA_YES ) {
#ifdef TRACE_DISPLAY
// Cas COMPUTED invalid, WITHOUT a valid of replacement
else {
- // COMPUTED is removed if displayed
+ // COMPUTED is removed if displayed
if (IsDisplayed (AStructure))
MyGraphicDriver->EraseStructure (
MyCView,
cout << flush;
#endif
- // 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.
if (Answer != Visual3d_TOA_NO) {
if (! IsDisplayed (AStructure))
if (IsDeleted ()) return;
- // No test on window as the structure is displayed only if
+ // No test on window as the structure is displayed only if
// the window exists, so only one test is enough.
if (IsDisplayed (AStructure)) {
Visual3d_TypeOfAnswer Answer = AcceptDisplay (AStructure);
- // Degenerated mode is active
-#ifdef G003
- if ( !ComputedMode () || DegenerateModeIsOn () )
- Answer = Visual3d_TOA_YES;
-#else
- if (DegenerateModeIsOn ()) Answer = Visual3d_TOA_YES;
-#endif // G003
+ if (!ComputedMode())
+ {
+ Answer = Visual3d_TOA_YES;
+ }
if (Answer != Visual3d_TOA_COMPUTE) {
MyGraphicDriver->EraseStructure (
cout << "Index : " << Index << "\n";
cout << flush;
#endif
-#ifdef G003
- if ( Index != 0 && ComputedMode () &&
- !DegenerateModeIsOn () )
-#else
- if ((Index != 0) && (! DegenerateModeIsOn ()))
-#endif // G003
+
+ if (Index != 0 && ComputedMode())
{
StructId =
MyCOMPUTEDSequence.Value (Index)->Identification ();
Result =
(((Iterator.Key ())->Visual ()) == Graphic3d_TOS_COMPUTED);
- // Iterator.Next () is located on the
+ // Iterator.Next () is located on the
// next structure
Iterator.Next ();
}
if ( ZM != RealLast() && ZM > ZMax )
ZMax = ZM ;
}
- // Only non-empty and non-infinite structures
+ // Only non-empty and non-infinite structures
// are taken into account for calculation of MinMax
if (! (Iterator.Key ())->IsInfinite () &&
! (Iterator.Key ())->IsEmpty ()) {
}
-void Visual3d_View::Exploration () const {
-
- if (IsDeleted ()) return;
-
- MyGraphicDriver->DumpView (MyCView);
-
-}
Standard_Boolean Visual3d_View::ZBufferIsActivated () const {
MyCView.Context.Model = int (MyContext.Model ());
MyCView.Context.Visualization = int (MyContext.Visualization ());
- Handle(Graphic3d_TextureEnv) TempTextureEnv = MyContext.TextureEnv();
- if (! TempTextureEnv.IsNull()) MyCView.Context.TexEnvId = TempTextureEnv->TextureId();
- else MyCView.Context.TexEnvId = -1;
+ MyCView.Context.TextureEnv = MyContext.TextureEnv();
MyCView.Context.SurfaceDetail = MyContext.SurfaceDetail();
}
for (i=1; i<=Length; i++)
(MyCOMPUTEDSequence.Value (i))->SetHLRValidation (Standard_False);
- // if the degenerated node is active, nothing is recomputed
-#ifdef G003
- if ( DegenerateModeIsOn () || !ComputedMode () ) return;
-#else
- if (DegenerateModeIsOn ()) return;
-#endif // G003
+ if (!ComputedMode())
+ {
+ return;
+ }
/*
* Force HLRValidation to False on all structures
* Remove structures that were calculated for the
* previous orientation.
* Recalculation of new structures.
- * Passage of the degenerated mode ON to OFF =>
- * Remove structures that were calculated before
- * the degenerated mode passed to ON.
- * Recalculate new structures.
*/
Graphic3d_MapIteratorOfMapOfStructure S1Iterator (MyDisplayedStructure);
Visual3d_TypeOfAnswer Answer;
}
void Visual3d_View::ReCompute (const Handle(Graphic3d_Structure)& AStructure) {
-#ifdef G003
- if ( DegenerateModeIsOn () || !ComputedMode () ) return;
-#else
- if (DegenerateModeIsOn()) return;
-#endif // G003
+ if (!ComputedMode()) return;
if (IsDeleted ()) return;
<< "\n" << flush;
#endif
- // hlhsr and the new associated compute are removed
+ // hlhsr and the new associated compute are removed
MyTOCOMPUTESequence.Remove (Index);
MyCOMPUTEDSequence.Remove (Index);
}
-void
-#ifdef G003
-Visual3d_View::SetAnimationModeOn ( const Standard_Boolean degenerate ) {
-#else
-Visual3d_View::SetAnimationModeOn () {
-#endif
-
- if (AnimationModeIsOn ()) return;
-
- AnimationModeIsActive = Standard_True;
-#ifdef G003
- if ( degenerate )
- SetDegenerateModeOn ();
- else
- SetDegenerateModeOff ();
-#endif // G003
- MyGraphicDriver->BeginAnimation (MyCView);
-
-}
-
-void Visual3d_View::SetAnimationModeOff () {
-
- if (! AnimationModeIsOn ()) return;
-
- AnimationModeIsActive = Standard_False;
-#ifdef G003
- SetDegenerateModeOff ();
-#endif // G003
- MyGraphicDriver->EndAnimation (MyCView);
-
-}
-
-Standard_Boolean Visual3d_View::AnimationModeIsOn () const {
-
- return AnimationModeIsActive;
-
-}
-
-void Visual3d_View::SetDegenerateModeOn () {
-
-#ifdef TRACE
- cout << "Visual3d_View" << MyCView.ViewId
- << "::SetDegenerateModeOn ();\n";
- cout << flush;
-#endif
-
- // If the degenerated mode is already active, nothing is recalculated
- if (DegenerateModeIsOn ()) return;
- DegenerateModeIsActive = Standard_True;
-
-#ifdef G003
- MyCView.IsDegenerates = 1;
-#else
- /*
- * Change of activity of the degenerated mode
- * Remove structures that were calculated
- * and displayed when the mode was off.
- * Display of non-calculated structures.
- */
-Graphic3d_MapIteratorOfMapOfStructure S1Iterator (MyDisplayedStructure);
-Visual3d_TypeOfAnswer Answer;
-Standard_Integer StructId;
-
- while (S1Iterator.More ()) {
-
- Answer = AcceptDisplay (S1Iterator.Key ());
- // If the structure was calculated, the previous one is
- // removed and the new one is displayed
- // (This is the role of passage into degenerated mode)
-
- if (Answer == Visual3d_TOA_COMPUTE) {
-Standard_Integer Index = IsComputed (S1Iterator.Key ());
- if (Index != 0) {
- StructId =
- MyCOMPUTEDSequence.Value (Index)->Identification ();
-#ifdef TRACE_COMP
- cout << "Structure " << S1Iterator.Key ()->Identification ()
- << " calculated, in the view "
- << Identification () << ", by structure "
- << StructId << " passes in degenerated mode.\n";
- cout << "Remove" << StructId << " then display "
- << S1Iterator.Key ()->Identification () << "\n";
- cout << flush;
-#endif
- MyGraphicDriver->EraseStructure
- (MyCView, *(Graphic3d_CStructure *)MyCOMPUTEDSequence.Value (Index)->CStructure ());
- MyGraphicDriver->DisplayStructure (
- MyCView,
- *(Graphic3d_CStructure *)S1Iterator.Key ()->CStructure (),
- int (S1Iterator.Key ()->DisplayPriority ())
- );
- }
- else {
- // Else is impossible)
- // If the mode was not degenerated previously, the
- // calculated structure associated to S1Iterator.Key ()
- // really exists and Index != 0
- }
- }
-
- // S1Iterator.Next () is located on the next structure
- S1Iterator.Next ();
- }
-#endif //G003
-}
-
-void Visual3d_View::SetDegenerateModeOff () {
-
-#ifdef TRACE
- cout << "Visual3d_View" << MyCView.ViewId
- << "::SetDegenerateModeOff ();\n";
- cout << flush;
-#endif
-
- // If the degenerated mode is already inactive, nothing is recalculated
- if (! DegenerateModeIsOn ()) return;
-
- DegenerateModeIsActive = Standard_False;
-
-#ifdef G003
- MyCView.IsDegenerates = 0;
-#else
- /*
- * Change of activity of degenerated mode
- * Remove structures that were displayed
- * when the mode was on.
- * Calculation of structures.
- */
-Graphic3d_MapIteratorOfMapOfStructure S1Iterator (MyDisplayedStructure);
-Visual3d_TypeOfAnswer Answer;
-Standard_Integer StructId;
-
- Standard_Integer i = MyDisplayedStructure.Extent ();
-
- while (S1Iterator.More ()) {
-
- Answer = AcceptDisplay (S1Iterator.Key ());
- // If the structure was calculated, the previous one is
- // removed and the new one is displayed
- // (This is the role of passage into degenerated mode)
-
- if (Answer == Visual3d_TOA_COMPUTE) {
-Standard_Integer Index = IsComputed (S1Iterator.Key ());
- if (Index != 0) {
- StructId =
- MyCOMPUTEDSequence.Value (Index)->Identification ();
-#ifdef TRACE_COMP
- cout << "Structure " << S1Iterator.Key ()->Identification ()
- << " calculated, in the view "
- << Identification () << ", by the structure "
- << StructId << " passes into normal mode.\n";
- cout << "Remove " << S1Iterator.Key ()->Identification ()
- << " then display " << StructId << "\n";
- cout << flush;
-#endif
- MyGraphicDriver->EraseStructure
- (MyCView,
- *(Graphic3d_CStructure *)S1Iterator.Key ()->CStructure ());
- MyGraphicDriver->DisplayStructure (
- MyCView,
- *(Graphic3d_CStructure *)MyCOMPUTEDSequence.Value (Index)->CStructure (),
- int (S1Iterator.Key ()->DisplayPriority ())
- );
-
- Display (S1Iterator.Key (), Aspect_TOU_WAIT);
-
- if ((S1Iterator.Key ())->IsHighlighted()) {
- if (! (MyCOMPUTEDSequence.Value (Index))->IsHighlighted()) {
- (MyCOMPUTEDSequence.Value (Index))->SetHighlightColor
- ((S1Iterator.Key ())->HighlightColor ());
- (MyCOMPUTEDSequence.Value (Index))->GraphicHighlight (Aspect_TOHM_COLOR);
- }
- }
- }
- else {
- // Else is impossible
- // Degenerated mode was activated before display of the
- // structure. So the structure was displayed in the
- // degenerated mode, but the calculated structure didn't exist.
- // It is calculated.
-
- // Compute + Validation
-Handle(Graphic3d_Structure) AStructure = (S1Iterator.Key ());
-#ifdef OLD
-Handle(Graphic3d_Structure) TheStructure = AStructure->Compute (this);
-#else
-Handle(Graphic3d_Structure) TheStructure;
-TColStd_Array2OfReal ATrsf (0, 3, 0, 3);
- AStructure->Transform (ATrsf);
- if (Index != 0) {
-TColStd_Array2OfReal Ident (0, 3, 0, 3);
-Standard_Integer ii, jj;
- for (ii=0; ii<=3; ii++)
- for (jj=0; jj<=3; jj++)
- Ident (ii, jj) = (ii == jj ? 1.0 : 0.0);
- TheStructure = MyCOMPUTEDSequence.Value (Index);
- TheStructure->SetTransform (Ident, Graphic3d_TOC_REPLACE);
- if (AStructure->IsTransformed ()) {
- AStructure->Compute (this, ATrsf, TheStructure);
- }
- else {
- AStructure->Compute (this, TheStructure);
- }
- }
- else {
- if (AStructure->IsTransformed ()) {
- TheStructure = AStructure->Compute (this, ATrsf);
- }
- else {
- TheStructure = AStructure->Compute (this);
- }
- }
-#endif
- TheStructure->SetHLRValidation (Standard_True);
-
-// Return type of visualisation of the view
-Visual3d_TypeOfVisualization ViewType = MyContext.Visualization ();
-
-// Of which type will be the computed ?
-Standard_Boolean ComputeWireframe = ((ViewType == Visual3d_TOV_WIREFRAME) &&
- ((S1Iterator.Key ())->ComputeVisual () != Graphic3d_TOS_SHADING));
-
-Standard_Boolean ComputeShading = ((ViewType == Visual3d_TOV_SHADING) &&
- ((S1Iterator.Key ())->ComputeVisual () != Graphic3d_TOS_WIREFRAME));
-
- if (ComputeWireframe)
- TheStructure->SetVisual (Graphic3d_TOS_WIREFRAME);
- if (ComputeShading)
- TheStructure->SetVisual (Graphic3d_TOS_SHADING);
-
- if ((S1Iterator.Key ())->IsHighlighted()) {
- TheStructure->SetHighlightColor
- ((S1Iterator.Key ())->HighlightColor ());
- TheStructure->GraphicHighlight (Aspect_TOHM_COLOR);
- }
-
- // Make range
-Standard_Integer Result = 0;
-Standard_Integer Length = MyTOCOMPUTESequence.Length ();
- // Find structure <S1Iterator.Key ()>
- // in the sequence of structures to be calculated
- StructId = (S1Iterator.Key ())->Identification ();
- for (i=1; i<=Length && Result==0; i++)
- if ((MyTOCOMPUTESequence.Value (i))->Identification () ==
- StructId) Result = i;
- if (Result != 0)
- MyCOMPUTEDSequence.ChangeValue (Result) = TheStructure;
- else {
- // hlhsr and the associated new compute are added
-#ifdef TRACE_LENGTH
- if (MyTOCOMPUTESequence.Length () != MyCOMPUTEDSequence.Length ()) {
- cout << "In Visual3d_View::SetDegenerateModeOff, ";
- cout << "TOCOMPUTE " << MyTOCOMPUTESequence.Length ()
- << " != COMPUTED " << MyCOMPUTEDSequence.Length ()
- << "\n" << flush;
- }
-#endif
- MyTOCOMPUTESequence.Append (S1Iterator.Key ());
- MyCOMPUTEDSequence.Append (TheStructure);
-#ifdef TRACE_LENGTH
- if (MyTOCOMPUTESequence.Length () != MyCOMPUTEDSequence.Length ())
- cout << "\tTOCOMPUTE " << MyTOCOMPUTESequence.Length ()
- << " != COMPUTED " << MyCOMPUTEDSequence.Length ()
- << "\n" << flush;
-#endif
- }
-
- // The degenerated is removed and the calculated is displayed
- MyGraphicDriver->EraseStructure
- (MyCView,
- *(Graphic3d_CStructure *)(S1Iterator.Key ()->CStructure ()));
- MyGraphicDriver->DisplayStructure (
- MyCView,
- *(Graphic3d_CStructure *)TheStructure->CStructure (),
- int (S1Iterator.Key ()->DisplayPriority ())
- );
- }
- }
-
- // S1Iterator.Next () is located on the next structure
- S1Iterator.Next ();
- }
-
- if (MyViewManager->UpdateMode () == Aspect_TOU_ASAP) Update ();
-#endif //G003
-}
-
-Standard_Boolean Visual3d_View::DegenerateModeIsOn () const {
-
- return DegenerateModeIsActive;
-
-}
-
-Handle(Aspect_GraphicDriver) Visual3d_View::GraphicDriver () const {
+const Handle(Graphic3d_GraphicDriver)& Visual3d_View::GraphicDriver () const {
return MyGraphicDriver;
}
-void Visual3d_View::Plot (const Handle(Graphic3d_Plotter)& APlotter) const {
-
-Graphic3d_MapIteratorOfMapOfStructure S1Iterator (MyDisplayedStructure);
-
- while (S1Iterator.More ()) {
-
- if (DegenerateModeIsOn ())
- // As the mode is degenerated the displayed structure
- // is plotted without taking into account if it is calculated or not
- (S1Iterator.Key ())->Plot (APlotter);
- else {
-Standard_Integer Index = IsComputed (S1Iterator.Key ());
- // As the mode is not degenerated the displayed structure
- // is plotted as if it was not calculated, otherwise the
- // associated calculated structure is plotted.
- if (Index == 0)
- (S1Iterator.Key ())->Plot (APlotter);
- else
- (MyCOMPUTEDSequence.Value (Index))->Plot (APlotter);
- }
-
- // S1Iterator.Next () is located on the next structure
- S1Iterator.Next ();
- }
-
+void Visual3d_View::Plot (const Handle(Graphic3d_Plotter)& thePlotter) const
+{
+ for (Graphic3d_MapIteratorOfMapOfStructure S1Iterator (MyDisplayedStructure); S1Iterator.More(); S1Iterator.Next())
+ {
+ Standard_Integer Index = IsComputed (S1Iterator.Key ());
+ // displayed structure is plotted as if it was not calculated
+ if (Index == 0)
+ (S1Iterator.Key ())->Plot (thePlotter);
+ else
+ (MyCOMPUTEDSequence.Value (Index))->Plot (thePlotter);
+ }
}
Standard_Integer Visual3d_View::HaveTheSameOwner (const Handle(Graphic3d_Structure)& AStructure) const {
Standard_Integer Result = 0;
Standard_Integer Length = MyTOCOMPUTESequence.Length ();
- // Find in the sequence of already calculated structures
+ // Find in the sequence of already calculated structures
// 1/ Structure with the same Owner as <AStructure>
// 2/ Which is not <AStructure>
// 3/ COMPUTED which of is valid
}
}
-void Visual3d_View::GetGraduatedTrihedron(/* Names of axes */
- Standard_CString& xname,
- Standard_CString& yname,
- Standard_CString& zname,
- /* Draw names */
- Standard_Boolean& xdrawname,
- Standard_Boolean& ydrawname,
- Standard_Boolean& zdrawname,
- /* Draw values */
- Standard_Boolean& xdrawvalues,
- Standard_Boolean& ydrawvalues,
- Standard_Boolean& zdrawvalues,
- /* Draw grid */
- Standard_Boolean& drawgrid,
- /* Draw axes */
- Standard_Boolean& drawaxes,
- /* Number of splits along axes */
- Standard_Integer& nbx,
- Standard_Integer& nby,
- Standard_Integer& nbz,
- /* Offset for drawing values */
- Standard_Integer& xoffset,
- Standard_Integer& yoffset,
- Standard_Integer& zoffset,
- /* Offset for drawing names of axes */
- Standard_Integer& xaxisoffset,
- Standard_Integer& yaxisoffset,
- Standard_Integer& zaxisoffset,
- /* Draw tickmarks */
- Standard_Boolean& xdrawtickmarks,
- Standard_Boolean& ydrawtickmarks,
- Standard_Boolean& zdrawtickmarks,
- /* Length of tickmarks */
- Standard_Integer& xtickmarklength,
- Standard_Integer& ytickmarklength,
- Standard_Integer& ztickmarklength,
- /* Grid color */
- Quantity_Color& gridcolor,
- /* X name color */
- Quantity_Color& xnamecolor,
- /* Y name color */
- Quantity_Color& ynamecolor,
- /* Z name color */
- Quantity_Color& znamecolor,
- /* X color of axis and values */
- Quantity_Color& xcolor,
- /* Y color of axis and values */
- Quantity_Color& ycolor,
- /* Z color of axis and values */
- Quantity_Color& zcolor,
- /* Name of font for names of axes */
- Standard_CString& fontOfNames,
- /* Style of names of axes */
- OSD_FontAspect& styleOfNames,
- /* Size of names of axes */
- Standard_Integer& sizeOfNames,
- /* Name of font for values */
- Standard_CString& fontOfValues,
- /* Style of values */
- OSD_FontAspect& styleOfValues,
- /* Size of values */
- Standard_Integer& sizeOfValues) const
+Standard_Boolean Visual3d_View::GetGraduatedTrihedron
+ (/* Names of axes */
+ TCollection_ExtendedString& xname,
+ TCollection_ExtendedString& yname,
+ TCollection_ExtendedString& zname,
+ /* Draw names */
+ Standard_Boolean& xdrawname,
+ Standard_Boolean& ydrawname,
+ Standard_Boolean& zdrawname,
+ /* Draw values */
+ Standard_Boolean& xdrawvalues,
+ Standard_Boolean& ydrawvalues,
+ Standard_Boolean& zdrawvalues,
+ /* Draw grid */
+ Standard_Boolean& drawgrid,
+ /* Draw axes */
+ Standard_Boolean& drawaxes,
+ /* Number of splits along axes */
+ Standard_Integer& nbx,
+ Standard_Integer& nby,
+ Standard_Integer& nbz,
+ /* Offset for drawing values */
+ Standard_Integer& xoffset,
+ Standard_Integer& yoffset,
+ Standard_Integer& zoffset,
+ /* Offset for drawing names of axes */
+ Standard_Integer& xaxisoffset,
+ Standard_Integer& yaxisoffset,
+ Standard_Integer& zaxisoffset,
+ /* Draw tickmarks */
+ Standard_Boolean& xdrawtickmarks,
+ Standard_Boolean& ydrawtickmarks,
+ Standard_Boolean& zdrawtickmarks,
+ /* Length of tickmarks */
+ Standard_Integer& xtickmarklength,
+ Standard_Integer& ytickmarklength,
+ Standard_Integer& ztickmarklength,
+ /* Grid color */
+ Quantity_Color& gridcolor,
+ /* Colors of axis names */
+ Quantity_Color& xnamecolor,
+ Quantity_Color& ynamecolor,
+ Quantity_Color& znamecolor,
+ /* Colors of axis and values */
+ Quantity_Color& xcolor,
+ Quantity_Color& ycolor,
+ Quantity_Color& zcolor,
+ /* Name of font for names of axes */
+ TCollection_AsciiString& fontOfNames,
+ /* Style of names of axes */
+ Font_FontAspect& styleOfNames,
+ /* Size of names of axes */
+ Standard_Integer& sizeOfNames,
+ /* Name of font for values */
+ TCollection_AsciiString& fontOfValues,
+ /* Style of values */
+ Font_FontAspect& styleOfValues,
+ /* Size of values */
+ Standard_Integer& sizeOfValues) const
{
- MyGraphicDriver->GetGraduatedTrihedron(MyCView,
- /* Names of axes */
- xname,
- yname,
- zname,
- /* Draw names */
- xdrawname,
- ydrawname,
- zdrawname,
- /* Draw values */
- xdrawvalues,
- ydrawvalues,
- zdrawvalues,
- /* Draw grid */
- drawgrid,
- /* Draw axes */
- drawaxes,
- /* Number of splits along axes */
- nbx,
- nby,
- nbz,
- /* Offset for drawing values */
- xoffset,
- yoffset,
- zoffset,
- /* Offset for drawing names of axes */
- xaxisoffset,
- yaxisoffset,
- zaxisoffset,
- /* Draw tickmarks */
- xdrawtickmarks,
- ydrawtickmarks,
- zdrawtickmarks,
- /* Length of tickmarks */
- xtickmarklength,
- ytickmarklength,
- ztickmarklength,
- /* Grid color */
- gridcolor,
- /* X name color */
- xnamecolor,
- /* Y name color */
- ynamecolor,
- /* Z name color */
- znamecolor,
- /* X color of axis and values */
- xcolor,
- /* Y color of axis and values */
- ycolor,
- /* Z color of axis and values */
- zcolor,
- /* Name of font for names of axes */
- fontOfNames,
- /* Style of names of axes */
- styleOfNames,
- /* Size of names of axes */
- sizeOfNames,
- /* Name of font for values */
- fontOfValues,
- /* Style of values */
- styleOfValues,
- /* Size of values */
- sizeOfValues);
-}
-
-void Visual3d_View::GraduatedTrihedronDisplay(/* Names of axes */
- const Standard_CString xname,
- const Standard_CString yname,
- const Standard_CString zname,
- /* Draw names */
- const Standard_Boolean xdrawname,
- const Standard_Boolean ydrawname,
- const Standard_Boolean zdrawname,
- /* Draw values */
- const Standard_Boolean xdrawvalues,
- const Standard_Boolean ydrawvalues,
- const Standard_Boolean zdrawvalues,
- /* Draw grid */
- const Standard_Boolean drawgrid,
- /* Draw axes */
- const Standard_Boolean drawaxes,
- /* Number of splits along axes */
- const Standard_Integer nbx,
- const Standard_Integer nby,
- const Standard_Integer nbz,
- /* Offset for drawing values */
- const Standard_Integer xoffset,
- const Standard_Integer yoffset,
- const Standard_Integer zoffset,
- /* Offset for drawing names of axes */
- const Standard_Integer xaxisoffset,
- const Standard_Integer yaxisoffset,
- const Standard_Integer zaxisoffset,
- /* Draw tickmarks */
- const Standard_Boolean xdrawtickmarks,
- const Standard_Boolean ydrawtickmarks,
- const Standard_Boolean zdrawtickmarks,
- /* Length of tickmarks */
- const Standard_Integer xtickmarklength,
- const Standard_Integer ytickmarklength,
- const Standard_Integer ztickmarklength,
- /* Grid color */
- const Quantity_Color& gridcolor,
- /* X name color */
- const Quantity_Color& xnamecolor,
- /* Y name color */
- const Quantity_Color& ynamecolor,
- /* Z name color */
- const Quantity_Color& znamecolor,
- /* X color of axis and values */
- const Quantity_Color& xcolor,
- /* Y color of axis and values */
- const Quantity_Color& ycolor,
- /* Z color of axis and values */
- const Quantity_Color& zcolor,
- /* Name of font for names of axes */
- const Standard_CString fontOfNames,
- /* Style of names of axes */
- const OSD_FontAspect styleOfNames,
- /* Size of names of axes */
- const Standard_Integer sizeOfNames,
- /* Name of font for values */
- const Standard_CString fontOfValues,
- /* Style of values */
- const OSD_FontAspect styleOfValues,
- /* Size of values */
- const Standard_Integer sizeOfValues)
+ if (!MyGTrihedron.ptrVisual3dView)
+ return Standard_False;
+
+ /* Names of axes */
+ xname = MyGTrihedron.xname;
+ yname = MyGTrihedron.yname;
+ zname = MyGTrihedron.zname;
+ /* Draw names */
+ xdrawname = MyGTrihedron.xdrawname;
+ ydrawname = MyGTrihedron.ydrawname;
+ zdrawname = MyGTrihedron.zdrawname;
+ /* Draw values */
+ xdrawvalues = MyGTrihedron.xdrawvalues;
+ ydrawvalues = MyGTrihedron.ydrawvalues;
+ zdrawvalues = MyGTrihedron.zdrawvalues;
+ /* Draw grid */
+ drawgrid = MyGTrihedron.drawgrid;
+ /* Draw axes */
+ drawaxes = MyGTrihedron.drawaxes;
+ /* Number of splits along axes */
+ nbx = MyGTrihedron.nbx;
+ nby = MyGTrihedron.nby;
+ nbz = MyGTrihedron.nbz;
+ /* Offset for drawing values */
+ xoffset = MyGTrihedron.xoffset;
+ yoffset = MyGTrihedron.yoffset;
+ zoffset = MyGTrihedron.zoffset;
+ /* Offset for drawing names of axes */
+ xaxisoffset = MyGTrihedron.xaxisoffset;
+ yaxisoffset = MyGTrihedron.yaxisoffset;
+ zaxisoffset = MyGTrihedron.zaxisoffset;
+ /* Draw tickmarks */
+ xdrawtickmarks = MyGTrihedron.xdrawtickmarks;
+ ydrawtickmarks = MyGTrihedron.ydrawtickmarks;
+ zdrawtickmarks = MyGTrihedron.zdrawtickmarks;
+ /* Length of tickmarks */
+ xtickmarklength = MyGTrihedron.xtickmarklength;
+ ytickmarklength = MyGTrihedron.ytickmarklength;
+ ztickmarklength = MyGTrihedron.ztickmarklength;
+ /* Grid color */
+ gridcolor = MyGTrihedron.gridcolor;
+ /* Colors of axis names */
+ xnamecolor = MyGTrihedron.xnamecolor;
+ ynamecolor = MyGTrihedron.ynamecolor;
+ znamecolor = MyGTrihedron.znamecolor;
+ /* Colors of axis and values */
+ xcolor = MyGTrihedron.xcolor;
+ ycolor = MyGTrihedron.ycolor;
+ zcolor = MyGTrihedron.zcolor;
+ /* Name of font for names of axes */
+ fontOfNames = MyGTrihedron.fontOfNames;
+ /* Style of names of axes */
+ styleOfNames = MyGTrihedron.styleOfNames;
+ /* Size of names of axes */
+ sizeOfNames = MyGTrihedron.sizeOfNames;
+ /* Name of font for values */
+ fontOfValues = MyGTrihedron.fontOfValues;
+ /* Style of values */
+ styleOfValues = MyGTrihedron.styleOfValues;
+ /* Size of values */
+ sizeOfValues = MyGTrihedron.sizeOfValues;
+
+ return Standard_True;
+}
+
+void Visual3d_View::GraduatedTrihedronDisplay
+ (/* Names of axes */
+ const TCollection_ExtendedString &xname,
+ const TCollection_ExtendedString &yname,
+ const TCollection_ExtendedString &zname,
+ /* Draw names */
+ const Standard_Boolean xdrawname,
+ const Standard_Boolean ydrawname,
+ const Standard_Boolean zdrawname,
+ /* Draw values */
+ const Standard_Boolean xdrawvalues,
+ const Standard_Boolean ydrawvalues,
+ const Standard_Boolean zdrawvalues,
+ /* Draw grid */
+ const Standard_Boolean drawgrid,
+ /* Draw axes */
+ const Standard_Boolean drawaxes,
+ /* Number of splits along axes */
+ const Standard_Integer nbx,
+ const Standard_Integer nby,
+ const Standard_Integer nbz,
+ /* Offset for drawing values */
+ const Standard_Integer xoffset,
+ const Standard_Integer yoffset,
+ const Standard_Integer zoffset,
+ /* Offset for drawing names of axes */
+ const Standard_Integer xaxisoffset,
+ const Standard_Integer yaxisoffset,
+ const Standard_Integer zaxisoffset,
+ /* Draw tickmarks */
+ const Standard_Boolean xdrawtickmarks,
+ const Standard_Boolean ydrawtickmarks,
+ const Standard_Boolean zdrawtickmarks,
+ /* Length of tickmarks */
+ const Standard_Integer xtickmarklength,
+ const Standard_Integer ytickmarklength,
+ const Standard_Integer ztickmarklength,
+ /* Grid color */
+ const Quantity_Color& gridcolor,
+ /* Colors of axis names */
+ const Quantity_Color& xnamecolor,
+ const Quantity_Color& ynamecolor,
+ const Quantity_Color& znamecolor,
+ /* Colors of axis and values */
+ const Quantity_Color& xcolor,
+ const Quantity_Color& ycolor,
+ const Quantity_Color& zcolor,
+ /* Name of font for names of axes */
+ const TCollection_AsciiString &fontOfNames,
+ /* Style of names of axes */
+ const Font_FontAspect styleOfNames,
+ /* Size of names of axes */
+ const Standard_Integer sizeOfNames,
+ /* Name of font for values */
+ const TCollection_AsciiString &fontOfValues,
+ /* Style of values */
+ const Font_FontAspect styleOfValues,
+ /* Size of values */
+ const Standard_Integer sizeOfValues)
{
- CALL_DEF_GRADUATEDTRIHEDRON cubic;
- cubic.ptrVisual3dView = this;
- cubic.cbCubicAxes = SetMinMaxValuesCallback;
- MyGraphicDriver->GraduatedTrihedronDisplay(MyCView,
- cubic,
- /* Names of axes */
- xname,
- yname,
- zname,
- /* Draw names */
- xdrawname,
- ydrawname,
- zdrawname,
- /* Draw values */
- xdrawvalues,
- ydrawvalues,
- zdrawvalues,
- /* Draw grid */
- drawgrid,
- /* Draw axes */
- drawaxes,
- /* Number of splits along axes */
- nbx,
- nby,
- nbz,
- /* Offset for drawing values */
- xoffset,
- yoffset,
- zoffset,
- /* Offset for drawing names of axes */
- xaxisoffset,
- yaxisoffset,
- zaxisoffset,
- /* Draw tickmarks */
- xdrawtickmarks,
- ydrawtickmarks,
- zdrawtickmarks,
- /* Length of tickmarks */
- xtickmarklength,
- ytickmarklength,
- ztickmarklength,
- /* Grid color */
- gridcolor,
- /* X name color */
- xnamecolor,
- /* Y name color */
- ynamecolor,
- /* Z name color */
- znamecolor,
- /* X color of axis and values */
- xcolor,
- /* Y color of axis and values */
- ycolor,
- /* Z color of axis and values */
- zcolor,
- /* Name of font for names of axes */
- fontOfNames,
- /* Style of names of axes */
- styleOfNames,
- /* Size of names of axes */
- sizeOfNames,
- /* Name of font for values */
- fontOfValues,
- /* Style of values */
- styleOfValues,
- /* Size of values */
- sizeOfValues);
+ /* Names of axes */
+ MyGTrihedron.xname = xname;
+ MyGTrihedron.yname = yname;
+ MyGTrihedron.zname = zname;
+ /* Draw names */
+ MyGTrihedron.xdrawname = xdrawname;
+ MyGTrihedron.ydrawname = ydrawname;
+ MyGTrihedron.zdrawname = zdrawname;
+ /* Draw values */
+ MyGTrihedron.xdrawvalues = xdrawvalues;
+ MyGTrihedron.ydrawvalues = ydrawvalues;
+ MyGTrihedron.zdrawvalues = zdrawvalues;
+ /* Draw grid */
+ MyGTrihedron.drawgrid = drawgrid;
+ /* Draw axes */
+ MyGTrihedron.drawaxes = drawaxes;
+ /* Number of splits along axes */
+ MyGTrihedron.nbx = nbx;
+ MyGTrihedron.nby = nby;
+ MyGTrihedron.nbz = nbz;
+ /* Offset for drawing values */
+ MyGTrihedron.xoffset = xoffset;
+ MyGTrihedron.yoffset = yoffset;
+ MyGTrihedron.zoffset = zoffset;
+ /* Offset for drawing names of axes */
+ MyGTrihedron.xaxisoffset = xaxisoffset;
+ MyGTrihedron.yaxisoffset = yaxisoffset;
+ MyGTrihedron.zaxisoffset = zaxisoffset;
+ /* Draw tickmarks */
+ MyGTrihedron.xdrawtickmarks = xdrawtickmarks;
+ MyGTrihedron.ydrawtickmarks = ydrawtickmarks;
+ MyGTrihedron.zdrawtickmarks = zdrawtickmarks;
+ /* Length of tickmarks */
+ MyGTrihedron.xtickmarklength = xtickmarklength;
+ MyGTrihedron.ytickmarklength = ytickmarklength;
+ MyGTrihedron.ztickmarklength = ztickmarklength;
+ /* Grid color */
+ MyGTrihedron.gridcolor = gridcolor;
+ /* Colors of axis names */
+ MyGTrihedron.xnamecolor = xnamecolor;
+ MyGTrihedron.ynamecolor = ynamecolor;
+ MyGTrihedron.znamecolor = znamecolor;
+ /* Colors of axis and values */
+ MyGTrihedron.xcolor = xcolor;
+ MyGTrihedron.ycolor = ycolor;
+ MyGTrihedron.zcolor = zcolor;
+ /* Name of font for names of axes */
+ MyGTrihedron.fontOfNames = fontOfNames;
+ /* Style of names of axes */
+ MyGTrihedron.styleOfNames = styleOfNames;
+ /* Size of names of axes */
+ MyGTrihedron.sizeOfNames = sizeOfNames;
+ /* Name of font for values */
+ MyGTrihedron.fontOfValues = fontOfValues;
+ /* Style of values */
+ MyGTrihedron.styleOfValues = styleOfValues;
+ /* Size of values */
+ MyGTrihedron.sizeOfValues = sizeOfValues;
+
+ MyGTrihedron.ptrVisual3dView = this;
+ MyGTrihedron.cbCubicAxes = SetMinMaxValuesCallback;
+ MyGraphicDriver->GraduatedTrihedronDisplay(MyCView,MyGTrihedron);
}
void Visual3d_View::GraduatedTrihedronErase()
{
+ MyGTrihedron.ptrVisual3dView = NULL;
MyGraphicDriver->GraduatedTrihedronErase(MyCView);
}
return maxplane;
}
-#ifdef IMP140100
-Handle(Visual3d_ViewManager) Visual3d_View::ViewManager() const {
-
- return MyPtrViewManager;
+Handle(Visual3d_ViewManager) Visual3d_View::ViewManager() const
+{
+ return MyPtrViewManager;
}
-#endif
-
-#ifdef G003
-void Visual3d_View :: SetComputedMode ( const Standard_Boolean aMode ) {
- if ( ( (aMode && ComputedModeIsActive) ||
- (!aMode && !ComputedModeIsActive)
- ) || DegenerateModeIsOn ()
- ) return;
+void Visual3d_View :: SetComputedMode ( const Standard_Boolean aMode )
+{
+ if ((aMode && ComputedModeIsActive) ||
+ (!aMode && !ComputedModeIsActive))
+ {
+ return;
+ }
Graphic3d_MapIteratorOfMapOfStructure S1Iterator ( MyDisplayedStructure );
Visual3d_TypeOfAnswer Answer;
Standard_Integer StructId;
Standard_Integer i = MyDisplayedStructure.Extent ();
-
- if ( !( ComputedModeIsActive = aMode ) ) {
+ ComputedModeIsActive = aMode;
+ if (!ComputedModeIsActive) {
while ( S1Iterator.More () ) {
return Visual3d_TOBM_DISABLE;
} // end Visual3d_View :: BackFacingModel
-#endif // G003
void Visual3d_View::EnableDepthTest( const Standard_Boolean enable ) const
{
-#ifdef BUC61044
MyGraphicDriver->SetDepthTestEnabled( MyCView, enable );
-#endif
}
Standard_Boolean Visual3d_View::IsDepthTestEnabled() const
{
-#ifdef BUC61044
return MyGraphicDriver->IsDepthTestEnabled( MyCView );
-#else
- return Standard_True;
-#endif
}
void Visual3d_View::ReadDepths(const Standard_Integer x,
theWidth, theHeight );
}
-Standard_Boolean Visual3d_View::BufferDump (Image_CRawBufferData& theBuffer)
+Standard_Boolean Visual3d_View::BufferDump (Image_PixMap& theImage,
+ const Graphic3d_BufferType& theBufferType)
{
- return MyGraphicDriver->BufferDump( MyCView, theBuffer);
+ return MyGraphicDriver->BufferDump (MyCView, theImage, theBufferType);
}
void Visual3d_View::EnableGLLight( const Standard_Boolean enable ) const
{
-#ifdef BUC61045
MyGraphicDriver->SetGLLightEnabled( MyCView, enable );
-#endif
}
Standard_Boolean Visual3d_View::IsGLLightEnabled() const
{
-#ifdef BUC61045
return MyGraphicDriver->IsGLLightEnabled( MyCView );
-#else
- return Standard_True;
-#endif
}
-void Visual3d_View::Export( const Standard_CString FileName,
- const Graphic3d_ExportFormat Format,
- const Graphic3d_SortType aSortType,
- const Standard_Real Precision,
- const Standard_Address ProgressBarFunc,
- const Standard_Address ProgressObject ) const
+Standard_Boolean Visual3d_View::Export (const Standard_CString theFileName,
+ const Graphic3d_ExportFormat theFormat,
+ const Graphic3d_SortType theSortType,
+ const Standard_Real thePrecision,
+ const Standard_Address theProgressBarFunc,
+ const Standard_Address theProgressObject) const
+{
+ Handle(Visual3d_Layer) anUnderLayer = MyViewManager->UnderLayer();
+ Handle(Visual3d_Layer) anOverLayer = MyViewManager->OverLayer();
+
+ Aspect_CLayer2d anOverCLayer;
+ Aspect_CLayer2d anUnderCLayer;
+ anOverCLayer.ptrLayer = anUnderCLayer.ptrLayer = NULL;
+
+ if (!anOverLayer.IsNull())
+ anOverCLayer = anOverLayer->CLayer();
+ if (!anUnderLayer.IsNull())
+ anUnderCLayer = anUnderLayer->CLayer();
+
+ Standard_Integer aWidth, aHeight;
+ Window()->Size (aWidth, aHeight);
+
+ return MyGraphicDriver->Export (theFileName, theFormat, theSortType,
+ aWidth, aHeight, MyCView, anUnderCLayer, anOverCLayer,
+ thePrecision, theProgressBarFunc, theProgressObject);
+}
+
+//=======================================================================
+//function : AddZLayer
+//purpose :
+//=======================================================================
+
+void Visual3d_View::AddZLayer (const Standard_Integer theLayerId)
{
- Handle( Visual3d_Layer ) AnUnderLayer = MyViewManager->UnderLayer(),
- AnOverLayer = MyViewManager->OverLayer();
+ MyGraphicDriver->AddZLayer (MyCView, theLayerId);
+}
- Aspect_CLayer2d OverCLayer;
- Aspect_CLayer2d UnderCLayer;
- OverCLayer.ptrLayer = UnderCLayer.ptrLayer = NULL;
+//=======================================================================
+//function : RemoveZLayer
+//purpose :
+//=======================================================================
- if( !AnOverLayer.IsNull() )
- OverCLayer = AnOverLayer->CLayer();
- if( !AnUnderLayer.IsNull() )
- UnderCLayer = AnUnderLayer->CLayer();
+void Visual3d_View::RemoveZLayer (const Standard_Integer theLayerId)
+{
+ MyGraphicDriver->RemoveZLayer (MyCView, theLayerId);
+}
- Standard_Integer W, H;
- Window()->Size( W, H );
+//=======================================================================
+//function : ChangeZLayer
+//purpose :
+//=======================================================================
- MyGraphicDriver->Export( FileName, Format, aSortType, W, H, MyCView, UnderCLayer, OverCLayer,
- Precision, ProgressBarFunc, ProgressObject );
+void Visual3d_View::ChangeZLayer (const Handle(Graphic3d_Structure)& theStructure,
+ const Standard_Integer theLayerId)
+{
+ MyGraphicDriver->ChangeZLayer (
+ (*(Graphic3d_CStructure*)theStructure->CStructure()), MyCView, theLayerId);
}