Changeset View
Changeset View
Standalone View
Standalone View
libs/pigment/KoColor.cpp
Show All 27 Lines | |||||
28 | #include "DebugPigment.h" | 28 | #include "DebugPigment.h" | ||
29 | 29 | | |||
30 | #include "KoColorModelStandardIds.h" | 30 | #include "KoColorModelStandardIds.h" | ||
31 | #include "KoColorProfile.h" | 31 | #include "KoColorProfile.h" | ||
32 | #include "KoColorSpace.h" | 32 | #include "KoColorSpace.h" | ||
33 | #include "KoColorSpaceRegistry.h" | 33 | #include "KoColorSpaceRegistry.h" | ||
34 | #include "KoChannelInfo.h" | 34 | #include "KoChannelInfo.h" | ||
35 | 35 | | |||
36 | const KoColor *KoColor::s_prefab = nullptr; | 36 | #include <QGlobalStatic> | ||
37 | 37 | | |||
38 | void KoColor::init() | 38 | namespace { | ||
39 | | ||||
40 | struct DeafultKoColorInitializer | ||||
39 | { | 41 | { | ||
40 | KIS_ASSERT(s_prefab == nullptr); | 42 | DeafultKoColorInitializer() { | ||
41 | KoColor *prefab = new KoColor(KoColorSpaceRegistry::instance()->rgb16(0)); | 43 | const KoColorSpace *defaultColorSpace = KoColorSpaceRegistry::instance()->rgb16(0); | ||
42 | prefab->m_colorSpace->fromQColor(Qt::black, prefab->m_data); | 44 | KIS_ASSERT(defaultColorSpace); | ||
43 | prefab->m_colorSpace->setOpacity(prefab->m_data, OPACITY_OPAQUE_U8, 1); | 45 | | ||
44 | s_prefab = prefab; | 46 | value = new KoColor(Qt::black, defaultColorSpace); | ||
45 | #ifndef NODEBUG | 47 | #ifndef NODEBUG | ||
46 | #ifndef QT_NO_DEBUG | 48 | #ifndef QT_NO_DEBUG | ||
47 | // warn about rather expensive checks in assertPermanentColorspace(). | 49 | // warn about rather expensive checks in assertPermanentColorspace(). | ||
48 | qWarning() << "KoColor debug runtime checks are active."; | 50 | qWarning() << "KoColor debug runtime checks are active."; | ||
49 | #endif | 51 | #endif | ||
50 | #endif | 52 | #endif | ||
51 | } | 53 | } | ||
52 | 54 | | |||
55 | KoColor *value = 0; | ||||
56 | }; | ||||
57 | | ||||
58 | Q_GLOBAL_STATIC(DeafultKoColorInitializer, s_defaultKoColor); | ||||
59 | | ||||
60 | } | ||||
61 | | ||||
62 | | ||||
63 | KoColor::KoColor() { | ||||
64 | *this = *s_defaultKoColor->value; | ||||
65 | } | ||||
66 | | ||||
53 | KoColor::KoColor(const KoColorSpace * colorSpace) | 67 | KoColor::KoColor(const KoColorSpace * colorSpace) | ||
54 | { | 68 | { | ||
55 | Q_ASSERT(colorSpace); | 69 | Q_ASSERT(colorSpace); | ||
56 | m_colorSpace = KoColorSpaceRegistry::instance()->permanentColorspace(colorSpace); | 70 | m_colorSpace = KoColorSpaceRegistry::instance()->permanentColorspace(colorSpace); | ||
57 | m_size = m_colorSpace->pixelSize(); | 71 | m_size = m_colorSpace->pixelSize(); | ||
58 | Q_ASSERT(m_size <= MAX_PIXEL_SIZE); | 72 | Q_ASSERT(m_size <= MAX_PIXEL_SIZE); | ||
59 | memset(m_data, 0, m_size); | 73 | memset(m_data, 0, m_size); | ||
60 | } | 74 | } | ||
▲ Show 20 Lines • Show All 224 Lines • Show Last 20 Lines |