diff --git a/Editor/CustomStyle.cpp b/Editor/CustomStyle.cpp new file mode 100644 index 0000000..3fdc888 --- /dev/null +++ b/Editor/CustomStyle.cpp @@ -0,0 +1,39 @@ +/* + This file is part of EqualizerAPO, a system-wide equalizer. + Copyright (C) 2016 Jonas Thedering + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ +#include "CustomStyle.h" +#include "Editor/helpers/DPIHelper.h" + +CustomStyle::CustomStyle(QStyle* style) + : QProxyStyle(style) +{ +} + +int CustomStyle::pixelMetric(QStyle::PixelMetric metric, const QStyleOption* option, const QWidget* widget) const +{ + switch (metric) + { + case PM_ToolBarIconSize: + case PM_TabBarIconSize: + return DPIHelper::scale(16); + case PM_DockWidgetTitleBarButtonMargin: + return DPIHelper::scale(baseStyle()->pixelMetric(metric, option, widget)); + default: + return baseStyle()->pixelMetric(metric, option, widget); + } +} diff --git a/Editor/CustomStyle.h b/Editor/CustomStyle.h new file mode 100644 index 0000000..ac2193b --- /dev/null +++ b/Editor/CustomStyle.h @@ -0,0 +1,32 @@ +/* + This file is part of EqualizerAPO, a system-wide equalizer. + Copyright (C) 2016 Jonas Thedering + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#pragma once + +#include + +class CustomStyle : public QProxyStyle +{ + Q_OBJECT + +public: + CustomStyle(QStyle* style); + + int pixelMetric(PixelMetric metric, const QStyleOption* option, const QWidget* widget) const override; +}; diff --git a/Editor/Editor.pro b/Editor/Editor.pro index 4226fd9..1e12787 100644 --- a/Editor/Editor.pro +++ b/Editor/Editor.pro @@ -112,7 +112,9 @@ SOURCES += main.cpp\ ../parser/StringOperators.cpp \ AnalysisThread.cpp \ widgets/ExponentialSpinBox.cpp \ - FilterTableMimeData.cpp + FilterTableMimeData.cpp \ + helpers/DPIHelper.cpp \ + CustomStyle.cpp HEADERS += \ ../helpers/LogHelper.h \ @@ -213,7 +215,9 @@ HEADERS += \ ../parser/StringOperators.h \ AnalysisThread.h \ widgets/ExponentialSpinBox.h \ - FilterTableMimeData.h + FilterTableMimeData.h \ + helpers/DPIHelper.h \ + CustomStyle.h FORMS += \ guis/PreampFilterGUI.ui \ diff --git a/Editor/Editor.qrc b/Editor/Editor.qrc index 8ef7765..b8f9f64 100644 --- a/Editor/Editor.qrc +++ b/Editor/Editor.qrc @@ -1,27 +1,27 @@ - icons/arrow_right.png - icons/16x16/document-open.png - icons/16x16/document-new.png - icons/16x16/document-save-as.png - icons/16x16/document-save.png - icons/16x16/edit-copy.png - icons/16x16/edit-cut.png - icons/16x16/edit-delete.png - icons/16x16/edit-paste.png - icons/16x16/accessories-text-editor.png - icons/16x16/list-add-green.png - icons/16x16/list-remove-red.png - icons/invert_response.png - icons/normalize_response.png - icons/power_off.png - icons/power_on.png - icons/16x16/applications-graphics-rotated.png - icons/16x16/format-justify-fill-rotated.png translations/Editor_de.qm translations/qtbase_de.qm - icons/16x16/go-up.png - icons/reset_response.png - icons/resize_corner.png + icons/document-open.ico + icons/document-save.ico + icons/accessories-text-editor.ico + icons/applications-graphics-rotated.ico + icons/document-new.ico + icons/document-save-as.ico + icons/edit-copy.ico + icons/edit-cut.ico + icons/edit-delete.ico + icons/edit-paste.ico + icons/format-justify-fill-rotated.ico + icons/go-up.ico + icons/list-add-green.ico + icons/list-remove-red.ico + icons/arrow_right.ico + icons/power_off.ico + icons/power_on.ico + icons/invert_response.ico + icons/normalize_response.ico + icons/reset_response.ico + icons/resize_corner.ico diff --git a/Editor/FilterTable.cpp b/Editor/FilterTable.cpp index 65aebb8..0fe1330 100644 --- a/Editor/FilterTable.cpp +++ b/Editor/FilterTable.cpp @@ -48,6 +48,7 @@ #include "guis/IncludeFilterGUIFactory.h" #include "guis/GraphicEQFilterGUIFactory.h" #include "guis/ConvolutionFilterGUIFactory.h" +#include "Editor/helpers/DPIHelper.h" #include "helpers/StringHelper.h" #include "helpers/LogHelper.h" #include "helpers/ChannelHelper.h" @@ -61,9 +62,9 @@ FilterTable::FilterTable(MainWindow* mainWindow, QWidget* parent) { gridLayout = new QGridLayout(this); - QPixmap pixmap(QStringLiteral(":/icons/arrow_right.png")); + QIcon icon(QStringLiteral(":/icons/arrow_right.ico")); insertArrow = new QLabel(this); - insertArrow->setPixmap(pixmap); + insertArrow->setPixmap(icon.pixmap(DPIHelper::scale(QSize(24, 15)))); insertArrow->setVisible(false); factories.append(new ExpressionFilterGUIFactory); @@ -195,13 +196,13 @@ void FilterTable::updateGuis() propagateChannels(); QToolBar* toolBar = new QToolBar; - toolBar->setIconSize(QSize(16, 16)); + toolBar->setIconSize(DPIHelper::scale(QSize(16, 16))); QWidget* spacer = new QWidget; - spacer->setFixedWidth(25); + spacer->setFixedWidth(DPIHelper::scale(25)); toolBar->addWidget(spacer); - QAction* addAction = new QAction(QIcon(":/icons/16x16/list-add-green.png"), tr("Add filter"), toolBar); + QAction* addAction = new QAction(QIcon(":/icons/list-add-green.ico"), tr("Add filter"), toolBar); addAction->setCheckable(true); connect(addAction, SIGNAL(triggered()), this, SLOT(addActionTriggered())); toolBar->addAction(addAction); @@ -887,6 +888,9 @@ bool FilterTable::eventFilter(QObject* obj, QEvent* event) { if (type == QEvent::Wheel) { + QWheelEvent* wheelEvent = (QWheelEvent*)event; + scrollStartPoint = wheelEvent->globalPos(); + QWidget* widget = qobject_cast(obj); if (widget != NULL) { @@ -901,7 +905,7 @@ bool FilterTable::eventFilter(QObject* obj, QEvent* event) { QMouseEvent* mouseEvent = (QMouseEvent*)event; - if ((mouseEvent->globalPos() - scrollStartPoint).manhattanLength() > QApplication::startDragDistance()) + if ((mouseEvent->globalPos() - scrollStartPoint).manhattanLength() > DPIHelper::scale(30)) scrollingNow = false; } } diff --git a/Editor/FilterTableRow.cpp b/Editor/FilterTableRow.cpp index be76456..ee094b1 100644 --- a/Editor/FilterTableRow.cpp +++ b/Editor/FilterTableRow.cpp @@ -22,6 +22,7 @@ #include #include +#include "Editor/helpers/DPIHelper.h" #include "FilterTableRow.h" #include "ui_FilterTableRow.h" @@ -30,6 +31,7 @@ FilterTableRow::FilterTableRow(FilterTable* table, int number, FilterTable::Item ui(new Ui::FilterTableRow) { ui->setupUi(this); + ui->labelNumber->setMinimumWidth(DPIHelper::scale(25)); this->table = table; this->item = item; diff --git a/Editor/FilterTableRow.ui b/Editor/FilterTableRow.ui index 1407704..b2d396f 100644 --- a/Editor/FilterTableRow.ui +++ b/Editor/FilterTableRow.ui @@ -147,7 +147,7 @@ - :/icons/16x16/list-add-green.png:/icons/16x16/list-add-green.png + :/icons/list-add-green.ico:/icons/list-add-green.ico Add @@ -156,7 +156,7 @@ - :/icons/16x16/list-remove-red.png:/icons/16x16/list-remove-red.png + :/icons/list-remove-red.ico:/icons/list-remove-red.ico Remove @@ -168,7 +168,7 @@ - :/icons/16x16/accessories-text-editor.png:/icons/16x16/accessories-text-editor.png + :/icons/accessories-text-editor.ico:/icons/accessories-text-editor.ico Edit text diff --git a/Editor/MainWindow.cpp b/Editor/MainWindow.cpp index 17e945d..0620cd6 100644 --- a/Editor/MainWindow.cpp +++ b/Editor/MainWindow.cpp @@ -40,6 +40,7 @@ #include "helpers/LogHelper.h" #include "helpers/ChannelHelper.h" #include "Editor/helpers/GUIChannelHelper.h" +#include "Editor/helpers/DPIHelper.h" #include "version.h" #include "FilterTable.h" #include "MainWindow.h" @@ -64,6 +65,7 @@ MainWindow::MainWindow(QDir configDir, QWidget* parent) } ui->setupUi(this); + resize(DPIHelper::scale(QSize(1024, 768))); LogHelper::set(stderr, true, false, false); @@ -961,12 +963,17 @@ void MainWindow::loadPreferences() ui->startFromComboBox->setCurrentIndex(settings.value("analysis/startFrom").toInt()); ui->analysisChannelComboBox->setCurrentText(settings.value("analysis/channel").toString()); ui->resolutionSpinBox->setValue(settings.value("analysis/resolution", 65536).toInt()); - double zoomX = settings.value("analysis/zoomX", 1.0).toDouble(); - double zoomY = settings.value("analysis/zoomY", 1.0).toDouble(); - if (zoomX != 1.0 || zoomY != 1.0) - analysisPlotScene->setZoom(zoomX, zoomY); - int scrollX = settings.value("analysis/scrollX", round(analysisPlotScene->hzToX(20))).toInt(); - int scrollY = settings.value("analysis/scrollY", round(analysisPlotScene->dbToY(22))).toInt(); + double zoomX = DPIHelper::scaleZoom(settings.value("analysis/zoomX", 1.0).toDouble()); + double zoomY = DPIHelper::scaleZoom(settings.value("analysis/zoomY", 1.0).toDouble()); + analysisPlotScene->setZoom(zoomX, zoomY); + bool ok; + int scrollX = DPIHelper::scale(settings.value("analysis/scrollX").toDouble(&ok)); + if (!ok) + scrollX = round(analysisPlotScene->hzToX(20)); + int scrollY = DPIHelper::scale(settings.value("analysis/scrollY").toDouble(&ok)); + if (!ok) + scrollY = round(analysisPlotScene->dbToY(22)); + ui->graphicsView->setScrollOffsets(scrollX, scrollY); QVariant openFilesValue = settings.value("openFiles"); @@ -1013,13 +1020,13 @@ void MainWindow::savePreferences() settings.setValue("analysis/startFrom", ui->startFromComboBox->currentIndex()); settings.setValue("analysis/channel", ui->analysisChannelComboBox->currentText()); settings.setValue("analysis/resolution", ui->resolutionSpinBox->value()); - settings.setValue("analysis/zoomX", analysisPlotScene->getZoomX()); - settings.setValue("analysis/zoomY", analysisPlotScene->getZoomY()); + settings.setValue("analysis/zoomX", DPIHelper::invScaleZoom(analysisPlotScene->getZoomX())); + settings.setValue("analysis/zoomY", DPIHelper::invScaleZoom(analysisPlotScene->getZoomY())); QScrollBar* hScrollBar = ui->graphicsView->horizontalScrollBar(); - int value = hScrollBar->value(); + double value = DPIHelper::invScale(hScrollBar->value()); settings.setValue("analysis/scrollX", value); QScrollBar* vScrollBar = ui->graphicsView->verticalScrollBar(); - value = vScrollBar->value(); + value = DPIHelper::invScale(vScrollBar->value()); settings.setValue("analysis/scrollY", value); QStringList fileList; diff --git a/Editor/MainWindow.ui b/Editor/MainWindow.ui index 8926c33..e485160 100644 --- a/Editor/MainWindow.ui +++ b/Editor/MainWindow.ui @@ -48,7 +48,7 @@ 0 0 1024 - 21 + 26 @@ -562,7 +562,7 @@ - :/icons/16x16/document-new.png:/icons/16x16/document-new.png + :/icons/document-new.ico:/icons/document-new.ico New @@ -574,7 +574,7 @@ - :/icons/16x16/document-open.png:/icons/16x16/document-open.png + :/icons/document-open.ico:/icons/document-open.ico Open @@ -589,7 +589,7 @@ - :/icons/16x16/document-save.png:/icons/16x16/document-save.png + :/icons/document-save.ico:/icons/document-save.ico Save @@ -604,7 +604,7 @@ - :/icons/16x16/document-save-as.png:/icons/16x16/document-save-as.png + :/icons/document-save-as.ico:/icons/document-save-as.ico Save as... @@ -624,7 +624,7 @@ - :/icons/16x16/edit-cut.png:/icons/16x16/edit-cut.png + :/icons/edit-cut.ico:/icons/edit-cut.ico Cut @@ -636,7 +636,7 @@ - :/icons/16x16/edit-copy.png:/icons/16x16/edit-copy.png + :/icons/edit-copy.ico:/icons/edit-copy.ico Copy @@ -648,7 +648,7 @@ - :/icons/16x16/edit-paste.png:/icons/16x16/edit-paste.png + :/icons/edit-paste.ico:/icons/edit-paste.ico Paste @@ -660,7 +660,7 @@ - :/icons/16x16/edit-delete.png:/icons/16x16/edit-delete.png + :/icons/edit-delete.ico:/icons/edit-delete.ico Delete diff --git a/Editor/guis/BiQuadFilterGUI.cpp b/Editor/guis/BiQuadFilterGUI.cpp index e7fa07a..80f15b4 100644 --- a/Editor/guis/BiQuadFilterGUI.cpp +++ b/Editor/guis/BiQuadFilterGUI.cpp @@ -19,9 +19,11 @@ #define _USE_MATH_DEFINES #include +#include + +#include "Editor/helpers/DPIHelper.h" #include "BiQuadFilterGUI.h" #include "ui_BiQuadFilterGUI.h" -#include static const double dialFreqSteps = 1000; static const double dialFreqMin = 20; @@ -35,6 +37,10 @@ BiQuadFilterGUI::BiQuadFilterGUI(BiQuadFilter* filter) { ui->setupUi(this); + ui->freqDial->setFixedSize(DPIHelper::scale(QSize(100, 66))); + ui->gainDial->setFixedSize(DPIHelper::scale(QSize(100, 66))); + ui->qDial->setFixedSize(DPIHelper::scale(QSize(100, 66))); + ui->typeComboBox->addItem(tr("Peaking filter"), BiQuad::PEAKING); ui->typeComboBox->addItem(tr("Low-pass filter"), BiQuad::LOW_PASS); ui->typeComboBox->addItem(tr("High-pass filter"), BiQuad::HIGH_PASS); diff --git a/Editor/guis/ChannelFilterGUIDialog.cpp b/Editor/guis/ChannelFilterGUIDialog.cpp index 1586a19..3b2f292 100644 --- a/Editor/guis/ChannelFilterGUIDialog.cpp +++ b/Editor/guis/ChannelFilterGUIDialog.cpp @@ -21,6 +21,7 @@ #include #include +#include "Editor/helpers/DPIHelper.h" #include "Editor/helpers/GUIChannelHelper.h" #include "ChannelFilterGUIDialog.h" #include "ui_ChannelFilterGUIDialog.h" @@ -35,6 +36,7 @@ ChannelFilterGUIDialog::ChannelFilterGUIDialog(QWidget* parent, QStringList sele ui(new Ui::ChannelFilterGUIDialog) { ui->setupUi(this); + resize(DPIHelper::scale(QSize(355, 329))); ui->centerCheckBox->setProperty(PROPERTY_POSITION, SPEAKER_FRONT_CENTER); ui->leftCheckBox->setProperty(PROPERTY_POSITION, SPEAKER_FRONT_LEFT); diff --git a/Editor/guis/ChannelFilterGUIDialog.ui b/Editor/guis/ChannelFilterGUIDialog.ui index 7810a87..88637a4 100644 --- a/Editor/guis/ChannelFilterGUIDialog.ui +++ b/Editor/guis/ChannelFilterGUIDialog.ui @@ -203,7 +203,7 @@ - :/icons/16x16/list-remove-red.png:/icons/16x16/list-remove-red.png + :/icons/list-remove-red.ico:/icons/list-remove-red.ico @@ -214,7 +214,7 @@ - :/icons/16x16/list-add-green.png:/icons/16x16/list-add-green.png + :/icons/list-add-green.ico:/icons/list-add-green.ico diff --git a/Editor/guis/ChannelFilterGUIScene.cpp b/Editor/guis/ChannelFilterGUIScene.cpp index f2707d4..afda30d 100644 --- a/Editor/guis/ChannelFilterGUIScene.cpp +++ b/Editor/guis/ChannelFilterGUIScene.cpp @@ -17,6 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "Editor/helpers/DPIHelper.h" #include "ChannelFilterGUIChannelItem.h" #include "ChannelFilterGUIScene.h" @@ -47,7 +48,7 @@ void ChannelFilterGUIScene::load(vector channelNames, QStringList selec channelMap.insert(c, item); if (c != "ALL") - channelMap.insert(QString().setNum(i), item); + channelMap.insert(QString().setNum(i + 1), item); lastItem = item; } @@ -66,7 +67,8 @@ void ChannelFilterGUIScene::load(vector channelNames, QStringList selec item->setSelected(true); } - setSceneRect(itemsBoundingRect().marginsAdded(QMarginsF(2, 2, 2, 2))); + int margin = DPIHelper::scale(4); + setSceneRect(itemsBoundingRect().marginsAdded(QMarginsF(margin, margin, margin, margin))); blockSignals(false); } diff --git a/Editor/guis/CommentFilterGUI.cpp b/Editor/guis/CommentFilterGUI.cpp index 3137998..85eb493 100644 --- a/Editor/guis/CommentFilterGUI.cpp +++ b/Editor/guis/CommentFilterGUI.cpp @@ -17,6 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "Editor/helpers/DPIHelper.h" #include "CommentFilterGUI.h" #include "ui_CommentFilterGUI.h" @@ -35,7 +36,7 @@ CommentFilterGUI::CommentFilterGUI(IFilterGUI* child, bool isComment) ui->horizontalLayout->addWidget(child); ui->actionPowerOn->setChecked(!isComment); - ui->toolBar->setIconSize(QSize(24, 24)); + ui->toolBar->setIconSize(DPIHelper::scale(QSize(24, 24))); ui->toolBar->addAction(ui->actionPowerOn); ui->toolBar->updateMaximumHeight(); diff --git a/Editor/guis/CommentFilterGUI.ui b/Editor/guis/CommentFilterGUI.ui index 3ada669..3053e71 100644 --- a/Editor/guis/CommentFilterGUI.ui +++ b/Editor/guis/CommentFilterGUI.ui @@ -49,8 +49,8 @@ - :/icons/power_off.png - :/icons/power_on.png:/icons/power_off.png + :/icons/power_off.ico + :/icons/power_on.ico:/icons/power_off.ico Power on diff --git a/Editor/guis/ConvolutionFilterGUI.ui b/Editor/guis/ConvolutionFilterGUI.ui index e132f1c..35ec7bd 100644 --- a/Editor/guis/ConvolutionFilterGUI.ui +++ b/Editor/guis/ConvolutionFilterGUI.ui @@ -33,7 +33,7 @@ - :/icons/16x16/document-open.png:/icons/16x16/document-open.png + :/icons/document-open.ico:/icons/document-open.ico diff --git a/Editor/guis/CopyFilterGUI.cpp b/Editor/guis/CopyFilterGUI.cpp index 953a76d..54fc99c 100644 --- a/Editor/guis/CopyFilterGUI.cpp +++ b/Editor/guis/CopyFilterGUI.cpp @@ -18,12 +18,13 @@ */ #include "Editor/widgets/ResizeCorner.h" +#include "Editor/helpers/DPIHelper.h" #include "helpers/ChannelHelper.h" #include "CopyFilterGUIForm.h" #include "CopyFilterGUI.h" #include "ui_CopyFilterGUI.h" -static const int DEFAULT_HEIGHT = 88; +static const double DEFAULT_HEIGHT = 88; using namespace std; @@ -39,7 +40,7 @@ CopyFilterGUI::CopyFilterGUI(CopyFilter* filter, FilterTable* filterTable) ui->form->load(filter->getAssignments()); ResizeCorner* cornerWidget = new ResizeCorner(filterTable, - QSize(0, 50), QSize(0, INT_MAX), + QSize(0, DPIHelper::scale(85)), QSize(0, INT_MAX), [this]() { return QSize(0, ui->scrollArea->height()); }, @@ -167,14 +168,14 @@ void CopyFilterGUI::store(QString& command, QString& parameters) void CopyFilterGUI::loadPreferences(const QVariantMap& prefs) { - ui->scrollArea->setFixedHeight(prefs.value("height", DEFAULT_HEIGHT).toInt()); + ui->scrollArea->setFixedHeight(DPIHelper::scale(prefs.value("height", DEFAULT_HEIGHT).toDouble())); ui->tabWidget->setCurrentIndex(prefs.value("tabIndex", 0).toInt()); } void CopyFilterGUI::storePreferences(QVariantMap& prefs) { - if (ui->scrollArea->height() != DEFAULT_HEIGHT) - prefs.insert("height", ui->scrollArea->height()); + if (DPIHelper::invScale(ui->scrollArea->height()) != DEFAULT_HEIGHT) + prefs.insert("height", DPIHelper::invScale(ui->scrollArea->height())); if (ui->tabWidget->currentIndex() != 0) prefs.insert("tabIndex", ui->tabWidget->currentIndex()); } diff --git a/Editor/guis/CopyFilterGUI.ui b/Editor/guis/CopyFilterGUI.ui index 43afff0..33123af 100644 --- a/Editor/guis/CopyFilterGUI.ui +++ b/Editor/guis/CopyFilterGUI.ui @@ -56,7 +56,7 @@ - :/icons/16x16/applications-graphics-rotated.png:/icons/16x16/applications-graphics-rotated.png + :/icons/applications-graphics-rotated.ico:/icons/applications-graphics-rotated.ico @@ -101,7 +101,7 @@ - :/icons/16x16/format-justify-fill-rotated.png:/icons/16x16/format-justify-fill-rotated.png + :/icons/format-justify-fill-rotated.ico:/icons/format-justify-fill-rotated.ico @@ -138,8 +138,8 @@ 0 0 - 348 - 88 + 380 + 90 diff --git a/Editor/guis/CopyFilterGUIConnectionItem.cpp b/Editor/guis/CopyFilterGUIConnectionItem.cpp index 01dc468..9f3b861 100644 --- a/Editor/guis/CopyFilterGUIConnectionItem.cpp +++ b/Editor/guis/CopyFilterGUIConnectionItem.cpp @@ -23,6 +23,7 @@ #include #include +#include "Editor/helpers/DPIHelper.h" #include "Editor/widgets/ResizingLineEdit.h" #include "CopyFilterGUIChannelItem.h" #include "CopyFilterGUIScene.h" @@ -32,7 +33,6 @@ static const int maxArrowSize = 6; CopyFilterGUIConnectionItem::CopyFilterGUIConnectionItem() { - } CopyFilterGUIConnectionItem::CopyFilterGUIConnectionItem(CopyFilterGUIChannelItem* source, CopyFilterGUIChannelItem* target, double factor, bool isDecibel) @@ -52,7 +52,8 @@ QRectF CopyFilterGUIConnectionItem::boundingRect() const QRectF rect = QGraphicsLineItem::boundingRect(); QPointF p2 = line().p2(); - QRectF rect2 = QRectF(p2.x() - maxArrowSize, p2.y() - maxArrowSize, 2 * maxArrowSize, 2 * maxArrowSize); + int as = DPIHelper::scale(maxArrowSize); + QRectF rect2 = QRectF(p2.x() - as, p2.y() - as, 2 * as, 2 * as); return rect.united(rect2); } @@ -66,7 +67,7 @@ QPainterPath CopyFilterGUIConnectionItem::shape() const double length = line().length(); if (length > 0) { - double offset = min(length, maxArrowSize); + double offset = min(length, DPIHelper::scale(maxArrowSize)); QLineF unit = l.unitVector(); QLineF normal = l.normalVector().unitVector(); QPointF v(unit.dx(), unit.dy()); @@ -92,7 +93,7 @@ QPainterPath CopyFilterGUIConnectionItem::shape() const if (factor != 1.0 || isDecibel) { QFont font; - font.setPixelSize(10); + font.setPixelSize(DPIHelper::scale(10)); QPointF center = (l.p1() + l.p2()) / 2; QString text = QString("%1").arg(factor); if (isDecibel) @@ -130,7 +131,7 @@ void CopyFilterGUIConnectionItem::paint(QPainter* painter, const QStyleOptionGra painter->drawLine(line()); double length = line().length(); - double offset = min(length, maxArrowSize); + double offset = min(length, DPIHelper::scale(maxArrowSize)); QLineF unit = l.unitVector(); QLineF normal = l.normalVector().unitVector(); QPointF v(unit.dx(), unit.dy()); @@ -149,7 +150,7 @@ void CopyFilterGUIConnectionItem::paint(QPainter* painter, const QStyleOptionGra if (factor != 1.0 || isDecibel) { QFont font = painter->font(); - font.setPixelSize(10); + font.setPixelSize(DPIHelper::scale(10)); painter->setFont(font); QPointF center = (l.p1() + l.p2()) / 2; QString text = QString("%1").arg(factor); diff --git a/Editor/guis/CopyFilterGUIForm.cpp b/Editor/guis/CopyFilterGUIForm.cpp index 1346722..bbf276d 100644 --- a/Editor/guis/CopyFilterGUIForm.cpp +++ b/Editor/guis/CopyFilterGUIForm.cpp @@ -91,7 +91,7 @@ void CopyFilterGUIForm::load(vector assignments) QPushButton* addSummandButton = new QPushButton(this); addSummandButton->setText(tr("Add summand")); - addSummandButton->setIcon(QIcon(":/icons/16x16/list-add-green.png")); + addSummandButton->setIcon(QIcon(":/icons/list-add-green.ico")); gridLayout->addWidget(addSummandButton, row, 4); connect(addSummandButton, SIGNAL(pressed()), this, SLOT(addSummand())); @@ -100,7 +100,7 @@ void CopyFilterGUIForm::load(vector assignments) removeButton->setText(tr("Remove assignment")); else removeButton->setText(tr("Remove summand")); - removeButton->setIcon(QIcon(":/icons/16x16/list-remove-red.png")); + removeButton->setIcon(QIcon(":/icons/list-remove-red.ico")); gridLayout->addWidget(removeButton, row, 5); connect(removeButton, SIGNAL(pressed()), this, SLOT(remove())); @@ -113,7 +113,7 @@ void CopyFilterGUIForm::load(vector assignments) QPushButton* addAssignmentButton = new QPushButton(this); addAssignmentButton->setText(tr("Add assignment")); - addAssignmentButton->setIcon(QIcon(":/icons/16x16/list-add-green.png")); + addAssignmentButton->setIcon(QIcon(":/icons/list-add-green.ico")); gridLayout->addWidget(addAssignmentButton, row++, 0, 1, 4); connect(addAssignmentButton, SIGNAL(pressed()), this, SLOT(addAssignment())); } diff --git a/Editor/guis/CopyFilterGUIScene.cpp b/Editor/guis/CopyFilterGUIScene.cpp index 4587510..f50b193 100644 --- a/Editor/guis/CopyFilterGUIScene.cpp +++ b/Editor/guis/CopyFilterGUIScene.cpp @@ -23,6 +23,7 @@ #include #include +#include "Editor/helpers/DPIHelper.h" #include "Editor/widgets/ResizingLineEdit.h" #include "CopyFilterGUIChannelItem.h" #include "CopyFilterGUIScene.h" @@ -102,12 +103,13 @@ void CopyFilterGUIScene::load(const vector& channelNames, vectorsetIcon(QIcon(":/icons/16x16/list-add-green.png")); + addButton->setIcon(QIcon(":/icons/list-add-green.ico")); connect(addButton, SIGNAL(clicked()), this, SLOT(addOutputChannel())); addProxyItem = addWidget(addButton); addProxyItem->setPos(getNextChannelPoint(lastOutputItem, true)); - setSceneRect(itemsBoundingRect().marginsAdded(QMarginsF(2, 2, 2, 2))); + int margin = DPIHelper::scale(4); + setSceneRect(itemsBoundingRect().marginsAdded(QMarginsF(margin, margin, margin, margin))); } std::vector CopyFilterGUIScene::buildAssignments() diff --git a/Editor/guis/DelayFilterGUI.cpp b/Editor/guis/DelayFilterGUI.cpp index 1773d3f..ec58a90 100644 --- a/Editor/guis/DelayFilterGUI.cpp +++ b/Editor/guis/DelayFilterGUI.cpp @@ -17,6 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "Editor/helpers/DPIHelper.h" #include "DelayFilterGUI.h" #include "ui_DelayFilterGUI.h" @@ -29,6 +30,7 @@ DelayFilterGUI::DelayFilterGUI(double delay, bool isMs) { ui->setupUi(this); + ui->delayDial->setFixedSize(DPIHelper::scale(QSize(100, 66))); ui->unitComboBox->setCurrentIndex(isMs ? 0 : 1); ui->delaySpinBox->setValue(delay); } diff --git a/Editor/guis/DeviceFilterGUIDialog.cpp b/Editor/guis/DeviceFilterGUIDialog.cpp index cef7db6..c40633c 100644 --- a/Editor/guis/DeviceFilterGUIDialog.cpp +++ b/Editor/guis/DeviceFilterGUIDialog.cpp @@ -17,6 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "Editor/helpers/DPIHelper.h" #include "DeviceFilterGUIDialog.h" #include "ui_DeviceFilterGUIDialog.h" @@ -29,6 +30,7 @@ DeviceFilterGUIDialog::DeviceFilterGUIDialog(DeviceFilterGUI* gui, DeviceFilterG ui(new Ui::DeviceFilterGUIDialog) { ui->setupUi(this); + resize(DPIHelper::scale(QSize(500, 350))); bool all = pattern.trimmed() == "all"; ui->allDevicesCheckBox->setChecked(all); diff --git a/Editor/guis/GraphicEQFilterGUI.cpp b/Editor/guis/GraphicEQFilterGUI.cpp index fcbd883..26317dc 100644 --- a/Editor/guis/GraphicEQFilterGUI.cpp +++ b/Editor/guis/GraphicEQFilterGUI.cpp @@ -23,14 +23,15 @@ #include #include "helpers/GainIterator.h" +#include "Editor/helpers/DPIHelper.h" #include "Editor/widgets/ResizeCorner.h" #include "Editor/FilterTable.h" #include "GraphicEQFilterGUIView.h" #include "GraphicEQFilterGUI.h" #include "ui_GraphicEQFilterGUI.h" -static const int DEFAULT_TABLE_WIDTH = 119; -static const int DEFAULT_VIEW_HEIGHT = 150; +static const double DEFAULT_TABLE_WIDTH = 119; +static const double DEFAULT_VIEW_HEIGHT = 150; using namespace std; @@ -40,6 +41,10 @@ GraphicEQFilterGUI::GraphicEQFilterGUI(GraphicEQFilter* filter, QString configPa : ui(new Ui::GraphicEQFilterGUI), configPath(configPath) { ui->setupUi(this); + ui->tableWidget->horizontalHeader()->setMinimumSectionSize(DPIHelper::scale(10)); + ui->tableWidget->horizontalHeader()->setDefaultSectionSize(DPIHelper::scale(10)); + ui->tableWidget->verticalHeader()->setMinimumSectionSize(DPIHelper::scale(23)); + ui->tableWidget->verticalHeader()->setDefaultSectionSize(DPIHelper::scale(23)); scene = new GraphicEQFilterGUIScene(ui->graphicsView); ui->graphicsView->setScene(scene); @@ -109,35 +114,39 @@ void GraphicEQFilterGUI::store(QString& command, QString& parameters) void GraphicEQFilterGUI::loadPreferences(const QVariantMap& prefs) { - ui->tableWidget->setFixedWidth(prefs.value("tableWidth", DEFAULT_TABLE_WIDTH).toInt()); - ui->graphicsView->setFixedHeight(prefs.value("viewHeight", DEFAULT_VIEW_HEIGHT).toInt()); - double zoomX = prefs.value("zoomX", 1.0).toDouble(); - double zoomY = prefs.value("zoomY", 1.0).toDouble(); - if (zoomX != 1.0 || zoomY != 1.0) - scene->setZoom(zoomX, zoomY); - int scrollX = prefs.value("scrollX", round(scene->hzToX(20))).toInt(); - int scrollY = prefs.value("scrollY", round(scene->dbToY(22))).toInt(); + ui->tableWidget->setFixedWidth(DPIHelper::scale(prefs.value("tableWidth", DEFAULT_TABLE_WIDTH).toDouble())); + ui->graphicsView->setFixedHeight(DPIHelper::scale(prefs.value("viewHeight", DEFAULT_VIEW_HEIGHT).toDouble())); + double zoomX = DPIHelper::scaleZoom(prefs.value("zoomX", 1.0).toDouble()); + double zoomY = DPIHelper::scaleZoom(prefs.value("zoomY", 1.0).toDouble()); + scene->setZoom(zoomX, zoomY); + bool ok; + int scrollX = DPIHelper::scale(prefs.value("scrollX").toDouble(&ok)); + if (!ok) + scrollX = round(scene->hzToX(20)); + int scrollY = DPIHelper::scale(prefs.value("scrollY").toDouble(&ok)); + if (!ok) + scrollY = round(scene->dbToY(22)); ui->graphicsView->setScrollOffsets(scrollX, scrollY); } void GraphicEQFilterGUI::storePreferences(QVariantMap& prefs) { - if (ui->tableWidget->width() != DEFAULT_TABLE_WIDTH) - prefs.insert("tableWidth", ui->tableWidget->width()); - if (ui->graphicsView->height() != DEFAULT_VIEW_HEIGHT) - prefs.insert("viewHeight", ui->graphicsView->height()); - if (scene->getZoomX() != 1.0) - prefs.insert("zoomX", scene->getZoomX()); - if (scene->getZoomY() != 1.0) - prefs.insert("zoomY", scene->getZoomY()); + if (DPIHelper::invScale(ui->tableWidget->width()) != DEFAULT_TABLE_WIDTH) + prefs.insert("tableWidth", DPIHelper::invScale(ui->tableWidget->width())); + if (DPIHelper::invScale(ui->graphicsView->height()) != DEFAULT_VIEW_HEIGHT) + prefs.insert("viewHeight", DPIHelper::invScale(ui->graphicsView->height())); + if (DPIHelper::invScaleZoom(scene->getZoomX()) != 1.0) + prefs.insert("zoomX", DPIHelper::invScaleZoom(scene->getZoomX())); + if (DPIHelper::invScaleZoom(scene->getZoomY()) != 1.0) + prefs.insert("zoomY", DPIHelper::invScaleZoom(scene->getZoomY())); QScrollBar* hScrollBar = ui->graphicsView->horizontalScrollBar(); int value = hScrollBar->value(); if (value != round(scene->hzToX(20))) - prefs.insert("scrollX", value); + prefs.insert("scrollX", DPIHelper::invScale(value)); QScrollBar* vScrollBar = ui->graphicsView->verticalScrollBar(); value = vScrollBar->value(); if (value != round(scene->dbToY(22))) - prefs.insert("scrollY", value); + prefs.insert("scrollY", DPIHelper::invScale(value)); } void GraphicEQFilterGUI::insertRow(int index, double hz, double db) diff --git a/Editor/guis/GraphicEQFilterGUI.ui b/Editor/guis/GraphicEQFilterGUI.ui index d13da35..5901bba 100644 --- a/Editor/guis/GraphicEQFilterGUI.ui +++ b/Editor/guis/GraphicEQFilterGUI.ui @@ -197,14 +197,7 @@ - - - - 16 - 16 - - - + @@ -212,7 +205,7 @@ - :/icons/16x16/document-open.png:/icons/16x16/document-open.png + :/icons/document-open.ico:/icons/document-open.ico Import @@ -221,7 +214,7 @@ - :/icons/16x16/document-save-as.png:/icons/16x16/document-save-as.png + :/icons/document-save-as.ico:/icons/document-save-as.ico Export @@ -230,7 +223,7 @@ - :/icons/invert_response.png:/icons/invert_response.png + :/icons/invert_response.ico:/icons/invert_response.ico Invert response @@ -239,7 +232,7 @@ - :/icons/normalize_response.png:/icons/normalize_response.png + :/icons/normalize_response.ico:/icons/normalize_response.ico Normalize response @@ -248,7 +241,7 @@ - :/icons/reset_response.png:/icons/reset_response.png + :/icons/reset_response.ico:/icons/reset_response.ico Reset response diff --git a/Editor/guis/GraphicEQFilterGUIItem.cpp b/Editor/guis/GraphicEQFilterGUIItem.cpp index c6ca76b..0a2b8ae 100644 --- a/Editor/guis/GraphicEQFilterGUIItem.cpp +++ b/Editor/guis/GraphicEQFilterGUIItem.cpp @@ -19,6 +19,7 @@ #include +#include "Editor/helpers/DPIHelper.h" #include "GraphicEQFilterGUIScene.h" #include "GraphicEQFilterGUIItem.h" @@ -33,7 +34,8 @@ GraphicEQFilterGUIItem::GraphicEQFilterGUIItem(int index, double hz, double db) QRectF GraphicEQFilterGUIItem::boundingRect() const { - return QRectF(-size / 2, -size / 2, size, size); + int s = DPIHelper::scale(size); + return QRectF(-s / 2, -s / 2, s, s); } QPainterPath GraphicEQFilterGUIItem::shape() const @@ -55,7 +57,7 @@ void GraphicEQFilterGUIItem::paint(QPainter* painter, const QStyleOptionGraphics painter->setPen(Qt::white); QFont font; - font.setPixelSize(9); + font.setPixelSize(DPIHelper::scale(9)); font.setLetterSpacing(QFont::AbsoluteSpacing, -1); QFontMetrics metrics(font); painter->setFont(font); diff --git a/Editor/guis/IncludeFilterGUI.ui b/Editor/guis/IncludeFilterGUI.ui index 1d89a2f..5d59404 100644 --- a/Editor/guis/IncludeFilterGUI.ui +++ b/Editor/guis/IncludeFilterGUI.ui @@ -7,7 +7,7 @@ 0 0 400 - 22 + 26 @@ -43,7 +43,7 @@ - :/icons/16x16/document-open.png:/icons/16x16/document-open.png + :/icons/document-open.ico:/icons/document-open.ico @@ -67,7 +67,7 @@ - :/icons/16x16/go-up.png:/icons/16x16/go-up.png + :/icons/go-up.ico:/icons/go-up.ico diff --git a/Editor/guis/PreampFilterGUI.cpp b/Editor/guis/PreampFilterGUI.cpp index a1fdc0f..1eb88ac 100644 --- a/Editor/guis/PreampFilterGUI.cpp +++ b/Editor/guis/PreampFilterGUI.cpp @@ -19,6 +19,7 @@ #include +#include "Editor/helpers/DPIHelper.h" #include "PreampFilterGUI.h" #include "ui_PreampFilterGUI.h" @@ -29,6 +30,7 @@ PreampFilterGUI::PreampFilterGUI(double dbGain) { ui->setupUi(this); + ui->dial->setFixedSize(DPIHelper::scale(QSize(100, 66))); ui->doubleSpinBox->setValue(dbGain); } diff --git a/Editor/helpers/DPIHelper.cpp b/Editor/helpers/DPIHelper.cpp new file mode 100644 index 0000000..cdcadbe --- /dev/null +++ b/Editor/helpers/DPIHelper.cpp @@ -0,0 +1,70 @@ +/* + This file is part of EqualizerAPO, a system-wide equalizer. + Copyright (C) 2016 Jonas Thedering + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "DPIHelper.h" + +#include +#include +#include +#include + +QSize DPIHelper::scale(QSize size) +{ + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return size; + + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInchX(); + return QSize(qRound(size.width() * dpi / 96), qRound(size.height() * dpi / 96)); +} + +int DPIHelper::scale(double pixel) +{ + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return qRound(pixel); + + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInchX(); + return qRound(pixel * dpi / 96); +} + +double DPIHelper::scaleZoom(double zoom) +{ + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return zoom; + + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInchX(); + return zoom * dpi / 96; +} + +double DPIHelper::invScale(int pixel) +{ + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return pixel; + + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInchX(); + return pixel * 96 / dpi; +} + +double DPIHelper::invScaleZoom(double zoom) +{ + if (qApp->testAttribute(Qt::AA_Use96Dpi)) + return zoom; + + qreal dpi = QGuiApplication::primaryScreen()->logicalDotsPerInchX(); + return zoom * 96 / dpi; +} diff --git a/Editor/helpers/DPIHelper.h b/Editor/helpers/DPIHelper.h new file mode 100644 index 0000000..0fbf3c2 --- /dev/null +++ b/Editor/helpers/DPIHelper.h @@ -0,0 +1,32 @@ +/* + This file is part of EqualizerAPO, a system-wide equalizer. + Copyright (C) 2016 Jonas Thedering + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include + +#pragma once + +class DPIHelper +{ +public: + static QSize scale(QSize size); + static int scale(double pixel); + static double scaleZoom(double zoom); + static double invScale(int pixel); + static double invScaleZoom(double zoom); +}; diff --git a/Editor/icons/16x16/accessories-text-editor.png b/Editor/icons/16x16/accessories-text-editor.png deleted file mode 100644 index 188e1c1..0000000 Binary files a/Editor/icons/16x16/accessories-text-editor.png and /dev/null differ diff --git a/Editor/icons/16x16/applications-graphics-rotated.png b/Editor/icons/16x16/applications-graphics-rotated.png deleted file mode 100644 index 1c2b912..0000000 Binary files a/Editor/icons/16x16/applications-graphics-rotated.png and /dev/null differ diff --git a/Editor/icons/16x16/applications-graphics.png b/Editor/icons/16x16/applications-graphics.png deleted file mode 100644 index 4bb955f..0000000 Binary files a/Editor/icons/16x16/applications-graphics.png and /dev/null differ diff --git a/Editor/icons/16x16/document-new.png b/Editor/icons/16x16/document-new.png deleted file mode 100644 index 4c3efdd..0000000 Binary files a/Editor/icons/16x16/document-new.png and /dev/null differ diff --git a/Editor/icons/16x16/document-open.png b/Editor/icons/16x16/document-open.png deleted file mode 100644 index ab94046..0000000 Binary files a/Editor/icons/16x16/document-open.png and /dev/null differ diff --git a/Editor/icons/16x16/document-save-as.png b/Editor/icons/16x16/document-save-as.png deleted file mode 100644 index 9bed143..0000000 Binary files a/Editor/icons/16x16/document-save-as.png and /dev/null differ diff --git a/Editor/icons/16x16/document-save.png b/Editor/icons/16x16/document-save.png deleted file mode 100644 index 22ff495..0000000 Binary files a/Editor/icons/16x16/document-save.png and /dev/null differ diff --git a/Editor/icons/16x16/edit-copy.png b/Editor/icons/16x16/edit-copy.png deleted file mode 100644 index 8dd48c4..0000000 Binary files a/Editor/icons/16x16/edit-copy.png and /dev/null differ diff --git a/Editor/icons/16x16/edit-cut.png b/Editor/icons/16x16/edit-cut.png deleted file mode 100644 index dc9eb9a..0000000 Binary files a/Editor/icons/16x16/edit-cut.png and /dev/null differ diff --git a/Editor/icons/16x16/edit-delete.png b/Editor/icons/16x16/edit-delete.png deleted file mode 100644 index ea03150..0000000 Binary files a/Editor/icons/16x16/edit-delete.png and /dev/null differ diff --git a/Editor/icons/16x16/edit-paste.png b/Editor/icons/16x16/edit-paste.png deleted file mode 100644 index 24588a3..0000000 Binary files a/Editor/icons/16x16/edit-paste.png and /dev/null differ diff --git a/Editor/icons/16x16/format-justify-fill-rotated.png b/Editor/icons/16x16/format-justify-fill-rotated.png deleted file mode 100644 index 78e67ff..0000000 Binary files a/Editor/icons/16x16/format-justify-fill-rotated.png and /dev/null differ diff --git a/Editor/icons/16x16/format-justify-fill.png b/Editor/icons/16x16/format-justify-fill.png deleted file mode 100644 index 663cbad..0000000 Binary files a/Editor/icons/16x16/format-justify-fill.png and /dev/null differ diff --git a/Editor/icons/16x16/go-up.png b/Editor/icons/16x16/go-up.png deleted file mode 100644 index fa9a7d7..0000000 Binary files a/Editor/icons/16x16/go-up.png and /dev/null differ diff --git a/Editor/icons/16x16/list-add-green.png b/Editor/icons/16x16/list-add-green.png deleted file mode 100644 index d7a27bd..0000000 Binary files a/Editor/icons/16x16/list-add-green.png and /dev/null differ diff --git a/Editor/icons/16x16/list-add.png b/Editor/icons/16x16/list-add.png deleted file mode 100644 index 1aa7f09..0000000 Binary files a/Editor/icons/16x16/list-add.png and /dev/null differ diff --git a/Editor/icons/16x16/list-remove-red.png b/Editor/icons/16x16/list-remove-red.png deleted file mode 100644 index 6f896e3..0000000 Binary files a/Editor/icons/16x16/list-remove-red.png and /dev/null differ diff --git a/Editor/icons/16x16/list-remove.png b/Editor/icons/16x16/list-remove.png deleted file mode 100644 index 00b654e..0000000 Binary files a/Editor/icons/16x16/list-remove.png and /dev/null differ diff --git a/Editor/icons/accessories-text-editor.ico b/Editor/icons/accessories-text-editor.ico index fda7ea9..17e0c78 100644 Binary files a/Editor/icons/accessories-text-editor.ico and b/Editor/icons/accessories-text-editor.ico differ diff --git a/Editor/icons/applications-graphics-rotated.ico b/Editor/icons/applications-graphics-rotated.ico new file mode 100644 index 0000000..4346fe6 Binary files /dev/null and b/Editor/icons/applications-graphics-rotated.ico differ diff --git a/Editor/icons/arrow_right.ico b/Editor/icons/arrow_right.ico new file mode 100644 index 0000000..63a7dcd Binary files /dev/null and b/Editor/icons/arrow_right.ico differ diff --git a/Editor/icons/arrow_right.png b/Editor/icons/arrow_right.png deleted file mode 100644 index 17ace34..0000000 Binary files a/Editor/icons/arrow_right.png and /dev/null differ diff --git a/Editor/icons/arrow_right.svg b/Editor/icons/arrow_right.svg index 54a1551..f59aa0d 100644 --- a/Editor/icons/arrow_right.svg +++ b/Editor/icons/arrow_right.svg @@ -15,9 +15,9 @@ version="1.1" inkscape:version="0.91 r13725" viewBox="0 0 24 15" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\arrow_right.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\arrow_right_48.png" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180" sodipodi:docname="arrow_right.svg"> @@ -29,16 +29,16 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="22.197802" - inkscape:cx="8.8534553" + inkscape:cx="-3.2423369" inkscape:cy="1.9902411" inkscape:current-layer="layer1" showgrid="true" inkscape:grid-bbox="true" inkscape:document-units="px" - inkscape:window-width="1920" - inkscape:window-height="1018" - inkscape:window-x="-8" - inkscape:window-y="-8" + inkscape:window-width="2560" + inkscape:window-height="1365" + inkscape:window-x="-9" + inkscape:window-y="-9" inkscape:window-maximized="1" /> @@ -48,7 +48,7 @@ image/svg+xml - + diff --git a/Editor/icons/document-new.ico b/Editor/icons/document-new.ico new file mode 100644 index 0000000..8163c45 Binary files /dev/null and b/Editor/icons/document-new.ico differ diff --git a/Editor/icons/document-open.ico b/Editor/icons/document-open.ico new file mode 100644 index 0000000..18446b4 Binary files /dev/null and b/Editor/icons/document-open.ico differ diff --git a/Editor/icons/document-save-as.ico b/Editor/icons/document-save-as.ico new file mode 100644 index 0000000..237d9e1 Binary files /dev/null and b/Editor/icons/document-save-as.ico differ diff --git a/Editor/icons/document-save.ico b/Editor/icons/document-save.ico new file mode 100644 index 0000000..e8d2e97 Binary files /dev/null and b/Editor/icons/document-save.ico differ diff --git a/Editor/icons/edit-copy.ico b/Editor/icons/edit-copy.ico new file mode 100644 index 0000000..9a1374d Binary files /dev/null and b/Editor/icons/edit-copy.ico differ diff --git a/Editor/icons/edit-cut.ico b/Editor/icons/edit-cut.ico new file mode 100644 index 0000000..0df2c47 Binary files /dev/null and b/Editor/icons/edit-cut.ico differ diff --git a/Editor/icons/edit-delete.ico b/Editor/icons/edit-delete.ico new file mode 100644 index 0000000..7ea0def Binary files /dev/null and b/Editor/icons/edit-delete.ico differ diff --git a/Editor/icons/edit-paste.ico b/Editor/icons/edit-paste.ico new file mode 100644 index 0000000..e1fc80d Binary files /dev/null and b/Editor/icons/edit-paste.ico differ diff --git a/Editor/icons/format-justify-fill-rotated.ico b/Editor/icons/format-justify-fill-rotated.ico new file mode 100644 index 0000000..ebd5756 Binary files /dev/null and b/Editor/icons/format-justify-fill-rotated.ico differ diff --git a/Editor/icons/go-up.ico b/Editor/icons/go-up.ico new file mode 100644 index 0000000..3732c2c Binary files /dev/null and b/Editor/icons/go-up.ico differ diff --git a/Editor/icons/invert_response.ico b/Editor/icons/invert_response.ico new file mode 100644 index 0000000..3c4c1aa Binary files /dev/null and b/Editor/icons/invert_response.ico differ diff --git a/Editor/icons/invert_response.png b/Editor/icons/invert_response.png deleted file mode 100644 index b89a8cc..0000000 Binary files a/Editor/icons/invert_response.png and /dev/null differ diff --git a/Editor/icons/mirror_response.svg b/Editor/icons/invert_response.svg similarity index 88% rename from Editor/icons/mirror_response.svg rename to Editor/icons/invert_response.svg index e7b44fa..0826982 100644 --- a/Editor/icons/mirror_response.svg +++ b/Editor/icons/invert_response.svg @@ -15,10 +15,10 @@ version="1.1" inkscape:version="0.91 r13725" viewBox="0 0 16 16" - sodipodi:docname="mirror_response.svg" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\guis\mirror_response.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + sodipodi:docname="invert_response.svg" + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\invert_response_32.png" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180"> @@ -48,7 +48,7 @@ image/svg+xml - + diff --git a/Editor/icons/list-add-green.ico b/Editor/icons/list-add-green.ico new file mode 100644 index 0000000..25ef6de Binary files /dev/null and b/Editor/icons/list-add-green.ico differ diff --git a/Editor/icons/list-remove-red.ico b/Editor/icons/list-remove-red.ico new file mode 100644 index 0000000..657845d Binary files /dev/null and b/Editor/icons/list-remove-red.ico differ diff --git a/Editor/icons/normalize_response.ico b/Editor/icons/normalize_response.ico new file mode 100644 index 0000000..5bcfd05 Binary files /dev/null and b/Editor/icons/normalize_response.ico differ diff --git a/Editor/icons/normalize_response.png b/Editor/icons/normalize_response.png deleted file mode 100644 index 5a8ba42..0000000 Binary files a/Editor/icons/normalize_response.png and /dev/null differ diff --git a/Editor/icons/normalize_response.svg b/Editor/icons/normalize_response.svg index 72092fb..e00a258 100644 --- a/Editor/icons/normalize_response.svg +++ b/Editor/icons/normalize_response.svg @@ -16,9 +16,9 @@ inkscape:version="0.91 r13725" viewBox="0 0 16 16" sodipodi:docname="normalize_response.svg" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\guis\mirror_response.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\normalize_response_32.png" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180"> @@ -147,7 +147,7 @@ image/svg+xml - + diff --git a/Editor/icons/power_off.ico b/Editor/icons/power_off.ico new file mode 100644 index 0000000..14a1d64 Binary files /dev/null and b/Editor/icons/power_off.ico differ diff --git a/Editor/icons/power_off.png b/Editor/icons/power_off.png deleted file mode 100644 index 3a85acd..0000000 Binary files a/Editor/icons/power_off.png and /dev/null differ diff --git a/Editor/icons/power_off.svg b/Editor/icons/power_off.svg index f97069b..0ba121a 100644 --- a/Editor/icons/power_off.svg +++ b/Editor/icons/power_off.svg @@ -16,9 +16,9 @@ inkscape:version="0.91 r13725" viewBox="0 0 16 16" sodipodi:docname="power_off.svg" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\guis\power_on2.png" - inkscape:export-xdpi="135" - inkscape:export-ydpi="135"> + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\power_off_48.png" + inkscape:export-xdpi="270" + inkscape:export-ydpi="270"> @@ -48,7 +48,7 @@ image/svg+xml - + @@ -57,12 +57,12 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> diff --git a/Editor/icons/power_on.ico b/Editor/icons/power_on.ico new file mode 100644 index 0000000..4761fbf Binary files /dev/null and b/Editor/icons/power_on.ico differ diff --git a/Editor/icons/power_on.png b/Editor/icons/power_on.png deleted file mode 100644 index c49b07f..0000000 Binary files a/Editor/icons/power_on.png and /dev/null differ diff --git a/Editor/icons/power_on.svg b/Editor/icons/power_on.svg index 0250917..d08c68d 100644 --- a/Editor/icons/power_on.svg +++ b/Editor/icons/power_on.svg @@ -16,9 +16,9 @@ inkscape:version="0.91 r13725" viewBox="0 0 16 16" sodipodi:docname="power_on.svg" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\guis\power_on2.png" - inkscape:export-xdpi="135" - inkscape:export-ydpi="135"> + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\power_on_48.png" + inkscape:export-xdpi="270" + inkscape:export-ydpi="270"> @@ -48,7 +48,7 @@ image/svg+xml - + diff --git a/Editor/icons/reset_response.ico b/Editor/icons/reset_response.ico new file mode 100644 index 0000000..45d7d7c Binary files /dev/null and b/Editor/icons/reset_response.ico differ diff --git a/Editor/icons/reset_response.png b/Editor/icons/reset_response.png deleted file mode 100644 index 5e5edb1..0000000 Binary files a/Editor/icons/reset_response.png and /dev/null differ diff --git a/Editor/icons/reset_response.svg b/Editor/icons/reset_response.svg index 584610f..0146c6e 100644 --- a/Editor/icons/reset_response.svg +++ b/Editor/icons/reset_response.svg @@ -16,9 +16,9 @@ inkscape:version="0.91 r13725" viewBox="0 0 16 16" sodipodi:docname="reset_response.svg" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\reset_response.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\reset_response_32.png" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180"> diff --git a/Editor/icons/resize_corner.ico b/Editor/icons/resize_corner.ico new file mode 100644 index 0000000..2fa2fd9 Binary files /dev/null and b/Editor/icons/resize_corner.ico differ diff --git a/Editor/icons/resize_corner.png b/Editor/icons/resize_corner.png deleted file mode 100644 index fc9c0c5..0000000 Binary files a/Editor/icons/resize_corner.png and /dev/null differ diff --git a/Editor/icons/resize_corner.svg b/Editor/icons/resize_corner.svg index 4f5f677..1640802 100644 --- a/Editor/icons/resize_corner.svg +++ b/Editor/icons/resize_corner.svg @@ -17,9 +17,9 @@ inkscape:version="0.91 r13725" viewBox="0 0 16 16" sodipodi:docname="resize_corner.svg" - inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\resize_corner.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> + inkscape:export-filename="C:\Eigene Dateien\Entwickl\EqualizerAPO\trunk\Editor\icons\resize_corner_32.png" + inkscape:export-xdpi="180" + inkscape:export-ydpi="180"> @@ -183,7 +183,7 @@ image/svg+xml - + diff --git a/Editor/icons/resize_corner_20.svg b/Editor/icons/resize_corner_20.svg new file mode 100644 index 0000000..7e4496e --- /dev/null +++ b/Editor/icons/resize_corner_20.svg @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/Editor/main.cpp b/Editor/main.cpp index 1429c63..43dd62d 100644 --- a/Editor/main.cpp +++ b/Editor/main.cpp @@ -22,6 +22,7 @@ #include #include #include +#include "CustomStyle.h" #include "MainWindow.h" #include "helpers/RegistryHelper.h" @@ -41,6 +42,7 @@ int main(int argc, char* argv[]) do { QApplication application(argc, argv); + application.setStyle(new CustomStyle(application.style())); QSettings settings(QString::fromWCharArray(EDITOR_REGPATH), QSettings::NativeFormat); QVariant languageValue = settings.value("language"); diff --git a/Editor/widgets/ChannelGraphItem.cpp b/Editor/widgets/ChannelGraphItem.cpp index fd99924..a5dc81b 100644 --- a/Editor/widgets/ChannelGraphItem.cpp +++ b/Editor/widgets/ChannelGraphItem.cpp @@ -20,6 +20,7 @@ #include #include +#include "Editor/helpers/DPIHelper.h" #include "ChannelGraphItem.h" static const float margin = 5; @@ -43,8 +44,8 @@ QRectF ChannelGraphItem::boundingRect() const // shift by 0.5 to have sharp lines cachedRect.setLeft(0.5); cachedRect.setTop(0.5); - cachedRect.setWidth(width + 2 * margin); - cachedRect.setHeight(height + 2 * margin); + cachedRect.setWidth(width + 2 * DPIHelper::scale(margin)); + cachedRect.setHeight(height + 2 * DPIHelper::scale(margin)); } return cachedRect; @@ -62,6 +63,6 @@ void ChannelGraphItem::paint(QPainter* painter, QColor color) gradient.setColorAt(0, QColor(255, 255, 255)); gradient.setColorAt(1, color); painter->setBrush(gradient); - painter->drawRoundedRect(rect, margin, margin); + painter->drawRoundedRect(rect, DPIHelper::scale(margin), DPIHelper::scale(margin)); painter->drawText(rect.translated(1, -1), Qt::AlignCenter, name); } diff --git a/Editor/widgets/ChannelGraphScene.cpp b/Editor/widgets/ChannelGraphScene.cpp index d63d4b6..29a16d8 100644 --- a/Editor/widgets/ChannelGraphScene.cpp +++ b/Editor/widgets/ChannelGraphScene.cpp @@ -19,6 +19,7 @@ #include +#include "Editor/helpers/DPIHelper.h" #include "ChannelGraphScene.h" ChannelGraphScene::ChannelGraphScene(QWidget* parent) @@ -32,8 +33,8 @@ QPointF ChannelGraphScene::getNextChannelPoint(QGraphicsItem* lastItem, bool out if (lastItem != NULL) { QRectF lastRect = lastItem->sceneBoundingRect(); - x = lastRect.left() + lastRect.width() + 1 + 10; + x = lastRect.left() + lastRect.width() + 1 + DPIHelper::scale(10); } - return QPointF(x, output ? 50 : 0); + return QPointF(x, output ? DPIHelper::scale(50) : 0); } diff --git a/Editor/widgets/CompactToolBar.cpp b/Editor/widgets/CompactToolBar.cpp index 38454b3..f36cdf5 100644 --- a/Editor/widgets/CompactToolBar.cpp +++ b/Editor/widgets/CompactToolBar.cpp @@ -17,14 +17,14 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "Editor/helpers/DPIHelper.h" #include "CompactToolBar.h" CompactToolBar::CompactToolBar(QWidget* parent) : QToolBar(parent) { - setMinimumHeight(1); + setMinimumHeight(DPIHelper::scale(33)); setOrientation(Qt::Vertical); - setIconSize(QSize(16, 16)); } QSize CompactToolBar::sizeHint() const diff --git a/Editor/widgets/FrequencyPlotScene.cpp b/Editor/widgets/FrequencyPlotScene.cpp index 0dcabea..943a3ba 100644 --- a/Editor/widgets/FrequencyPlotScene.cpp +++ b/Editor/widgets/FrequencyPlotScene.cpp @@ -17,6 +17,7 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "Editor/helpers/DPIHelper.h" #include "FrequencyPlotView.h" #include "FrequencyPlotScene.h" @@ -37,6 +38,9 @@ vector FrequencyPlotScene::bandsVar; FrequencyPlotScene::FrequencyPlotScene(QObject* parent) : QGraphicsScene(parent) { + zoomX = DPIHelper::scaleZoom(1.0); + zoomY = DPIHelper::scaleZoom(1.0); + updateSceneRect(); } @@ -83,14 +87,17 @@ double FrequencyPlotScene::getZoomY() const void FrequencyPlotScene::setZoom(double zoomX, double zoomY) { - this->zoomX = zoomX; - this->zoomY = zoomY; - updateSceneRect(); - - for (QGraphicsItem* item : items()) + if (zoomX != this->zoomX || zoomY != this->zoomY) { - FrequencyPlotItem* plotItem = (FrequencyPlotItem*)item; - plotItem->updatePos(); + this->zoomX = zoomX; + this->zoomY = zoomY; + updateSceneRect(); + + for (QGraphicsItem* item : items()) + { + FrequencyPlotItem* plotItem = (FrequencyPlotItem*)item; + plotItem->updatePos(); + } } } diff --git a/Editor/widgets/FrequencyPlotScene.h b/Editor/widgets/FrequencyPlotScene.h index 278013a..b38b6fd 100644 --- a/Editor/widgets/FrequencyPlotScene.h +++ b/Editor/widgets/FrequencyPlotScene.h @@ -55,7 +55,7 @@ protected: private: void updateSceneRect(); - double zoomX = 1.0; - double zoomY = 1.0; + double zoomX; + double zoomY; int bandCount = -1; }; diff --git a/Editor/widgets/FrequencyPlotVRuler.cpp b/Editor/widgets/FrequencyPlotVRuler.cpp index 17e5033..96d70cb 100644 --- a/Editor/widgets/FrequencyPlotVRuler.cpp +++ b/Editor/widgets/FrequencyPlotVRuler.cpp @@ -19,6 +19,7 @@ #include +#include "Editor/helpers/DPIHelper.h" #include "FrequencyPlotView.h" #include "FrequencyPlotScene.h" #include "FrequencyPlotVRuler.h" @@ -37,7 +38,7 @@ void FrequencyPlotVRuler::paintEvent(QPaintEvent*) QPointF topLeft = view->mapToScene(0, 0); QPointF bottomRight = view->mapToScene(view->viewport()->width(), view->viewport()->height()); - double dbStep = abs(s->yToDb(0) - s->yToDb(30)); + double dbStep = abs(s->yToDb(0) - s->yToDb(DPIHelper::scale(30))); double dbBase = pow(10, floor(log10(dbStep))); if (dbStep >= 5 * dbBase) diff --git a/Editor/widgets/FrequencyPlotView.cpp b/Editor/widgets/FrequencyPlotView.cpp index 64944f4..5c6ac9c 100644 --- a/Editor/widgets/FrequencyPlotView.cpp +++ b/Editor/widgets/FrequencyPlotView.cpp @@ -21,6 +21,7 @@ #include #include +#include "Editor/helpers/DPIHelper.h" #include "FrequencyPlotItem.h" #include "FrequencyPlotView.h" @@ -29,7 +30,7 @@ using namespace std; FrequencyPlotView::FrequencyPlotView(QWidget* parent) : QGraphicsView(parent) { - setViewportMargins(32, 0, 0, 20); + setViewportMargins(DPIHelper::scale(32), 0, 0, DPIHelper::scale(20)); hRuler = new FrequencyPlotHRuler(this); vRuler = new FrequencyPlotVRuler(this); hRuler->setMouseTracking(true); @@ -60,7 +61,7 @@ void FrequencyPlotView::drawBackground(QPainter* painter, const QRectF& drawRect FrequencyPlotScene* s = scene(); QPointF topLeft = mapToScene(0, 0); QPointF bottomRight = mapToScene(viewport()->width(), viewport()->height()); - double dbStep = abs(s->yToDb(0) - s->yToDb(30)); + double dbStep = abs(s->yToDb(0) - s->yToDb(DPIHelper::scale(30))); double dbBase = pow(10, floor(log10(dbStep))); if (dbStep >= 5 * dbBase) @@ -176,6 +177,7 @@ void FrequencyPlotView::setScrollOffsets(int x, int y) void FrequencyPlotView::wheelEvent(QWheelEvent* event) { + event->accept(); int delta = event->angleDelta().y(); zoom(delta, delta, event->x(), event->y()); } diff --git a/Editor/widgets/ResizeCorner.cpp b/Editor/widgets/ResizeCorner.cpp index f955025..e483059 100644 --- a/Editor/widgets/ResizeCorner.cpp +++ b/Editor/widgets/ResizeCorner.cpp @@ -19,13 +19,20 @@ #include +#include "Editor/helpers/DPIHelper.h" #include "ResizeCorner.h" ResizeCorner::ResizeCorner(FilterTable* filterTable, QSize minimumSize, QSize maximumSize, std::function getFunc, std::function setFunc, QWidget* parent) : QLabel(parent), minimumSize(minimumSize), maximumSize(maximumSize), getFunc(getFunc), setFunc(setFunc), filterTable(filterTable) { - setPixmap(QPixmap(":/icons/resize_corner.png")); + QIcon icon(":/icons/resize_corner.ico"); + QSize desiredSize = DPIHelper::scale(QSize(16, 16)); + QSize actualSize = icon.actualSize(desiredSize); + QPixmap pixmap = icon.pixmap(actualSize); + setPixmap(pixmap); setCursor(Qt::SizeFDiagCursor); + // move icon to lower right if it does not fill the full area + setContentsMargins(desiredSize.width() - actualSize.width(), desiredSize.height() - actualSize.height(), 0, 0); } void ResizeCorner::mousePressEvent(QMouseEvent* event) diff --git a/Release checklist.txt b/Release checklist.txt index c5b2d20..31753ea 100644 --- a/Release checklist.txt +++ b/Release checklist.txt @@ -4,4 +4,5 @@ 4. Upload EqualizerAPO32-x.exe, EqualizerAPO64-x.exe and EqualizerAPO-src-x.zip to new folder x 5. Update readme.txt using subversion log 6. Set EqualizerAPO64-x.exe as new default download +7. Update URL for tool "Downloads" to https://sourceforge.net/projects/equalizerapo/files/x/ 7. Create tag of trunk in tags/x \ No newline at end of file diff --git a/Setup/Setup32.nsi b/Setup/Setup32.nsi index d24ba41..351f8ba 100644 --- a/Setup/Setup32.nsi +++ b/Setup/Setup32.nsi @@ -1,6 +1,6 @@ !define BINPATH "..\Release" -!define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_5_5_MSVC2013_32bit-Release\release" +!define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_5_7_MSVC2013_32bit-Release\release" !define LIBPATH "lib32" !include "Setup.nsi" diff --git a/Setup/Setup64.nsi b/Setup/Setup64.nsi index e04b9e1..f76b7b3 100644 --- a/Setup/Setup64.nsi +++ b/Setup/Setup64.nsi @@ -1,6 +1,6 @@ !define BINPATH "..\x64\Release" -!define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_5_5_MSVC2013_64bit-Release\release" +!define BINPATH_EDITOR "..\build-Editor-Desktop_Qt_5_7_MSVC2013_64bit-Release\release" !define LIBPATH "lib64" !include "Setup.nsi" diff --git a/Setup/lib32/Qt5Core.dll b/Setup/lib32/Qt5Core.dll index 4dac0cb..d8a12cc 100644 Binary files a/Setup/lib32/Qt5Core.dll and b/Setup/lib32/Qt5Core.dll differ diff --git a/Setup/lib32/Qt5Gui.dll b/Setup/lib32/Qt5Gui.dll index 562d3e8..2649c00 100644 Binary files a/Setup/lib32/Qt5Gui.dll and b/Setup/lib32/Qt5Gui.dll differ diff --git a/Setup/lib32/Qt5Widgets.dll b/Setup/lib32/Qt5Widgets.dll index e7e1c10..14809c0 100644 Binary files a/Setup/lib32/Qt5Widgets.dll and b/Setup/lib32/Qt5Widgets.dll differ diff --git a/Setup/lib32/qt/imageformats/qgif.dll b/Setup/lib32/qt/imageformats/qgif.dll index e63e7ef..c099a18 100644 Binary files a/Setup/lib32/qt/imageformats/qgif.dll and b/Setup/lib32/qt/imageformats/qgif.dll differ diff --git a/Setup/lib32/qt/imageformats/qico.dll b/Setup/lib32/qt/imageformats/qico.dll index 15c4f36..e3320d6 100644 Binary files a/Setup/lib32/qt/imageformats/qico.dll and b/Setup/lib32/qt/imageformats/qico.dll differ diff --git a/Setup/lib32/qt/imageformats/qjpeg.dll b/Setup/lib32/qt/imageformats/qjpeg.dll index b5f27b3..d5d2feb 100644 Binary files a/Setup/lib32/qt/imageformats/qjpeg.dll and b/Setup/lib32/qt/imageformats/qjpeg.dll differ diff --git a/Setup/lib32/qt/platforms/qwindows.dll b/Setup/lib32/qt/platforms/qwindows.dll index 2287e7b..244dc1f 100644 Binary files a/Setup/lib32/qt/platforms/qwindows.dll and b/Setup/lib32/qt/platforms/qwindows.dll differ diff --git a/Setup/lib64/Qt5Core.dll b/Setup/lib64/Qt5Core.dll index 57e743d..08b77fa 100644 Binary files a/Setup/lib64/Qt5Core.dll and b/Setup/lib64/Qt5Core.dll differ diff --git a/Setup/lib64/Qt5Gui.dll b/Setup/lib64/Qt5Gui.dll index 6e58aba..a8ba0e9 100644 Binary files a/Setup/lib64/Qt5Gui.dll and b/Setup/lib64/Qt5Gui.dll differ diff --git a/Setup/lib64/Qt5Widgets.dll b/Setup/lib64/Qt5Widgets.dll index a8464f9..393db95 100644 Binary files a/Setup/lib64/Qt5Widgets.dll and b/Setup/lib64/Qt5Widgets.dll differ diff --git a/Setup/lib64/qt/imageformats/qgif.dll b/Setup/lib64/qt/imageformats/qgif.dll index eed6421..a5d3805 100644 Binary files a/Setup/lib64/qt/imageformats/qgif.dll and b/Setup/lib64/qt/imageformats/qgif.dll differ diff --git a/Setup/lib64/qt/imageformats/qico.dll b/Setup/lib64/qt/imageformats/qico.dll index 337e5fc..bc7fd0b 100644 Binary files a/Setup/lib64/qt/imageformats/qico.dll and b/Setup/lib64/qt/imageformats/qico.dll differ diff --git a/Setup/lib64/qt/imageformats/qjpeg.dll b/Setup/lib64/qt/imageformats/qjpeg.dll index ac8526f..dc3d73d 100644 Binary files a/Setup/lib64/qt/imageformats/qjpeg.dll and b/Setup/lib64/qt/imageformats/qjpeg.dll differ diff --git a/Setup/lib64/qt/platforms/qwindows.dll b/Setup/lib64/qt/platforms/qwindows.dll index 0ec1b43..3dc2320 100644 Binary files a/Setup/lib64/qt/platforms/qwindows.dll and b/Setup/lib64/qt/platforms/qwindows.dll differ diff --git a/Wiki/Developer.txt b/Wiki/Developer.txt index 1d28f5c..6bd7cd3 100644 --- a/Wiki/Developer.txt +++ b/Wiki/Developer.txt @@ -60,4 +60,7 @@ The following changes have to be done to the registry to make the Windows Audio 3. Also the key HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AudioEngine\AudioProcessingObjects\ ***GUID*** has to be created, which is normally handled by the function RegisterAPO (declared in audioenginebaseapo.h in the Windows DDK). The corresponding function UnregisterAPO can be used to remove the key. -4. The APO has to be registered for a specific device under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\ ***endpoint GUID*** \FxProperties. The Render path contains output devices while the Capture path contains input devices. In the FxProperties key, the value {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},1 defines the GUID of an LFX APO while {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},2 defines the GUID for a GFX APO. Normally, these values already exist and refer to the audio driver's APOs. To register the custom APO, one of the values has to be replaced, so the existing values have to be saved somewhere else (Equalizer APO saves them in HKEY_LOCAL_MACHINE\SOFTWARE\EqualizerAPO\Child APOs). They are needed to restore the original values when uninstalling the custom APO and, as the custom APO is meant to be used in addition to the existing APOs, it has to load and call the original APO so that it can continue to perform its function. Since Windows 8.1, the values {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},5 and {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},6 are also used for LFX and GFX, respectively. When an APO is registered via the new values (ending in 5 or 6), any APO registered via an old value (ending in 1 or 2) is ignored. Also since Windows 8.1, there are the values {d3993a3f-99c2-4402-b5ec-a92a0367664b},5 and {d3993a3f-99c2-4402-b5ec-a92a0367664b},6, which seem to be specifying a set of processing modes (they are of type MULTI_SZ, so can contain multiple lines). Both of these normally need to be set to {C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}, which is the default processing mode. \ No newline at end of file +4. The APO has to be registered for a specific device under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\ ***endpoint GUID*** \FxProperties. The Render path contains output devices while the Capture path contains input devices. In the FxProperties key, the value {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},1 defines the GUID of an LFX APO while {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},2 defines the GUID for a GFX APO. Normally, these values already exist and refer to the audio driver's APOs. To register the custom APO, one of the values has to be replaced, so the existing values have to be saved somewhere else (Equalizer APO saves them in HKEY_LOCAL_MACHINE\SOFTWARE\EqualizerAPO\Child APOs). They are needed to restore the original values when uninstalling the custom APO and, as the custom APO is meant to be used in addition to the existing APOs, it has to load and call the original APO so that it can continue to perform its function. Since Windows 8.1, the values {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},5 and {d04e05a6-594b-4fb6-a80d-01af5eed7d1d},6 are also used for LFX and GFX, respectively. When an APO is registered via the new values (ending in 5 or 6), any APO registered via an old value (ending in 1 or 2) is ignored. Also since Windows 8.1, there are the values {d3993a3f-99c2-4402-b5ec-a92a0367664b},5 and {d3993a3f-99c2-4402-b5ec-a92a0367664b},6, which seem to be specifying a set of processing modes (they are of type MULTI_SZ, so can contain multiple lines). Both of these normally need to be set to {C18E2F7E-933D-4965-B7D1-1EEF228D2AF3}, which is the default processing mode. + +#Example project +A minimal example project for Visual Studio 2013 is [attached](Developer%20documentation/attachment/MinimalAPO.zip) to this page. It contains only the absolute necessary and has no dependencies that are not already included with Visual Studio 2013. \ No newline at end of file diff --git a/build.bat b/build.bat index fc438e7..478caa6 100644 --- a/build.bat +++ b/build.bat @@ -4,19 +4,19 @@ if %ERRORLEVEL% GEQ 1 goto done msbuild EqualizerAPO.sln /p:Configuration=release /p:platform=x64 /t:rebuild if %ERRORLEVEL% GEQ 1 goto done -if not exist build-Editor-Desktop_Qt_5_5_MSVC2013_32bit-Release mkdir build-Editor-Desktop_Qt_5_5_MSVC2013_32bit-Release -cd build-Editor-Desktop_Qt_5_5_MSVC2013_32bit-Release +if not exist build-Editor-Desktop_Qt_5_7_MSVC2013_32bit-Release mkdir build-Editor-Desktop_Qt_5_7_MSVC2013_32bit-Release +cd build-Editor-Desktop_Qt_5_7_MSVC2013_32bit-Release call "%VCINSTALLDIR%vcvarsall.bat" x86 -"C:\Qt\5.5\msvc2013\bin\qmake.exe" ..\Editor\Editor.pro -r -spec win32-msvc2013 +"C:\Qt\5.7\msvc2013\bin\qmake.exe" ..\Editor\Editor.pro -r -spec win32-msvc2013 "C:\Qt\Tools\QtCreator\bin\jom.exe" clean "C:\Qt\Tools\QtCreator\bin\jom.exe" if %ERRORLEVEL% GEQ 1 goto done cd.. -if not exist build-Editor-Desktop_Qt_5_5_MSVC2013_64bit-Release mkdir build-Editor-Desktop_Qt_5_5_MSVC2013_64bit-Release -cd build-Editor-Desktop_Qt_5_5_MSVC2013_64bit-Release +if not exist build-Editor-Desktop_Qt_5_7_MSVC2013_64bit-Release mkdir build-Editor-Desktop_Qt_5_7_MSVC2013_64bit-Release +cd build-Editor-Desktop_Qt_5_7_MSVC2013_64bit-Release call "%VCINSTALLDIR%vcvarsall.bat" amd64 -"C:\Qt\5.5\msvc2013_64\bin\qmake.exe" ..\Editor\Editor.pro -r -spec win32-msvc2013 +"C:\Qt\5.7\msvc2013_64\bin\qmake.exe" ..\Editor\Editor.pro -r -spec win32-msvc2013 "C:\Qt\Tools\QtCreator\bin\jom.exe" clean "C:\Qt\Tools\QtCreator\bin\jom.exe" if %ERRORLEVEL% GEQ 1 goto done