26 QtTextReader::QtTextReader() : width(1024), height(768), x_offset(0), y_offset(0), text(
""), font(QFont(
"Arial", 10)), text_color(
"#ffffff"), background_color(
"#000000"), is_open(false), gravity(
GRAVITY_CENTER)
34 : width(width), height(height), x_offset(x_offset), y_offset(y_offset), text(text), font(font), text_color(text_color), background_color(background_color), is_open(false), gravity(gravity)
42 text_background_color = color;
56 image = std::make_shared<QImage>(width, height, QImage::Format_RGBA8888_Premultiplied);
57 image->fill(QColor(background_color.c_str()));
60 if (!painter.begin(image.get())) {
65 if (!text_background_color.empty()) {
66 painter.setBackgroundMode(Qt::OpaqueMode);
67 painter.setBackground(QBrush(text_background_color.c_str()));
71 painter.setPen(QPen(text_color.c_str()));
74 painter.setFont(font);
81 align_flag = Qt::AlignLeft | Qt::AlignTop;
84 align_flag = Qt::AlignHCenter | Qt::AlignTop;
87 align_flag = Qt::AlignRight | Qt::AlignTop;
90 align_flag = Qt::AlignVCenter | Qt::AlignLeft;
93 align_flag = Qt::AlignCenter;
96 align_flag = Qt::AlignVCenter | Qt::AlignRight;
99 align_flag = Qt::AlignLeft | Qt::AlignBottom;
102 align_flag = Qt::AlignHCenter | Qt::AlignBottom;
105 align_flag = Qt::AlignRight | Qt::AlignBottom;
110 painter.drawText(x_offset, y_offset, width, height, align_flag, text.c_str());
168 auto image_frame = std::make_shared<Frame>(
169 requested_frame, image->size().width(), image->size().height(),
170 background_color, 0, 2);
173 image_frame->AddImage(image);
179 auto image_frame = std::make_shared<Frame>(1, 640, 480, background_color, 0, 2);
199 root[
"type"] =
"QtTextReader";
200 root[
"width"] = width;
201 root[
"height"] = height;
202 root[
"x_offset"] = x_offset;
203 root[
"y_offset"] = y_offset;
205 root[
"font"] = font.toString().toStdString();
206 root[
"text_color"] = text_color;
207 root[
"background_color"] = background_color;
208 root[
"text_background_color"] = text_background_color;
209 root[
"gravity"] = gravity;
225 catch (
const std::exception& e)
228 throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)");
239 if (!root[
"width"].isNull())
240 width = root[
"width"].asInt();
241 if (!root[
"height"].isNull())
242 height = root[
"height"].asInt();
243 if (!root[
"x_offset"].isNull())
244 x_offset = root[
"x_offset"].asInt();
245 if (!root[
"y_offset"].isNull())
246 y_offset = root[
"y_offset"].asInt();
247 if (!root[
"text"].isNull())
248 text = root[
"text"].asString();
249 if (!root[
"font"].isNull())
250 font.fromString(QString::fromStdString(root[
"font"].asString()));
251 if (!root[
"text_color"].isNull())
252 text_color = root[
"text_color"].asString();
253 if (!root[
"background_color"].isNull())
254 background_color = root[
"background_color"].asString();
255 if (!root[
"text_background_color"].isNull())
256 text_background_color = root[
"text_background_color"].asString();
257 if (!root[
"gravity"].isNull())
int num
Numerator for the fraction.
Align clip to the right of its parent (middle aligned)
Header file for QtTextReader class.
Align clip to the bottom right of its parent.
int width
The width of the video (in pixesl)
void SetTextBackgroundColor(std::string color)
float duration
Length of time (in seconds)
double ToDouble() const
Return this fraction as a double (i.e. 1/2 = 0.5)
std::shared_ptr< openshot::Frame > GetFrame(int64_t requested_frame) override
const Json::Value stringToJson(const std::string value)
Json::Value JsonValue() const override
Generate Json::Value for this object.
bool has_video
Determines if this file has a video stream.
std::string Json() const override
Generate JSON string of this object.
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.
Header file for CacheBase class.
Header file for all Exception classes.
bool has_audio
Determines if this file has an audio stream.
virtual Json::Value JsonValue() const =0
Generate Json::Value for this object.
Header file for Frame class.
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.
openshot::Fraction video_timebase
The video timebase determines how long each frame stays on the screen.
This class represents a fraction.
Align clip to the left of its parent (middle aligned)
void SetJsonValue(const Json::Value root) override
Load Json::Value into this object.
virtual void SetJsonValue(const Json::Value root)=0
Load Json::Value into this object.
openshot::ReaderInfo info
Information about the current media file.
Align clip to the center of its parent (middle aligned)
std::string vcodec
The name of the video codec used to encode / decode the video stream.
void Open() override
Open Reader - which is called by the constructor automatically.
This namespace is the default namespace for all code in the openshot library.
void Close() override
Close Reader.
Exception for invalid JSON.
openshot::Fraction display_ratio
The ratio of width to height of the video stream (i.e. 640x480 has a ratio of 4/3) ...
openshot::Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square) ...
QtTextReader()
Default constructor (blank text)
void SetJson(const std::string value) override
Load JSON string into this object.
Align clip to the top center of its parent.
int den
Denominator for the fraction.
openshot::Fraction fps
Frames per second, as a fraction (i.e. 24/1 = 24 fps)
GravityType
This enumeration determines how clips are aligned to their parent container.
std::string acodec
The name of the audio codec used to encode / decode the video stream.