|
Krita Source Code Documentation
|
#include <kis_display_color_converter.h>
Inheritance diagram for KisDisplayColorConverter:Classes | |
| struct | Private |
Public Types | |
| using | ConversionOptions = std::pair<KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags> |
Signals | |
| void | displayConfigurationChanged () |
Public Member Functions | |
| KoColor | applyDisplayFiltering (const KoColor &srcColor, const KoID &bitDepthId) const |
| void | applyDisplayFilteringF32 (KisFixedPaintDeviceSP device, const KoColorSpace *dstColorSpace) const |
| KoColor | approximateFromRenderedQColor (const QColor &c) const |
| bool | canSkipDisplayConversion (const KoColorSpace *cs) const |
| ConversionOptions | conversionOptions () const |
| QColor | convertColorToDisplayColorSpace (const KoColor color, bool applyOcio=false) const |
| convertColorToDisplayColorSpace This applies displayfiltering to the given KoColor, and then funnels the resulting data into a QColor for display. This function is used to draw canvas decorations into the canvas colorspace, as required for proper HDR and wide gamut support. | |
| QImage | convertImageToDisplayColorSpace (KisPaintDeviceSP srcDevice, QRect source=QRect(), bool applyOcio=false) const |
| convertImageToDisplayColorSpace Same as convertColorToDisplayColorSpace, but then for a KisPaintDevice. | |
| KisDisplayConfig | displayConfig () const |
| QSharedPointer< KisDisplayFilter > | displayFilter () const |
| KoColorDisplayRendererInterface * | displayRendererInterface () const |
| KoColor | fromHsiF (qreal h, qreal s, qreal i) |
| KoColor | fromHslF (qreal h, qreal s, qreal l, qreal a=1.0) |
| KoColor | fromHsv (int h, int s, int v, int a=255) const |
| KoColor | fromHsvF (qreal h, qreal s, qreal v, qreal a=1.0) |
| KoColor | fromHsyF (qreal h, qreal s, qreal y, qreal R=0.2126, qreal G=0.7152, qreal B=0.0722, qreal gamma=2.2) |
| void | getHsiF (const KoColor &srcColor, qreal *h, qreal *s, qreal *i) |
| void | getHslF (const KoColor &srcColor, qreal *h, qreal *s, qreal *l, qreal *a=0) |
| void | getHsv (const KoColor &srcColor, int *h, int *s, int *v, int *a=0) const |
| void | getHsvF (const KoColor &srcColor, qreal *h, qreal *s, qreal *v, qreal *a=0) |
| void | getHsyF (const KoColor &srcColor, qreal *h, qreal *s, qreal *y, qreal R=0.2126, qreal G=0.7152, qreal B=0.0722, qreal gamma=2.2) |
| KisHandlePalette | handlePaletteForDisplayColorSpace () const |
| handlePaletteForDisplayColorSpace | |
| KisDisplayColorConverter () | |
| KisDisplayColorConverter (KoCanvasResourceProvider *resourceManager, QObject *parent) | |
| KisMultiSurfaceDisplayConfig | multiSurfaceDisplayConfig () const |
| const KoColorSpace * | nodeColorSpace () const |
| const KoColorSpace * | paintingColorSpace () const |
| void | setDisplayFilter (QSharedPointer< KisDisplayFilter > displayFilter) |
| void | setImage (KisImageSP image) |
| void | setImageColorSpace (const KoColorSpace *cs) |
| void | setMultiSurfaceDisplayConfig (const KisMultiSurfaceDisplayConfig &config) |
| QPalette | systemPaletteForDisplayColorSpace () const |
| systemPaletteForDisplayColorSpace | |
| QColor | toQColor (const KoColor &c, bool proofToPaintColors=false) const |
| QImage | toQImage (const KoColorSpace *srcColorSpace, const quint8 *data, QSize size, bool proofPaintColors=false) const |
| QImage | toQImage (KisPaintDeviceSP srcDevice, bool proofPaintColors=false) const |
| ~KisDisplayColorConverter () override | |
Static Public Member Functions | |
| static KisDisplayColorConverter * | dumbConverterInstance () |
Private Member Functions | |
| template<class Policy > | |
| Policy::Result | convertToDisplayImpl (const KoColor &srcColor, bool alreadyInDestinationF32=false) const |
| Q_PRIVATE_SLOT (m_d, void selectPaintingColorSpace()) | |
| Q_PRIVATE_SLOT (m_d, void slotCanvasResourceChanged(int key, const QVariant &v)) | |
| Q_PRIVATE_SLOT (m_d, void slotUpdateCurrentNodeColorSpace()) | |
| KoColor | toKoColor (const QColor &c) |
| Q_SLOT void | updatePalettes () |
Private Attributes | |
| const QScopedPointer< Private > | m_d |
Special helper class that provides primitives for converting colors when displaying. We have at least 3 color spaces:
1) Image color space (any: RGB, CMYK, Lab, etc) 2) Display color space (a limited RGB color space) 3) Color selectors color space (the one where color selectors generate their HSV-based colors. Right now it is sRGB.
KoColor may be in any of these color spaces. QColor should always be in the display color space only.
Definition at line 39 of file kis_display_color_converter.h.
| using KisDisplayColorConverter::ConversionOptions = std::pair<KoColorConversionTransformation::Intent, KoColorConversionTransformation::ConversionFlags> |
Definition at line 133 of file kis_display_color_converter.h.
| KisDisplayColorConverter::KisDisplayColorConverter | ( | ) |
Definition at line 276 of file kis_display_color_converter.cpp.
References KoColorSpaceRegistry::instance(), m_d, KoColorSpaceRegistry::p709SRGBProfile(), KoColorSpaceRegistry::rgb8(), and setDisplayFilter().
| KisDisplayColorConverter::KisDisplayColorConverter | ( | KoCanvasResourceProvider * | resourceManager, |
| QObject * | parent ) |
Definition at line 259 of file kis_display_color_converter.cpp.
References displayConfigurationChanged(), KisConfigNotifier::instance(), KoColorSpaceRegistry::instance(), m_d, KoColorSpaceRegistry::p709SRGBProfile(), KoColorSpaceRegistry::rgb8(), setDisplayFilter(), and updatePalettes().
|
override |
Definition at line 287 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::applyDisplayFiltering | ( | const KoColor & | srcColor, |
| const KoID & | bitDepthId ) const |
Definition at line 559 of file kis_display_color_converter.cpp.
References KoColor::convertTo(), KoColor::data(), KIS_ASSERT_RECOVER, m_d, and KoColor::setProfile().
| void KisDisplayColorConverter::applyDisplayFilteringF32 | ( | KisFixedPaintDeviceSP | device, |
| const KoColorSpace * | dstColorSpace ) const |
Apply display filtering and convert device into dstColorSpace on exiting the function. The conversion can actually change the bit-depth of the device if necessary
This method is optimized for the case when device is already in 32f version of the painting color space.
Definition at line 679 of file kis_display_color_converter.cpp.
References KisFixedPaintDevice::bounds(), KoColorSpace::colorDepthId(), KoColorSpace::colorModelId(), KisFixedPaintDevice::colorSpace(), KisFixedPaintDevice::convertTo(), KisFixedPaintDevice::data(), Float32BitsColorDepthID, KIS_ASSERT_RECOVER_RETURN, KIS_SAFE_ASSERT_RECOVER_RETURN, m_d, RGBAColorModelID, and KisFixedPaintDevice::setProfile().
| KoColor KisDisplayColorConverter::approximateFromRenderedQColor | ( | const QColor & | c | ) | const |
Definition at line 590 of file kis_display_color_converter.cpp.
References m_d.
| bool KisDisplayColorConverter::canSkipDisplayConversion | ( | const KoColorSpace * | cs | ) | const |
Definition at line 578 of file kis_display_color_converter.cpp.
References KoColorSpace::colorModelId(), m_d, KoColorSpace::profile(), RGBAColorModelID, and KoColorProfile::uniqueId().
| KisDisplayColorConverter::ConversionOptions KisDisplayColorConverter::conversionOptions | ( | ) | const |
Definition at line 526 of file kis_display_color_converter.cpp.
References m_d.
| QColor KisDisplayColorConverter::convertColorToDisplayColorSpace | ( | const KoColor | color, |
| bool | applyOcio = false ) const |
convertColorToDisplayColorSpace This applies displayfiltering to the given KoColor, and then funnels the resulting data into a QColor for display. This function is used to draw canvas decorations into the canvas colorspace, as required for proper HDR and wide gamut support.
| color | the KoColor to convert. |
| applyOcio | whether to also apply OCIO. This is only really relevant for color pickers. |
No idea why it wouldn't be RGBAColorModelID, but do something useful in any case...
Definition at line 703 of file kis_display_color_converter.cpp.
References applyDisplayFiltering(), KoColorSpace::channelCount(), KoColorSpace::channels, KoColorSpace::colorModelId(), KoColor::colorSpace(), KoColor::convertTo(), KoColor::data(), KoChannelInfo::displayPosition(), Float32BitsColorDepthID, KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE, m_d, KoColorSpace::normalisedChannelsValue(), RGBAColorModelID, and KoColor::toQColor().
| QImage KisDisplayColorConverter::convertImageToDisplayColorSpace | ( | KisPaintDeviceSP | srcDevice, |
| QRect | source = QRect(), | ||
| bool | applyOcio = false ) const |
convertImageToDisplayColorSpace Same as convertColorToDisplayColorSpace, but then for a KisPaintDevice.
| srcDevice | – src device to process. |
| source | – source rect. |
| applyOcio | – whether to also apply OCIO. Only useful for previews and not UI elements. |
Definition at line 732 of file kis_display_color_converter.cpp.
References KisPaintDevice::convertTo(), KisPaintDevice::convertToQImage(), KisSharedPtr< T >::data(), KisPaintDevice::exactBounds(), Float32BitsColorDepthID, KIS_ASSERT_RECOVER, m_d, KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nConseqPixels(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nextPixels(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::rawData(), KisPaintDevice::setProfile(), and source().
|
private |
| KisDisplayConfig KisDisplayColorConverter::displayConfig | ( | ) | const |
Definition at line 511 of file kis_display_color_converter.cpp.
References m_d.
|
signal |
| QSharedPointer< KisDisplayFilter > KisDisplayColorConverter::displayFilter | ( | ) | const |
Definition at line 516 of file kis_display_color_converter.cpp.
References m_d.
| KoColorDisplayRendererInterface * KisDisplayColorConverter::displayRendererInterface | ( | ) | const |
Definition at line 307 of file kis_display_color_converter.cpp.
References m_d.
|
static |
Definition at line 302 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsiF | ( | qreal | h, |
| qreal | s, | ||
| qreal | i ) |
Definition at line 875 of file kis_display_color_converter.cpp.
References HSIToRGB(), and m_d.
| KoColor KisDisplayColorConverter::fromHslF | ( | qreal | h, |
| qreal | s, | ||
| qreal | l, | ||
| qreal | a = 1.0 ) |
Definition at line 839 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsv | ( | int | h, |
| int | s, | ||
| int | v, | ||
| int | a = 255 ) const |
Definition at line 794 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsvF | ( | qreal | h, |
| qreal | s, | ||
| qreal | v, | ||
| qreal | a = 1.0 ) |
| KoColor KisDisplayColorConverter::fromHsyF | ( | qreal | h, |
| qreal | s, | ||
| qreal | y, | ||
| qreal | R = 0.2126, | ||
| qreal | G = 0.7152, | ||
| qreal | B = 0.0722, | ||
| qreal | gamma = 2.2 ) |
Definition at line 898 of file kis_display_color_converter.cpp.
References B, KoColorProfile::delinearizeFloatValueFast(), G, HSYToRGB(), KoColorSpaceRegistry::instance(), m_d, KoColorSpace::profile(), R, and KoColorSpaceRegistry::rgb8().
| void KisDisplayColorConverter::getHsiF | ( | const KoColor & | srcColor, |
| qreal * | h, | ||
| qreal * | s, | ||
| qreal * | i ) |
Definition at line 888 of file kis_display_color_converter.cpp.
References m_d, and RGBToHSI().
| void KisDisplayColorConverter::getHslF | ( | const KoColor & | srcColor, |
| qreal * | h, | ||
| qreal * | s, | ||
| qreal * | l, | ||
| qreal * | a = 0 ) |
Definition at line 851 of file kis_display_color_converter.cpp.
References m_d.
| void KisDisplayColorConverter::getHsvF | ( | const KoColor & | srcColor, |
| qreal * | h, | ||
| qreal * | s, | ||
| qreal * | v, | ||
| qreal * | a = 0 ) |
Definition at line 815 of file kis_display_color_converter.cpp.
| void KisDisplayColorConverter::getHsyF | ( | const KoColor & | srcColor, |
| qreal * | h, | ||
| qreal * | s, | ||
| qreal * | y, | ||
| qreal | R = 0.2126, | ||
| qreal | G = 0.7152, | ||
| qreal | B = 0.0722, | ||
| qreal | gamma = 2.2 ) |
Definition at line 910 of file kis_display_color_converter.cpp.
References B, G, KoColorSpaceRegistry::instance(), KoColorProfile::linearizeFloatValueFast(), m_d, KoColorSpace::profile(), R, KoColorSpaceRegistry::rgb8(), and RGBToHSY().
| KisHandlePalette KisDisplayColorConverter::handlePaletteForDisplayColorSpace | ( | ) | const |
handlePaletteForDisplayColorSpace
Definition at line 756 of file kis_display_color_converter.cpp.
References m_d.
| KisMultiSurfaceDisplayConfig KisDisplayColorConverter::multiSurfaceDisplayConfig | ( | ) | const |
Definition at line 521 of file kis_display_color_converter.cpp.
References m_d.
| const KoColorSpace * KisDisplayColorConverter::nodeColorSpace | ( | ) | const |
Definition at line 469 of file kis_display_color_converter.cpp.
References m_d.
| const KoColorSpace * KisDisplayColorConverter::paintingColorSpace | ( | ) | const |
Definition at line 460 of file kis_display_color_converter.cpp.
References KoColorSpaceRegistry::instance(), KIS_SAFE_ASSERT_RECOVER, m_d, and KoColorSpaceRegistry::rgb8().
|
private |
| void KisDisplayColorConverter::setDisplayFilter | ( | QSharedPointer< KisDisplayFilter > | displayFilter | ) |
Definition at line 484 of file kis_display_color_converter.cpp.
References KoColor::convertTo(), KoColor::data(), displayFilter(), and m_d.
| void KisDisplayColorConverter::setImage | ( | KisImageSP | image | ) |
| void KisDisplayColorConverter::setImageColorSpace | ( | const KoColorSpace * | cs | ) |
Definition at line 291 of file kis_display_color_converter.cpp.
References KoColorSpace::colorModelId(), KoColorSpaceRegistry::instance(), m_d, KoColorSpaceRegistry::p709SRGBProfile(), KoColorSpace::profile(), and RGBAColorModelID.
| void KisDisplayColorConverter::setMultiSurfaceDisplayConfig | ( | const KisMultiSurfaceDisplayConfig & | config | ) |
| QPalette KisDisplayColorConverter::systemPaletteForDisplayColorSpace | ( | ) | const |
systemPaletteForDisplayColorSpace
Definition at line 761 of file kis_display_color_converter.cpp.
References m_d.
|
private |
| QColor KisDisplayColorConverter::toQColor | ( | const KoColor & | c, |
| bool | proofToPaintColors = false ) const |
Definition at line 531 of file kis_display_color_converter.cpp.
References KoColor::colorSpace(), KoColor::convertTo(), KoColor::data(), KIS_ASSERT_RECOVER, m_d, p, and KoColor::setProfile().
| QImage KisDisplayColorConverter::toQImage | ( | const KoColorSpace * | srcColorSpace, |
| const quint8 * | data, | ||
| QSize | size, | ||
| bool | proofPaintColors = false ) const |
Definition at line 635 of file kis_display_color_converter.cpp.
References KoColorSpace::convertPixelsTo(), KoColorSpace::convertToQImage(), m_d, paintingColorSpace(), and KoColorSpace::pixelSize().
| QImage KisDisplayColorConverter::toQImage | ( | KisPaintDeviceSP | srcDevice, |
| bool | proofPaintColors = false ) const |
Converts the exactBounds() (!) of the srcDevice into QImage properly rendered into display RGB space. Please note that the offset of the image in QImage is always zero for efficiency reasons.
Definition at line 595 of file kis_display_color_converter.cpp.
References bounds, KisPaintDevice::colorSpace(), KisPaintDevice::convertTo(), KisPaintDevice::convertToQImage(), KisPaintDevice::exactBounds(), KIS_ASSERT_RECOVER, m_d, KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nConseqPixels(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nextPixels(), paintingColorSpace(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::rawData(), and KisPaintDevice::setProfile().
|
private |
Definition at line 366 of file kis_display_color_converter.cpp.
References convertColorToDisplayColorSpace(), KoColor::fromQColor(), m_d, and palette.
|
private |
Definition at line 154 of file kis_display_color_converter.h.