diff --git a/kwin/src/breezydesktopconfig.kcfg b/kwin/src/breezydesktopconfig.kcfg index 3e47677..7ba2b62 100644 --- a/kwin/src/breezydesktopconfig.kcfg +++ b/kwin/src/breezydesktopconfig.kcfg @@ -50,5 +50,12 @@ How to arrange monitors: 0=Auto, 1=Horizontal, 2=Vertical, 3=Flat + + 3 + 0 + 3 + + 0=None, 1=Medium, 2=High, 3=Very High + diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp index 25e79a7..e1f83e8 100644 --- a/kwin/src/breezydesktopeffect.cpp +++ b/kwin/src/breezydesktopeffect.cpp @@ -203,10 +203,12 @@ void BreezyDesktopEffect::reconfigure(ReconfigureFlags) qreal horiz = BreezyDesktopConfig::displayHorizontalOffset() / 100.0f; qreal vert = BreezyDesktopConfig::displayVerticalOffset() / 100.0f; int wrap = BreezyDesktopConfig::displayWrappingScheme(); + int aaQuality = BreezyDesktopConfig::antialiasingQuality(); bool changed = false; if (!qFuzzyCompare(m_displayHorizontalOffset, horiz)) { m_displayHorizontalOffset = horiz; changed = true; } if (!qFuzzyCompare(m_displayVerticalOffset, vert)) { m_displayVerticalOffset = vert; changed = true; } if (m_displayWrappingScheme != wrap) { m_displayWrappingScheme = wrap; Q_EMIT displayWrappingSchemeChanged(); } + if (m_antialiasingQuality != aaQuality) { m_antialiasingQuality = aaQuality; Q_EMIT antialiasingQualityChanged(); } if (changed) Q_EMIT displayOffsetChanged(); } @@ -408,6 +410,10 @@ bool BreezyDesktopEffect::customBannerEnabled() const { return m_customBannerEnabled; } +int BreezyDesktopEffect::antialiasingQuality() const { + return m_antialiasingQuality; +} + bool BreezyDesktopEffect::checkParityByte(const char* data) { const uint8_t parityByte = static_cast(data[DataView::IMU_PARITY_BYTE[DataView::OFFSET_INDEX]]); uint8_t parity = 0; diff --git a/kwin/src/breezydesktopeffect.h b/kwin/src/breezydesktopeffect.h index 674605f..e0ad83b 100644 --- a/kwin/src/breezydesktopeffect.h +++ b/kwin/src/breezydesktopeffect.h @@ -35,6 +35,7 @@ namespace KWin Q_PROPERTY(qreal lensDistanceRatio READ lensDistanceRatio NOTIFY devicePropertiesChanged) Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged) Q_PROPERTY(bool customBannerEnabled READ customBannerEnabled NOTIFY devicePropertiesChanged) + Q_PROPERTY(int antialiasingQuality READ antialiasingQuality NOTIFY antialiasingQualityChanged) public: @@ -71,6 +72,7 @@ namespace KWin qreal lensDistanceRatio() const; bool sbsEnabled() const; bool customBannerEnabled() const; + int antialiasingQuality() const; void showCursor(); void hideCursor(); @@ -98,6 +100,7 @@ namespace KWin void cursorImageSourceChanged(); void cursorPosChanged(); void devicePropertiesChanged(); + void antialiasingQualityChanged(); protected: QVariantMap initialProperties(Output *screen) override; @@ -134,6 +137,7 @@ namespace KWin qreal m_displayHorizontalOffset = 0.0; qreal m_displayVerticalOffset = 0.0; int m_displayWrappingScheme = 0; // 0=auto,1=horizontal,2=vertical,3=flat + int m_antialiasingQuality = 3; // 0=None, 1=Medium, 2=High, 3=VeryHigh QList m_virtualOutputs; }; diff --git a/kwin/src/kcm/breezydesktopeffectkcm.cpp b/kwin/src/kcm/breezydesktopeffectkcm.cpp index 318361d..1818e2a 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.cpp +++ b/kwin/src/kcm/breezydesktopeffectkcm.cpp @@ -99,6 +99,7 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu connect(ui.kcfg_DisplayHorizontalOffset, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save); connect(ui.kcfg_DisplayVerticalOffset, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save); connect(ui.kcfg_DisplayWrappingScheme, qOverload(&QComboBox::currentIndexChanged), this, &BreezyDesktopEffectConfig::save); + connect(ui.kcfg_AntialiasingQuality, qOverload(&QComboBox::currentIndexChanged), this, &BreezyDesktopEffectConfig::save); if (auto label = widget()->findChild("labelAppNameVersion")) { label->setText(QStringLiteral("Breezy Desktop - v%1").arg(QLatin1String(BREEZY_DESKTOP_VERSION_STR))); @@ -217,6 +218,7 @@ void BreezyDesktopEffectConfig::updateUiFromConfig() ui.kcfg_DisplayHorizontalOffset->setValue(BreezyDesktopConfig::self()->displayHorizontalOffset()); ui.kcfg_DisplayVerticalOffset->setValue(BreezyDesktopConfig::self()->displayVerticalOffset()); ui.kcfg_DisplayWrappingScheme->setCurrentIndex(BreezyDesktopConfig::self()->displayWrappingScheme()); + ui.kcfg_AntialiasingQuality->setCurrentIndex(BreezyDesktopConfig::self()->antialiasingQuality()); ui.kcfg_ZoomOnFocusEnabled->setChecked(BreezyDesktopConfig::self()->zoomOnFocusEnabled()); ui.kcfg_FocusedDisplayDistance->setEnabled(ui.kcfg_ZoomOnFocusEnabled->isChecked()); } diff --git a/kwin/src/kcm/breezydesktopeffectkcm.ui b/kwin/src/kcm/breezydesktopeffectkcm.ui index 22177f6..d01f119 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.ui +++ b/kwin/src/kcm/breezydesktopeffectkcm.ui @@ -226,13 +226,44 @@ + + + Anti-aliasing quality: + + + + + + + + None + + + + + Medium + + + + + High + + + + + Very High + + + + + Display Horizontal Offset: - + 2 @@ -251,14 +282,14 @@ - + Display Vertical Offset: - + 2 diff --git a/kwin/src/qml/main.qml b/kwin/src/qml/main.qml index 2794a05..d7f740d 100644 --- a/kwin/src/qml/main.qml +++ b/kwin/src/qml/main.qml @@ -104,8 +104,10 @@ Item { View3D { anchors.fill: parent environment: SceneEnvironment { - antialiasingMode: SceneEnvironment.SSAA - antialiasingQuality: SceneEnvironment.VeryHigh + antialiasingMode: root.effect.antialiasingQuality === 0 ? SceneEnvironment.NoAA : SceneEnvironment.SSAA + antialiasingQuality: root.effect.antialiasingQuality === 0 ? SceneEnvironment.Medium : ( + root.effect.antialiasingQuality === 1 ? SceneEnvironment.Medium : ( + root.effect.antialiasingQuality === 2 ? SceneEnvironment.High : SceneEnvironment.VeryHigh)) } PerspectiveCamera {