28 #include "../include/TextReader.h" 33 TextReader::TextReader() : width(1024), height(768), x_offset(0), y_offset(0), text(
""), font(
"Arial"), size(10.0), text_color(
"#ffffff"), background_color(
"#000000"), is_open(false), gravity(
GRAVITY_CENTER) {
40 TextReader::TextReader(
int width,
int height,
int x_offset,
int y_offset,
GravityType gravity,
string text,
string font,
double size,
string text_color,
string background_color)
41 : width(width), height(height), x_offset(x_offset), y_offset(y_offset), text(text), font(font), size(size), text_color(text_color), background_color(background_color), is_open(false), gravity(gravity)
55 image = std::shared_ptr<Magick::Image>(
new Magick::Image(Magick::Geometry(width,height), Magick::Color(background_color)));
58 image->backgroundColor(Magick::Color(
"none"));
64 lines.push_back(Magick::DrawableGravity(Magick::NorthWestGravity));
67 lines.push_back(Magick::DrawableGravity(Magick::NorthGravity));
70 lines.push_back(Magick::DrawableGravity(Magick::NorthEastGravity));
73 lines.push_back(Magick::DrawableGravity(Magick::WestGravity));
76 lines.push_back(Magick::DrawableGravity(Magick::CenterGravity));
79 lines.push_back(Magick::DrawableGravity(Magick::EastGravity));
82 lines.push_back(Magick::DrawableGravity(Magick::SouthWestGravity));
85 lines.push_back(Magick::DrawableGravity(Magick::SouthGravity));
88 lines.push_back(Magick::DrawableGravity(Magick::SouthEastGravity));
93 lines.push_back(Magick::DrawableStrokeColor(Magick::Color(
"none")));
94 lines.push_back(Magick::DrawableStrokeWidth(0.0));
95 lines.push_back(Magick::DrawableFillColor(text_color));
96 lines.push_back(Magick::DrawableFont(font));
97 lines.push_back(Magick::DrawablePointSize(size));
98 lines.push_back(Magick::DrawableText(x_offset, y_offset, text));
151 std::shared_ptr<Frame> image_frame(
new Frame(requested_frame, image->size().width(), image->size().height(),
"#000000", 0, 2));
154 std::shared_ptr<Magick::Image> copy_image(
new Magick::Image(*image.get()));
155 copy_image->modifyImage();
163 std::shared_ptr<Frame> image_frame(
new Frame(1, 640, 480,
"#000000", 0, 2));
183 root[
"type"] =
"TextReader";
184 root[
"width"] = width;
185 root[
"height"] = height;
186 root[
"x_offset"] = x_offset;
187 root[
"y_offset"] = y_offset;
191 root[
"text_color"] = text_color;
192 root[
"background_color"] = background_color;
193 root[
"gravity"] = gravity;
205 bool success = reader.parse( value, root );
208 throw InvalidJSON(
"JSON could not be parsed (or is invalid)",
"");
218 throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)",
"");
229 if (!root[
"width"].isNull())
230 width = root[
"width"].asInt();
231 if (!root[
"height"].isNull())
232 height = root[
"height"].asInt();
233 if (!root[
"x_offset"].isNull())
234 x_offset = root[
"x_offset"].asInt();
235 if (!root[
"y_offset"].isNull())
236 y_offset = root[
"y_offset"].asInt();
237 if (!root[
"text"].isNull())
238 text = root[
"text"].asString();
239 if (!root[
"font"].isNull())
240 font = root[
"font"].asString();
241 if (!root[
"size"].isNull())
242 size = root[
"size"].asDouble();
243 if (!root[
"text_color"].isNull())
244 text_color = root[
"text_color"].asString();
245 if (!root[
"background_color"].isNull())
246 background_color = root[
"background_color"].asString();
247 if (!root[
"gravity"].isNull())
int num
Numerator for the fraction.
Align clip to the right of its parent (middle aligned)
Align clip to the bottom right of its parent.
string Json()
Get and Set JSON methods.
void Close()
Close Reader.
int width
The width of the video (in pixesl)
This class represents a single frame of video (i.e. image & audio data)
float duration
Length of time (in seconds)
Json::Value JsonValue()
Generate Json::JsonValue for this object.
bool has_video
Determines if this file has a video stream.
Fraction display_ratio
The ratio of width to height of the video stream (i.e. 640x480 has a ratio of 4/3) ...
int64_t file_size
Size of file (in bytes)
Align clip to the top right of its parent.
Align clip to the bottom left of its parent.
void SetJsonValue(Json::Value root)
Load Json::JsonValue into this object.
std::shared_ptr< Frame > GetFrame(int64_t requested_frame)
bool has_audio
Determines if this file has an audio stream.
int64_t video_length
The number of frames in the video stream.
int height
The height of the video (in pixels)
Align clip to the bottom center of its parent.
Align clip to the top left of its parent.
This class represents a fraction.
Align clip to the left of its parent (middle aligned)
TextReader()
Default constructor (blank text)
virtual Json::Value JsonValue()=0
Generate Json::JsonValue for this object.
virtual void SetJsonValue(Json::Value root)=0
Load Json::JsonValue into this object.
ReaderInfo info
Information about the current media file.
Fraction fps
Frames per second, as a fraction (i.e. 24/1 = 24 fps)
Fraction video_timebase
The video timebase determines how long each frame stays on the screen.
Align clip to the center of its parent (middle aligned)
Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square) ...
This namespace is the default namespace for all code in the openshot library.
Exception for invalid JSON.
string vcodec
The name of the video codec used to encode / decode the video stream.
void SetJson(string value)
Load JSON string into this object.
Align clip to the top center of its parent.
int den
Denominator for the fraction.
void Open()
Open Reader - which is called by the constructor automatically.
GravityType
This enumeration determines how clips are aligned to their parent container.
double ToDouble()
Return this fraction as a double (i.e. 1/2 = 0.5)