|
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 279 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 261 of file kis_display_color_converter.cpp.
References displayConfigurationChanged(), KisConfigNotifier::instance(), KoColorSpaceRegistry::instance(), KisPart::instance(), m_d, KoColorSpaceRegistry::p709SRGBProfile(), KoColorSpaceRegistry::rgb8(), setDisplayFilter(), and updatePalettes().
|
override |
Definition at line 290 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::applyDisplayFiltering | ( | const KoColor & | srcColor, |
| const KoID & | bitDepthId ) const |
Definition at line 562 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 682 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 593 of file kis_display_color_converter.cpp.
References m_d.
| bool KisDisplayColorConverter::canSkipDisplayConversion | ( | const KoColorSpace * | cs | ) | const |
Definition at line 581 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 529 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 706 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 735 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 514 of file kis_display_color_converter.cpp.
References m_d.
|
signal |
| QSharedPointer< KisDisplayFilter > KisDisplayColorConverter::displayFilter | ( | ) | const |
Definition at line 519 of file kis_display_color_converter.cpp.
References m_d.
| KoColorDisplayRendererInterface * KisDisplayColorConverter::displayRendererInterface | ( | ) | const |
Definition at line 310 of file kis_display_color_converter.cpp.
References m_d.
|
static |
Definition at line 305 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsiF | ( | qreal | h, |
| qreal | s, | ||
| qreal | i ) |
Definition at line 878 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 842 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsv | ( | int | h, |
| int | s, | ||
| int | v, | ||
| int | a = 255 ) const |
Definition at line 797 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 901 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 891 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 854 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 818 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 913 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 759 of file kis_display_color_converter.cpp.
References m_d.
| KisMultiSurfaceDisplayConfig KisDisplayColorConverter::multiSurfaceDisplayConfig | ( | ) | const |
Definition at line 524 of file kis_display_color_converter.cpp.
References m_d.
| const KoColorSpace * KisDisplayColorConverter::nodeColorSpace | ( | ) | const |
Definition at line 472 of file kis_display_color_converter.cpp.
References m_d.
| const KoColorSpace * KisDisplayColorConverter::paintingColorSpace | ( | ) | const |
Definition at line 463 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 487 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 294 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 764 of file kis_display_color_converter.cpp.
References m_d.
|
private |
| QColor KisDisplayColorConverter::toQColor | ( | const KoColor & | c, |
| bool | proofToPaintColors = false ) const |
Definition at line 534 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 638 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 598 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 369 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.