Export svg and png with white background on score media generation

This commit is contained in:
Dmitri Ovodok 2020-01-22 11:05:55 +02:00
parent d5f35e4e29
commit 7a63e7f0cd
2 changed files with 14 additions and 6 deletions

View file

@ -2618,7 +2618,7 @@ bool MuseScore::savePng(Score* score, const QString& name)
// return true on success // return true on success
//--------------------------------------------------------- //---------------------------------------------------------
bool MuseScore::savePng(Score* score, QIODevice* device, int pageNumber) bool MuseScore::savePng(Score* score, QIODevice* device, int pageNumber, bool drawPageBackground)
{ {
const bool screenshot = false; const bool screenshot = false;
const bool transparent = preferences.getBool(PREF_EXPORT_PNG_USETRANSPARENCY); const bool transparent = preferences.getBool(PREF_EXPORT_PNG_USETRANSPARENCY);
@ -2663,6 +2663,10 @@ bool MuseScore::savePng(Score* score, QIODevice* device, int pageNumber)
p.scale(mag_, mag_); p.scale(mag_, mag_);
if (localTrimMargin >= 0) if (localTrimMargin >= 0)
p.translate(-r.topLeft()); p.translate(-r.topLeft());
if (drawPageBackground)
p.fillRect(r, Qt::white);
QList< Element*> pel = page->elements(); QList< Element*> pel = page->elements();
qStableSort(pel.begin(), pel.end(), elementLessThan); qStableSort(pel.begin(), pel.end(), elementLessThan);
paintElements(p, pel); paintElements(p, pel);
@ -2844,7 +2848,7 @@ bool MuseScore::saveSvg(Score* score, const QString& saveName)
/// Save a single page /// Save a single page
//--------------------------------------------------------- //---------------------------------------------------------
bool MuseScore::saveSvg(Score* score, QIODevice* device, int pageNumber) bool MuseScore::saveSvg(Score* score, QIODevice* device, int pageNumber, bool drawPageBackground)
{ {
QString title(score->title()); QString title(score->title());
score->setPrinting(true); score->setPrinting(true);
@ -2878,6 +2882,10 @@ bool MuseScore::saveSvg(Score* score, QIODevice* device, int pageNumber)
MScore::pixelRatio = DPI / printer.logicalDpiX(); MScore::pixelRatio = DPI / printer.logicalDpiX();
if (trimMargin >= 0) if (trimMargin >= 0)
p.translate(-r.topLeft()); p.translate(-r.topLeft());
if (drawPageBackground)
p.fillRect(r, Qt::white);
// 1st pass: StaffLines // 1st pass: StaffLines
for (System* s : page->systems()) { for (System* s : page->systems()) {
for (int i = 0, n = s->staves()->size(); i < n; i++) { for (int i = 0, n = s->staves()->size(); i < n; i++) {
@ -3307,7 +3315,7 @@ bool MuseScore::exportAllMediaFiles(const QString& inFilePath, const QString& ou
QByteArray pngData; QByteArray pngData;
QBuffer pngDevice(&pngData); QBuffer pngDevice(&pngData);
pngDevice.open(QIODevice::ReadWrite); pngDevice.open(QIODevice::ReadWrite);
res &= mscore->savePng(score.get(), &pngDevice, i); res &= mscore->savePng(score.get(), &pngDevice, i, /* drawPageBackground */ true);
bool lastArrayValue = ((score->pages().size() - 1) == i); bool lastArrayValue = ((score->pages().size() - 1) == i);
jsonWriter.addValue(pngData.toBase64(), lastArrayValue); jsonWriter.addValue(pngData.toBase64(), lastArrayValue);
} }
@ -3319,7 +3327,7 @@ bool MuseScore::exportAllMediaFiles(const QString& inFilePath, const QString& ou
QByteArray svgData; QByteArray svgData;
QBuffer svgDevice(&svgData); QBuffer svgDevice(&svgData);
svgDevice.open(QIODevice::ReadWrite); svgDevice.open(QIODevice::ReadWrite);
res &= mscore->saveSvg(score.get(), &svgDevice, i); res &= mscore->saveSvg(score.get(), &svgDevice, i, /* drawPageBackground */ true);
bool lastArrayValue = ((score->pages().size() - 1) == i); bool lastArrayValue = ((score->pages().size() - 1) == i);
jsonWriter.addValue(svgData.toBase64(), lastArrayValue); jsonWriter.addValue(svgData.toBase64(), lastArrayValue);
} }

View file

@ -722,8 +722,8 @@ class MuseScore : public QMainWindow, public MuseScoreCore {
bool saveMp3(Score*, const QString& name); bool saveMp3(Score*, const QString& name);
bool saveMp3(Score*, QIODevice*, bool& wasCanceled); bool saveMp3(Score*, QIODevice*, bool& wasCanceled);
bool saveSvg(Score*, const QString& name); bool saveSvg(Score*, const QString& name);
bool saveSvg(Score*, QIODevice*, int pageNum = 0); bool saveSvg(Score*, QIODevice*, int pageNum = 0, bool drawPageBackground = false);
bool savePng(Score*, QIODevice*, int pageNum = 0); bool savePng(Score*, QIODevice*, int pageNum = 0, bool drawPageBackground = false);
bool savePng(Score*, const QString& name); bool savePng(Score*, const QString& name);
bool saveMidi(Score*, const QString& name); bool saveMidi(Score*, const QString& name);
bool saveMidi(Score*, QIODevice*); bool saveMidi(Score*, QIODevice*);