Krita Source Code Documentation
Loading...
Searching...
No Matches
DisplaySettingsTab Class Reference

#include <kis_dlg_preferences.h>

+ Inheritance diagram for DisplaySettingsTab:

Public Member Functions

 DisplaySettingsTab (QWidget *parent=0, const char *name=0)
 
void setDefault ()
 
- Public Member Functions inherited from WdgDisplaySettings
 WdgDisplaySettings (QWidget *parent, const char *name)
 

Protected Slots

void slotPreferredSurfaceFormatChanged (int index)
 
void slotUseOpenGLToggled (bool isChecked)
 

Detailed Description

Display settings tab for preferences dialog

Definition at line 299 of file kis_dlg_preferences.h.

Constructor & Destructor Documentation

◆ DisplaySettingsTab()

DisplaySettingsTab::DisplaySettingsTab ( QWidget * parent = 0,
const char * name = 0 )

We hide the HDR page in Wayland mode, because the mode is managed by a different page. We still keep the disabled tab visible on other systems just to promote the existence of this feature.

Definition at line 1937 of file kis_dlg_preferences.cc.

1938 : WdgDisplaySettings(parent, name)
1939{
1940 KisConfig cfg(true);
1941
1942 const QString rendererOpenGLText = i18nc("canvas renderer", "OpenGL");
1943 const QString rendererSoftwareText = i18nc("canvas renderer", "Software Renderer (very slow)");
1944#ifdef Q_OS_WIN
1945 const QString rendererOpenGLESText =
1946 qEnvironmentVariable("QT_ANGLE_PLATFORM") != "opengl"
1947 ? i18nc("canvas renderer", "Direct3D 11 via ANGLE")
1948 : i18nc("canvas renderer", "OpenGL via ANGLE");
1949#else
1950 const QString rendererOpenGLESText = i18nc("canvas renderer", "OpenGL ES");
1951#endif
1952
1954 lblCurrentRenderer->setText(renderer == KisOpenGL::RendererOpenGLES ? rendererOpenGLESText :
1955 renderer == KisOpenGL::RendererDesktopGL ? rendererOpenGLText :
1956 renderer == KisOpenGL::RendererSoftware ? rendererSoftwareText :
1957 i18nc("canvas renderer", "Unknown"));
1958
1959 cmbPreferredRenderer->clear();
1960
1961 const KisOpenGL::OpenGLRenderers supportedRenderers = KisOpenGL::getSupportedOpenGLRenderers();
1962 const bool onlyOneRendererSupported =
1963 supportedRenderers == KisOpenGL::RendererDesktopGL ||
1964 supportedRenderers == KisOpenGL::RendererOpenGLES ||
1965 supportedRenderers == KisOpenGL::RendererSoftware;
1966
1967
1968 if (!onlyOneRendererSupported) {
1969 QString qtPreferredRendererText;
1971 qtPreferredRendererText = rendererOpenGLESText;
1973 qtPreferredRendererText = rendererSoftwareText;
1974 } else {
1975 qtPreferredRendererText = rendererOpenGLText;
1976 }
1977 cmbPreferredRenderer->addItem(i18nc("canvas renderer", "Auto (%1)", qtPreferredRendererText), KisOpenGL::RendererAuto);
1978 cmbPreferredRenderer->setCurrentIndex(0);
1979 } else {
1980 cmbPreferredRenderer->setEnabled(false);
1981 }
1982
1983 if (supportedRenderers & KisOpenGL::RendererDesktopGL) {
1984 cmbPreferredRenderer->addItem(rendererOpenGLText, KisOpenGL::RendererDesktopGL);
1986 cmbPreferredRenderer->setCurrentIndex(cmbPreferredRenderer->count() - 1);
1987 }
1988 }
1989
1990 if (supportedRenderers & KisOpenGL::RendererOpenGLES) {
1991 cmbPreferredRenderer->addItem(rendererOpenGLESText, KisOpenGL::RendererOpenGLES);
1993 cmbPreferredRenderer->setCurrentIndex(cmbPreferredRenderer->count() - 1);
1994 }
1995 }
1996
1997 if (supportedRenderers & KisOpenGL::RendererSoftware) {
1998 cmbPreferredRenderer->addItem(rendererSoftwareText, KisOpenGL::RendererSoftware);
2000 cmbPreferredRenderer->setCurrentIndex(cmbPreferredRenderer->count() - 1);
2001 }
2002 }
2003
2004 if (!(supportedRenderers &
2008
2009 grpOpenGL->setEnabled(false);
2010 grpOpenGL->setChecked(false);
2011 chkUseTextureBuffer->setEnabled(false);
2012 cmbAssistantsDrawMode->setEnabled(false);
2013 cmbFilterMode->setEnabled(false);
2014 } else {
2015 grpOpenGL->setEnabled(true);
2016 grpOpenGL->setChecked(cfg.useOpenGL());
2017 chkUseTextureBuffer->setEnabled(cfg.useOpenGL());
2018 chkUseTextureBuffer->setChecked(cfg.useOpenGLTextureBuffer());
2019 cmbAssistantsDrawMode->setEnabled(cfg.useOpenGL());
2020 cmbAssistantsDrawMode->setCurrentIndex(assistantDrawModeToIndex(cfg.assistantsDrawMode()));
2021 cmbFilterMode->setEnabled(cfg.useOpenGL());
2022 cmbFilterMode->setCurrentIndex(cfg.openGLFilteringMode());
2023 // Don't show the high quality filtering mode if it's not available
2024 if (!KisOpenGL::supportsLoD()) {
2025 cmbFilterMode->removeItem(3);
2026 }
2027 }
2028
2029 lblCurrentDisplayFormat->setText("");
2030 lblCurrentRootSurfaceFormat->setText("");
2031 grpHDRWarning->setVisible(false);
2032 cmbPreferedRootSurfaceFormat->addItem(colorSpaceString(KisSurfaceColorSpaceWrapper::sRGBColorSpace, 8));
2033#ifdef HAVE_HDR
2034 cmbPreferedRootSurfaceFormat->addItem(colorSpaceString(KisSurfaceColorSpaceWrapper::bt2020PQColorSpace, 10));
2035 cmbPreferedRootSurfaceFormat->addItem(colorSpaceString(KisSurfaceColorSpaceWrapper::scRGBColorSpace, 16));
2036#endif
2037 cmbPreferedRootSurfaceFormat->setCurrentIndex(formatToIndex(KisConfig::BT709_G22));
2038 slotPreferredSurfaceFormatChanged(cmbPreferedRootSurfaceFormat->currentIndex());
2039
2040 QOpenGLContext *context = QOpenGLContext::currentContext();
2041
2042 if (!context) {
2043 context = QOpenGLContext::globalShareContext();
2044 }
2045
2046 if (context) {
2047 QScreen *screen = KisPart::instance()->currentMainwindow()->screen();
2048 KisScreenInformationAdapter adapter(context);
2049 if (screen && adapter.isValid()) {
2050 KisScreenInformationAdapter::ScreenInfo info = adapter.infoForScreen(screen);
2051 if (info.isValid()) {
2052 QStringList toolTip;
2053
2054 toolTip << i18n("Display Id: %1", info.screen->name());
2055 toolTip << i18n("Display Name: %1 %2", info.screen->manufacturer(), info.screen->model());
2056 toolTip << i18n("Min Luminance: %1", info.minLuminance);
2057 toolTip << i18n("Max Luminance: %1", info.maxLuminance);
2058 toolTip << i18n("Max Full Frame Luminance: %1", info.maxFullFrameLuminance);
2059 toolTip << i18n("Red Primary: %1, %2", info.redPrimary[0], info.redPrimary[1]);
2060 toolTip << i18n("Green Primary: %1, %2", info.greenPrimary[0], info.greenPrimary[1]);
2061 toolTip << i18n("Blue Primary: %1, %2", info.bluePrimary[0], info.bluePrimary[1]);
2062 toolTip << i18n("White Point: %1, %2", info.whitePoint[0], info.whitePoint[1]);
2063
2064 lblCurrentDisplayFormat->setToolTip(toolTip.join('\n'));
2065 lblCurrentDisplayFormat->setText(colorSpaceString(info.colorSpace, info.bitsPerColor));
2066 } else {
2067 lblCurrentDisplayFormat->setToolTip("");
2068 lblCurrentDisplayFormat->setText(i18n("Unknown"));
2069 }
2070 } else {
2071 lblCurrentDisplayFormat->setToolTip("");
2072 lblCurrentDisplayFormat->setText(i18n("Unknown"));
2073 qWarning() << "Failed to fetch display info:" << adapter.errorString();
2074 }
2075
2076 const QSurfaceFormat currentFormat = KisOpenGLModeProber::instance()->surfaceformatInUse();
2077 const auto colorSpace = KisSurfaceColorSpaceWrapper::fromQtColorSpace(currentFormat.colorSpace());
2078 lblCurrentRootSurfaceFormat->setText(colorSpaceString(colorSpace, currentFormat.redBufferSize()));
2079 cmbPreferedRootSurfaceFormat->setCurrentIndex(formatToIndex(cfg.rootSurfaceFormat()));
2080 connect(cmbPreferedRootSurfaceFormat, SIGNAL(currentIndexChanged(int)), SLOT(slotPreferredSurfaceFormatChanged(int)));
2081 slotPreferredSurfaceFormatChanged(cmbPreferedRootSurfaceFormat->currentIndex());
2082 }
2083
2084#ifndef HAVE_HDR
2085 tabHDR->setEnabled(false);
2086
2092 if (KisPlatformPluginInterfaceFactory::instance()->surfaceColorManagedByOS()) {
2093 const int hdrTabIndex = tabWidget->indexOf(tabHDR);
2094 KIS_SAFE_ASSERT_RECOVER_NOOP(hdrTabIndex >= 0);
2095 if (hdrTabIndex >= 0) {
2096 tabWidget->setTabVisible(hdrTabIndex, false);
2097 }
2098 }
2099#endif
2100
2101 const QStringList openglWarnings = KisOpenGL::getOpenGLWarnings();
2102 if (openglWarnings.isEmpty()) {
2103 grpOpenGLWarnings->setVisible(false);
2104 } else {
2105 QString text = QString("<p><b>%1</b>").arg(i18n("Warning(s):"));
2106 text.append("<ul>");
2107 Q_FOREACH (const QString &warning, openglWarnings) {
2108 text.append("<li>");
2109 text.append(warning.toHtmlEscaped());
2110 text.append("</li>");
2111 }
2112 text.append("</ul></p>");
2113 grpOpenGLWarnings->setText(text);
2114 grpOpenGLWarnings->setPixmap(
2115 grpOpenGLWarnings->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
2116 grpOpenGLWarnings->setVisible(true);
2117 }
2118
2119 KisImageConfig imageCfg(false);
2120
2121 KoColor c;
2122 c.fromQColor(imageCfg.selectionOverlayMaskColor());
2123 c.setOpacity(1.0);
2124 btnSelectionOverlayColor->setColor(c);
2125 sldSelectionOverlayOpacity->setRange(0.0, 1.0, 2);
2126 sldSelectionOverlayOpacity->setSingleStep(0.05);
2127 sldSelectionOverlayOpacity->setValue(imageCfg.selectionOverlayMaskColor().alphaF());
2128
2129 sldSelectionOutlineOpacity->setRange(0.0, 1.0, 2);
2130 sldSelectionOutlineOpacity->setSingleStep(0.05);
2131 sldSelectionOutlineOpacity->setValue(imageCfg.selectionOutlineOpacity());
2132
2133 intCheckSize->setValue(cfg.checkSize());
2134 chkMoving->setChecked(cfg.scrollCheckers());
2136 ck1.fromQColor(cfg.checkersColor1());
2137 colorChecks1->setColor(ck1);
2139 ck2.fromQColor(cfg.checkersColor2());
2140 colorChecks2->setColor(ck2);
2142 cb.fromQColor(cfg.canvasBorderColor());
2143 canvasBorder->setColor(cb);
2144 hideScrollbars->setChecked(cfg.hideScrollbars());
2145 chkCurveAntialiasing->setChecked(cfg.antialiasCurves());
2146 chkSelectionOutlineAntialiasing->setChecked(cfg.antialiasSelectionOutline());
2147 chkChannelsAsColor->setChecked(cfg.showSingleChannelAsColor());
2148 chkHidePopups->setChecked(cfg.hidePopups());
2149
2150 connect(grpOpenGL, SIGNAL(toggled(bool)), SLOT(slotUseOpenGLToggled(bool)));
2151
2152 KoColor gridColor(KoColorSpaceRegistry::instance()->rgb8());
2153 gridColor.fromQColor(cfg.getPixelGridColor());
2154 pixelGridColorButton->setColor(gridColor);
2155 pixelGridDrawingThresholdBox->setValue(cfg.getPixelGridDrawingThreshold() * 100);
2156 KisSpinBoxI18nHelper::setText(pixelGridDrawingThresholdBox, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
2157}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void slotUseOpenGLToggled(bool isChecked)
void slotPreferredSurfaceFormatChanged(int index)
static KisOpenGLModeProber * instance()
QSurfaceFormat surfaceformatInUse() const
static OpenGLRenderer getCurrentOpenGLRenderer()
static OpenGLRenderers getSupportedOpenGLRenderers()
@ RendererSoftware
Definition kis_opengl.h:45
@ RendererDesktopGL
Definition kis_opengl.h:43
@ RendererOpenGLES
Definition kis_opengl.h:44
static QStringList getOpenGLWarnings()
static bool supportsLoD()
static OpenGLRenderer getUserPreferredOpenGLRendererConfig()
static OpenGLRenderer getQtPreferredOpenGLRenderer()
static KisPart * instance()
Definition KisPart.cpp:131
KisMainWindow * currentMainwindow() const
Definition KisPart.cpp:483
static KisPlatformPluginInterfaceFactory * instance()
static KisSurfaceColorSpaceWrapper fromQtColorSpace(const QColorSpace &colorSpace)
void setOpacity(quint8 alpha)
Definition KoColor.cpp:333
void fromQColor(const QColor &c)
Convenient function for converting from a QColor.
Definition KoColor.cpp:213
WdgDisplaySettings(QWidget *parent, const char *name)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
void setText(QSpinBox *spinBox, const QStringView textTemplate)
static KoColorSpaceRegistry * instance()

References KisConfig::antialiasCurves(), KisConfig::antialiasSelectionOutline(), KisConfig::assistantsDrawMode(), KisScreenInformationAdapter::ScreenInfo::bitsPerColor, KisScreenInformationAdapter::ScreenInfo::bluePrimary, KisSurfaceColorSpaceWrapper::bt2020PQColorSpace, KisConfig::BT709_G22, KisConfig::canvasBorderColor(), KisConfig::checkersColor1(), KisConfig::checkersColor2(), KisConfig::checkSize(), KisScreenInformationAdapter::ScreenInfo::colorSpace, connect(), KisPart::currentMainwindow(), KisScreenInformationAdapter::errorString(), KoColor::fromQColor(), KisSurfaceColorSpaceWrapper::fromQtColorSpace(), KisOpenGL::getCurrentOpenGLRenderer(), KisOpenGL::getOpenGLWarnings(), KisConfig::getPixelGridColor(), KisConfig::getPixelGridDrawingThreshold(), KisOpenGL::getQtPreferredOpenGLRenderer(), KisOpenGL::getSupportedOpenGLRenderers(), KisOpenGL::getUserPreferredOpenGLRendererConfig(), KisScreenInformationAdapter::ScreenInfo::greenPrimary, KisConfig::hidePopups(), KisConfig::hideScrollbars(), KisScreenInformationAdapter::infoForScreen(), KoColorSpaceRegistry::instance(), KisPart::instance(), KisPlatformPluginInterfaceFactory::instance(), KisOpenGLModeProber::instance(), KisScreenInformationAdapter::ScreenInfo::isValid(), KisScreenInformationAdapter::isValid(), KIS_SAFE_ASSERT_RECOVER_NOOP, KisScreenInformationAdapter::ScreenInfo::maxFullFrameLuminance, KisScreenInformationAdapter::ScreenInfo::maxLuminance, KisScreenInformationAdapter::ScreenInfo::minLuminance, KisConfig::openGLFilteringMode(), KisScreenInformationAdapter::ScreenInfo::redPrimary, KisOpenGL::RendererAuto, KisOpenGL::RendererDesktopGL, KisOpenGL::RendererOpenGLES, KisOpenGL::RendererSoftware, KisConfig::rootSurfaceFormat(), KisScreenInformationAdapter::ScreenInfo::screen, KisSurfaceColorSpaceWrapper::scRGBColorSpace, KisConfig::scrollCheckers(), KisImageConfig::selectionOutlineOpacity(), KisImageConfig::selectionOverlayMaskColor(), KoColor::setOpacity(), KisSpinBoxI18nHelper::setText(), KisConfig::showSingleChannelAsColor(), slotPreferredSurfaceFormatChanged(), slotUseOpenGLToggled(), KisSurfaceColorSpaceWrapper::sRGBColorSpace, KisOpenGL::supportsLoD(), KisOpenGLModeProber::surfaceformatInUse(), KisConfig::useOpenGL(), KisConfig::useOpenGLTextureBuffer(), and KisScreenInformationAdapter::ScreenInfo::whitePoint.

Member Function Documentation

◆ setDefault()

void DisplaySettingsTab::setDefault ( )

Definition at line 2159 of file kis_dlg_preferences.cc.

2160{
2161 KisConfig cfg(true);
2162 cmbPreferredRenderer->setCurrentIndex(0);
2165 grpOpenGL->setEnabled(false);
2166 grpOpenGL->setChecked(false);
2167 chkUseTextureBuffer->setEnabled(false);
2168 cmbAssistantsDrawMode->setEnabled(false);
2169 cmbFilterMode->setEnabled(false);
2170 }
2171 else {
2172 grpOpenGL->setEnabled(true);
2173 grpOpenGL->setChecked(cfg.useOpenGL(true));
2174 chkUseTextureBuffer->setChecked(cfg.useOpenGLTextureBuffer(true));
2175 chkUseTextureBuffer->setEnabled(true);
2176 cmbAssistantsDrawMode->setEnabled(true);
2177 cmbAssistantsDrawMode->setCurrentIndex(assistantDrawModeToIndex(cfg.assistantsDrawMode(true)));
2178 cmbFilterMode->setEnabled(true);
2179 cmbFilterMode->setCurrentIndex(cfg.openGLFilteringMode(true));
2180 }
2181
2182 chkMoving->setChecked(cfg.scrollCheckers(true));
2183
2184 KisImageConfig imageCfg(false);
2185
2186 KoColor c;
2187 c.fromQColor(imageCfg.selectionOverlayMaskColor(true));
2188 c.setOpacity(1.0);
2189 btnSelectionOverlayColor->setColor(c);
2190 sldSelectionOverlayOpacity->setValue(imageCfg.selectionOverlayMaskColor(true).alphaF());
2191
2192 sldSelectionOutlineOpacity->setValue(imageCfg.selectionOutlineOpacity(true));
2193
2194 intCheckSize->setValue(cfg.checkSize(true));
2196 ck1.fromQColor(cfg.checkersColor1(true));
2197 colorChecks1->setColor(ck1);
2199 ck2.fromQColor(cfg.checkersColor2(true));
2200 colorChecks2->setColor(ck2);
2202 cvb.fromQColor(cfg.canvasBorderColor(true));
2203 canvasBorder->setColor(cvb);
2204 hideScrollbars->setChecked(cfg.hideScrollbars(true));
2205 chkCurveAntialiasing->setChecked(cfg.antialiasCurves(true));
2206 chkSelectionOutlineAntialiasing->setChecked(cfg.antialiasSelectionOutline(true));
2207 chkChannelsAsColor->setChecked(cfg.showSingleChannelAsColor(true));
2208 chkHidePopups->setChecked(cfg.hidePopups(true));
2209
2210 KoColor gridColor(KoColorSpaceRegistry::instance()->rgb8());
2211 gridColor.fromQColor(cfg.getPixelGridColor(true));
2212 pixelGridColorButton->setColor(gridColor);
2213 pixelGridDrawingThresholdBox->setValue(cfg.getPixelGridDrawingThreshold(true) * 100);
2214 KisSpinBoxI18nHelper::setText(pixelGridDrawingThresholdBox, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
2215
2216 cmbPreferedRootSurfaceFormat->setCurrentIndex(formatToIndex(KisConfig::BT709_G22));
2217 slotPreferredSurfaceFormatChanged(cmbPreferedRootSurfaceFormat->currentIndex());
2218}

References KisConfig::antialiasCurves(), KisConfig::antialiasSelectionOutline(), KisConfig::assistantsDrawMode(), KisConfig::BT709_G22, KisConfig::canvasBorderColor(), KisConfig::checkersColor1(), KisConfig::checkersColor2(), KisConfig::checkSize(), KoColor::fromQColor(), KisConfig::getPixelGridColor(), KisConfig::getPixelGridDrawingThreshold(), KisOpenGL::getSupportedOpenGLRenderers(), KisConfig::hidePopups(), KisConfig::hideScrollbars(), KoColorSpaceRegistry::instance(), KisConfig::openGLFilteringMode(), KisOpenGL::RendererDesktopGL, KisOpenGL::RendererOpenGLES, KisConfig::scrollCheckers(), KisImageConfig::selectionOutlineOpacity(), KisImageConfig::selectionOverlayMaskColor(), KoColor::setOpacity(), KisSpinBoxI18nHelper::setText(), KisConfig::showSingleChannelAsColor(), slotPreferredSurfaceFormatChanged(), KisConfig::useOpenGL(), and KisConfig::useOpenGLTextureBuffer().

◆ slotPreferredSurfaceFormatChanged

void DisplaySettingsTab::slotPreferredSurfaceFormatChanged ( int index)
protectedslot

Definition at line 2227 of file kis_dlg_preferences.cc.

2228{
2229 Q_UNUSED(index);
2230
2231 QOpenGLContext *context = QOpenGLContext::currentContext();
2232 if (context) {
2233 QScreen *screen = KisPart::instance()->currentMainwindow()->screen();
2234 KisScreenInformationAdapter adapter(context);
2235 if (adapter.isValid()) {
2236 KisScreenInformationAdapter::ScreenInfo info = adapter.infoForScreen(screen);
2237 if (info.isValid()) {
2238 if (cmbPreferedRootSurfaceFormat->currentIndex() != formatToIndex(KisConfig::BT709_G22) &&
2240 grpHDRWarning->setVisible(true);
2241 grpHDRWarning->setPixmap(
2242 grpHDRWarning->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
2243 grpHDRWarning->setText(i18n("<b>Warning:</b> current display doesn't support HDR rendering"));
2244 } else {
2245 grpHDRWarning->setVisible(false);
2246 }
2247 }
2248 }
2249 }
2250}

References KisConfig::BT709_G22, KisScreenInformationAdapter::ScreenInfo::colorSpace, KisPart::currentMainwindow(), KisScreenInformationAdapter::infoForScreen(), KisPart::instance(), KisScreenInformationAdapter::ScreenInfo::isValid(), KisScreenInformationAdapter::isValid(), and KisSurfaceColorSpaceWrapper::sRGBColorSpace.

◆ slotUseOpenGLToggled

void DisplaySettingsTab::slotUseOpenGLToggled ( bool isChecked)
protectedslot

Definition at line 2220 of file kis_dlg_preferences.cc.

2221{
2222 chkUseTextureBuffer->setEnabled(isChecked);
2223 cmbFilterMode->setEnabled(isChecked);
2224 cmbAssistantsDrawMode->setEnabled(isChecked);
2225}

The documentation for this class was generated from the following files: