Subversion Repositories Scribus

Rev

Rev 15135 | Rev 22518 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
15127 jghali 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
7
 
8
#include "sclcms2colorprofileimpl.h"
9
#include "sclcms2colormgmtengineimpl.h"
15143 fschmid 10
#include <cstdlib>
15127 jghali 11
 
12
ScLcms2ColorProfileImpl::ScLcms2ColorProfileImpl(ScColorMgmtEngine& engine, cmsHPROFILE lcmsProfile)
13
                      : ScColorProfileImplBase(engine), m_profileHandle(lcmsProfile)
14
{
15
 
16
}
17
 
18
ScLcms2ColorProfileImpl::~ScLcms2ColorProfileImpl()
19
{
20
        closeProfile();
21
}
22
 
23
bool ScLcms2ColorProfileImpl::isNull() const
24
{
25
        return (m_profileHandle == NULL);
26
}
27
 
28
eColorSpaceType ScLcms2ColorProfileImpl::colorSpace()  const
29
{
30
        if (m_profileHandle)
31
                return ScLcms2ColorMgmtEngineImpl::translateLcmsColorSpaceType( cmsGetColorSpace(m_profileHandle) );
32
        return ColorSpace_Unknown;
33
}
34
 
35
eProfileClass ScLcms2ColorProfileImpl::deviceClass() const
36
{
37
        if (m_profileHandle)
38
                return ScLcms2ColorMgmtEngineImpl::translateLcmsProfileClass( cmsGetDeviceClass(m_profileHandle) );
39
        return Class_Unknown;
40
}
41
 
42
QString ScLcms2ColorProfileImpl::productDescription() const
43
{
44
        if (m_productDescription.isEmpty())
45
        {
46
                if (m_profileHandle)
47
                {
15143 fschmid 48
#ifdef _WIN32
15127 jghali 49
                        cmsUInt32Number descSize = cmsGetProfileInfo(m_profileHandle, cmsInfoDescription, "en", "US", NULL, 0);
50
                        if (descSize > 0)
51
                        {
52
                                wchar_t* descData = (wchar_t*) malloc(descSize + sizeof(wchar_t));
53
                                descSize = cmsGetProfileInfo(m_profileHandle, cmsInfoDescription, "en", "US", descData, descSize);
54
                                if (descSize > 0)
55
                                {
15135 jghali 56
                                        uint stringLen = descSize / sizeof(wchar_t);
57
                                        descData[stringLen] = 0;
15127 jghali 58
                                        if (sizeof(wchar_t) == sizeof(QChar)) {
15135 jghali 59
                                                m_productDescription = QString::fromUtf16((ushort *) descData);
15127 jghali 60
                                        } else {
15135 jghali 61
                                                m_productDescription = QString::fromUcs4((uint *) descData);
15127 jghali 62
                                        }
63
                                        free(descData);
64
                                }
65
                        }
15143 fschmid 66
#else
67
                        cmsUInt32Number descSize = cmsGetProfileInfoASCII(m_profileHandle, cmsInfoDescription, "en", "US", NULL, 0);
68
                        if (descSize > 0)
69
                        {
70
                                char* descData = (char*) malloc(descSize + sizeof(char));
71
                                descSize = cmsGetProfileInfoASCII(m_profileHandle, cmsInfoDescription, "en", "US", descData, descSize);
72
                                if (descSize > 0)
73
                                {
74
                                        m_productDescription = QString(descData);
75
                                        free(descData);
76
                                }
77
                        }
78
#endif
15127 jghali 79
                }
80
        }
81
        return m_productDescription;
82
}
83
 
84
void ScLcms2ColorProfileImpl::closeProfile(void)
85
{
86
        if (m_profileHandle)
87
        {
88
                cmsCloseProfile(m_profileHandle);
89
                m_profileHandle = NULL;
90
        }
91
}