From 4b2bfef4fb49c146bb6957f9f919e4354f48a480 Mon Sep 17 00:00:00 2001 From: Marc Sabatella Date: Mon, 21 Jul 2014 17:00:49 -0600 Subject: [PATCH] fix #28041: image z-order --- libmscore/image.cpp | 6 +++++- mscore/file.cpp | 11 ++++++++--- vtest/gen | 2 +- vtest/gen.bat | 2 +- vtest/image-1-ref.png | Bin 0 -> 8832 bytes vtest/image-1.mscz | Bin 0 -> 5249 bytes 6 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 vtest/image-1-ref.png create mode 100644 vtest/image-1.mscz diff --git a/libmscore/image.cpp b/libmscore/image.cpp index e5c792b3c65cd..5eb06229f3615 100644 --- a/libmscore/image.cpp +++ b/libmscore/image.cpp @@ -41,8 +41,11 @@ Image::Image(Score* s) _lockAspectRatio = defaultLockAspectRatio; _autoScale = defaultAutoScale; _sizeIsSpatium = defaultSizeIsSpatium; - setZ(int(Element::Type::IMAGE) * 100); _linkIsValid = false; + // set default Z order high so image is drawn on top of everything else + // but not above MEASURE, or it won't be selectable while on staff + // use of transparent background allows image to coexist with staff and other elements + setZ(int(Element::Type::MEASURE) * 100 - 1); } Image::Image(const Image& img) @@ -64,6 +67,7 @@ Image::Image(const Image& img) rasterDoc = img.rasterDoc; else if (imageType == ImageType::SVG) svgDoc = img.svgDoc; + setZ(img.z()); } //--------------------------------------------------------- diff --git a/mscore/file.cpp b/mscore/file.cpp index ad0dc85d6e738..ad33aa912602f 100644 --- a/mscore/file.cpp +++ b/mscore/file.cpp @@ -117,7 +117,7 @@ extern MasterSynthesizer* synti; static void paintElements(QPainter& p, const QList& el) { - foreach(const Element* e, el) { + foreach (const Element* e, el) { if (!e->visible()) continue; QPointF pos(e->pagePos()); @@ -125,6 +125,7 @@ static void paintElements(QPainter& p, const QList& el) e->draw(&p); p.translate(-pos); } + } //--------------------------------------------------------- @@ -2087,7 +2088,9 @@ bool MuseScore::savePng(Score* score, const QString& name, bool screenshot, bool p.setRenderHint(QPainter::TextAntialiasing, true); p.scale(mag, mag); - paintElements(p, page->elements()); + QList pel = page->elements(); + qStableSort(pel.begin(), pel.end(), elementLessThan); + paintElements(p, pel); if (format == QImage::Format_Indexed8) { //convert to grayscale & respect alpha @@ -2264,7 +2267,9 @@ bool MuseScore::saveSvg(Score* score, const QString& saveName) p.scale(mag, mag); foreach (Page* page, score->pages()) { - paintElements(p, page->elements()); + QList pel = page->elements(); + qStableSort(pel.begin(), pel.end(), elementLessThan); + paintElements(p, pel); p.translate(QPointF(pf->width() * MScore::DPI, 0.0)); } diff --git a/vtest/gen b/vtest/gen index 08f5be889f80c..cb10661796a41 100755 --- a/vtest/gen +++ b/vtest/gen @@ -35,7 +35,7 @@ else accidental-1 accidental-2 accidental-3 accidental-4\ accidental-5 accidental-6 accidental-7 accidental-8\ tie-1 grace-1 grace-2 grace-3 harmony-1 harmony-2 harmony-3 beams-1 beams-2\ - user-offset-1 user-offset-2 chord-space-1 tablature-1" + user-offset-1 user-offset-2 chord-space-1 tablature-1 image-1" fi DPI=130 diff --git a/vtest/gen.bat b/vtest/gen.bat index 52fc259415b60..fbd59b5040caf 100644 --- a/vtest/gen.bat +++ b/vtest/gen.bat @@ -14,7 +14,7 @@ set SRC=mmrest-1,bravura-mmrest,mmrest-2,mmrest-4,mmrest-5,mmrest-6,mmrest-7,mmr accidental-1,accidental-2,accidental-3,accidental-4, ^ accidental-5,accidental-6,accidental-7,accidental-8, ^ tie-1,grace-1,grace-2,grace-3,harmony-1,harmony-2,harmony-3,beams-1,beams-2, ^ - user-offset-1,user-offset-2,chord-space-1,tablature-1 + user-offset-1,user-offset-2,chord-space-1,tablature-1,image-1 set MSCORE=..\win32install\bin\mscore.exe set DPI=130 diff --git a/vtest/image-1-ref.png b/vtest/image-1-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..7871e323c0413b4ceea9f555703e0dac490d6549 GIT binary patch literal 8832 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 Qj+6ihRb6=1BkNcH4=Qw}&Hw-a literal 0 HcmV?d00001 diff --git a/vtest/image-1.mscz b/vtest/image-1.mscz new file mode 100644 index 0000000000000000000000000000000000000000..0692663c8efd7a123a91a1460664d3a876eedca1 GIT binary patch literal 5249 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