OpenShot Library | libopenshot  1.0.0
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 
31 namespace 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
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
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::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