21 #include <QTextDocument> 22 #include <QGuiApplication> 23 #include <QAbstractTextDocumentLayout> 36 : width(width), height(height), x_offset(x_offset), y_offset(y_offset), gravity(gravity), html(html), css(css), background_color(background_color), is_open(false)
50 image = std::make_shared<QImage>(width, height, QImage::Format_RGBA8888_Premultiplied);
51 image->fill(QColor(background_color.c_str()));
55 if (!painter.begin(image.get())) {
60 painter.setBackground(QBrush(background_color.c_str()));
63 QTextDocument text_document;
66 text_document.setUndoRedoEnabled(
false);
69 text_document.setTextWidth(width);
70 text_document.setDefaultStyleSheet(css.c_str());
71 text_document.setHtml(html.c_str());
73 int td_height = text_document.documentLayout()->documentSize().height();
76 painter.translate(x_offset, y_offset);
78 painter.translate(x_offset, (height - td_height) / 2 + y_offset);
80 painter.translate(x_offset, height - td_height + y_offset);
84 text_document.setDefaultTextOption(QTextOption(Qt::AlignLeft));
86 text_document.setDefaultTextOption(QTextOption(Qt::AlignHCenter));
88 text_document.setDefaultTextOption(QTextOption(Qt::AlignRight));
92 text_document.drawContents(&painter);
150 auto image_frame = std::make_shared<Frame>(
151 requested_frame, image->size().width(), image->size().height(),
152 background_color, 0, 2);
155 image_frame->AddImage(image);
161 auto image_frame = std::make_shared<Frame>(
162 1, 640, 480, background_color, 0, 2);
182 root[
"type"] =
"QtHtmlReader";
183 root[
"width"] = width;
184 root[
"height"] = height;
185 root[
"x_offset"] = x_offset;
186 root[
"y_offset"] = y_offset;
189 root[
"background_color"] = background_color;
190 root[
"gravity"] = gravity;
206 catch (
const std::exception& e)
209 throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)");
220 if (!root[
"width"].isNull())
221 width = root[
"width"].asInt();
222 if (!root[
"height"].isNull())
223 height = root[
"height"].asInt();
224 if (!root[
"x_offset"].isNull())
225 x_offset = root[
"x_offset"].asInt();
226 if (!root[
"y_offset"].isNull())
227 y_offset = root[
"y_offset"].asInt();
228 if (!root[
"html"].isNull())
229 html = root[
"html"].asString();
230 if (!root[
"css"].isNull())
231 css = root[
"css"].asString();
232 if (!root[
"background_color"].isNull())
233 background_color = root[
"background_color"].asString();
234 if (!root[
"gravity"].isNull())
int num
Numerator for the fraction.
Align clip to the right of its parent (middle aligned)
void SetJson(const std::string value) override
Load JSON string into this object.
Json::Value JsonValue() const override
Generate Json::Value for this object.
Align clip to the bottom right of its parent.
int width
The width of the video (in pixesl)
float duration
Length of time (in seconds)
double ToDouble() const
Return this fraction as a double (i.e. 1/2 = 0.5)
Header file for QtHtmlReader class.
const Json::Value stringToJson(const std::string value)
bool has_video
Determines if this file has a video stream.
std::string Json() const override
Generate JSON string of this object.
void Close() override
Close Reader.
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 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)
virtual void SetJsonValue(const Json::Value root)=0
Load Json::Value into this object.
openshot::ReaderInfo info
Information about the current media file.
QtHtmlReader()
Default constructor (blank text)
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.
This namespace is the default namespace for all code in the openshot library.
void SetJsonValue(const Json::Value root) override
Load Json::Value into this object.
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) ...
void Open() override
Open Reader - which is called by the constructor automatically.
openshot::Fraction pixel_ratio
The pixel ratio of the video stream as a fraction (i.e. some pixels are not square) ...
Align clip to the top center of its parent.
int den
Denominator for the fraction.
std::shared_ptr< openshot::Frame > GetFrame(int64_t requested_frame) override
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.