28 #include "../../include/effects/Brightness.h"
35 init_effect_details();
42 init_effect_details();
46 void Brightness::init_effect_details()
54 info.
description =
"Adjust the brightness and contrast of the frame's image.";
64 std::shared_ptr<QImage> frame_image = frame->GetImage();
71 unsigned char *pixels = (
unsigned char *) frame_image->bits();
72 for (
int pixel = 0, byte_index=0; pixel < frame_image->width() * frame_image->height(); pixel++, byte_index+=4)
75 int R = pixels[byte_index];
76 int G = pixels[byte_index + 1];
77 int B = pixels[byte_index + 2];
78 int A = pixels[byte_index + 3];
81 float factor = (259 * (contrast_value + 255)) / (255 * (259 - contrast_value));
82 R =
constrain((factor * (R - 128)) + 128);
83 G =
constrain((factor * (G - 128)) + 128);
84 B =
constrain((factor * (B - 128)) + 128);
87 R += (255 * brightness_value);
88 G += (255 * brightness_value);
89 B += (255 * brightness_value);
97 pixels[byte_index] = R;
98 pixels[byte_index + 1] = G;
99 pixels[byte_index + 2] = B;
100 pixels[byte_index + 3] = A;
133 bool success = reader.parse( value, root );
136 throw InvalidJSON(
"JSON could not be parsed (or is invalid)",
"");
146 throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)",
"");
157 if (!root[
"brightness"].isNull())
159 if (!root[
"contrast"].isNull())
168 root[
"id"] =
add_property_json(
"ID", 0.0,
"string",
Id(), NULL, -1, -1,
true, requested_frame);
169 root[
"position"] =
add_property_json(
"Position", Position(),
"float",
"", NULL, 0, 30 * 60 * 60 * 48,
false, requested_frame);
170 root[
"layer"] =
add_property_json(
"Track", Layer(),
"int",
"", NULL, 0, 20,
false, requested_frame);
171 root[
"start"] =
add_property_json(
"Start", Start(),
"float",
"", NULL, 0, 30 * 60 * 60 * 48,
false, requested_frame);
172 root[
"end"] =
add_property_json(
"End", End(),
"float",
"", NULL, 0, 30 * 60 * 60 * 48,
false, requested_frame);
173 root[
"duration"] =
add_property_json(
"Duration", Duration(),
"float",
"", NULL, 0, 30 * 60 * 60 * 48,
true, requested_frame);
180 return root.toStyledString();