mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 22:50:25 -05:00
Work in progress: Support capturing snapshots with a given size.
This commit is contained in:
1 parent
c2811b1db8
commit
361b4bc3db
9 files changed
+96
-1
No files matched your search
@@ -46,7 +46,7 @@ void RicSnapshotViewToPdfFeature::onActionTriggered( bool isChecked )
|
|||||||
RimViewWindow* viewWindow = RiaGuiApplication::activeViewWindow();
|
RimViewWindow* viewWindow = RiaGuiApplication::activeViewWindow();
|
||||||
if ( !viewWindow )
|
if ( !viewWindow )
|
||||||
{
|
{
|
||||||
RiaLogging::error( "No view window is available, nothing to do" );
|
RiaLogging::error( "No plot window is available, nothing to do" );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -513,6 +513,31 @@ QImage Rim3dView::snapshotWindowContent()
|
|||||||
return QImage();
|
return QImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QImage Rim3dView::captureSnapshot( int width, int height )
|
||||||
|
{
|
||||||
|
QImage image;
|
||||||
|
if ( m_viewer )
|
||||||
|
{
|
||||||
|
QSize orgSize = m_viewer->layoutWidget()->size();
|
||||||
|
|
||||||
|
// adjust for possible display DPI scaling
|
||||||
|
const auto ratio = m_viewer->displayScalingRatio();
|
||||||
|
m_viewer->layoutWidget()->setFixedSize( (int)( 1.0 * width / ratio ), (int)( 1.0 * height / ratio ) );
|
||||||
|
|
||||||
|
image = m_viewer->snapshotImage();
|
||||||
|
|
||||||
|
// reset fixed size and restore original size
|
||||||
|
m_viewer->layoutWidget()->setMinimumSize( 0, 0 );
|
||||||
|
m_viewer->layoutWidget()->setMaximumSize( QWIDGETSIZE_MAX, QWIDGETSIZE_MAX );
|
||||||
|
m_viewer->layoutWidget()->resize( orgSize );
|
||||||
|
}
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ public:
|
|||||||
cvf::ref<caf::DisplayCoordTransform> displayCoordTransform() const override;
|
cvf::ref<caf::DisplayCoordTransform> displayCoordTransform() const override;
|
||||||
virtual std::vector<RimLegendConfig*> legendConfigs() const = 0;
|
virtual std::vector<RimLegendConfig*> legendConfigs() const = 0;
|
||||||
|
|
||||||
|
QImage captureSnapshot( int width, int height ) override;
|
||||||
QImage snapshotWindowContent() override;
|
QImage snapshotWindowContent() override;
|
||||||
void zoomAll() override;
|
void zoomAll() override;
|
||||||
void forceShowWindowOn();
|
void forceShowWindowOn();
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "cafPdmUiToolButtonEditor.h"
|
#include "cafPdmUiToolButtonEditor.h"
|
||||||
|
|
||||||
#include <QPaintDevice>
|
#include <QPaintDevice>
|
||||||
|
#include <QPainter>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
|
|
||||||
#include <cvfAssert.h>
|
#include <cvfAssert.h>
|
||||||
@@ -639,6 +640,25 @@ QImage RimMultiPlot::snapshotWindowContent()
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QImage RimMultiPlot::captureSnapshot( int width, int height )
|
||||||
|
{
|
||||||
|
QImage image;
|
||||||
|
|
||||||
|
if ( m_viewer.isNull() ) return image;
|
||||||
|
|
||||||
|
QSize orgViewSize = m_viewer->size();
|
||||||
|
|
||||||
|
image = captureImage( m_viewer->bookWidget(), width, height );
|
||||||
|
|
||||||
|
m_viewer->resize( orgViewSize );
|
||||||
|
doUpdateLayout();
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -117,6 +117,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
QImage snapshotWindowContent() override;
|
QImage snapshotWindowContent() override;
|
||||||
|
QImage captureSnapshot( int width, int height ) override;
|
||||||
|
|
||||||
QWidget* createViewWidget( QWidget* mainWindowParent ) override;
|
QWidget* createViewWidget( QWidget* mainWindowParent ) override;
|
||||||
void deleteViewWidget() override;
|
void deleteViewWidget() override;
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
#include <QPainter>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
@@ -222,6 +223,39 @@ QImage RimViewWindow::snapshotWindowContent()
|
|||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QImage RimViewWindow::captureSnapshot( int width, int height )
|
||||||
|
{
|
||||||
|
return captureImage( viewWidget(), width, height );
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QImage RimViewWindow::captureImage( QWidget* widget, int width, int height )
|
||||||
|
{
|
||||||
|
if ( !widget ) return QImage();
|
||||||
|
|
||||||
|
QSize orgSize = widget->size();
|
||||||
|
|
||||||
|
widget->setFixedSize( width, height );
|
||||||
|
|
||||||
|
QPixmap pix( width, height );
|
||||||
|
pix.fill( Qt::transparent );
|
||||||
|
|
||||||
|
QPainter painter( &pix );
|
||||||
|
widget->render( &painter );
|
||||||
|
|
||||||
|
// reset fixed size and restore original size
|
||||||
|
widget->setMinimumSize( 0, 0 );
|
||||||
|
widget->setMaximumSize( QWIDGETSIZE_MAX, QWIDGETSIZE_MAX );
|
||||||
|
widget->resize( orgSize );
|
||||||
|
|
||||||
|
return pix.toImage();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ public:
|
|||||||
ads::CDockWidget* dockWidget();
|
ads::CDockWidget* dockWidget();
|
||||||
ads::CDockWidget* createDockWidget();
|
ads::CDockWidget* createDockWidget();
|
||||||
|
|
||||||
|
virtual QImage captureSnapshot( int width, int height );
|
||||||
|
|
||||||
virtual QImage snapshotWindowContent();
|
virtual QImage snapshotWindowContent();
|
||||||
virtual void zoomAll() = 0;
|
virtual void zoomAll() = 0;
|
||||||
|
|
||||||
@@ -99,6 +101,8 @@ protected:
|
|||||||
|
|
||||||
void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
|
void defineObjectEditorAttribute( QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) override;
|
||||||
|
|
||||||
|
QImage captureImage( QWidget* widget, int width, int height );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class RimProject;
|
friend class RimProject;
|
||||||
|
|
||||||
|
|||||||
@@ -797,3 +797,11 @@ void RiuMultiPlotBook::adjustBookFrame()
|
|||||||
{
|
{
|
||||||
m_book->adjustSize();
|
m_book->adjustSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
QWidget* RiuMultiPlotBook::bookWidget()
|
||||||
|
{
|
||||||
|
return m_book;
|
||||||
|
}
|
||||||
@@ -98,6 +98,8 @@ public:
|
|||||||
// The code used to be called from RiuMultiPlotBook::showEvent(), but this caused a crash when a dock widget was hidden and shown again.
|
// The code used to be called from RiuMultiPlotBook::showEvent(), but this caused a crash when a dock widget was hidden and shown again.
|
||||||
void forcePerformUpdate();
|
void forcePerformUpdate();
|
||||||
|
|
||||||
|
QWidget* bookWidget();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void contextMenuEvent( QContextMenuEvent* ) override;
|
void contextMenuEvent( QContextMenuEvent* ) override;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user