OpenShot Library | libopenshot 1.1.1
ColorGrade.h
Go to the documentation of this file.
1
9// Copyright (c) 2008-2026 OpenShot Studios, LLC
10//
11// SPDX-License-Identifier: LGPL-3.0-or-later
12
13#ifndef OPENSHOT_COLOR_GRADE_EFFECT_H
14#define OPENSHOT_COLOR_GRADE_EFFECT_H
15
16#include "../AnimatedCurve.h"
17#include "../EffectBase.h"
18#include "../Color.h"
19#include "../Frame.h"
20#include "../Json.h"
21#include "../KeyFrame.h"
22#include "ColorMap.h"
23
24#include <QColor>
25
26#include <array>
27#include <string>
28#include <utility>
29#include <vector>
30
31namespace openshot
32{
40
42 Json::Value JsonValue() const;
43 void SetJsonValue(const Json::Value& root);
44 QColor GetColor(int64_t frame_number) const;
45 float GetAmount(int64_t frame_number) const;
46 float GetLuma(int64_t frame_number) const;
47 };
48
58
60 Json::Value JsonValue() const;
61 void SetJsonValue(const Json::Value& root);
62 std::string Summary(int64_t frame_number) const;
63 bool IsEnabled(int64_t frame_number) const;
64 };
65
73 class ColorGrade : public EffectBase
74 {
75 private:
76 ColorMap lut_effect;
77 std::string lut_path;
78 bool lut_dirty;
79
80 void init_effect_details();
81 void sync_lut_effect();
82
83 static float Clamp01(float value);
84
85 public:
96
102
103 ColorGrade();
104
105 std::shared_ptr<openshot::Frame> GetFrame(int64_t frame_number) override {
106 return GetFrame(std::make_shared<openshot::Frame>(), frame_number);
107 }
108 std::shared_ptr<openshot::Frame> GetFrame(std::shared_ptr<openshot::Frame> frame, int64_t frame_number) override;
109
110 std::string Json() const override;
111 Json::Value JsonValue() const override;
112 void SetJson(const std::string value) override;
113 void SetJsonValue(const Json::Value root) override;
114 std::string PropertiesJSON(int64_t requested_frame) const override;
115 };
116}
117
118#endif
Header file for ColorMap (LUT) effect.
A unified beginner-friendly color grading effect.
Definition: ColorGrade.h:74
Keyframe lut_intensity
Definition: ColorGrade.h:95
Keyframe temperature
Definition: ColorGrade.h:86
AnimatedCurve curve_green
Definition: ColorGrade.h:100
AnimatedCurve curve_blue
Definition: ColorGrade.h:101
Json::Value JsonValue() const override
Generate Json::Value for this object.
Definition: ColorGrade.cpp:399
void SetJson(const std::string value) override
Load JSON string into this object.
Definition: ColorGrade.cpp:421
AnimatedCurve curve_red
Definition: ColorGrade.h:99
AnimatedCurve curve_all
Definition: ColorGrade.h:98
std::shared_ptr< openshot::Frame > GetFrame(int64_t frame_number) override
This method is required for all derived classes of ClipBase, and returns a new openshot::Frame object...
Definition: ColorGrade.h:105
std::string Json() const override
Generate JSON string of this object.
Definition: ColorGrade.cpp:395
std::string PropertiesJSON(int64_t requested_frame) const override
Definition: ColorGrade.cpp:471
void SetJsonValue(const Json::Value root) override
Load Json::Value into this object.
Definition: ColorGrade.cpp:430
ColorGradeWheelsData wheels
Definition: ColorGrade.h:97
Applies a 1D or 3D LUT (.cube) color transform to each frame.
Definition: ColorMap.h:36
This class represents a color (used on the timeline and clips)
Definition: Color.h:27
This abstract class is the base class, used by all effects in libopenshot.
Definition: EffectBase.h:57
A Keyframe is a collection of Point instances, which is used to vary a number or property over time.
Definition: KeyFrame.h:53
This namespace is the default namespace for all code in the openshot library.
Definition: AnimatedCurve.h:24
Wheel payload for a tonal region using native animated primitives.
Definition: ColorGrade.h:36
QColor GetColor(int64_t frame_number) const
Definition: ColorGrade.cpp:124
float GetLuma(int64_t frame_number) const
Definition: ColorGrade.cpp:136
void SetJsonValue(const Json::Value &root)
Definition: ColorGrade.cpp:106
float GetAmount(int64_t frame_number) const
Definition: ColorGrade.cpp:132
Json::Value JsonValue() const
Definition: ColorGrade.cpp:91
All wheel controls for ColorGrade.
Definition: ColorGrade.h:52
std::string Summary(int64_t frame_number) const
Definition: ColorGrade.cpp:169
ColorGradeWheelEntry highlights
Definition: ColorGrade.h:57
ColorGradeWheelEntry global
Definition: ColorGrade.h:54
bool IsEnabled(int64_t frame_number) const
Definition: ColorGrade.cpp:174
void SetJsonValue(const Json::Value &root)
Definition: ColorGrade.cpp:154
ColorGradeWheelEntry midtones
Definition: ColorGrade.h:56
Json::Value JsonValue() const
Definition: ColorGrade.cpp:143
ColorGradeWheelEntry shadows
Definition: ColorGrade.h:55