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

#include <kis_dlg_preferences.h>

+ Inheritance diagram for ColorSettingsTab:

Public Types

using CanvasSurfaceBitDepthMode = KisConfig::CanvasSurfaceBitDepthMode
 
using CanvasSurfaceMode = KisConfig::CanvasSurfaceMode
 
enum  PreferredSpaceType { PreferredSpace , MasteringSpace }
 

Public Member Functions

 ColorSettingsTab (QWidget *parent=0, const char *name=0)
 
void setDefault ()
 

Public Attributes

QPointer< KisSqueezedComboBoxm_canvasSurfaceBitDepth
 
QPointer< KisSqueezedComboBoxm_canvasSurfaceColorSpace
 
QPointer< QCheckBox > m_chkEnableCanvasColorSpaceManagement
 
bool m_colorManagedByOS {false}
 
QList< QLabel * > m_monitorProfileLabels
 
QList< KisSqueezedComboBox * > m_monitorProfileWidgets
 
WdgColorSettingsm_page
 
QButtonGroup m_pasteBehaviourGroup
 
QPointer< KisCIETongueWidgetm_preferredSpaceGraphic
 
QButtonGroup m_preferredSpaceGraphicMode
 
QScopedPointer< KisProofingConfigModelm_proofModel
 
QScopedPointer< KisScreenMigrationTrackerm_screenMigrationTracker
 

Private Slots

void installProfile ()
 
void refillMonitorProfiles (const KoID &s)
 
void toggleUseDefaultColorSpace (bool useDefColorSpace)
 
void updatePreferredSpaceGraphic ()
 
void updateProofingDisplayInfo ()
 

Detailed Description

Definition at line 197 of file kis_dlg_preferences.h.

Member Typedef Documentation

◆ CanvasSurfaceBitDepthMode

◆ CanvasSurfaceMode

Member Enumeration Documentation

◆ PreferredSpaceType

Enumerator
PreferredSpace 
MasteringSpace 

Definition at line 205 of file kis_dlg_preferences.h.

Constructor & Destructor Documentation

◆ ColorSettingsTab()

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

Default proofing config

Definition at line 1291 of file kis_dlg_preferences.cc.

1292 : QWidget(parent)
1294{
1295 setObjectName(name);
1296
1297 // XXX: Make sure only profiles that fit the specified color model
1298 // are shown in the profile combos
1299
1300 QGridLayout * l = new QGridLayout(this);
1301 l->setContentsMargins(0, 0, 0, 0);
1302 m_page = new WdgColorSettings(this);
1303 l->addWidget(m_page, 0, 0);
1304
1305 KisConfig cfg(true);
1306
1308
1309 m_page->useDefColorSpace->setChecked(cfg.useDefaultColorSpace());
1310 connect(m_page->useDefColorSpace, SIGNAL(toggled(bool)), this, SLOT(toggleUseDefaultColorSpace(bool)));
1312 for (QList<KoID>::iterator id = colorSpaces.begin(); id != colorSpaces.end(); /* nop */) {
1314 id = colorSpaces.erase(id);
1315 } else {
1316 ++id;
1317 }
1318 }
1319 m_page->cmbWorkingColorSpace->setIDList(colorSpaces);
1320 m_page->cmbWorkingColorSpace->setCurrent(cfg.workingColorSpace());
1321 m_page->cmbWorkingColorSpace->setEnabled(cfg.useDefaultColorSpace());
1322
1323 if (!m_colorManagedByOS) {
1324 m_page->bnAddColorProfile->setIcon(koIcon("document-import-16"));
1325 connect(m_page->bnAddColorProfile, SIGNAL(clicked()), SLOT(installProfile()));
1326 }
1327 m_page->bnAddColorProfile->setVisible(!m_colorManagedByOS);
1328
1329 {
1330 QStringList profiles;
1331 QMap<QString, const KoColorProfile *> profileList;
1332 Q_FOREACH(const KoColorProfile *profile, KoColorSpaceRegistry::instance()->profilesFor(RGBAColorModelID.id())) {
1333 profileList[profile->name()] = profile;
1334 profiles.append(profile->name());
1335 }
1336
1337 std::sort(profiles.begin(), profiles.end());
1338 Q_FOREACH (const QString profile, profiles) {
1339 m_page->cmbColorProfileForEXR->addSqueezedItem(profile);
1340 }
1341
1343 const QString defaultProfile = KoColorSpaceRegistry::instance()->defaultProfileForColorSpace(colorSpaceId);
1344 const QString userProfile = cfg.readEntry("ExrDefaultColorProfile", defaultProfile);
1345
1346 m_page->cmbColorProfileForEXR->setCurrent(profiles.contains(userProfile) ? userProfile : defaultProfile);
1347 }
1348
1349
1350 if (!m_colorManagedByOS) {
1351 QFormLayout *monitorProfileGrid = new QFormLayout(m_page->monitorprofileholder);
1352 monitorProfileGrid->setContentsMargins(0, 0, 0, 0);
1353 for(int i = 0; i < QGuiApplication::screens().count(); ++i) {
1354 QLabel *lbl = new QLabel(i18nc("The number of the screen (ordinal) and shortened 'name' of the screen (model + resolution)", "Screen %1 (%2):", i + 1, shortNameOfDisplay(i)));
1355 lbl->setWordWrap(true);
1358 cmb->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
1359 monitorProfileGrid->addRow(lbl, cmb);
1361 }
1362
1363 refillMonitorProfiles(KoID("RGBA"));
1364
1365 for(int i = 0; i < QApplication::screens().count(); ++i) {
1366 if (m_monitorProfileWidgets[i]->contains(cfg.monitorProfile(i))) {
1367 m_monitorProfileWidgets[i]->setCurrent(cfg.monitorProfile(i));
1368 }
1369 }
1370 } else {
1371 QVBoxLayout *vboxLayout = new QVBoxLayout(m_page->monitorprofileholder);
1372 vboxLayout->setContentsMargins(0, 0, 0, 0);
1373 vboxLayout->addItem(new QSpacerItem(20,20));
1374
1375 QGroupBox *groupBox = new QGroupBox(i18n("Display's color space is managed by the operating system"));
1376 vboxLayout->addWidget(groupBox);
1377
1378 QFormLayout *monitorProfileGrid = new QFormLayout(groupBox);
1379 monitorProfileGrid->setContentsMargins(0, 0, 0, 0);
1380
1382 new QCheckBox(i18n("Enable canvas color management"), this);
1383
1385 i18n("<p>Enabling canvas color management automatically creates "
1386 "a separate native surface for the canvas. It might cause "
1387 "performance issues on some systems.</p>"
1388 ""
1389 "<p>If color management is disabled, Krita will render "
1390 "the canvas into the surface of the main window, which "
1391 "is considered sRGB. It will cause two limitations:"
1392 ""
1393 "<ol>"
1394 " <li>the color gamut will be limited to sRGB</li>"
1395 " <li>color proofing mode will be limited to \"use global display settings\", "
1396 " i.e. paper white proofing will become impossible</li>"
1397 "</ol>"
1398 "</p>"));
1399
1400 monitorProfileGrid->addRow(m_chkEnableCanvasColorSpaceManagement);
1401
1402 // surface color space
1404 m_canvasSurfaceColorSpace->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
1405 QLabel *canvasSurfaceColorSpaceLbl = new QLabel(i18n("Canvas surface color space:"), this);
1406 monitorProfileGrid->addRow(canvasSurfaceColorSpaceLbl, m_canvasSurfaceColorSpace);
1407
1408 m_canvasSurfaceColorSpace->addSqueezedItem(i18n("Preferred by operating system"), QVariant::fromValue(CanvasSurfaceMode::Preferred));
1409 m_canvasSurfaceColorSpace->addSqueezedItem(i18n("Rec 709 Gamma 2.2"), QVariant::fromValue(CanvasSurfaceMode::Rec709g22));
1410 m_canvasSurfaceColorSpace->addSqueezedItem(i18n("Rec 709 Linear"), QVariant::fromValue(CanvasSurfaceMode::Rec709g10));
1411 m_canvasSurfaceColorSpace->addSqueezedItem(i18n("Rec 2020 PQ"), QVariant::fromValue(CanvasSurfaceMode::Rec2020pq));
1412 m_canvasSurfaceColorSpace->addSqueezedItem(i18n("Unmanaged (testing only)"), QVariant::fromValue(CanvasSurfaceMode::Unmanaged));
1413
1414 m_canvasSurfaceColorSpace->setToolTip(
1415 i18n("<p>Color space of the pixels that are transferred to the "
1416 "window compositor. Use \"preferred\" space unless you know "
1417 "what you are doing</p>"));
1418
1419 // surface bit depth
1421 m_canvasSurfaceBitDepth->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
1422 QLabel *canvasSurfaceBitDepthLbl = new QLabel(i18n("Canvas surface bit depth (needs restart):"), this);
1423 monitorProfileGrid->addRow(canvasSurfaceBitDepthLbl, m_canvasSurfaceBitDepth);
1424
1425 m_canvasSurfaceBitDepth->addSqueezedItem(i18n("Auto"), QVariant::fromValue(CanvasSurfaceBitDepthMode::DepthAuto));
1426 m_canvasSurfaceBitDepth->addSqueezedItem(i18n("8-bit"), QVariant::fromValue(CanvasSurfaceBitDepthMode::Depth8Bit));
1427 m_canvasSurfaceBitDepth->addSqueezedItem(i18n("10-bit"), QVariant::fromValue(CanvasSurfaceBitDepthMode::Depth10Bit));
1428
1429 m_canvasSurfaceBitDepth->setToolTip(
1430 i18n("<p>The bit depth of the color that is passed to the window "
1431 "compositor. You should switch into 10-bit mode if you want to use "
1432 "HDR capabilities of your display</p>"));
1433
1434 const QString currentBitBepthString = QSurfaceFormat::defaultFormat().redBufferSize() == 10 ? i18n("10-bit") : i18n("8-bit");
1435 QLabel *currentCanvasSurfaceBitDepthLbl = new QLabel(i18n("Current canvas surface bit depth:"), this);
1436 QLabel *currentCanvasSurfaceBitDepth = new QLabel(currentBitBepthString, this);
1437 monitorProfileGrid->addRow(currentCanvasSurfaceBitDepthLbl, currentCanvasSurfaceBitDepth);
1438
1439 vboxLayout->addItem(new QSpacerItem(20,20));
1440
1442 QTextBrowser *preferredLbl = new QTextBrowser(this);
1443 preferredLbl->setText(i18n("Color space preferred by the operating system:\n%1", KisPlatformPluginInterfaceFactory::instance()->osPreferredColorSpaceReport(mainWindow)));
1444 preferredLbl->setReadOnly(true);
1445
1446 QHBoxLayout *colorDescriptionChoice = new QHBoxLayout();
1447 vboxLayout->addLayout(colorDescriptionChoice);
1448
1449 QLabel *descriptionChoiceLabel = new QLabel(i18n("Diagram:"));
1450 colorDescriptionChoice->addWidget(descriptionChoiceLabel);
1451
1452 QRadioButton *containerSpace = new QRadioButton(i18nc("@info:radiobutton", "Preferred Space"), this);
1453 colorDescriptionChoice->addWidget(containerSpace);
1454 containerSpace->setToolTip(i18nc("@info:tooltip", "This is the space preferred by the operating system."));
1455 m_preferredSpaceGraphicMode.addButton(containerSpace, PreferredSpace);
1456
1457 QRadioButton *masteringSpace = new QRadioButton(i18nc("@info:radiobutton", "Current Display"), this);
1458 colorDescriptionChoice->addWidget(masteringSpace);
1459 m_preferredSpaceGraphicMode.addButton(masteringSpace, MasteringSpace);
1460 masteringSpace->setToolTip(i18nc("@info:tooltip", "This is the space representing the currently active display."));
1461
1462 QHBoxLayout *colorDescriptionLayout = new QHBoxLayout();
1463 vboxLayout->addLayout(colorDescriptionLayout);
1465 colorDescriptionLayout->addWidget(m_preferredSpaceGraphic);
1466 colorDescriptionLayout->addWidget(preferredLbl);
1467
1468 containerSpace->setChecked(true);
1469 colorDescriptionChoice->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding));
1470
1471 m_preferredSpaceGraphic->setFixedSize(QSize(200, 200));
1473 connect(&m_preferredSpaceGraphicMode, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(updatePreferredSpaceGraphic()));
1477
1478 m_chkEnableCanvasColorSpaceManagement->setChecked(cfg.enableCanvasSurfaceColorSpaceManagement());
1479
1480 {
1481 auto mode = cfg.canvasSurfaceColorSpaceManagementMode();
1482 int index = m_canvasSurfaceColorSpace->findData(QVariant::fromValue(mode));
1483 KIS_SAFE_ASSERT_RECOVER(index >= 0) {
1484 index = 0;
1485 }
1486 m_canvasSurfaceColorSpace->setCurrentIndex(index);
1487 }
1488
1489 {
1490 auto mode = cfg.canvasSurfaceBitDepthMode();
1491 int index = m_canvasSurfaceBitDepth->findData(QVariant::fromValue(mode));
1492 KIS_SAFE_ASSERT_RECOVER(index >= 0) {
1493 index = 0;
1494 }
1495 m_canvasSurfaceBitDepth->setCurrentIndex(index);
1496 }
1497
1498 connect(m_chkEnableCanvasColorSpaceManagement, &QCheckBox::toggled, m_canvasSurfaceColorSpace, &QWidget::setEnabled);
1500
1501 connect(m_chkEnableCanvasColorSpaceManagement, &QCheckBox::toggled, canvasSurfaceColorSpaceLbl, &QWidget::setEnabled);
1502 canvasSurfaceColorSpaceLbl->setEnabled(m_chkEnableCanvasColorSpaceManagement->isChecked());
1503
1504 connect(m_chkEnableCanvasColorSpaceManagement, &QCheckBox::toggled, m_canvasSurfaceBitDepth, &QWidget::setEnabled);
1506
1507 connect(m_chkEnableCanvasColorSpaceManagement, &QCheckBox::toggled, canvasSurfaceBitDepthLbl, &QWidget::setEnabled);
1508 canvasSurfaceBitDepthLbl->setEnabled(m_chkEnableCanvasColorSpaceManagement->isChecked());
1509 }
1510
1511 m_page->chkBlackpoint->setChecked(cfg.useBlackPointCompensation());
1512 m_page->chkAllowLCMSOptimization->setChecked(cfg.allowLCMSOptimization());
1513 m_page->chkForcePaletteColor->setChecked(cfg.forcePaletteColors());
1514 m_page->cmbMonitorIntent->setCurrentIndex(cfg.monitorRenderIntent());
1515 KisImageConfig cfgImage(true);
1516
1520 KisProofingConfigurationSP proofingConfig = cfgImage.defaultProofingconfiguration();
1521
1522 m_page->wdgProofingOptions->setProofingConfig(proofingConfig);
1523
1524 m_proofModel->data.set(*proofingConfig.data());
1525
1526 connect(m_page->chkBlackpoint, SIGNAL(toggled(bool)), this, SLOT(updateProofingDisplayInfo()));
1527 connect(m_page->cmbMonitorIntent, SIGNAL(currentIndexChanged(int)), this, SLOT(updateProofingDisplayInfo()));
1529
1532 m_pasteBehaviourGroup.addButton(m_page->radioPasteAsk, KisClipboard::PASTE_ASK);
1533
1534 QAbstractButton *button = m_pasteBehaviourGroup.button(cfg.pasteBehaviour());
1535 Q_ASSERT(button);
1536
1537 if (button) {
1538 button->setChecked(true);
1539 }
1540
1541 if (!m_colorManagedByOS) {
1542 refillMonitorProfiles(KoID("RGBA"));
1543
1544 for(int i = 0; i < QApplication::screens().count(); ++i) {
1545 if (m_monitorProfileWidgets[i]->contains(cfg.monitorProfile(i))) {
1546 m_monitorProfileWidgets[i]->setCurrent(cfg.monitorProfile(i));
1547 }
1548 }
1549 }
1550}
const KoID AlphaColorModelID("A", ki18n("Alpha mask"))
const KoID Float16BitsColorDepthID("F16", ki18n("16-bit float/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
void toggleUseDefaultColorSpace(bool useDefColorSpace)
QList< QLabel * > m_monitorProfileLabels
QPointer< KisCIETongueWidget > m_preferredSpaceGraphic
QButtonGroup m_pasteBehaviourGroup
QPointer< QCheckBox > m_chkEnableCanvasColorSpaceManagement
QPointer< KisSqueezedComboBox > m_canvasSurfaceBitDepth
QScopedPointer< KisProofingConfigModel > m_proofModel
QPointer< KisSqueezedComboBox > m_canvasSurfaceColorSpace
QList< KisSqueezedComboBox * > m_monitorProfileWidgets
void refillMonitorProfiles(const KoID &s)
QButtonGroup m_preferredSpaceGraphicMode
WdgColorSettings * m_page
QScopedPointer< KisScreenMigrationTracker > m_screenMigrationTracker
Main window for Krita.
static KisPart * instance()
Definition KisPart.cpp:130
KisMainWindow * currentMainwindow() const
Definition KisPart.cpp:457
static KisPlatformPluginInterfaceFactory * instance()
The KisProofingConfigModel class.
void sigScreenChanged(QScreen *screen)
Definition KoID.h:30
QString id() const
Definition KoID.cpp:63
#define KIS_SAFE_ASSERT_RECOVER(cond)
Definition kis_assert.h:126
QString shortNameOfDisplay(int index)
#define koIcon(name)
Use these macros for icons without any issues.
Definition kis_icon.h:25
QString button(const QWheelEvent &ev)
QString colorSpaceId(const QString &colorModelId, const QString &colorDepthId) const
static KoColorSpaceRegistry * instance()
QString defaultProfileForColorSpace(const QString &colorSpaceId) const
KoID colorSpaceColorModelId(const QString &_colorSpaceId) const
QList< KoID > listKeys() const

References KisConfig::allowLCMSOptimization(), AlphaColorModelID, button(), KisConfig::canvasSurfaceBitDepthMode(), KisConfig::canvasSurfaceColorSpaceManagementMode(), KoColorSpaceRegistry::colorSpaceColorModelId(), KoColorSpaceRegistry::colorSpaceId(), KisPart::currentMainwindow(), KoColorSpaceRegistry::defaultProfileForColorSpace(), KisImageConfig::defaultProofingconfiguration(), KisConfig::enableCanvasSurfaceColorSpaceManagement(), Float16BitsColorDepthID, KisConfig::forcePaletteColors(), KoID::id(), installProfile(), KoColorSpaceRegistry::instance(), KisPart::instance(), KisPlatformPluginInterfaceFactory::instance(), KIS_SAFE_ASSERT_RECOVER, koIcon, KoColorSpaceRegistry::listKeys(), m_canvasSurfaceBitDepth, m_canvasSurfaceColorSpace, m_chkEnableCanvasColorSpaceManagement, m_colorManagedByOS, m_monitorProfileLabels, m_monitorProfileWidgets, m_page, m_pasteBehaviourGroup, m_preferredSpaceGraphic, m_preferredSpaceGraphicMode, m_proofModel, m_screenMigrationTracker, MasteringSpace, KisConfig::monitorProfile(), KisConfig::monitorRenderIntent(), KoColorProfile::name, KisClipboard::PASTE_ASK, KisClipboard::PASTE_ASSUME_MONITOR, KisClipboard::PASTE_ASSUME_WEB, KisConfig::pasteBehaviour(), PreferredSpace, KisConfig::readEntry(), refillMonitorProfiles(), RGBAColorModelID, shortNameOfDisplay(), KisScreenMigrationTracker::sigScreenChanged(), KisPlatformPluginInterfaceFactory::surfaceColorManagedByOS(), toggleUseDefaultColorSpace(), updatePreferredSpaceGraphic(), updateProofingDisplayInfo(), KisConfig::useBlackPointCompensation(), KisConfig::useDefaultColorSpace(), and KisConfig::workingColorSpace().

Member Function Documentation

◆ installProfile

void ColorSettingsTab::installProfile ( )
privateslot

Definition at line 1552 of file kis_dlg_preferences.cc.

1553{
1555
1556 KoFileDialog dialog(this, KoFileDialog::OpenFiles, "OpenDocumentICC");
1557 dialog.setCaption(i18n("Install Color Profiles"));
1558 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::HomeLocation));
1559 dialog.setMimeTypeFilters(QStringList() << "application/vnd.iccprofile", "application/vnd.iccprofile");
1560 QStringList profileNames = dialog.filenames();
1561
1563 Q_ASSERT(iccEngine);
1564
1565 QString saveLocation = KoResourcePaths::saveLocation("icc_profiles");
1566
1567 Q_FOREACH (const QString &profileName, profileNames) {
1568 if (!QFile::copy(profileName, saveLocation + QFileInfo(profileName).fileName())) {
1569 qWarning() << "Could not install profile!" << saveLocation + QFileInfo(profileName).fileName();
1570 continue;
1571 }
1572 iccEngine->addProfile(saveLocation + QFileInfo(profileName).fileName());
1573 }
1574
1575 KisConfig cfg(true);
1576 refillMonitorProfiles(KoID("RGBA"));
1577
1578 for(int i = 0; i < QApplication::screens().count(); ++i) {
1579 if (m_monitorProfileWidgets[i]->contains(cfg.monitorProfile(i))) {
1580 m_monitorProfileWidgets[i]->setCurrent(cfg.monitorProfile(i));
1581 }
1582 }
1583
1584}
QList< QString > QStringList
static KoColorSpaceEngineRegistry * instance()
T get(const QString &id) const
static QString saveLocation(const QString &type, const QString &suffix=QString(), bool create=true)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
virtual const KoColorProfile * addProfile(const QString &filename)=0

References KoColorSpaceEngine::addProfile(), KoGenericRegistry< T >::get(), KoColorSpaceEngineRegistry::instance(), KIS_SAFE_ASSERT_RECOVER_RETURN, m_colorManagedByOS, m_monitorProfileWidgets, KisConfig::monitorProfile(), KoFileDialog::OpenFiles, refillMonitorProfiles(), and KoResourcePaths::saveLocation().

◆ refillMonitorProfiles

void ColorSettingsTab::refillMonitorProfiles ( const KoID & s)
privateslot

Definition at line 1641 of file kis_dlg_preferences.cc.

1642{
1644
1645 for (int i = 0; i < QApplication::screens().count(); ++i) {
1646 m_monitorProfileWidgets[i]->clear();
1647 }
1648
1649 QMap<QString, const KoColorProfile *> profileList;
1650 Q_FOREACH(const KoColorProfile *profile, KoColorSpaceRegistry::instance()->profilesFor(colorSpaceId.id())) {
1651 profileList[profile->name()] = profile;
1652 }
1653
1654 Q_FOREACH (const KoColorProfile *profile, profileList.values()) {
1655 //qDebug() << "Profile" << profile->name() << profile->isSuitableForDisplay() << csf->defaultProfile();
1656 if (profile->isSuitableForDisplay()) {
1657 for (int i = 0; i < QApplication::screens().count(); ++i) {
1658 m_monitorProfileWidgets[i]->addSqueezedItem(profile->name());
1659 }
1660 }
1661 }
1662
1663 for (int i = 0; i < QApplication::screens().count(); ++i) {
1664 m_monitorProfileLabels[i]->setText(i18nc("The number of the screen (ordinal) and shortened 'name' of the screen (model + resolution)", "Screen %1 (%2):", i + 1, shortNameOfDisplay(i)));
1666 }
1667}
virtual bool isSuitableForDisplay() const =0

References KoColorSpaceRegistry::defaultProfileForColorSpace(), KoID::id(), KoColorSpaceRegistry::instance(), KoColorProfile::isSuitableForDisplay(), KIS_SAFE_ASSERT_RECOVER_RETURN, m_colorManagedByOS, m_monitorProfileLabels, m_monitorProfileWidgets, KoColorProfile::name, and shortNameOfDisplay().

◆ setDefault()

void ColorSettingsTab::setDefault ( )

Definition at line 1591 of file kis_dlg_preferences.cc.

1592{
1593 m_page->cmbWorkingColorSpace->setCurrent("RGBA");
1594
1596 const QString defaultProfile = KoColorSpaceRegistry::instance()->defaultProfileForColorSpace(colorSpaceId);
1597 m_page->cmbColorProfileForEXR->setCurrent(defaultProfile);
1598
1599 KisConfig cfg(true);
1600
1601 if (!m_colorManagedByOS) {
1602 refillMonitorProfiles(KoID("RGBA"));
1603 } else {
1604 m_chkEnableCanvasColorSpaceManagement->setChecked(cfg.enableCanvasSurfaceColorSpaceManagement(true));
1605
1606 {
1607 auto mode = cfg.canvasSurfaceColorSpaceManagementMode(true);
1608 int index = m_canvasSurfaceColorSpace->findData(QVariant::fromValue(mode));
1609 KIS_SAFE_ASSERT_RECOVER(index >= 0) {
1610 index = 0;
1611 }
1612 m_canvasSurfaceColorSpace->setCurrentIndex(index);
1613 }
1614
1615 {
1616 auto mode = cfg.canvasSurfaceBitDepthMode(true);
1617 int index = m_canvasSurfaceBitDepth->findData(QVariant::fromValue(mode));
1618 KIS_SAFE_ASSERT_RECOVER(index >= 0) {
1619 index = 0;
1620 }
1621 m_canvasSurfaceBitDepth->setCurrentIndex(index);
1622 }
1623 }
1624
1625 KisImageConfig cfgImage(true);
1626 KisProofingConfigurationSP proofingConfig = cfgImage.defaultProofingconfiguration(true);
1627 m_page->wdgProofingOptions->setProofingConfig(proofingConfig);
1628
1629 m_page->chkBlackpoint->setChecked(cfg.useBlackPointCompensation(true));
1630 m_page->chkAllowLCMSOptimization->setChecked(cfg.allowLCMSOptimization(true));
1631 m_page->chkForcePaletteColor->setChecked(cfg.forcePaletteColors(true));
1632 m_page->cmbMonitorIntent->setCurrentIndex(cfg.monitorRenderIntent(true));
1633 QAbstractButton *button = m_pasteBehaviourGroup.button(cfg.pasteBehaviour(true));
1634 Q_ASSERT(button);
1635 if (button) {
1636 button->setChecked(true);
1637 }
1638}

References KisConfig::allowLCMSOptimization(), button(), KisConfig::canvasSurfaceBitDepthMode(), KisConfig::canvasSurfaceColorSpaceManagementMode(), KoColorSpaceRegistry::colorSpaceId(), KoColorSpaceRegistry::defaultProfileForColorSpace(), KisImageConfig::defaultProofingconfiguration(), KisConfig::enableCanvasSurfaceColorSpaceManagement(), Float16BitsColorDepthID, KisConfig::forcePaletteColors(), KoID::id(), KoColorSpaceRegistry::instance(), KIS_SAFE_ASSERT_RECOVER, m_canvasSurfaceBitDepth, m_canvasSurfaceColorSpace, m_chkEnableCanvasColorSpaceManagement, m_colorManagedByOS, m_page, m_pasteBehaviourGroup, KisConfig::monitorRenderIntent(), KisConfig::pasteBehaviour(), refillMonitorProfiles(), RGBAColorModelID, and KisConfig::useBlackPointCompensation().

◆ toggleUseDefaultColorSpace

void ColorSettingsTab::toggleUseDefaultColorSpace ( bool useDefColorSpace)
privateslot

Definition at line 1586 of file kis_dlg_preferences.cc.

1587{
1588 m_page->cmbWorkingColorSpace->setEnabled(useDefColorSpace);
1589}

References m_page.

◆ updatePreferredSpaceGraphic

void ColorSettingsTab::updatePreferredSpaceGraphic ( )
privateslot

Definition at line 1677 of file kis_dlg_preferences.cc.

1678{
1679 if (!m_preferredSpaceGraphic) return;
1680 if (!KisPlatformPluginInterfaceFactory::instance()->surfaceColorManagedByOS()) return;
1683 KoColorimetryUtils::xyY whitePoint;
1684
1685#ifdef Q_OS_LINUX
1686#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
1687 KisRootSurfaceInfoProxy proxy(mainWindow);
1688 std::optional<KisSurfaceColorimetry::SurfaceDescription> currentDescription = proxy.currentSurfaceDescription();
1689 if (m_preferredSpaceGraphicMode.checkedId() == PreferredSpace) {
1690 if (currentDescription) {
1691 if (std::holds_alternative<KisSurfaceColorimetry::Colorimetry>(currentDescription->colorSpace.primaries)) {
1692 auto col = std::get<KisSurfaceColorimetry::Colorimetry>(currentDescription->colorSpace.primaries);
1693 colorants << col.red().toxyY() << col.green().toxyY() << col.blue().toxyY();
1694 whitePoint = col.white().toxyY();
1695 m_preferredSpaceGraphic->setRGBData(whitePoint, colorants);
1696 } else {
1697 bool enable = true;
1698 auto named = std::get<KisSurfaceColorimetry::NamedPrimaries>(currentDescription->colorSpace.primaries);
1710 } else {
1711 enable = false;
1712 }
1713
1714 if (enable) {
1715 colorants << col.red().toxyY() << col.green().toxyY() << col.blue().toxyY();
1716 whitePoint = col.white().toxyY();
1717 m_preferredSpaceGraphic->setRGBData(whitePoint, colorants);
1718 } else {
1719 m_preferredSpaceGraphic->setProfileDataAvailable(false);
1720 }
1721
1722 }
1723 } else {
1724 m_preferredSpaceGraphic->setProfileDataAvailable(false);
1725 }
1726 } else if(m_preferredSpaceGraphicMode.checkedId() == MasteringSpace) {
1727 if (currentDescription && currentDescription->masteringInfo) {
1728 auto col = currentDescription->masteringInfo->primaries;
1729 colorants << col.red().toxyY() << col.green().toxyY() << col.blue().toxyY();
1730 whitePoint = col.white().toxyY();
1731
1732 m_preferredSpaceGraphic->setRGBData(whitePoint, colorants);
1733 } else {
1734 m_preferredSpaceGraphic->setProfileDataAvailable(false);
1735 }
1736 }
1737#endif
1738#endif
1739 m_preferredSpaceGraphic->update();
1740}
static const Colorimetry DCIP3
static const Colorimetry BT2020
static const Colorimetry BT709
static const Colorimetry DisplayP3
static const Colorimetry AdobeRGB

References KoColorimetryUtils::Colorimetry::AdobeRGB, KoColorimetryUtils::Colorimetry::blue(), KoColorimetryUtils::Colorimetry::BT2020, KoColorimetryUtils::Colorimetry::BT709, KisPart::currentMainwindow(), KisRootSurfaceInfoProxy::currentSurfaceDescription(), KoColorimetryUtils::Colorimetry::DCIP3, KoColorimetryUtils::Colorimetry::DisplayP3, KoColorimetryUtils::Colorimetry::green(), KisPart::instance(), KisPlatformPluginInterfaceFactory::instance(), m_preferredSpaceGraphic, m_preferredSpaceGraphicMode, MasteringSpace, PreferredSpace, KisSurfaceColorimetry::primaries_adobe_rgb, KisSurfaceColorimetry::primaries_bt2020, KisSurfaceColorimetry::primaries_dci_p3, KisSurfaceColorimetry::primaries_display_p3, KisSurfaceColorimetry::primaries_srgb, KoColorimetryUtils::Colorimetry::red(), KoColorimetryUtils::XYZ::toxyY(), and KoColorimetryUtils::Colorimetry::white().

◆ updateProofingDisplayInfo

void ColorSettingsTab::updateProofingDisplayInfo ( )
privateslot

Definition at line 1669 of file kis_dlg_preferences.cc.

1669 {
1671 options.first = KoColorConversionTransformation::Intent(m_page->cmbMonitorIntent->currentIndex());
1673 options.second.setFlag(KoColorConversionTransformation::BlackpointCompensation, m_page->chkBlackpoint->isChecked());
1674 m_page->wdgProofingOptions->setDisplayConfigOptions(options);
1675}
std::pair< KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags > Options

References KoColorConversionTransformation::BlackpointCompensation, KoColorConversionTransformation::internalConversionFlags(), and m_page.

Member Data Documentation

◆ m_canvasSurfaceBitDepth

QPointer<KisSqueezedComboBox> ColorSettingsTab::m_canvasSurfaceBitDepth

Definition at line 235 of file kis_dlg_preferences.h.

◆ m_canvasSurfaceColorSpace

QPointer<KisSqueezedComboBox> ColorSettingsTab::m_canvasSurfaceColorSpace

Definition at line 234 of file kis_dlg_preferences.h.

◆ m_chkEnableCanvasColorSpaceManagement

QPointer<QCheckBox> ColorSettingsTab::m_chkEnableCanvasColorSpaceManagement

Definition at line 233 of file kis_dlg_preferences.h.

◆ m_colorManagedByOS

bool ColorSettingsTab::m_colorManagedByOS {false}

Definition at line 232 of file kis_dlg_preferences.h.

232{false};

◆ m_monitorProfileLabels

QList<QLabel*> ColorSettingsTab::m_monitorProfileLabels

Definition at line 224 of file kis_dlg_preferences.h.

◆ m_monitorProfileWidgets

QList<KisSqueezedComboBox*> ColorSettingsTab::m_monitorProfileWidgets

Definition at line 225 of file kis_dlg_preferences.h.

◆ m_page

WdgColorSettings* ColorSettingsTab::m_page

Definition at line 222 of file kis_dlg_preferences.h.

◆ m_pasteBehaviourGroup

QButtonGroup ColorSettingsTab::m_pasteBehaviourGroup

Definition at line 223 of file kis_dlg_preferences.h.

◆ m_preferredSpaceGraphic

QPointer<KisCIETongueWidget> ColorSettingsTab::m_preferredSpaceGraphic

Definition at line 236 of file kis_dlg_preferences.h.

◆ m_preferredSpaceGraphicMode

QButtonGroup ColorSettingsTab::m_preferredSpaceGraphicMode

Definition at line 237 of file kis_dlg_preferences.h.

◆ m_proofModel

QScopedPointer<KisProofingConfigModel> ColorSettingsTab::m_proofModel

Definition at line 226 of file kis_dlg_preferences.h.

◆ m_screenMigrationTracker

QScopedPointer<KisScreenMigrationTracker> ColorSettingsTab::m_screenMigrationTracker

Definition at line 227 of file kis_dlg_preferences.h.


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