Resolved issue #819. Use OpenGL as render for view.
--HG-- branch : develop
This commit is contained in:
parent
3d377bcbfd
commit
368c3a871a
|
@ -47,6 +47,7 @@
|
|||
- [#808] New feature. Global line width option.
|
||||
- [#814] Make "\" valid character.
|
||||
- [#818] Improve Piece path validation. Check uniqueness.
|
||||
- [#819] Use OpenGL as render for view.
|
||||
|
||||
# Version 0.5.1
|
||||
- [#683] Tool Seam allowance's dialog is off screen on small resolutions.
|
||||
|
|
|
@ -228,7 +228,8 @@ ISYSTEM += \
|
|||
-isystem "$$[QT_INSTALL_HEADERS]/QtSvg" \
|
||||
-isystem "$$[QT_INSTALL_HEADERS]/QtNetwork" \
|
||||
-isystem "$$[QT_INSTALL_HEADERS]/QtTest" \
|
||||
-isystem "$$[QT_INSTALL_HEADERS]/QtConcurrent"
|
||||
-isystem "$$[QT_INSTALL_HEADERS]/QtConcurrent" \
|
||||
-isystem "$$[QT_INSTALL_HEADERS]/QtOpenGL"
|
||||
} else {
|
||||
ISYSTEM += \
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtWidgets.framework/Headers/" \
|
||||
|
@ -250,7 +251,9 @@ ISYSTEM += \
|
|||
-isystem "$$[QT_INSTALL_LIBS]/QtTest.framework/Headers/" \
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtTest.framework/Versions/5/Headers/" \
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtConcurrent.framework/Headers/" \
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtConcurrent.framework/Versions/5/Headers/"
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtConcurrent.framework/Versions/5/Headers/" \
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtOpenGL.framework/Headers/" \
|
||||
-isystem "$$[QT_INSTALL_LIBS]/QtOpenGL.framework/Versions/5/Headers/"
|
||||
}
|
||||
|
||||
# Usefull GCC warnings keys.
|
||||
|
|
5
dist/OBS_debian/debian.control
vendored
5
dist/OBS_debian/debian.control
vendored
|
@ -8,14 +8,15 @@ Build-Depends: debhelper (>= 8.0.0),
|
|||
g++ (>= 4.7.0),
|
||||
qt5-default (>= 5.2.0),
|
||||
qttools5-dev-tools (>= 5.2.0),
|
||||
libqt5xmlpatterns5-dev (>= 5.2.0)
|
||||
libqt5xmlpatterns5-dev (>= 5.2.0),
|
||||
libqt5opengl5-dev (>= 5.2.0)
|
||||
Standards-Version: 3.9.5
|
||||
Homepage: https://valentinaproject.bitbucket.io/
|
||||
Vcs-Browser: https://bitbucket.org/dismine/valentina
|
||||
|
||||
Package: valentina
|
||||
Architecture: i386 amd64
|
||||
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.2.0) | libqt5core5 (>= 5.2.0), libqt5gui5 (>= 5.2.0) | libqt5gui5-gles (>= 5.2.0), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.2.0), libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.2.0), libqt5xmlpatterns5 (>= 5.2.0), libqt5concurrent5(>= 5.2.0), libstdc++6 (>= 4.6), xpdf
|
||||
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.2.0) | libqt5core5 (>= 5.2.0), libqt5gui5 (>= 5.2.0) | libqt5gui5-gles (>= 5.2.0), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.2.0), libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.2.0), libqt5xmlpatterns5 (>= 5.2.0), libqt5concurrent5(>= 5.2.0), libqt5opengl5 (>= 5.2.0), libstdc++6 (>= 4.6), xpdf
|
||||
Conflicts: seamly2d
|
||||
Description: Pattern making program.
|
||||
Valentina is a cross-platform patternmaking program which allows designers
|
||||
|
|
5
dist/debian/control
vendored
5
dist/debian/control
vendored
|
@ -8,14 +8,15 @@ Build-Depends: debhelper (>= 8.0.0),
|
|||
g++ (>= 4.7.0),
|
||||
qt5-default (>= 5.2.0),
|
||||
qttools5-dev-tools (>= 5.2.0),
|
||||
libqt5xmlpatterns5-dev (>= 5.2.0)
|
||||
libqt5xmlpatterns5-dev (>= 5.2.0),
|
||||
libqt5opengl5-dev (>= 5.2.0)
|
||||
Standards-Version: 3.9.5
|
||||
Homepage: https://valentinaproject.bitbucket.io/
|
||||
Vcs-Browser: https://bitbucket.org/dismine/valentina
|
||||
|
||||
Package: valentina
|
||||
Architecture: i386 amd64
|
||||
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.2.0) | libqt5core5 (>= 5.2.0), libqt5gui5 (>= 5.2.0) | libqt5gui5-gles (>= 5.2.0), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.2.0), libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.2.0), libqt5xmlpatterns5 (>= 5.2.0), libqt5concurrent5(>= 5.2.0), libstdc++6 (>= 4.6), xpdf
|
||||
Depends: libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libqt5core5a (>= 5.2.0) | libqt5core5 (>= 5.2.0), libqt5gui5 (>= 5.2.0) | libqt5gui5-gles (>= 5.2.0), libqt5printsupport5 (>= 5.2.0), libqt5svg5 (>= 5.2.0), libqt5widgets5 (>= 5.2.0), libqt5xml5 (>= 5.2.0), libqt5xmlpatterns5 (>= 5.2.0), libqt5concurrent5(>= 5.2.0), libqt5opengl5 (>= 5.2.0), libstdc++6 (>= 4.6), xpdf
|
||||
Conflicts: seamly2d
|
||||
Description: Pattern making program.
|
||||
Valentina is a cross-platform patternmaking program which allows designers
|
||||
|
|
|
@ -35,6 +35,7 @@ CDEPEND="
|
|||
dev-qt/qtprintsupport:5
|
||||
dev-qt/qtnetwork:5
|
||||
dev-qt/qtconcurrent:5
|
||||
dev-qt/qtopengl:5
|
||||
app-text/poppler"
|
||||
RDEPEND="${CDEPEND}"
|
||||
DEPEND="${CDEPEND}
|
||||
|
|
1
dist/rpm/valentina.spec
vendored
1
dist/rpm/valentina.spec
vendored
|
@ -18,6 +18,7 @@ BuildRequires: pkgconfig(Qt5PrintSupport)
|
|||
BuildRequires: pkgconfig(Qt5Widgets)
|
||||
BuildRequires: pkgconfig(Qt5Xml)
|
||||
BuildRequires: pkgconfig(Qt5Concurrent)
|
||||
BuildRequires: pkgconfig(Qt5OpenGL)
|
||||
BuildRequires: qt5-qtxmlpatterns-devel >= 5.2.0
|
||||
BuildRequires: qt5-qtsvg-devel >= 5.2.0
|
||||
BuildRequires: qt5-qttools-devel >= 5.2.0
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
# File with common stuff for whole project
|
||||
include(../../../common.pri)
|
||||
|
||||
QT += core gui widgets network xml xmlpatterns printsupport svg concurrent
|
||||
QT += core gui widgets network xml xmlpatterns printsupport svg concurrent opengl
|
||||
|
||||
# Name of binary file
|
||||
TARGET = tape
|
||||
|
|
|
@ -65,6 +65,7 @@ PreferencesPatternPage::PreferencesPatternPage(QWidget *parent)
|
|||
VSettings *settings = qApp->ValentinaSettings();
|
||||
|
||||
ui->graphOutputCheck->setChecked(settings->GetGraphicalOutput());
|
||||
ui->checkBoxOpenGLRender->setChecked(settings->IsOpenGLRender());
|
||||
ui->doubleSpinBoxCurveApproximation->setValue(settings->GetCurveApproximationScale());
|
||||
ui->doubleSpinBoxCurveApproximation->setMinimum(minCurveApproximationScale);
|
||||
ui->doubleSpinBoxCurveApproximation->setMaximum(maxCurveApproximationScale);
|
||||
|
@ -118,10 +119,10 @@ void PreferencesPatternPage::Apply()
|
|||
|
||||
// Scene antialiasing
|
||||
settings->SetGraphicalOutput(ui->graphOutputCheck->isChecked());
|
||||
settings->SetOpenGLRender(ui->checkBoxOpenGLRender->isChecked());
|
||||
settings->SetCurveApproximationScale(ui->doubleSpinBoxCurveApproximation->value());
|
||||
settings->SetLineWidth(UnitConvertor(ui->doubleSpinBoxLineWidth->value(), m_oldLineUnit, Unit::Mm));
|
||||
qApp->getSceneView()->setRenderHint(QPainter::Antialiasing, ui->graphOutputCheck->isChecked());
|
||||
qApp->getSceneView()->setRenderHint(QPainter::SmoothPixmapTransform, ui->graphOutputCheck->isChecked());
|
||||
qApp->getSceneView()->SetAntialiasing(ui->graphOutputCheck->isChecked());
|
||||
|
||||
/* Maximum number of commands in undo stack may only be set when the undo stack is empty, since setting it on a
|
||||
* non-empty stack might delete the command at the current index. Calling setUndoLimit() on a non-empty stack
|
||||
|
|
|
@ -7,19 +7,19 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>381</width>
|
||||
<height>705</height>
|
||||
<height>727</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string notr="true">Pattern</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Graphical output</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="graphOutputCheck">
|
||||
<property name="text">
|
||||
|
@ -27,6 +27,20 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="checkBoxOpenGLRender">
|
||||
<property name="toolTip">
|
||||
<string>Use OpenGL to render a scene.
|
||||
This option will take an affect after restart.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use OpenGL render</string>
|
||||
</property>
|
||||
<property name="tristate">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
<item>
|
||||
|
|
|
@ -3741,9 +3741,7 @@ void MainWindow::ReadSettings()
|
|||
restoreState(settings->GetToolbarsState(), APP_VERSION);
|
||||
|
||||
// Scene antialiasing
|
||||
const bool graphOutputValue = settings->GetGraphicalOutput();
|
||||
ui->view->setRenderHint(QPainter::Antialiasing, graphOutputValue);
|
||||
ui->view->setRenderHint(QPainter::SmoothPixmapTransform, graphOutputValue);
|
||||
ui->view->SetAntialiasing(settings->GetGraphicalOutput());
|
||||
|
||||
// Stack limit
|
||||
qApp->getUndoStack()->setUndoLimit(settings->GetUndoCount());
|
||||
|
|
|
@ -11,7 +11,7 @@ include(../../../common.pri)
|
|||
|
||||
# Here we don't see "network" library, but, i think, "printsupport" depend on this library, so we still need this
|
||||
# library in installer.
|
||||
QT += core gui widgets xml svg printsupport xmlpatterns concurrent
|
||||
QT += core gui widgets xml svg printsupport xmlpatterns concurrent opengl
|
||||
|
||||
# Use winextras only for Windows 7+
|
||||
win32:greaterThan(QT_MAJOR_VERSION, 4):greaterThan(QT_MINOR_VERSION, 6) {
|
||||
|
@ -300,6 +300,7 @@ win32:*g++* {
|
|||
$$[QT_INSTALL_BINS]/icuuc*.dll \ # Different name for different Qt releases
|
||||
$$[QT_INSTALL_BINS]/Qt5Core.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Concurrent.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5OpenGL.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Gui.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5Network.dll \
|
||||
$$[QT_INSTALL_BINS]/Qt5PrintSupport.dll \
|
||||
|
|
|
@ -53,6 +53,7 @@ const QString settingPathsPattern = QStringLiteral("paths/pattern");
|
|||
const QString settingPathsLayout = QStringLiteral("paths/layout");
|
||||
|
||||
const QString settingPatternGraphicalOutput = QStringLiteral("pattern/graphicalOutput");
|
||||
const QString settingPatternUseOpenGLRender = QStringLiteral("pattern/useOpenGLRender");
|
||||
const QString settingPatternKnownMaterials = QStringLiteral("pattern/knownMaterials");
|
||||
const QString settingPatternRememberMaterials = QStringLiteral("pattern/rememberMaterials");
|
||||
|
||||
|
@ -152,6 +153,18 @@ void VSettings::SetGraphicalOutput(const bool &value)
|
|||
setValue(settingPatternGraphicalOutput, value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
bool VSettings::IsOpenGLRender() const
|
||||
{
|
||||
return value(settingPatternUseOpenGLRender, 0).toBool();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VSettings::SetOpenGLRender(bool value)
|
||||
{
|
||||
setValue(settingPatternUseOpenGLRender, value);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
qreal VSettings::GetLayoutPaperHeight() const
|
||||
{
|
||||
|
|
|
@ -68,6 +68,9 @@ public:
|
|||
bool GetGraphicalOutput() const;
|
||||
void SetGraphicalOutput(const bool &value);
|
||||
|
||||
bool IsOpenGLRender() const;
|
||||
void SetOpenGLRender(bool value);
|
||||
|
||||
// Layout settings
|
||||
qreal GetLayoutPaperHeight() const;
|
||||
void SetLayoutPaperHeight(qreal value);
|
||||
|
|
|
@ -48,10 +48,18 @@
|
|||
#include <QDesktopWidget>
|
||||
#include <QThread>
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
# include <QOpenGLWidget>
|
||||
#else
|
||||
# include <QGLWidget>
|
||||
#endif
|
||||
|
||||
#include "../vmisc/def.h"
|
||||
#include "../vmisc/vmath.h"
|
||||
#include "vmaingraphicsscene.h"
|
||||
#include "vsimplecurve.h"
|
||||
#include "../vmisc/vabstractapplication.h"
|
||||
#include "../vmisc/vsettings.h"
|
||||
|
||||
const int GraphicsViewZoom::duration = 300;
|
||||
const int GraphicsViewZoom::updateInterval = 40;
|
||||
|
@ -349,17 +357,34 @@ const unsigned long VMainGraphicsView::scrollDelay = 80;
|
|||
*/
|
||||
VMainGraphicsView::VMainGraphicsView(QWidget *parent)
|
||||
: QGraphicsView(parent),
|
||||
zoom(new GraphicsViewZoom(this)),
|
||||
zoom(nullptr),
|
||||
showToolOptions(true),
|
||||
isAllowRubberBand(true),
|
||||
m_ptStartPos(),
|
||||
m_oldCursor(),
|
||||
m_currentCursor(Qt::ArrowCursor)
|
||||
{
|
||||
VSettings *settings = qobject_cast<VSettings *>(qApp->Settings());
|
||||
if (settings && settings->IsOpenGLRender())
|
||||
{
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
|
||||
QOpenGLWidget *viewport = new QOpenGLWidget();
|
||||
QSurfaceFormat fmt;
|
||||
fmt.setSamples(settings->GetGraphicalOutput() ? 10 : 0);
|
||||
viewport->setFormat(fmt);
|
||||
|
||||
setViewport(viewport);
|
||||
#else
|
||||
setViewport(new QGLWidget(QGLFormat(QGL::DoubleBuffer|QGL::SampleBuffers)));
|
||||
#endif
|
||||
}
|
||||
|
||||
zoom = new GraphicsViewZoom(this);
|
||||
|
||||
this->setResizeAnchor(QGraphicsView::AnchorUnderMouse);
|
||||
this->setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
|
||||
this->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
|
||||
this->setInteractive(true);
|
||||
SetAntialiasing(true);
|
||||
|
||||
connect(zoom, &GraphicsViewZoom::zoomed, this, [this](){emit ScaleChanged(transform().m11());});
|
||||
}
|
||||
|
@ -603,6 +628,15 @@ void VMainGraphicsView::setCurrentCursorShape()
|
|||
m_currentCursor = viewport()->cursor().shape();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VMainGraphicsView::SetAntialiasing(bool value)
|
||||
{
|
||||
setRenderHint(QPainter::Antialiasing, value);
|
||||
setRenderHint(QPainter::SmoothPixmapTransform, value);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------------------------------------
|
||||
void VMainGraphicsView::setShowToolOptions(bool value)
|
||||
{
|
||||
|
|
|
@ -113,7 +113,6 @@ class VMainGraphicsView : public QGraphicsView
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
||||
explicit VMainGraphicsView(QWidget *parent = nullptr);
|
||||
void setShowToolOptions(bool value);
|
||||
void AllowRubberBand(bool value);
|
||||
|
@ -131,6 +130,8 @@ public:
|
|||
|
||||
void setCurrentCursorShape();
|
||||
|
||||
void SetAntialiasing(bool value);
|
||||
|
||||
signals:
|
||||
/**
|
||||
* @brief MouseRelease help catch mouse release event.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
# File with common stuff for whole project
|
||||
include(../../../common.pri)
|
||||
|
||||
QT += widgets printsupport
|
||||
QT += widgets printsupport opengl
|
||||
|
||||
# Name of the library
|
||||
TARGET = vwidgets
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += testlib widgets printsupport concurrent
|
||||
QT += testlib widgets printsupport concurrent opengl
|
||||
|
||||
QT -= gui
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core testlib gui printsupport xml xmlpatterns concurrent
|
||||
QT += core testlib gui printsupport xml xmlpatterns concurrent opengl
|
||||
|
||||
TARGET = ValentinaTests
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user