Krita Source Code Documentation
Loading...
Searching...
No Matches
ocio_display_filter_vfx2020.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2012 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7#ifndef OCIO_DISPLAY_FILTER_H
8#define OCIO_DISPLAY_FILTER_H
9
10#include <QOpenGLShaderProgram>
11
12#include <OpenColorIO.h>
13#include <OpenColorTransforms.h>
14#include <OpenColorTypes.h>
15
16#include <kis_display_filter.h>
18
19namespace OCIO = OCIO_NAMESPACE;
20
29
31{
32 Q_OBJECT
33public:
34 explicit OcioDisplayFilter(KisExposureGammaCorrectionInterface *interface, QObject *parent = 0);
36
37 void filter(quint8 *pixels, quint32 numPixels) override;
38 void approximateInverseTransformation(quint8 *pixels, quint32 numPixels) override;
39 void approximateForwardTransformation(quint8 *pixels, quint32 numPixels) override;
40 bool useInternalColorManagement() const override;
41 bool lockCurrentColorVisualRepresentation() const override;
43
44 bool updateShader() override;
45 template <class F>
46 bool updateShaderImpl(F *f);
47
48 void setupTextures(GLFunctions *f, QOpenGLShaderProgram *program) const override;
49
51
52 virtual QString program() const override;
53
54 void updateProcessor();
55
56 OCIO::ConstConfigRcPtr config;
57
58 const char *inputColorSpaceName {nullptr};
59 const char *displayDevice {nullptr};
60 const char *view {nullptr};
61 const char *look {nullptr};
63 float exposure {0.0};
64 float gamma {0.0};
65 float blackPoint {0.0};
66 float whitePoint {0.0};
68
69private:
70
71 OCIO::ConstProcessorRcPtr m_processor;
72 OCIO::ConstProcessorRcPtr m_reverseApproximationProcessor;
73 OCIO::ConstProcessorRcPtr m_forwardApproximationProcessor;
74
76
78
79 QString m_program;
80 GLuint m_lut3dTexID {0};
84
85 bool m_shaderDirty {true};
86};
87
88#endif // OCIO_DISPLAY_FILTER_H
float value(const T *src, size_t ch)
The KisDisplayFilter class is the base class for filters that are applied by the canvas to the projec...
void setupTextures(GLFunctions *f, QOpenGLShaderProgram *program) const override
void approximateInverseTransformation(quint8 *pixels, quint32 numPixels) override
OCIO::ConstConfigRcPtr config
OCIO::ConstProcessorRcPtr m_processor
KisExposureGammaCorrectionInterface * m_interface
void approximateForwardTransformation(quint8 *pixels, quint32 numPixels) override
virtual QString program() const override
OCIO_CHANNEL_SWIZZLE swizzle
OCIO::ConstProcessorRcPtr m_reverseApproximationProcessor
bool lockCurrentColorVisualRepresentation() const override
OcioDisplayFilter(KisExposureGammaCorrectionInterface *interface, QObject *parent=0)
OCIO::ConstProcessorRcPtr m_forwardApproximationProcessor
void filter(quint8 *pixels, quint32 numPixels) override
bool useInternalColorManagement() const override
KisExposureGammaCorrectionInterface * correctionInterface() const override
void setLockCurrentColorVisualRepresentation(bool value)