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 312 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 2070 of file kis_dlg_preferences.cc.

2071 : WdgDisplaySettings(parent, name)
2072{
2073 KisConfig cfg(true);
2074
2075 const QString rendererOpenGLText = i18nc("canvas renderer", "OpenGL");
2076 const QString rendererSoftwareText = i18nc("canvas renderer", "Software Renderer (very slow)");
2077#ifdef Q_OS_WIN
2078 const QString rendererOpenGLESText =
2079 qEnvironmentVariable("QT_ANGLE_PLATFORM") != "opengl"
2080 ? i18nc("canvas renderer", "Direct3D 11 via ANGLE")
2081 : i18nc("canvas renderer", "OpenGL via ANGLE");
2082#else
2083 const QString rendererOpenGLESText = i18nc("canvas renderer", "OpenGL ES");
2084#endif
2085
2087 lblCurrentRenderer->setText(renderer == KisOpenGL::RendererOpenGLES ? rendererOpenGLESText :
2088 renderer == KisOpenGL::RendererDesktopGL ? rendererOpenGLText :
2089 renderer == KisOpenGL::RendererSoftware ? rendererSoftwareText :
2090 i18nc("canvas renderer", "Unknown"));
2091
2092 cmbPreferredRenderer->clear();
2093
2094 const KisOpenGL::OpenGLRenderers supportedRenderers = KisOpenGL::getSupportedOpenGLRenderers();
2095 const bool onlyOneRendererSupported =
2096 supportedRenderers == KisOpenGL::RendererDesktopGL ||
2097 supportedRenderers == KisOpenGL::RendererOpenGLES ||
2098 supportedRenderers == KisOpenGL::RendererSoftware;
2099
2100
2101 if (!onlyOneRendererSupported) {
2102 QString qtPreferredRendererText;
2104 qtPreferredRendererText = rendererOpenGLESText;
2106 qtPreferredRendererText = rendererSoftwareText;
2107 } else {
2108 qtPreferredRendererText = rendererOpenGLText;
2109 }
2110 cmbPreferredRenderer->addItem(i18nc("canvas renderer", "Auto (%1)", qtPreferredRendererText), KisOpenGL::RendererAuto);
2111 cmbPreferredRenderer->setCurrentIndex(0);
2112 } else {
2113 cmbPreferredRenderer->setEnabled(false);
2114 }
2115
2116 if (supportedRenderers & KisOpenGL::RendererDesktopGL) {
2117 cmbPreferredRenderer->addItem(rendererOpenGLText, KisOpenGL::RendererDesktopGL);
2119 cmbPreferredRenderer->setCurrentIndex(cmbPreferredRenderer->count() - 1);
2120 }
2121 }
2122
2123 if (supportedRenderers & KisOpenGL::RendererOpenGLES) {
2124 cmbPreferredRenderer->addItem(rendererOpenGLESText, KisOpenGL::RendererOpenGLES);
2126 cmbPreferredRenderer->setCurrentIndex(cmbPreferredRenderer->count() - 1);
2127 }
2128 }
2129
2130 if (supportedRenderers & KisOpenGL::RendererSoftware) {
2131 cmbPreferredRenderer->addItem(rendererSoftwareText, KisOpenGL::RendererSoftware);
2133 cmbPreferredRenderer->setCurrentIndex(cmbPreferredRenderer->count() - 1);
2134 }
2135 }
2136
2137 if (!(supportedRenderers &
2141
2142 grpOpenGL->setEnabled(false);
2143 grpOpenGL->setChecked(false);
2144 chkUseTextureBuffer->setEnabled(false);
2145 cmbAssistantsDrawMode->setEnabled(false);
2146 cmbFilterMode->setEnabled(false);
2147 } else {
2148 grpOpenGL->setEnabled(true);
2149 grpOpenGL->setChecked(cfg.useOpenGL());
2150 chkUseTextureBuffer->setEnabled(cfg.useOpenGL());
2151 chkUseTextureBuffer->setChecked(cfg.useOpenGLTextureBuffer());
2152 cmbAssistantsDrawMode->setEnabled(cfg.useOpenGL());
2153 cmbAssistantsDrawMode->setCurrentIndex(assistantDrawModeToIndex(cfg.assistantsDrawMode()));
2154 cmbFilterMode->setEnabled(cfg.useOpenGL());
2155 cmbFilterMode->setCurrentIndex(cfg.openGLFilteringMode());
2156 // Don't show the high quality filtering mode if it's not available
2157 if (!KisOpenGL::supportsLoD()) {
2158 cmbFilterMode->removeItem(3);
2159 }
2160 }
2161
2162 lblCurrentDisplayFormat->setText("");
2163 lblCurrentRootSurfaceFormat->setText("");
2164 grpHDRWarning->setVisible(false);
2165 cmbPreferedRootSurfaceFormat->addItem(colorSpaceString(KisSurfaceColorSpaceWrapper::sRGBColorSpace, 8));
2166#ifdef HAVE_HDR
2167 cmbPreferedRootSurfaceFormat->addItem(colorSpaceString(KisSurfaceColorSpaceWrapper::bt2020PQColorSpace, 10));
2168 cmbPreferedRootSurfaceFormat->addItem(colorSpaceString(KisSurfaceColorSpaceWrapper::scRGBColorSpace, 16));
2169#endif
2170 cmbPreferedRootSurfaceFormat->setCurrentIndex(formatToIndex(KisConfig::BT709_G22));
2171 slotPreferredSurfaceFormatChanged(cmbPreferedRootSurfaceFormat->currentIndex());
2172
2173 QOpenGLContext *context = QOpenGLContext::currentContext();
2174
2175 if (!context) {
2176 context = QOpenGLContext::globalShareContext();
2177 }
2178
2179 if (context) {
2180 QScreen *screen = KisPart::instance()->currentMainwindow()->screen();
2181 KisScreenInformationAdapter adapter(context);
2182 if (screen && adapter.isValid()) {
2183 KisScreenInformationAdapter::ScreenInfo info = adapter.infoForScreen(screen);
2184 if (info.isValid()) {
2185 QStringList toolTip;
2186
2187 toolTip << i18n("Display Id: %1", info.screen->name());
2188 toolTip << i18n("Display Name: %1 %2", info.screen->manufacturer(), info.screen->model());
2189 toolTip << i18n("Min Luminance: %1", info.minLuminance);
2190 toolTip << i18n("Max Luminance: %1", info.maxLuminance);
2191 toolTip << i18n("Max Full Frame Luminance: %1", info.maxFullFrameLuminance);
2192 toolTip << i18n("Red Primary: %1, %2", info.redPrimary[0], info.redPrimary[1]);
2193 toolTip << i18n("Green Primary: %1, %2", info.greenPrimary[0], info.greenPrimary[1]);
2194 toolTip << i18n("Blue Primary: %1, %2", info.bluePrimary[0], info.bluePrimary[1]);
2195 toolTip << i18n("White Point: %1, %2", info.whitePoint[0], info.whitePoint[1]);
2196
2197 lblCurrentDisplayFormat->setToolTip(toolTip.join('\n'));
2198 lblCurrentDisplayFormat->setText(colorSpaceString(info.colorSpace, info.bitsPerColor));
2199 } else {
2200 lblCurrentDisplayFormat->setToolTip("");
2201 lblCurrentDisplayFormat->setText(i18n("Unknown"));
2202 }
2203 } else {
2204 lblCurrentDisplayFormat->setToolTip("");
2205 lblCurrentDisplayFormat->setText(i18n("Unknown"));
2206 qWarning() << "Failed to fetch display info:" << adapter.errorString();
2207 }
2208
2209 const QSurfaceFormat currentFormat = KisOpenGLModeProber::instance()->surfaceformatInUse();
2210 const auto colorSpace = KisSurfaceColorSpaceWrapper::fromQtColorSpace(currentFormat.colorSpace());
2211 lblCurrentRootSurfaceFormat->setText(colorSpaceString(colorSpace, currentFormat.redBufferSize()));
2212 cmbPreferedRootSurfaceFormat->setCurrentIndex(formatToIndex(cfg.rootSurfaceFormat()));
2213 connect(cmbPreferedRootSurfaceFormat, SIGNAL(currentIndexChanged(int)), SLOT(slotPreferredSurfaceFormatChanged(int)));
2214 slotPreferredSurfaceFormatChanged(cmbPreferedRootSurfaceFormat->currentIndex());
2215 }
2216
2217#ifndef HAVE_HDR
2218 tabHDR->setEnabled(false);
2219
2225 if (KisPlatformPluginInterfaceFactory::instance()->surfaceColorManagedByOS()) {
2226 const int hdrTabIndex = tabWidget->indexOf(tabHDR);
2227 KIS_SAFE_ASSERT_RECOVER_NOOP(hdrTabIndex >= 0);
2228 if (hdrTabIndex >= 0) {
2229 tabWidget->setTabVisible(hdrTabIndex, false);
2230 }
2231 }
2232#endif
2233
2234 const QStringList openglWarnings = KisOpenGL::getOpenGLWarnings();
2235 if (openglWarnings.isEmpty()) {
2236 grpOpenGLWarnings->setVisible(false);
2237 } else {
2238 QString text = QString("<p><b>%1</b>").arg(i18n("Warning(s):"));
2239 text.append("<ul>");
2240 Q_FOREACH (const QString &warning, openglWarnings) {
2241 text.append("<li>");
2242 text.append(warning.toHtmlEscaped());
2243 text.append("</li>");
2244 }
2245 text.append("</ul></p>");
2246 grpOpenGLWarnings->setText(text);
2247 grpOpenGLWarnings->setPixmap(
2248 grpOpenGLWarnings->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
2249 grpOpenGLWarnings->setVisible(true);
2250 }
2251
2252 KisImageConfig imageCfg(false);
2253
2254 KoColor c;
2255 c.fromQColor(imageCfg.selectionOverlayMaskColor());
2256 c.setOpacity(1.0);
2257 btnSelectionOverlayColor->setColor(c);
2258 sldSelectionOverlayOpacity->setRange(0.0, 1.0, 2);
2259 sldSelectionOverlayOpacity->setSingleStep(0.05);
2260 sldSelectionOverlayOpacity->setValue(imageCfg.selectionOverlayMaskColor().alphaF());
2261
2262 sldSelectionOutlineOpacity->setRange(0.0, 1.0, 2);
2263 sldSelectionOutlineOpacity->setSingleStep(0.05);
2264 sldSelectionOutlineOpacity->setValue(imageCfg.selectionOutlineOpacity());
2265
2266 intCheckSize->setValue(cfg.checkSize());
2267 chkMoving->setChecked(cfg.scrollCheckers());
2269 ck1.fromQColor(cfg.checkersColor1());
2270 colorChecks1->setColor(ck1);
2272 ck2.fromQColor(cfg.checkersColor2());
2273 colorChecks2->setColor(ck2);
2275 cb.fromQColor(cfg.canvasBorderColor());
2276 canvasBorder->setColor(cb);
2277 hideScrollbars->setChecked(cfg.hideScrollbars());
2278 chkCurveAntialiasing->setChecked(cfg.antialiasCurves());
2279 chkSelectionOutlineAntialiasing->setChecked(cfg.antialiasSelectionOutline());
2280 chkChannelsAsColor->setChecked(cfg.showSingleChannelAsColor());
2281 chkHidePopups->setChecked(cfg.hidePopups());
2282
2283 connect(grpOpenGL, SIGNAL(toggled(bool)), SLOT(slotUseOpenGLToggled(bool)));
2284
2285 KoColor gridColor(KoColorSpaceRegistry::instance()->rgb8());
2286 gridColor.fromQColor(cfg.getPixelGridColor());
2287 pixelGridColorButton->setColor(gridColor);
2288 pixelGridDrawingThresholdBox->setValue(cfg.getPixelGridDrawingThreshold() * 100);
2289 KisSpinBoxI18nHelper::setText(pixelGridDrawingThresholdBox, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
2290}
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:459
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, 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 2292 of file kis_dlg_preferences.cc.

2293{
2294 KisConfig cfg(true);
2295 cmbPreferredRenderer->setCurrentIndex(0);
2298 grpOpenGL->setEnabled(false);
2299 grpOpenGL->setChecked(false);
2300 chkUseTextureBuffer->setEnabled(false);
2301 cmbAssistantsDrawMode->setEnabled(false);
2302 cmbFilterMode->setEnabled(false);
2303 }
2304 else {
2305 grpOpenGL->setEnabled(true);
2306 grpOpenGL->setChecked(cfg.useOpenGL(true));
2307 chkUseTextureBuffer->setChecked(cfg.useOpenGLTextureBuffer(true));
2308 chkUseTextureBuffer->setEnabled(true);
2309 cmbAssistantsDrawMode->setEnabled(true);
2310 cmbAssistantsDrawMode->setCurrentIndex(assistantDrawModeToIndex(cfg.assistantsDrawMode(true)));
2311 cmbFilterMode->setEnabled(true);
2312 cmbFilterMode->setCurrentIndex(cfg.openGLFilteringMode(true));
2313 }
2314
2315 chkMoving->setChecked(cfg.scrollCheckers(true));
2316
2317 KisImageConfig imageCfg(false);
2318
2319 KoColor c;
2320 c.fromQColor(imageCfg.selectionOverlayMaskColor(true));
2321 c.setOpacity(1.0);
2322 btnSelectionOverlayColor->setColor(c);
2323 sldSelectionOverlayOpacity->setValue(imageCfg.selectionOverlayMaskColor(true).alphaF());
2324
2325 sldSelectionOutlineOpacity->setValue(imageCfg.selectionOutlineOpacity(true));
2326
2327 intCheckSize->setValue(cfg.checkSize(true));
2329 ck1.fromQColor(cfg.checkersColor1(true));
2330 colorChecks1->setColor(ck1);
2332 ck2.fromQColor(cfg.checkersColor2(true));
2333 colorChecks2->setColor(ck2);
2335 cvb.fromQColor(cfg.canvasBorderColor(true));
2336 canvasBorder->setColor(cvb);
2337 hideScrollbars->setChecked(cfg.hideScrollbars(true));
2338 chkCurveAntialiasing->setChecked(cfg.antialiasCurves(true));
2339 chkSelectionOutlineAntialiasing->setChecked(cfg.antialiasSelectionOutline(true));
2340 chkChannelsAsColor->setChecked(cfg.showSingleChannelAsColor(true));
2341 chkHidePopups->setChecked(cfg.hidePopups(true));
2342
2343 KoColor gridColor(KoColorSpaceRegistry::instance()->rgb8());
2344 gridColor.fromQColor(cfg.getPixelGridColor(true));
2345 pixelGridColorButton->setColor(gridColor);
2346 pixelGridDrawingThresholdBox->setValue(cfg.getPixelGridDrawingThreshold(true) * 100);
2347 KisSpinBoxI18nHelper::setText(pixelGridDrawingThresholdBox, i18nc("{n} is the number value, % is the percent sign", "{n}%"));
2348
2349 cmbPreferedRootSurfaceFormat->setCurrentIndex(formatToIndex(KisConfig::BT709_G22));
2350 slotPreferredSurfaceFormatChanged(cmbPreferedRootSurfaceFormat->currentIndex());
2351}

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 2360 of file kis_dlg_preferences.cc.

2361{
2362 Q_UNUSED(index);
2363
2364 QOpenGLContext *context = QOpenGLContext::currentContext();
2365 if (context) {
2366 QScreen *screen = KisPart::instance()->currentMainwindow()->screen();
2367 KisScreenInformationAdapter adapter(context);
2368 if (adapter.isValid()) {
2369 KisScreenInformationAdapter::ScreenInfo info = adapter.infoForScreen(screen);
2370 if (info.isValid()) {
2371 if (cmbPreferedRootSurfaceFormat->currentIndex() != formatToIndex(KisConfig::BT709_G22) &&
2373 grpHDRWarning->setVisible(true);
2374 grpHDRWarning->setPixmap(
2375 grpHDRWarning->style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(QSize(32, 32)));
2376 grpHDRWarning->setText(i18n("<b>Warning:</b> current display doesn't support HDR rendering"));
2377 } else {
2378 grpHDRWarning->setVisible(false);
2379 }
2380 }
2381 }
2382 }
2383}

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 2353 of file kis_dlg_preferences.cc.

2354{
2355 chkUseTextureBuffer->setEnabled(isChecked);
2356 cmbFilterMode->setEnabled(isChecked);
2357 cmbAssistantsDrawMode->setEnabled(isChecked);
2358}

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