#include "overlay.h" #include "logger.h" #include #include #include #include #include #include #include #include #include #include #include #include Overlay::Overlay(const std::string overlayInput): overlayInput(overlayInput) { parseInput(); } Overlay::~Overlay() {} void Overlay::parseInput() { QString str = QString(overlayInput.c_str()); QStringList corners = str.split(QLatin1Char(';')); if (corners.size() > 0) { QStringList components = getOverlayComponents(corners[0]); topLeftTemplate = getTemplate(components); topLeftMargin = getMargin(components); topLeftFontsize = getFontsize(components); } if (corners.size() > 1) { QStringList components = getOverlayComponents(corners[1]); topRightTemplate = getTemplate(components); topRightMargin = getMargin(components); topRightFontsize = getFontsize(components); } if (corners.size() > 2) { QStringList components = getOverlayComponents(corners[2]); bottomLeftTemplate = getTemplate(components); bottomLeftMargin = getMargin(components); bottomLeftFontsize = getFontsize(components); } if (corners.size() > 3) { QStringList components = getOverlayComponents(corners[3]); bottomRightTemplate = getTemplate(components); bottomRightMargin = getMargin(components); bottomRightFontsize = getFontsize(components); } } QString Overlay::getTemplate(QStringList components){ if (components.size()>3) { Log("template: ", components[3].toStdString()); return components[3]; } return ""; } int Overlay::getMargin(QStringList components){ if (components.size()>1) { Log("margin: ", components[1].toStdString()); int num = components[1].toInt(); if (num > 0) { return num; } } return 20; } int Overlay::getFontsize(QStringList components){ if (components.size()>2) { Log("fontsize: ", components[2].toStdString()); int num = components[2].toInt(); if (num > 0) { return num; } } return 12; } QStringList Overlay::getOverlayComponents(QString corner) { QRegExp regex("([\\d]*)\\|([\\d]*)\\|(.*)"); if (regex.exactMatch(corner)){ return regex.capturedTexts(); } QStringList malformed; malformed << "" << "" << "" << corner; return malformed; } std::string Overlay::getRenderedTopLeft(std::string filename) { return renderString(topLeftTemplate, filename); } std::string Overlay::getRenderedTopRight(std::string filename) { return renderString(topRightTemplate, filename); } std::string Overlay::getRenderedBottomLeft(std::string filename) { return renderString(bottomLeftTemplate, filename); } std::string Overlay::getRenderedBottomRight(std::string filename) { return renderString(bottomRightTemplate, filename); } int Overlay::getMarginTopLeft() {return topLeftMargin;} int Overlay::getFontsizeTopLeft() {return topLeftFontsize;} int Overlay::getMarginTopRight() {return topRightMargin;} int Overlay::getFontsizeTopRight() {return topRightFontsize;} int Overlay::getMarginBottomLeft() {return bottomLeftMargin;} int Overlay::getFontsizeBottomLeft() {return bottomLeftFontsize;} int Overlay::getMarginBottomRight() {return bottomRightMargin;} int Overlay::getFontsizeBottomRight() {return bottomRightFontsize;} std::string Overlay::renderString(QString overlayTemplate, std::string filename) { QString result = overlayTemplate; result.replace("", QLocale::system().toString(QDateTime::currentDateTime())); result.replace("", QLocale::system().toString(QDate::currentDate())); result.replace("