26#include <Inventor/C/errors/debugerror.h>
27#include "Inventor/Qt/SoQtRenderArea.h"
28#include <Inventor/Qt/viewers/SoQtExaminerViewer.h>
29#include "Inventor/nodes/SoNode.h"
30#include <Inventor/actions/SoLineHighlightRenderAction.h>
39 std::vector<VP1ExaminerViewer*>::iterator
it,
itE;
48 m_d->itE =
m_d->renderareas.end();
56 m_d->it =
m_d->renderareas.begin();
60 ra->setAutoRedraw(
false);
66 SoLineHighlightRenderAction * trick =
new SoLineHighlightRenderAction();
67 SoLineHighlightRenderAction * trick2 =
new SoLineHighlightRenderAction();
68 ra->setGLRenderAction(trick);
69 ra->setOverlayGLRenderAction(trick2);
85 m_d->it =
m_d->renderareas.begin();
87 (*(
m_d->it))->setAutoRedraw(enable);
89 IVP1ChannelWidget::setUpdatesEnabled(enable);
97 message(
"Error - tried to register NULL render area!");
103 m_d->renderareas.push_back(ra);
104 m_d->itE =
m_d->renderareas.end();
109 if (ra->getParentWidget()&&ra->getWidget())
110 ra->getParentWidget()->setFocusProxy(ra->getWidget());
117 m_d->it =
m_d->renderareas.begin();
120 if (ra->getTypeId().isDerivedFrom(SoQtViewer::getClassTypeId())) {
122 if (ra->getTypeId().isDerivedFrom(SoQtExaminerViewer::getClassTypeId())) {
123 if (
static_cast<SoQtExaminerViewer*
>(ra)->isAnimating())
124 static_cast<SoQtExaminerViewer*
>(ra)->stopAnimating();
136 VP1Msg::messageVerbose(
"(currently, we are not using the values - transp: "+QString::number(transp)+
" - width: "+QString::number(
width)+
")");
154 QPixmap pm(geometry().size());
158 painter.drawPixmap(0,0,this->grab ( ));
160 m_d->it =
m_d->renderareas.begin();
163 QWidget * ra_w = ra->getNormalWidget();
166 message(
"Error rendering scene to QPixmap!");
169 QPoint pos = ra_w->mapTo(
this, QPoint(0,0) );
171 painter.drawPixmap(pos.x(),pos.y(),pmra);
183 QByteArray byteArray;
184 QBuffer buffer(&byteArray);
185 buffer.open(QIODevice::WriteOnly);
186 QDataStream out(&buffer);
197 QList<int> transptypes;
198 m_d->it =
m_d->renderareas.begin();
218 buffer.open(QIODevice::ReadOnly);
219 QDataStream
state(&buffer);
223 if (version!=0&&version!=1) {
224 message(
"Warning: State data in .vp1 file is in wrong format - ignoring!");
228 QByteArray basestate;
238 QList<int> transptypes;
239 state >> transptypes;
240 if (transptypes.count()!=
static_cast<int>(
m_d->renderareas.size())) {
241 message(
"Warning: State data in .vp1 file is in wrong format - ignoring!");
245 m_d->it =
m_d->renderareas.begin();
static void abortAnyCurrentZoom(SoCamera *camera)
virtual void setSceneGraph(SoNode *)
virtual SoNode * getSceneGraph()
static void messageVerbose(const QString &)
static void ensureInitLineWidthAndPointSize(SoQtRenderArea *)
static QPixmap renderToPixmap(VP1ExaminerViewer *ra, int pixels_x, int pixels_y, bool transparent_background=false, double actualRenderedSizeFact=1.0)
static SoGLRenderAction::TransparencyType intToTransparencyType(int)
static int transparencyTypeToInt(SoGLRenderAction::TransparencyType)