|
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, bool reactOnThemeChange=true) | |
| 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 281 of file kis_display_color_converter.cpp.
References KoColorSpaceRegistry::instance(), m_d, KoColorSpaceRegistry::p709SRGBProfile(), KoColorSpaceRegistry::rgb8(), and setDisplayFilter().
| KisDisplayColorConverter::KisDisplayColorConverter | ( | KoCanvasResourceProvider * | resourceManager, |
| QObject * | parent, | ||
| bool | reactOnThemeChange = true ) |
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 292 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::applyDisplayFiltering | ( | const KoColor & | srcColor, |
| const KoID & | bitDepthId ) const |
Definition at line 564 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 684 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 595 of file kis_display_color_converter.cpp.
References m_d.
| bool KisDisplayColorConverter::canSkipDisplayConversion | ( | const KoColorSpace * | cs | ) | const |
Definition at line 583 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 531 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 708 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 737 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 516 of file kis_display_color_converter.cpp.
References m_d.
|
signal |
| QSharedPointer< KisDisplayFilter > KisDisplayColorConverter::displayFilter | ( | ) | const |
Definition at line 521 of file kis_display_color_converter.cpp.
References m_d.
| KoColorDisplayRendererInterface * KisDisplayColorConverter::displayRendererInterface | ( | ) | const |
Definition at line 312 of file kis_display_color_converter.cpp.
References m_d.
|
static |
Definition at line 307 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsiF | ( | qreal | h, |
| qreal | s, | ||
| qreal | i ) |
Definition at line 880 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 844 of file kis_display_color_converter.cpp.
| KoColor KisDisplayColorConverter::fromHsv | ( | int | h, |
| int | s, | ||
| int | v, | ||
| int | a = 255 ) const |
Definition at line 799 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 903 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 893 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 856 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 820 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 915 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 761 of file kis_display_color_converter.cpp.
References m_d.
| KisMultiSurfaceDisplayConfig KisDisplayColorConverter::multiSurfaceDisplayConfig | ( | ) | const |
Definition at line 526 of file kis_display_color_converter.cpp.
References m_d.
| const KoColorSpace * KisDisplayColorConverter::nodeColorSpace | ( | ) | const |
Definition at line 474 of file kis_display_color_converter.cpp.
References m_d.
| const KoColorSpace * KisDisplayColorConverter::paintingColorSpace | ( | ) | const |
Definition at line 465 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 489 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 296 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 766 of file kis_display_color_converter.cpp.
References m_d.
|
private |
| QColor KisDisplayColorConverter::toQColor | ( | const KoColor & | c, |
| bool | proofToPaintColors = false ) const |
Definition at line 536 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 640 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 600 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 371 of file kis_display_color_converter.cpp.
References KisHandlePalette::black, convertColorToDisplayColorSpace(), KoColor::fromQColor(), KisHandlePalette::gradientFillColor, KisHandlePalette::highlightColor, KisHandlePalette::highlightOutlineColor, m_d, KisHandlePalette::primaryColor, KisHandlePalette::secondaryColor, KisHandlePalette::selectionColor, and KisHandlePalette::white.
|
private |
Definition at line 154 of file kis_display_color_converter.h.