[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kolor-manager/v2v4] /: support v2 and v4 profiles depending on actual CMM
From: Kai-Uwe Behrmann <ku.b () gmx ! de>
Date: 2015-05-08 20:40:06
Message-ID: E1Yqp42-0000na-PU () scm ! kde ! org
[Download RAW message or body]
Git commit 0d24af71c00ce24f151bc288a7f1c503e45c3150 by Kai-Uwe Behrmann.
Committed on 16/07/2014 at 15:17.
Pushed by behrmann into branch 'v2v4'.
support v2 and v4 profiles depending on actual CMM
M +11 -2 devices/kmdevices.cpp
M +2 -0 devices/kmdevices.h
M +13 -3 information/kminfo.cpp
M +1 -0 information/kminfo.h
M +12 -4 kolor-server/color-context.cpp
M +1 -0 kolor-server/color-context.h
M +9 -1 kolor-server/output.cpp
M +1 -0 kolor-server/output.h
M +10 -2 kolor-server/screen.cpp
M +1 -0 kolor-server/screen.h
M +14 -2 settings/kmsettings.cpp
M +1 -0 settings/kmsettings.h
http://commits.kde.org/kolor-manager/0d24af71c00ce24f151bc288a7f1c503e45c3150
diff --git a/devices/kmdevices.cpp b/devices/kmdevices.cpp
index ccc9b05..b296633 100644
--- a/devices/kmdevices.cpp
+++ b/devices/kmdevices.cpp
@@ -49,6 +49,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <oyranos.h>
#include <oyranos_icc.h>
#include <oyranos_devices.h>
+#include <oyFilterNode_s.h>
#include <oyProfiles_s.h>
#include <oyObject_s.h>
@@ -83,7 +84,7 @@ kmdevices::kmdevices(QWidget *parent, const QVariantList &) :
);
about->addAuthor( ki18n("2008-2009 Joseph Simon III"), KLocalizedString(),
"j.simon.iii@astound.net" );
- about->addAuthor( ki18n("2010-2013 Kai-Uwe Behrmann"), KLocalizedString(),
+ about->addAuthor( ki18n("2010-2014 Kai-Uwe Behrmann"), KLocalizedString(),
"ku.b@gmx.de" );
about->addAuthor( ki18n("2012 Jan Gruhlich"), KLocalizedString(),
"ku.b@gmx.de" );
@@ -96,6 +97,14 @@ kmdevices::kmdevices(QWidget *parent, const QVariantList &) :
listModified = false; // avoid action on signals
+ /* select profiles matching actual capabilities */
+ char * pattern = oyGetCMMPattern( oyCMM_CONTEXT, 0, malloc );
+ oyFilterNode_s * node = oyFilterNode_NewWith( pattern, NULL, 0 );
+ const char * reg = oyFilterNode_GetRegistration( node );
+ icc_profile_flags = oyICCProfileSelectionFlagsFromRegistration( reg );
+ oyFilterNode_Release( &node );
+ free( pattern );
+
setupUi(this); // Load Gui.
msgWidget->setCloseButtonVisible(false);
@@ -444,7 +453,7 @@ void \
kmdevices::populateLocalProfileComboBox(icProfileClassSignature \
deviceSigna
profile = oyProfile_FromSignature( deviceSignature, oySIGNATURE_CLASS, 0 );
oyProfiles_MoveIn( patterns, &profile, -1 );
- iccs = oyProfiles_Create( patterns, 0 );
+ iccs = oyProfiles_Create( patterns, icc_profile_flags, 0 );
oyProfiles_Release( &patterns );
QString getProfileDescription;
diff --git a/devices/kmdevices.h b/devices/kmdevices.h
index 34aab08..f8be2be 100644
--- a/devices/kmdevices.h
+++ b/devices/kmdevices.h
@@ -152,6 +152,8 @@ private:
bool listModified; // Was the list changed by the user?
+ int icc_profile_flags; // profile selection flags from oyProfile_s.h
+
// Global string values for Oyranos device identification
char * current_device_name;
char * current_device_class;
diff --git a/information/kminfo.cpp b/information/kminfo.cpp
index d5c1e33..7ba50c5 100644
--- a/information/kminfo.cpp
+++ b/information/kminfo.cpp
@@ -51,6 +51,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <oyranos.h>
#include <oyranos_config.h>
#include <oyranos_devices.h>
+#include <oyFilterNode_s.h>
// Code to provide KDE module functionality for color manager
@@ -130,12 +131,20 @@ kminfo::kminfo(QWidget *parent, const QVariantList &) :
);
about->addAuthor( ki18n("2008-2009 Joseph Simon III"), KLocalizedString(),
"j.simon.iii@astound.net" );
- about->addAuthor( ki18n("2010-2013 Kai-Uwe Behrmann"), KLocalizedString(),
+ about->addAuthor( ki18n("2010-2014 Kai-Uwe Behrmann"), KLocalizedString(),
"ku.b@gmx.de" );
setAboutData( about );
current_profile = 0;
+ /* select profiles matching actual capabilities */
+ char * pattern = oyGetCMMPattern( oyCMM_CONTEXT, 0, malloc );
+ oyFilterNode_s * node = oyFilterNode_NewWith( pattern, NULL, 0 );
+ const char * reg = oyFilterNode_GetRegistration( node );
+ icc_profile_flags = oyICCProfileSelectionFlagsFromRegistration( reg );
+ oyFilterNode_Release( &node );
+ free( pattern );
+
setupUi(this); // Load Gui.
installedProfilesTree->setColumnWidth(0, 350);
@@ -351,6 +360,7 @@ void kminfo::populateDeviceProfiles( QTreeWidgetItem * \
deviceListTree ) error = oyOptions_SetFromText( &options,
\
"//"OY_TYPE_STD"/config/icc_profile.x_color_region_target", "yes", OY_CREATE_NEW );
+ oyOptions_SetFromInt( &options, "///icc_profile_flags", icc_profile_flags, \
0, OY_CREATE_NEW ); oyDeviceGetProfile( device, options, &p );
oyOptions_Release( &options );
@@ -386,7 +396,7 @@ void kminfo::populateDeviceProfiles( QTreeWidgetItem * \
deviceListTree ) void kminfo::addProfileTreeItem( oyPROFILE_e profile_type, QString \
description, QTreeWidgetItem * parent_item )
{
- oyProfile_s * profile = oyProfile_FromStd( profile_type, 0);
+ oyProfile_s * profile = oyProfile_FromStd( profile_type, icc_profile_flags, 0 \
);
const char * text = oyProfile_GetText( profile, oyNAME_DESCRIPTION );
// Add new item.
@@ -447,7 +457,7 @@ void kminfo::populateDeviceProfileDescriptions(oyProfile_s * \
profile, bool valid
setDeviceClassTag(profile, deviceClassTagLabel);
- QString profilePathName = oyProfile_GetFileName( profile, 0 );
+ QString profilePathName = oyProfile_GetFileName( profile, -1 );
directoryListingTag->setText(profilePathName);
oyProfile_Release( ¤t_profile );
diff --git a/information/kminfo.h b/information/kminfo.h
index 3f3e07d..d4b4d6f 100644
--- a/information/kminfo.h
+++ b/information/kminfo.h
@@ -123,6 +123,7 @@ private:
QTemporaryFile m_tempFile;
+ int icc_profile_flags; ///< profile selection flags from \
oyProfile_s.h };
#endif
diff --git a/kolor-server/color-context.cpp b/kolor-server/color-context.cpp
index a5ebd69..9e858dc 100644
--- a/kolor-server/color-context.cpp
+++ b/kolor-server/color-context.cpp
@@ -47,6 +47,14 @@ ColorContext::ColorContext()
, m_dstProfile(NULL)
{
buildDummyClut(m_clut);
+ /* select profiles matching actual capabilities */
+ char * pattern = oyGetCMMPattern( oyCMM_CONTEXT, 0, malloc );
+ oyFilterNode_s * node = oyFilterNode_NewWith( pattern, NULL, 0 );
+ const char * reg = oyFilterNode_GetRegistration( node );
+ icc_profile_flags = oyICCProfileSelectionFlagsFromRegistration( reg );
+ oyFilterNode_Release( &node );
+ free( pattern );
+
}
ColorContext::~ColorContext()
@@ -92,7 +100,7 @@ void ColorContext::setupColorLookupTable(bool advanced)
oyOptions_s *options = 0;
if (!m_dstProfile)
- m_dstProfile = dummyProfile = oyProfile_FromStd(oyASSUMED_WEB, 0);
+ m_dstProfile = dummyProfile = oyProfile_FromStd(oyASSUMED_WEB, \
icc_profile_flags, 0);
/* skip dummyProfile to dummyProfile conversion */
if (!m_srcProfile && dummyProfile) {
@@ -102,7 +110,7 @@ void ColorContext::setupColorLookupTable(bool advanced)
}
if (!m_srcProfile) {
- m_srcProfile = oyProfile_FromStd(oyASSUMED_WEB, 0);
+ m_srcProfile = oyProfile_FromStd(oyASSUMED_WEB, icc_profile_flags, 0);
if (!m_srcProfile) {
kError() << "Output" << m_outputName << ":" << "no assumed dummyProfile \
source profile"; kWarning() << "Output" << m_outputName << "using dummy clut";
@@ -224,7 +232,7 @@ void ColorContext::setup(const QString &name)
if (!Display::getInstance()->colorDesktopActivated())
return;
- m_srcProfile = oyProfile_FromStd(oyASSUMED_WEB, 0);
+ m_srcProfile = oyProfile_FromStd(oyASSUMED_WEB, icc_profile_flags, 0);
m_outputName = name;
if (!m_srcProfile)
kWarning() << "Output" << name << "no sRGB source profile";
@@ -249,7 +257,7 @@ bool ColorContext::getDeviceProfile(oyConfig_s *device)
if (m_dstProfile) {
/* check that no sRGB is delivered */
if (error) {
- oyProfile_s *dummyProfile = oyProfile_FromStd(oyASSUMED_WEB, 0);
+ oyProfile_s *dummyProfile = oyProfile_FromStd(oyASSUMED_WEB, \
icc_profile_flags, 0); if (oyProfile_Equal(dummyProfile, m_dstProfile)) {
kWarning() << "Output" << m_outputName << "ignoring fallback, error" \
<< error; oyProfile_Release(&m_dstProfile);
diff --git a/kolor-server/color-context.h b/kolor-server/color-context.h
index 8a8d991..486b299 100644
--- a/kolor-server/color-context.h
+++ b/kolor-server/color-context.h
@@ -114,6 +114,7 @@ private:
oyProfile_s *m_srcProfile; ///< the data profile or device link
oyProfile_s *m_dstProfile; ///< the monitor profile or none
QString m_outputName; ///< the intended output device
+ int icc_profile_flags; ///< profile selection flags from \
oyProfile_s.h
/// Color lookup table (for color conversion)
Clut m_clut;
diff --git a/kolor-server/output.cpp b/kolor-server/output.cpp
index 55d5cdc..b0bf4eb 100644
--- a/kolor-server/output.cpp
+++ b/kolor-server/output.cpp
@@ -34,6 +34,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "screen.h"
#include <oyranos_devices.h>
+#include <oyFilterNode_s.h>
#include <oyRectangle_s.h>
namespace KolorServer
@@ -47,6 +48,13 @@ ColorOutput::ColorOutput(Screen *parent, int index)
: m_parent(parent)
, m_index(index)
{
+ /* select profiles matching actual capabilities */
+ char * pattern = oyGetCMMPattern( oyCMM_CONTEXT, 0, malloc );
+ oyFilterNode_s * node = oyFilterNode_NewWith( pattern, NULL, 0 );
+ const char * reg = oyFilterNode_GetRegistration( node );
+ icc_profile_flags = oyICCProfileSelectionFlagsFromRegistration( reg );
+ oyFilterNode_Release( &node );
+ free( pattern );
}
ColorOutput::~ColorOutput()
@@ -251,7 +259,7 @@ void ColorOutput::moveProfileAtoms(bool init)
if (init) {
/* setup the OY_ICC_V0_3_TARGET_PROFILE_IN_X_BASE(_xxx) atom as document \
colour space */ size_t size = 0;
- oyProfile_s *screenDocumentProfile = oyProfile_FromStd(oyASSUMED_WEB, \
0); + oyProfile_s *screenDocumentProfile = \
oyProfile_FromStd(oyASSUMED_WEB, icc_profile_flags, 0);
if (screenDocumentProfile) {
// Make sure the profile is ignored
diff --git a/kolor-server/output.h b/kolor-server/output.h
index a93fbc7..6019284 100644
--- a/kolor-server/output.h
+++ b/kolor-server/output.h
@@ -145,6 +145,7 @@ private:
QString m_name;
ColorContext m_cc;
QRect m_rect;
+ int icc_profile_flags; ///< profile selection flags from \
oyProfile_s.h };
} // KolorServer namespace
diff --git a/kolor-server/screen.cpp b/kolor-server/screen.cpp
index 9a4bd52..1f0f0fb 100644
--- a/kolor-server/screen.cpp
+++ b/kolor-server/screen.cpp
@@ -36,7 +36,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "output.h"
#include <oyranos_devices.h>
-
+#include <oyFilterNode_s.h>
/**
* Helper function to convert a MD5 into a readable string.
@@ -66,6 +66,14 @@ Screen::Screen(X11::Display *display, int number, Display *parent)
, m_screen(number)
{
X11::setupXRandR(display, number);
+
+ /* select profiles matching actual capabilities */
+ char * pattern = oyGetCMMPattern( oyCMM_CONTEXT, 0, malloc );
+ oyFilterNode_s * node = oyFilterNode_NewWith( pattern, NULL, 0 );
+ const char * reg = oyFilterNode_GetRegistration( node );
+ icc_profile_flags = oyICCProfileSelectionFlagsFromRegistration( reg );
+ oyFilterNode_Release( &node );
+ free( pattern );
}
Screen::~Screen()
@@ -251,7 +259,7 @@ void Screen::updateProfileForAtom(const char *atomName, X11::Atom \
atom)
void *data = X11::fetchProperty(m_display, X11::rootWindow(m_display, 0), \
atom, XA_CARDINAL, &n, False); if (data && n) {
oyProfile_s *baseProfile = oyProfile_FromMem(n, data, 0,0);
- oyProfile_s *dummyProfile = oyProfile_FromStd(oyASSUMED_WEB, 0); // sRGB
+ oyProfile_s *dummyProfile = oyProfile_FromStd(oyASSUMED_WEB, \
icc_profile_flags, 0); // sRGB
/* The distinction of sRGB profiles set by the server and ones
* coming from outside the colour server is rather fragile.
diff --git a/kolor-server/screen.h b/kolor-server/screen.h
index e1cca6f..1c5ed36 100644
--- a/kolor-server/screen.h
+++ b/kolor-server/screen.h
@@ -179,6 +179,7 @@ private:
Display *m_parent;
X11::Display *m_display;
int m_screen;
+ int icc_profile_flags; ///< profile selection flags from \
oyProfile_s.h
QList<ColorOutput*> m_outputs; // or contexts
diff --git a/settings/kmsettings.cpp b/settings/kmsettings.cpp
index 86c2dd7..21d20fd 100644
--- a/settings/kmsettings.cpp
+++ b/settings/kmsettings.cpp
@@ -50,6 +50,7 @@ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include <oyranos.h>
#include <oyranos_config.h>
#include <oyranos_devices.h>
+#include <oyFilterNode_s.h>
#include <oyProfiles_s.h>
#include <locale.h>
@@ -87,11 +88,19 @@ kmsettings::kmsettings(QWidget *parent, const QVariantList &) :
);
about->addAuthor( ki18n("2008-2009 Joseph Simon III"), KLocalizedString(),
"j.simon.iii@astound.net" );
- about->addAuthor( ki18n("2010-2013 Kai-Uwe Behrmann"), KLocalizedString(),
+ about->addAuthor( ki18n("2010-2014 Kai-Uwe Behrmann"), KLocalizedString(),
"ku.b@gmx.de" );
setAboutData( about );
+ /* select profiles matching actual capabilities */
+ char * pattern = oyGetCMMPattern( oyCMM_CONTEXT, 0, malloc );
+ oyFilterNode_s * node = oyFilterNode_NewWith( pattern, NULL, 0 );
+ const char * reg = oyFilterNode_GetRegistration( node );
+ icc_profile_flags = oyICCProfileSelectionFlagsFromRegistration( reg );
+ oyFilterNode_Release( &node );
+ free( pattern );
+
setupUi(this); // Load Gui.
removePolicyButton->setEnabled(false);
@@ -298,7 +307,7 @@ void kmsettings::fillProfileComboBoxes(oyPROFILE_e profile_type, \
QComboBox * pro
QString profile_text, profile_filename;
- iccs = oyProfiles_ForStd( profile_type, ¤t, 0 );
+ iccs = oyProfiles_ForStd( profile_type, icc_profile_flags, ¤t, 0 );
size = oyProfiles_Count(iccs);
for( i = 0; i < size; ++i)
@@ -394,6 +403,9 @@ void kmsettings::selectPolicy(int rowIndex)
changed(false);
}
+ if(!selectedPolicyItem)
+ return;
+
selected_policy = selectedPolicyItem->text();
char * full_name = 0;
diff --git a/settings/kmsettings.h b/settings/kmsettings.h
index 029a926..e4a017c 100644
--- a/settings/kmsettings.h
+++ b/settings/kmsettings.h
@@ -142,6 +142,7 @@ private:
// Variable to specify if current policy is a custom one.
bool isCustom, settingsChanged;
+ int icc_profile_flags; ///< profile selection flags from \
oyProfile_s.h };
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic