diff options
author | Morten Johan Sørvig <morten.sorvig@qt.io> | 2017-07-31 16:49:05 +0200 |
---|---|---|
committer | Morten Johan Sørvig <morten.sorvig@qt.io> | 2017-12-15 12:41:05 +0000 |
commit | 27f70d7826d739fe8705cb23b1a26cfb6e0bc16c (patch) | |
tree | 8b1451734dd5d0a9f528a4f3130ba394894f6cfc /src/gui/painting | |
parent | 259acdcb8a38b8989a137942d20ed2685a4c940a (diff) |
macOS: remove existing color-profile handling code
This code is unused/not functional.
Use sRGB everywhere instead. This is not a change
of effective color profile: the backing store has
had the sRGB profile assigned since commit ac899f6d
changed it as a side effect.
Change-Id: Ib45cec3acad90db2a0873b052d6bc4a61c894b18
Task-number: QTBUG-47660
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/gui/painting')
-rw-r--r-- | src/gui/painting/qcoregraphics.mm | 107 | ||||
-rw-r--r-- | src/gui/painting/qcoregraphics_p.h | 3 |
2 files changed, 6 insertions, 104 deletions
diff --git a/src/gui/painting/qcoregraphics.mm b/src/gui/painting/qcoregraphics.mm index e1601d87dc..2249859c43 100644 --- a/src/gui/painting/qcoregraphics.mm +++ b/src/gui/painting/qcoregraphics.mm @@ -293,103 +293,6 @@ QBrush qt_mac_toQBrush(const NSColor *color, QPalette::ColorGroup colorGroup) } #endif -// ---------------------- Color Management ---------------------- - -static CGColorSpaceRef m_genericColorSpace = 0; -static QHash<uint32_t, CGColorSpaceRef> m_displayColorSpaceHash; -static bool m_postRoutineRegistered = false; - -static void qt_mac_cleanUpMacColorSpaces() -{ - if (m_genericColorSpace) { - CFRelease(m_genericColorSpace); - m_genericColorSpace = 0; - } - QHash<uint32_t, CGColorSpaceRef>::const_iterator it = m_displayColorSpaceHash.constBegin(); - while (it != m_displayColorSpaceHash.constEnd()) { - if (it.value()) - CFRelease(it.value()); - ++it; - } - m_displayColorSpaceHash.clear(); -} - -static CGColorSpaceRef qt_mac_displayColorSpace(const QWindow *window) -{ - CGColorSpaceRef colorSpace = 0; - uint32_t displayID = 0; - -#ifdef Q_OS_MACOS - if (window == 0) { - displayID = CGMainDisplayID(); - } else { - displayID = CGMainDisplayID(); - /* - ### get correct display - const QRect &qrect = window->geometry(); - CGRect rect = CGRectMake(qrect.x(), qrect.y(), qrect.width(), qrect.height()); - CGDisplayCount throwAway; - CGDisplayErr dErr = CGGetDisplaysWithRect(rect, 1, &displayID, &throwAway); - if (dErr != kCGErrorSuccess) - return macDisplayColorSpace(0); // fall back on main display - */ - } - if ((colorSpace = m_displayColorSpaceHash.value(displayID))) - return colorSpace; - - colorSpace = CGDisplayCopyColorSpace(displayID); -#else - Q_UNUSED(window); -#endif - - if (colorSpace == 0) - colorSpace = CGColorSpaceCreateDeviceRGB(); - - m_displayColorSpaceHash.insert(displayID, colorSpace); - if (!m_postRoutineRegistered) { - m_postRoutineRegistered = true; - qAddPostRoutine(qt_mac_cleanUpMacColorSpaces); - } - return colorSpace; -} - -CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice) -{ - Q_UNUSED(paintDevice); - - // FIXME: Move logic into each paint device once Qt has support for color spaces - return qt_mac_displayColorSpace(0); - - // The following code seems to take care of QWidget, but in reality doesn't, as - // qt_mac_displayColorSpace ignores the argument and always uses the main display. -#if 0 - bool isWidget = (paintDevice->devType() == QInternal::Widget); - return qt_mac_displayColorSpace(isWidget ? static_cast<const QWidget *>(paintDevice)->window() : 0); -#endif -} - -CGColorSpaceRef qt_mac_genericColorSpace() -{ -#if 0 - if (!m_genericColorSpace) { - if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) { - m_genericColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); - } else - { - m_genericColorSpace = CGColorSpaceCreateDeviceRGB(); - } - if (!m_postRoutineRegistered) { - m_postRoutineRegistered = true; - qAddPostRoutine(QCoreGraphicsPaintEngine::cleanUpMacColorSpaces); - } - } - return m_genericColorSpace; -#else - // Just return the main display colorspace for the moment. - return qt_mac_displayColorSpace(0); -#endif -} - // ---------------------- Geometry Helpers ---------------------- void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform) @@ -459,12 +362,13 @@ QMacCGContext::QMacCGContext(QPaintDevice *paintDevice) : context(0) if (!image) return; // Context type not supported. - CGColorSpaceRef colorspace = qt_mac_colorSpaceForDeviceType(paintDevice); + CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); uint flags = kCGImageAlphaPremultipliedFirst; flags |= kCGBitmapByteOrder32Host; context = CGBitmapContextCreate(image->bits(), image->width(), image->height(), - 8, image->bytesPerLine(), colorspace, flags); + 8, image->bytesPerLine(), colorSpace, flags); + CFRelease(colorSpace); CGContextTranslateCTM(context, 0, image->height()); const qreal devicePixelRatio = paintDevice->devicePixelRatioF(); CGContextScaleCTM(context, devicePixelRatio, devicePixelRatio); @@ -492,7 +396,7 @@ QMacCGContext::QMacCGContext(QPainter *painter) : context(0) devType == QInternal::Pixmap || devType == QInternal::Image)) { - CGColorSpaceRef colorspace = qt_mac_colorSpaceForDeviceType(paintEngine->paintDevice()); + CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); uint flags = kCGImageAlphaPremultipliedFirst; #ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version flags |= kCGBitmapByteOrder32Host; @@ -500,7 +404,8 @@ QMacCGContext::QMacCGContext(QPainter *painter) : context(0) const QImage *image = static_cast<const QImage *>(paintEngine->paintDevice()); context = CGBitmapContextCreate((void *)image->bits(), image->width(), image->height(), - 8, image->bytesPerLine(), colorspace, flags); + 8, image->bytesPerLine(), colorSpace, flags); + CFRelease(colorSpace); // Invert y axis CGContextTranslateCTM(context, 0, image->height()); diff --git a/src/gui/painting/qcoregraphics_p.h b/src/gui/painting/qcoregraphics_p.h index d74c4d0711..7f677db465 100644 --- a/src/gui/painting/qcoregraphics_p.h +++ b/src/gui/painting/qcoregraphics_p.h @@ -73,9 +73,6 @@ Q_GUI_EXPORT QImage qt_mac_toQImage(CGImageRef image); Q_GUI_EXPORT void qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage); -Q_GUI_EXPORT CGColorSpaceRef qt_mac_genericColorSpace(); -Q_GUI_EXPORT CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *paintDevice); - Q_GUI_EXPORT void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform); #ifdef Q_OS_MACOS |