Adaption of FreeCAD to QuarterWidget
-removes all soqtviewer references -create a quarter adaptor class which implements missing functionality -adopts freecad code to make use of SoRenderManager and changed View3DInventorViewer interface
This commit is contained in:
@@ -53,7 +53,6 @@
|
||||
# include <Inventor/events/SoEvent.h>
|
||||
# include <Inventor/fields/SoSFString.h>
|
||||
# include <Inventor/fields/SoSFColor.h>
|
||||
# include <Inventor/Qt/SoQtBasic.h>
|
||||
#endif
|
||||
# include <QStackedWidget>
|
||||
|
||||
@@ -74,7 +73,6 @@
|
||||
#include "SoFCVectorizeSVGAction.h"
|
||||
|
||||
// build in Inventor
|
||||
#include "Inventor/Qt/viewers/SoQtExaminerViewer.h"
|
||||
#include <Inventor/nodes/SoPerspectiveCamera.h>
|
||||
#include <Inventor/nodes/SoOrthographicCamera.h>
|
||||
|
||||
@@ -112,15 +110,29 @@ View3DInventor::View3DInventor(Gui::Document* pcDocument, QWidget* parent, Qt::W
|
||||
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View");
|
||||
hGrp->Attach(this);
|
||||
|
||||
//anti aliasing settings
|
||||
QGLFormat f;
|
||||
switch( hGrp->GetInt("AntiAliasing",0) ) {
|
||||
case View3DInventorViewer::MSAA2x:
|
||||
f.setSampleBuffers(true);
|
||||
f.setSamples(2);
|
||||
break;
|
||||
case View3DInventorViewer::MSAA4x:
|
||||
f.setSampleBuffers(true);
|
||||
f.setSamples(4);
|
||||
break;
|
||||
case View3DInventorViewer::MSAA8x:
|
||||
f.setSampleBuffers(true);
|
||||
f.setSamples(8);
|
||||
break;
|
||||
case View3DInventorViewer::None:
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
||||
// create the inventor widget and set the defaults
|
||||
#if !defined (NO_USE_QT_MDI_AREA)
|
||||
#if SOQT_MAJOR_VERSION > 1 || (SOQT_MAJOR_VERSION == 1 && SOQT_MINOR_VERSION >= 5)
|
||||
// #0000282: Window gets smaller on loading files
|
||||
// #0001028: Main window resized when a document is opened
|
||||
_viewer = new View3DInventorViewer(this);
|
||||
#else
|
||||
_viewer = new View3DInventorViewer(0);
|
||||
#endif
|
||||
#if !defined (NO_USE_QT_MDI_AREA)
|
||||
_viewer = new View3DInventorViewer(f,this);
|
||||
_viewer->setDocument(this->_pcDocument);
|
||||
stack->addWidget(_viewer->getWidget());
|
||||
// http://forum.freecadweb.org/viewtopic.php?f=3&t=6055&sid=150ed90cbefba50f1e2ad4b4e6684eba
|
||||
@@ -131,7 +143,7 @@ View3DInventor::View3DInventor(Gui::Document* pcDocument, QWidget* parent, Qt::W
|
||||
//_viewer->getGLWidget()->setAttribute(Qt::WA_NoMousePropagation);
|
||||
setCentralWidget(stack);
|
||||
#else
|
||||
_viewer = new View3DInventorViewer(this);
|
||||
_viewer = new View3DInventorViewer(f,this);
|
||||
_viewer->setDocument(this->_pcDocument);
|
||||
#endif
|
||||
// apply the user settings
|
||||
@@ -144,7 +156,6 @@ View3DInventor::View3DInventor(Gui::Document* pcDocument, QWidget* parent, Qt::W
|
||||
OnChange(*hGrp,"BackgroundColor3");
|
||||
OnChange(*hGrp,"BackgroundColor4");
|
||||
OnChange(*hGrp,"UseBackgroundColorMid");
|
||||
OnChange(*hGrp,"AntiAliasing");
|
||||
OnChange(*hGrp,"ShowFPS");
|
||||
OnChange(*hGrp,"Orthographic");
|
||||
OnChange(*hGrp,"HeadlightColor");
|
||||
@@ -322,7 +333,7 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
|
||||
_viewer->navigationStyle()->setZoomStep(val);
|
||||
}
|
||||
else if (strcmp(Reason,"EyeDistance") == 0) {
|
||||
_viewer->setStereoOffset(rGrp.GetFloat("EyeDistance",5.0));
|
||||
_viewer->getSoRenderManager()->setStereoOffset(rGrp.GetFloat("EyeDistance",5.0));
|
||||
}
|
||||
else if (strcmp(Reason,"CornerCoordSystem") == 0) {
|
||||
_viewer->setFeedbackVisibility(rGrp.GetBool("CornerCoordSystem",true));
|
||||
@@ -333,9 +344,6 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
|
||||
else if (strcmp(Reason,"Gradient") == 0) {
|
||||
_viewer->setGradientBackground((rGrp.GetBool("Gradient",true)));
|
||||
}
|
||||
else if (strcmp(Reason,"AntiAliasing") == 0) {
|
||||
_viewer->setAntiAliasingMode(View3DInventorViewer::AntiAliasing(rGrp.GetInt("AntiAliasing",0)));
|
||||
}
|
||||
else if (strcmp(Reason,"ShowFPS") == 0) {
|
||||
_viewer->setEnabledFPSCounter(rGrp.GetBool("ShowFPS",false));
|
||||
}
|
||||
@@ -377,7 +385,7 @@ void View3DInventor::OnChange(ParameterGrp::SubjectType &rCaller,ParameterGrp::M
|
||||
r2 = ((col2 >> 24) & 0xff) / 255.0; g2 = ((col2 >> 16) & 0xff) / 255.0; b2 = ((col2 >> 8) & 0xff) / 255.0;
|
||||
r3 = ((col3 >> 24) & 0xff) / 255.0; g3 = ((col3 >> 16) & 0xff) / 255.0; b3 = ((col3 >> 8) & 0xff) / 255.0;
|
||||
r4 = ((col4 >> 24) & 0xff) / 255.0; g4 = ((col4 >> 16) & 0xff) / 255.0; b4 = ((col4 >> 8) & 0xff) / 255.0;
|
||||
_viewer->setBackgroundColor(SbColor(r1, g1, b1));
|
||||
_viewer->setBackgroundColor(QColor::fromRgbF(r1, g1, b1));
|
||||
if (rGrp.GetBool("UseBackgroundColorMid",false) == false)
|
||||
_viewer->setGradientBackgroundColor(SbColor(r2, g2, b2), SbColor(r3, g3, b3));
|
||||
else
|
||||
@@ -399,7 +407,7 @@ void View3DInventor::onUpdate(void)
|
||||
Base::Console().Log("Acti: Gui::View3DInventor::onUpdate()");
|
||||
#endif
|
||||
update();
|
||||
_viewer->render();
|
||||
_viewer->redraw();
|
||||
}
|
||||
|
||||
void View3DInventor::viewAll()
|
||||
@@ -527,9 +535,9 @@ void View3DInventor::print(QPrinter* printer)
|
||||
void View3DInventor::previewFromFramebuffer(const QRect& rect, QImage& img)
|
||||
{
|
||||
QGLFramebufferObject fbo(rect.width(), rect.height(), QGLFramebufferObject::Depth);
|
||||
const SbColor col = _viewer->getBackgroundColor();
|
||||
const QColor col = _viewer->backgroundColor();
|
||||
bool on = _viewer->hasGradientBackground();
|
||||
_viewer->setBackgroundColor(SbColor(1.0f,1.0f,1.0f));
|
||||
_viewer->setBackgroundColor(QColor(255,255,255));
|
||||
_viewer->setGradientBackground(false);
|
||||
_viewer->renderToFramebuffer(&fbo);
|
||||
_viewer->setBackgroundColor(col);
|
||||
@@ -553,51 +561,27 @@ bool View3DInventor::onMsg(const char* pMsg, const char** ppReturn)
|
||||
else if(strcmp("ViewSelection",pMsg) == 0) {
|
||||
_viewer->viewSelection();
|
||||
return true;
|
||||
// comment out on older Inventor
|
||||
#if SOQT_MAJOR_VERSION > 1 || (SOQT_MAJOR_VERSION == 1 && SOQT_MINOR_VERSION >= 2)
|
||||
}
|
||||
else if(strcmp("SetStereoRedGreen",pMsg) == 0 ) {
|
||||
_viewer->setStereoType(SoQtViewer::STEREO_ANAGLYPH);
|
||||
_viewer->setProperty("StereoMode", Quarter::SoQTQuarterAdaptor::ANAGLYPH);
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoQuadBuff",pMsg) == 0 ) {
|
||||
_viewer->setStereoType(SoQtViewer::STEREO_QUADBUFFER );
|
||||
_viewer->setProperty("StereoMode", Quarter::SoQTQuarterAdaptor::QUAD_BUFFER );
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoInterleavedRows",pMsg) == 0 ) {
|
||||
_viewer->setStereoType(SoQtViewer::STEREO_INTERLEAVED_ROWS );
|
||||
_viewer->setProperty("StereoMode", Quarter::SoQTQuarterAdaptor::INTERLEAVED_ROWS );
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoInterleavedColumns",pMsg) == 0 ) {
|
||||
_viewer->setStereoType(SoQtViewer::STEREO_INTERLEAVED_COLUMNS );
|
||||
_viewer->setProperty("StereoMode", Quarter::SoQTQuarterAdaptor::INTERLEAVED_COLUMNS );
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoOff",pMsg) == 0 ) {
|
||||
_viewer->setStereoType(SoQtViewer::STEREO_NONE );
|
||||
_viewer->setProperty("StereoMode", Quarter::SoQTQuarterAdaptor::MONO );
|
||||
return true;
|
||||
#else
|
||||
}
|
||||
else if(strcmp("SetStereoRedGreen",pMsg) == 0 ) {
|
||||
Base::Console().Warning("Use SoQt 1.2.x or later!\n");
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoQuadBuff",pMsg) == 0 ) {
|
||||
Base::Console().Warning("Use SoQt 1.2.x or later!\n");
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoInterleavedRows",pMsg) == 0 ) {
|
||||
Base::Console().Warning("Use SoQt 1.2.x or later!\n");
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoInterleavedColumns",pMsg) == 0 ) {
|
||||
Base::Console().Warning("Use SoQt 1.2.x or later!\n");
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("SetStereoOff",pMsg) == 0 ) {
|
||||
Base::Console().Warning("Use SoQt 1.2.x or later!\n");
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if(strcmp("Example1",pMsg) == 0 ) {
|
||||
SoSeparator * root = new SoSeparator;
|
||||
Texture3D(root);
|
||||
@@ -617,7 +601,7 @@ bool View3DInventor::onMsg(const char* pMsg, const char** ppReturn)
|
||||
return true;
|
||||
}
|
||||
else if(strcmp("GetCamera",pMsg) == 0 ) {
|
||||
SoCamera * Cam = _viewer->getCamera();
|
||||
SoCamera * Cam = _viewer->getSoRenderManager()->getCamera();
|
||||
if (!Cam) return false;
|
||||
*ppReturn = SoFCDB::writeNodesToString(Cam).c_str();
|
||||
return true;
|
||||
@@ -766,7 +750,7 @@ bool View3DInventor::onHasMsg(const char* pMsg) const
|
||||
|
||||
bool View3DInventor::setCamera(const char* pCamera)
|
||||
{
|
||||
SoCamera * CamViewer = _viewer->getCamera();
|
||||
SoCamera * CamViewer = _viewer->getSoRenderManager()->getCamera();
|
||||
if (!CamViewer) {
|
||||
throw Base::Exception("No camera set so far...");
|
||||
}
|
||||
@@ -785,7 +769,7 @@ bool View3DInventor::setCamera(const char* pCamera)
|
||||
if (Cam->getTypeId() != CamViewer->getTypeId())
|
||||
{
|
||||
_viewer->setCameraType(Cam->getTypeId());
|
||||
CamViewer = _viewer->getCamera();
|
||||
CamViewer = _viewer->getSoRenderManager()->getCamera();
|
||||
}
|
||||
|
||||
SoPerspectiveCamera * CamViewerP = 0;
|
||||
|
||||
Reference in New Issue
Block a user