-// Copyright (C) 2014-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2021 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include "QtxActionToolMgr.h"
#include "QtxMultiAction.h"
-// KERNEL includes
#include <Basics_OCCTVersion.hxx>
// OCC includes
#include <V3d_View.hxx>
#include <Graphic3d_MapIteratorOfMapOfStructure.hxx>
-#if OCC_VERSION_LARGE < 0x07000000
-#include <Visual3d_View.hxx>
-#endif
// QT includes
#include <QImage>
aPixmap->SetTopDown( Standard_True );
const uchar* aImageBytes = anImage.bits();
-
+
+#if OCC_VERSION_LARGE < 0x07050000
for ( int aLine = anImage.height() - 1; aLine >= 0; --aLine ) {
-#if OCC_VERSION_LARGE > 0x06070100
+#else
+ for ( int aLine = 0; aLine < anImage.height(); ++aLine ) {
+#endif
// convert pixels from ARGB to renderer-compatible RGBA
for ( int aByte = 0; aByte < anImage.width(); ++aByte ) {
Image_ColorBGRA& aPixmapBytes = aPixmap->ChangeValue<Image_ColorBGRA>(aLine, aByte);
aPixmapBytes.r() = (Standard_Byte) *aImageBytes++;
aPixmapBytes.a() = (Standard_Byte) *aImageBytes++;
}
-#else
- Image_ColorBGRA* aPixmapBytes = aPixmap->EditData<Image_ColorBGRA>().ChangeRow(aLine);
-
- // convert pixels from ARGB to renderer-compatible RGBA
- for ( int aByte = 0; aByte < anImage.width(); ++aByte ) {
- aPixmapBytes->b() = (Standard_Byte) *aImageBytes++;
- aPixmapBytes->g() = (Standard_Byte) *aImageBytes++;
- aPixmapBytes->r() = (Standard_Byte) *aImageBytes++;
- aPixmapBytes->a() = (Standard_Byte) *aImageBytes++;
- aPixmapBytes++;
- }
-#endif
}
}
return aPixmap;
for ( int i = 0, aNb = aNo2dActions.size(); i < aNb; i++ ) {
anAction = aToolMgr->action( aNo2dActions[i] );
if ( anAction )
+ {
anAction->setEnabled( !is2dMode );
+ anAction->setVisible( !is2dMode );
+ }
}
QAction* aTop = aToolMgr->action( OCCViewer_ViewWindow::TopId );
QtxMultiAction* aMulti = dynamic_cast<QtxMultiAction*>( aTop->parent() );
case OCCViewer_ViewWindow::YZPlane:
aView3d->SetProj (V3d_Xpos);
break;
+ default:
+ break;
}
}
aStructure->IsInfinite() || aStructure->CStructure()->IsForHighlight )
continue;
double aBounds[6];
-#if OCC_VERSION_LARGE > 0x06070100
Bnd_Box aBox = aStructure->MinMaxValues();
aBounds[0] = aBox.IsVoid() ? RealFirst() : aBox.CornerMin().X();
aBounds[2] = aBox.IsVoid() ? RealFirst() : aBox.CornerMin().Y();
aBounds[1] = aBox.IsVoid() ? RealLast() : aBox.CornerMax().X();
aBounds[3] = aBox.IsVoid() ? RealLast() : aBox.CornerMax().Y();
aBounds[5] = aBox.IsVoid() ? RealLast() : aBox.CornerMax().Z();
-#else
- aStructure->MinMaxValues( aBounds[0], aBounds[2], aBounds[4],
- aBounds[1], aBounds[3], aBounds[5] );
-#endif
if ( aBounds[0] > -DBL_MAX && aBounds[1] < DBL_MAX &&
aBounds[2] > -DBL_MAX && aBounds[3] < DBL_MAX &&
return true;
}
+
+bool OCCViewer_Utilities::computeSceneBBCenter( const Handle(V3d_View) theView,
+ double& theX, double& theY, double& theZ )
+{
+ theX = 0, theY = 0, theZ = 0;
+ Bnd_Box aBox = theView->View()->MinMaxValues();
+ if (!aBox.IsVoid())
+ {
+ double Xmin, Ymin, Zmin, Xmax, Ymax, Zmax;
+ aBox.Get (Xmin, Ymin, Zmin, Xmax, Ymax, Zmax);
+ gp_Pnt aPnts[8] =
+ {
+ gp_Pnt (Xmin, Ymin, Zmin), gp_Pnt (Xmin, Ymin, Zmax),
+ gp_Pnt (Xmin, Ymax, Zmin), gp_Pnt (Xmin, Ymax, Zmax),
+ gp_Pnt (Xmax, Ymin, Zmin), gp_Pnt (Xmax, Ymin, Zmax),
+ gp_Pnt (Xmax, Ymax, Zmin), gp_Pnt (Xmax, Ymax, Zmax)
+ };
+
+ for (Standard_Integer i = 0; i < 8; i++)
+ {
+ const gp_Pnt& aCornPnt = aPnts[i];
+ theX += aCornPnt.X();
+ theY += aCornPnt.Y();
+ theZ += aCornPnt.Z();
+ }
+
+ theX /= 8;
+ theY /= 8;
+ theZ /= 8;
+ return true;
+ }
+ return false;
+}