From 8a3efe69acad6e29bbcb408796be9d0aa08d56a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Bitteur?= Date: Wed, 13 Nov 2024 12:14:23 +0100 Subject: [PATCH] Support for Metronome marks - New shapes to support beat units - Handling of logical/physical shapes in the samples repository - Addition of Leland as a music font - Better update following the selection of music or text family --- .gitignore | 1 + app/build.gradle | 2 +- app/config/user-actions.xml | 1 + .../nb-configuration.xml | 11 +- app/res/Leland.otf | Bin 0 -> 88132 bytes app/res/basic-classifier.zip | Bin 336292 -> 367445 bytes .../org/audiveris/omr/classifier/Sample.java | 39 +- .../omr/classifier/SampleRepository.java | 27 +- .../audiveris/omr/classifier/SampleSheet.java | 27 +- .../omr/classifier/ui/SampleBrowser.java | 37 +- .../omr/classifier/ui/SampleListing.java | 32 +- .../omr/classifier/ui/TrainingPanel.java | 24 +- .../java/org/audiveris/omr/glyph/Shape.java | 129 +- .../org/audiveris/omr/glyph/ShapeSet.java | 181 +- .../omr/glyph/ui/EvaluationBoard.java | 55 +- .../java/org/audiveris/omr/math/GeoUtil.java | 22 + .../omr/moments/GeometricMoments.java | 32 +- .../org/audiveris/omr/score/MusicXML.java | 4 +- .../audiveris/omr/score/PartwiseBuilder.java | 229 +-- .../java/org/audiveris/omr/score/Score.java | 44 +- .../org/audiveris/omr/score/StaffConfig.java | 7 +- .../java/org/audiveris/omr/score/Tempo.java | 116 -- .../java/org/audiveris/omr/sheet/Book.java | 11 +- .../org/audiveris/omr/sheet/PageCleaner.java | 7 + .../audiveris/omr/sheet/clef/ClefBuilder.java | 2 +- .../omr/sheet/curve/CircleModel.java | 6 +- .../audiveris/omr/sheet/curve/SlurInfo.java | 2 +- .../omr/sheet/rhythm/MeasureStack.java | 72 +- .../omr/sheet/symbol/InterFactory.java | 32 +- .../audiveris/omr/sheet/symbol/LinksStep.java | 29 +- .../omr/sheet/symbol/SymbolsFilter.java | 42 +- .../omr/sheet/symbol/SymbolsLinker.java | 167 +- .../omr/sheet/symbol/SymbolsStep.java | 2 +- .../audiveris/omr/sheet/ui/BookActions.java | 11 +- .../audiveris/omr/sheet/ui/SheetPainter.java | 74 +- .../java/org/audiveris/omr/sig/SigValue.java | 8 +- .../omr/sig/inter/AbstractInter.java | 17 +- .../omr/sig/inter/AbstractInterVisitor.java | 11 + .../omr/sig/inter/BeatUnitInter.java | 325 ++++ .../omr/sig/inter/ChordNameInter.java | 58 +- .../audiveris/omr/sig/inter/ClefInter.java | 16 +- .../omr/sig/inter/CompoundNoteInter.java | 7 +- .../audiveris/omr/sig/inter/FermataInter.java | 6 +- .../org/audiveris/omr/sig/inter/Inter.java | 6 +- .../audiveris/omr/sig/inter/InterVisitor.java | 4 + .../omr/sig/inter/LyricItemInter.java | 6 +- .../omr/sig/inter/LyricLineInter.java | 2 +- .../omr/sig/inter/MetronomeInter.java | 1491 +++++++++++++++++ .../omr/sig/inter/MusicWordInter.java | 376 +++++ .../audiveris/omr/sig/inter/RestInter.java | 5 +- .../omr/sig/inter/SentenceInter.java | 206 ++- .../audiveris/omr/sig/inter/TempoInter.java | 192 --- .../audiveris/omr/sig/inter/TupletInter.java | 2 +- .../audiveris/omr/sig/inter/WordInter.java | 113 +- .../sig/relation/ChordSentenceRelation.java | 34 +- .../audiveris/omr/sig/relation/Relations.java | 6 +- .../org/audiveris/omr/sig/ui/EditingTask.java | 6 +- .../org/audiveris/omr/sig/ui/InterBoard.java | 339 +++- .../audiveris/omr/sig/ui/InterController.java | 191 ++- .../org/audiveris/omr/sig/ui/InterDnd.java | 7 +- .../org/audiveris/omr/sig/ui/RemovalTask.java | 6 +- .../org/audiveris/omr/sig/ui/ShapeBoard.java | 15 +- .../audiveris/omr/sig/ui/WordValueTask.java | 2 +- .../sig/ui/resources/InterBoard.properties | 12 +- .../sig/ui/resources/InterBoard_fr.properties | 10 +- .../java/org/audiveris/omr/text/FontInfo.java | 21 +- .../main/java/org/audiveris/omr/text/OCR.java | 2 +- .../java/org/audiveris/omr/text/OcrUtil.java | 13 +- .../org/audiveris/omr/text/SheetScanner.java | 2 +- .../org/audiveris/omr/text/TextBuilder.java | 162 +- .../java/org/audiveris/omr/text/TextLine.java | 39 +- .../java/org/audiveris/omr/text/TextRole.java | 81 +- .../java/org/audiveris/omr/text/TextWord.java | 143 +- .../org/audiveris/omr/text/TextsStep.java | 6 +- .../org/audiveris/omr/text/doc-files/font.png | Bin 0 -> 104231 bytes .../org/audiveris/omr/text/doc-files/font.uxf | 187 +++ .../omr/text/tesseract/TesseractOCR.java | 22 +- .../omr/text/tesseract/TesseractOrder.java | 10 - .../main/java/org/audiveris/omr/ui/Board.java | 15 +- .../java/org/audiveris/omr/ui/Colors.java | 5 +- .../org/audiveris/omr/ui/EntityBoard.java | 6 +- .../org/audiveris/omr/ui/field/LTextPane.java | 97 ++ .../org/audiveris/omr/ui/field/MusicPane.java | 224 +++ .../omr/ui/symbol/BravuraSymbols.java | 19 +- .../omr/ui/symbol/FinaleJazzSymbols.java | 18 +- .../audiveris/omr/ui/symbol/KeySymbol.java | 6 +- .../omr/ui/symbol/LelandSymbols.java | 243 +++ .../omr/ui/symbol/MetronomeSymbol.java | 242 +++ .../audiveris/omr/ui/symbol/MusicFamily.java | 7 + .../audiveris/omr/ui/symbol/MusicFont.java | 58 +- .../omr/ui/symbol/MusicalSymbols.java | 2 +- .../org/audiveris/omr/ui/symbol/OmrFont.java | 106 +- .../audiveris/omr/ui/symbol/ShapeSymbol.java | 37 +- .../audiveris/omr/ui/symbol/SymbolRipper.java | 66 +- .../org/audiveris/omr/ui/symbol/Symbols.java | 68 +- .../audiveris/omr/ui/symbol/TextFamily.java | 6 +- .../org/audiveris/omr/ui/symbol/TextFont.java | 99 +- .../audiveris/omr/ui/symbol/TextSymbol.java | 20 +- .../java/org/audiveris/omr/util/Jaxb.java | 10 +- .../org/audiveris/omr/util/RegexUtil.java | 15 +- .../org/audiveris/omr/util/StringUtil.java | 33 + .../omr/sig/inter/MetronomeInterTest.java | 184 ++ .../omr/ui/symbol/MusicFontTest.java | 8 +- gradle.properties | 4 - 104 files changed, 5419 insertions(+), 1823 deletions(-) rename nb-configuration.xml => app/nb-configuration.xml (95%) create mode 100644 app/res/Leland.otf delete mode 100644 app/src/main/java/org/audiveris/omr/score/Tempo.java create mode 100644 app/src/main/java/org/audiveris/omr/sig/inter/BeatUnitInter.java create mode 100644 app/src/main/java/org/audiveris/omr/sig/inter/MetronomeInter.java create mode 100644 app/src/main/java/org/audiveris/omr/sig/inter/MusicWordInter.java delete mode 100644 app/src/main/java/org/audiveris/omr/sig/inter/TempoInter.java create mode 100644 app/src/main/java/org/audiveris/omr/text/doc-files/font.png create mode 100644 app/src/main/java/org/audiveris/omr/text/doc-files/font.uxf create mode 100644 app/src/main/java/org/audiveris/omr/ui/field/LTextPane.java create mode 100644 app/src/main/java/org/audiveris/omr/ui/field/MusicPane.java create mode 100644 app/src/main/java/org/audiveris/omr/ui/symbol/LelandSymbols.java create mode 100644 app/src/main/java/org/audiveris/omr/ui/symbol/MetronomeSymbol.java create mode 100644 app/src/test/java/org/audiveris/omr/sig/inter/MetronomeInterTest.java diff --git a/.gitignore b/.gitignore index 5572e2b4e..3ce52d245 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ nbproject *.mf *.orig build/* +app/bin/* dist/* config/run.properties data/args diff --git a/app/build.gradle b/app/build.gradle index 8807f0b6f..f937c8daa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -173,7 +173,7 @@ dependencies { [group: 'javax.media', name: 'jai-core', version: '1.1.3'], [group: 'net.imagej', name: 'ij', version: '1.53j'], [group: 'org.apache.pdfbox', name: 'pdfbox', version: '2.0.27'], - [group: 'org.audiveris', name: 'proxymusic', version: '4.0.2'], + [group: 'org.audiveris', name: 'proxymusic', version: '4.0.3'], [group: 'org.jgrapht', name: 'jgrapht-core', version: '1.5.1'], [group: 'org.jfree', name: 'jfreechart', version: '1.5.3'], [group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13.2'], diff --git a/app/config/user-actions.xml b/app/config/user-actions.xml index aeeb14103..4b28a3265 100644 --- a/app/config/user-actions.xml +++ b/app/config/user-actions.xml @@ -1,5 +1,6 @@ + diff --git a/nb-configuration.xml b/app/nb-configuration.xml similarity index 95% rename from nb-configuration.xml rename to app/nb-configuration.xml index 438df1430..031ad74f0 100644 --- a/nb-configuration.xml +++ b/app/nb-configuration.xml @@ -1,13 +1,12 @@ - - arg arpeggiato Audiveris barline diff --git a/app/res/Leland.otf b/app/res/Leland.otf new file mode 100644 index 0000000000000000000000000000000000000000..2ea8b433c27f1dcf937f97c25cdd2587cf002160 GIT binary patch literal 88132 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 z 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 literal 0 HcmV?d00001 diff --git a/app/res/basic-classifier.zip b/app/res/basic-classifier.zip index 521b6bc7b01f01525be4c7c8424542196aa6a829..a6f35780ebe03a66f4a9ade05e965d32652658f0 100644 GIT binary patch literal 367445 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 z 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 }J7$O-_cKk{ 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�A#rnaduR1ZtZhmh zuVk-kgR1QE_x8}KLH6oe*PmNhvk3HwW%BTRCS^g1?bMGJsgu(-H5<=UX@>G7&9 zOA^lNn*ynVZ?lQ`KJ1H#R*`mo7wEI8Zh2Yxt1;OkB8_cKXR0hIZ3VP4CQ(h#$_6uk zyDh+dK#EV<+N3dbz?)<<6-`I8l$+QyaGjIb5K%+dCUGLFFDipK+T3}~`hjRa`N&!| zA@^xf&dkQWtTjYGXn7fEegETaqc`rYZ9?G*vt6qJeRIcx?0bUO<{N#!E3E+l`jJxC zJwRcIYZcR=@pZv)f!wSKmE{1zK{#;@@?z`wn^cG81LP*M0iJIFBnl8fsv>Tuq+mN_ZWY*^f4^GDWh{@w3%>n+juR&X+puZ4>m-_671Y zYLcdm%pP*s;fMhYeHGfZykuUE%k`r0AdHeR|77_wl<3>H;+|;wEmpMAAh#iYf88E@ z7COS(6H#sCUx{xiRLJp)`9f5thbcR?5rc8UN-;cHP_VD>T(2YCaWh6Lg$z^0r;yAM zX)mDJS@sxweAJWQz0p=s5FXLkNd#5@9~>#F8Fr2@ z2}oaKKOjaMJ0hMe#`w?jK2QO0ii#|xoXz{5-ayxyEZ<^pqNI76FN$j`f7*I*^reXD zK%vmI*Tu1X!;NU+Py5j$J8ofN_kq!S z%87cFZ+^Eh2PP$Rc*oKDV z6~&{X<`z1g8mO&z%D7Z+nnIfIe5K!_pzn7MQAgV*ELot5Oz0urfX&YPIfY8HZSj;o z1a2}|UAOG4OH}Bsr=nx~o!C`xX|Qi`mm!=x(y-TjF!4Xo+Ar!lx8JM{v96}1lmgS? zh;y*dQUyMW$Yy;5m5kO`_ibekasnUOz{`-pl hg86@fGzt0tg?42*PsieA-R8pzx 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�?Bx3mIPxsN;$-) zdXn#m0j@{{ySp*}sDF3T0-Bnu81tPVH2T;ZH{4R&rehRXmpb7Vv7P0cKNI(H2a-bC z-wMk;X*Ud=H*rAwx=4!WAp-7Sd-}?m!QP9{y}dPELn9%F2VKk1uw7Yh<};5u5lN+3 zsiKe|hKk<%AT$Isv)G7C> z{G4;+LF2~8ub1f&2f7leHR&o9&(J)!=C4O}1JBE6E%1WTHaOp!q-Z*}ITvnTvi6x> zVl_nCU2`;4TGLL5J+}hGdx6P%r4|^DOMtR>ueD(Ruf`h2!fLSIqwA4Oo=c#(RYGeg z?D*#@4cF-^a^ehB4miUn*^J#B=JK8s28rt~9P=2E9DinQPs~d70Y4psw}iZ{=5|I1 z&Dk;+>C#(LFs#Rzp1HJ+1!y7@d1xOz_s4(BxW=Yq1_Lz!;MEF=?F@uM$+7g|CEJX2 z9kRsdC{*Krxa+sc$c=4VR<*db)R+9;XS$8{nKSA>B+zDA1aC zc{d3lsomtzchy*6Rw7~NyPVUp%E9ahvEa|liYoH+)Kn&j*`?S{yp6;BzS&4oLu$7= zrN*V(4$61yZhwMz-PYXtCJ;S)lbG6`Ak^r;Yxk1hL5Cq+L-0NLFF>Xin%O0MvKs2K;CsrEj1NS5Nz!hcNSa74Tj1)J-Rd zVL3PN;K`&pF(N;wOUh(LhSIuA!O;hb%- zP89*2CGm%GozQv(QPsgk*h>be+TM4FLQ>H^JDhlGvYv@YxB4LNOoM0XpSUe&r4W`(L#t$ z@=PA?I*fi!?+YT-H2HUZnQx$4HqaHKv?|hVaI7b#R;;|Et>;+SUNXnXvr<1ev3RdF z@cjFKAF|{Kna^Pr*LZ;#wZF{g`h1yvXSV@^gjyQ}EZAb@R!*tYVA~mZl|tOp=FW38CK1d-w=GrURz`_zO#dPES01M`TvzLbklCaz@E;j4^7Q$&4O)gyA*p5e~2MOMi; z-%Rru$r?mvp{H+xLXNf&cj-PQ#x7H4UXb+*mZ|7^KH@dX&`ed^OArRo@ zZc%*9+ww+tTOZr-S4q&8qbC+9hb3!mHthwK-Dm(#Zj7{KM|hJpIR2N zbsE;%t%8j0^FH3z%v*PahxrEi_ypfw33qdGp282$k112Hos+kXT2Gp4{XAt_x$Vw? zXF8p8n!F>VHXz~-WX4AbLjU}6_8=E+hZX(J*4%ZmD-@&&!?bV_EwtYPiiONth-$f@ za%iu-=$;==^L{O+YXPjkD+ZBNJ7K&$CR?f1;`X6Q7EN;d8yiUB4k_=p9hncV?&deB zp}C*@nW867mdI|!KX>PQ{$v$g(`4R3Nl}Z}ufeuylf`#vG4~3DT`B%<2`s0rSH12I z>qb&pwQjv(0m$yJExGD!VZ-j&vtT(zAGgWxPLTn-C9|&*x+IR+!-ObPuL0>L(C&(z zqcnwS(Khe#Now^T%}}RGII<%mBwxx_)yl^B0YAfW+cuX*1$f4L6{|D zR0!~DF6uA>q)vOK3731+e6l@O0`#*+9b>q``X4xXdu?wF0bZ`4dph*9_;UYzR($BH zBT=GV3gj%+kVwHgTKxKX>7}XTIcnQ^6f%Lf`vRvtI}8@d5D|Uhr(G+n%Nznb!sxju z@%{v~d?gRt-W>6um7E?pq||$g*sI>-rWM|WV@;Gq`%dku(0E)Sdol1ugtCMafSh?W z*XBpjMT&f~r7t6w$lay@k|}Jy-znRs;5W?9e6Pz>RVeeU&HKeMZ0cP%;UY7hIA_nY zGf5;HNO;6`M1XbnKR^B9onKI9_cl7`p@=zBa=HZNA3M_PtFaGu`<`%{G;%E~4)D{* z-Ku`6jwTIf=ehlpGo;Q;baoBm4)Now3eLUD9pO)wjBu7Hz3PTVR^aL>o+i9LCT2WL zp?sce$u`S(v1AKpUNRTw-AuVL0Kq%#Q$f5>x1$A6`apk>q}Qbgg0k$Vsrj$A_yZoj z+0P#}e>Wm3qmFfcLUyM53?CN}<0dl~R-z`+0g{m~KPGBDX7l{WNsl!@{#yHd<=P!I znNx1A<#5d`_#<7-7hs`Yf7y$ycX4%U{QGDbzL|93I0B5QQIOLL_ye3d^90v7`+~Yf z?M1CDyzoDPURZdTe!}c_!Kk^)d{cB8H``>J5v<~HH=^jsit7`A)h2mc%iaMtDUyZE zY5C^ytbRl{;*sqQ3=H37|7Q6!0jBc-wu*EM$VzCajZrO!c9MqcQ^_1{ z(5R{o>Soo--Ae~+8g*><*W7NkF3}`o&%bELZw0p}dpm8T1xXDcohJ1<5>3rDc>an6 zJ7Wol?wEVM28@vc&s}If(Fv0CfjL_JgGnoiX>$rAe&4^6tkpPZSZfZRr7wC8T(J4^yc1pZchUr&m|nYrsF|hkvvv9V_YCxR zdd_I)pg7>OO%mZJZi6G09`B15CMT3sDqZ=2`VZ z`0g8A#$gjzVxj*ec74TILs2}+P|sTDG5Y~L1C%K6yhMjf#w7W7Db$7>e%X{mB^uX4P zFI~1&WdOvtGc%^Rq_x@58j5Biy}8VCVmm`_^Htd&H zFJ#k5f`1=6{2oayALrscg( zxR(ul_|8);cpDFi>79mprtXE8W%+M&N1;1&*OG*-b~?R=j=O#SRaUwhnJaNgcH4os z++7$a%W>)kPxOysAaoubx7l<1V<}REJ>8fIJ&jnorXIjvsz~=EKip}5BnqQF!Y;}r zp<=pLH_yX@Gfi9QZY7V+EqFZkta7+b((3QYUTX<9|DV!!=4qQ}TRn_1^!6khc9}h> zhe!F-j!YA_?M9+lYfQ$%7eo*=_v*pCRM$+Ft$t6q_PPSQ5=#U%|2$WXvN>29RBrDY zD|Y!faG39eyHU$m;Ffsdjm$5*kp3z!Ny@;h@LJa=H+$nb@6RKCyY>`0QH_T8z+&rw zU?+~_-n%vb?N=b8nkO6o;^_WmH35p&fh@9D2*SL^^Wkq_mUv74jD}Udr40G$H*4w; zX#noYGtb&lhEiD#%r}m@ye)a=x|V8cW3^z&gIz^8&ztuNRR*P_ULYu~hq`tyPJyVk z$^gY9quP>h+esN(CjcE0mdD@A{A|bk^c2cRUyloEd`MTss-6`!Fs%R{g|>6r_2Q}cLKT84xsdRGBm=Bk zk4Lv@2lHdaAJ5G?f8Ew&L*TqTj|3xEp?-RdI2k25AQT=o`f&+y=+ai8Kz9A_XWXG-PJcIGr$4m&QbM98GrG|-c&YiESLy4LO|ICeTINGD7zVs#9F8x zHkan^%&gRC?Hb?jU9V0*L$* z_cSV?((gQ&J9Gw9q9yqb?W}PS&cn+;-&87pk{cpgHtx`~%S9v)Sy#V;*^drg+(myW z-?pzZ?0N=*2JyE4+)1_Rp;0FYZKAaaMAP^>Bi@>bR{v-AkX@&i8h+ zo;>p%0tM9)i{ta6B{}Zi$)kgx8xY0K)85vhK643qtk1{OhyQ{)SBZ>}>~H;7uenne zCW`$;M5=S9i-j7(UPy86OrT60Mg+4r$sg?;V%L*;d{{cQFo}(QnifjD=hI%LEI1!;`Nbt))wbZ~qV(qJ zJW4i5P8WF;NP2id1r@Fu!;jhoB|ZS~KPKPOm-aKCS~V4&F1z>v1R7T~$K0Om%|Hfc z`|JJ$C+c>2)6+j)-(mtv>1k`Q_vD0S36{~aLMBZQb9=UvOat_k!=VcK7^7H%?>hqM z@}Y?5x^f|tL)2eZed2h-xjLE^C_~GQzfN&{mCeE-p*-aj-y z+(%RIenyl|Gl(_Dj)afkYKFIImGZKx7w?+0s+*%Pu;yVksK?SF&tU~Mx$ok@<$Bs8 zdOr1;l zfH`%m7$=P*dhaog%W2Q)PCNc+6Esx<36%|%_htizTf0crDxY)qEq2Z1cIT%q_A2BA#@xT0?XZrO_h`!y}5X(wwRP5qqa-ERMH7 zfgC$CUU>v+{c;j5nsjneV1Uj@Uua?igCg~*a{c@G$1*_-(p(q`T2y>|67c#+DrWqq zvO=}}ZOkz5FUYRz`GWGE*YlvUB(=`$cDRV zWX)#b;w9Ofp2m)|_dL)2#mNf2?ZOb4=BWco&r6o@pYMYct#}62(^eTQ$frr*{FU>K z{!r*7P+4Mjg%vJYo9R4roz-e_KU1#!4@rpckDx;-42{?@izTUH}y z+Zsn7z<)j0-Z#(}NQSLVytgdrUvN7@nJPuGL7E1@0TRSy``XWc;!133yZMcG&x{?! zSn+kf7xZTw>;Mu9yyt<@9zU2RY2SMVEh++Agl@r?;?>>8h)Ncy%Tnpa`XDD$w`t*pm2 zkt>gYOQ?s6xZd5{XXfWlx>5x0xsREy05Zxy$?+}$DCuiuSI$$-wE0B)H2-=P-_m-D zt}r4hvsM!>Tc$1Xc5}_tH)}oZL->7?P}Y5Zmpz7d-F08P6EOH!1>$ErEBTVU7VT*} z)`Y$Gxx|yqyy^d+ZsT~6(ox*3^PaBvH&A|;)Rtj9^b7D=<)Pp*9RGP7|L>HQC+Q8j zu*rJKKg;z$eKD8zbU%9!4xz4|dkihlGu?$)M4ZI2vUUo2#fKg>7xomoMIGRf0oV#A z4ym}zQ=B|@vX@_zIKGs9JCP}Wa1YN`FZHTPy;Si03MxwXclz1tfQOJvg5Ep;kq6cX-F9p> z#TK+#Jx-2Ut1|N8t;m|c1+?Po35UAq+cL4ggxnk1{NgXtlFSvh7#2#ttKSyB!|q}v zL+@ClGk=P&Yl|Pcjf?EX_w3w%05U905-65Ab+=xdPk9*}n58`kVVdtwlg4D%JC~?a zEQCdR*FQE75#7G$cPX6pi~#M74U1I^f1kv~&SRV;Mi^G4*5GV4Ji0`B{Q#ch&*SmV z`)Zw3D^7QiEQ~!=wDwez{HWyDV6SRjiZ25LLI>Bixolj|$MshwR;tv_HN?tG!`4Q2 z8Fjt>S^n#~;+m>ur$*ZI-c)%I2ilY1ko|386FDv4`JN<730b?UoCGR+>PdTH zf-h4?PHDY#xa`V+cISkluxd`U`FZd@?`*x>ROwILLqd7>B)OE_*GxX{9c5+ZsOyKl zRG!=maYs}ou-)f%#*2}(kyd{LF#u3ZHOPrvN5q=)Gu5{w;hO$w3jSiBQVw>z8mcS@ zq8j38V&IdT=_N`dYwimKegRu_#DJ$5^YWT{r5?$u3tm{wL^EKc37!`fAEP#-7jjAl z2s>X`?QPkK9tPCatHJVSi%Y%+Av=3T) zGlA}j5iKnb1L0xs0u+&MmT0D}6^*=TBIg%`tbHTVYzLv01!U4fx?5#y&&95D@c(t9 z{tI5hEj5MZ+d|By1cYCD`BGfv?XY~1;Y|X}y?Twxp0!?i6_&lP2Q;|LM@s`~ta~z3 z%#%(;HCx+Qh{oHp3RL{9s+~(!H-FY3wvS>#_?{dgWb~D<_e9o%2P*Eq&O0Fsy?LU- ziorUg!X+Q;RBq-e-7saw0sEtGs)rHlC?6*~e>sd4AS8ZMNx7Qu?hTW0=Z`#49ecIZ zX@bQ(KH`7hS_dBdQ6`jo7{u*r20@??C;#62I9yh%cxjb(-yYd5r7AYwt*ZIUR02u! zP7+8}19FU!+P#6M{80Da9x^VMr+RdR%*~rl5X}YGHOkwk5|{Cm;FoSA#}$5;@Ppol zBp^=pbZn$+Ytw$EjAE?WBWSE0;`~PkIf)Ryv&_?S7=`t-&_onoStQ#$K|Gn@CUx!~ z^7Fw^JpTtvdE@i&PE9FNRs_l0JPr^ZFVt5&{r?4G{cnBWGF(0l2Zl<0b-5lMzBu6R zY6X$)%|X1A%G8N4?#q(EgEgt5^=^8_@hs*s$Nodoc5wW1pWP{R+n1y5xvo$eDN=f> z2RZ>N>SLc-C#;ZTVz3xgZ5QfD?hrLAbM#HPb$c^?2d`zb%DUIXS%%@lUZ zYm{7(X!F3G(LuW#n;vu8v-w!Ha8%26xo)|7C7$wHr?;wFOEuF1hCHW_S!VleouVKx zx4hYQ7mM4m+v6j?%W^%f^whwdZa430)$l8oFHQM_dfz>mc!@N^ugj-=wmdI{970;w zwqZS|VsSpv*-lYc#V^xxZ>nnEqNjTObNiY;p~f!dR$u1Rmb5V1bb0SQi==o5p++}D z;%yw14Tq^wopzZ&95QvifO~JZuaHXwg6}=FSROR8S*WrlF6B#AS?uDx#B1%z@h8r3 zNEd|5s^*^q-e`ws*66gV1H4ZuI~)!zP7I)g5u7Pbct$<^Tm)pg$J1>}GYuBIC zt&Whd2yT{)bh~EuV?uGA%{$SFN_t*H6kn9}N_!{;lktuMH61mDGqphA;vA0so8PcB z=eLCJ*lRNg&SM-ppYL88xD~&GnIL5f=W51Dad@)( zdKtRD-E8FAV!?dd%76Y-yLau4^yQA_3=R-tQn*o%iiE|PKTDL*>76@1`tp&eh%4$# zKR-DX*nDZ0TYdkv>(A!3@+A}^gB8;@XPO}GLu`C&w@u-|*7gj5tB_Qd#BLg`jBmT~ zK;Ep-UM%jXvjBv!?bA9M5w9f%H=}Dijj8{ReLBoGZAQCT6Fr5=Sg$p*5+k_ln_d67 zVdkv2WH7ugPdQe%6psB!A6Ng>B6G)NVM}U2UyrZSpvXSdmh~c2mzb~?|IcdJWY*$E?H;{dpd~eRT+8+H zo7!ofZ*L5;Umq2@-`N$;*cZ#|BHMY&#lx_6&bWTKndre~z3RpCTFw1=8P+|yk2+p; zJ!09Lv*F&06T~mN#i#H|9)H-_Op+{ZFA-~97|^fbM(jkHpQ>&Oq7!P6A_bxrblln7I;XL~5#9>828 z^p4UYW;hA*Zv{z>)A1D4sc6$g-A4)TbzHvYB#UYI@q9>MZT_Tn&tPz!-1#$c3 zJXmL5x~Ta_tN4dQX}!K+_Bp~jqu*9@O6^PBOl9!w9LR>;i)CdMI&o0p!lHEDJosTHp9gEq+Pqh5P#ll#F)UdI4%Jl(*z%tK-(84i?I zqwZs5=OR{`FZA$Vsu4{-k^EH=`#5Qfs4>^*UMt)iS)WUX`}~Jg@cFoel;vB?xjolp zQ`t}5W$qi0G#G1|8ZYmUuIog>yp$3Rc_Y#WT=}^I%j;HQ#J{Ou4Td$+RUEzBIcZ4d zsiQ)#8%Ka>eLm{S-Ej{jF9CFJp&{1R95Q>4<6$MZufU@Xn0DhYQ~}mp`P+E-p`4pP zTovyx@t4UYNnX7v=Eqr=54A&O-+CLW7Fr=aWJz*!#$I@0o?0Pcoi8Cwk3vy&&{OZ> zFga4;zP|lx6xaiZJ19@(y7f$I^%s@1g>#E9i&{5sKfU?dZ(=5+C7a|-V#~K+f#s3( zSI+fR%Tn>tbHd-|fOiY&7EYA|{sW`6*G5R&_5w+mwB7T6(k>qPjgN}c&sGHx{6R|e zxT2SWwoJ=6?>xzno@D7mqbXi2&!BIu3d^G2sxXKmD4?@M`DJToq_M_#aCM!JE&jan zq^UL-eSSl!;)M=SuEU}dDatx}aqYJfX0BrAJ-hxs`k8CCSG4n1XST9~Sj4}WzS@tzhW>|e=qbaN1_=O=kG=kV6i)RXXVS7mQ0-i0 zQ1vHpRipN~}0{<8%#l8~&UC1iSO z_@E-A(z&$dEW+J_S+Hc%!Ov6?aW7zPgFtDfK#y=$hByb&j7FgO!j=;zz$VH5`dtYx#6k z-1U1hJ)5|if{rwtWH1W3a^X)+iTcL@!GzYv|C^}H?7yi_t8i@JE$%JS!5He|=3MzJ$A0EK6{6G~$9y;K%Dgh4+~nN&IbB?yULGg_A$I5o^POmo3^Pxkq_K%i20Zka?*X%K(9U$ED+0LM=_o zV;u>dJdd)tUo*8HB)&4qc%_fd4LgJdA_5EeDly`r;W^9K(As}QVowurE>ehJxxZCD zMGEk;5Ezh@D>S_)}2Ufu#Ki?%?&dB-JLN}nFO;^&xuKwZeY-gA4hl~L^q*eTTSh{qJ`pB-gp%# zC9Q_JHgb=4$C$8l_lpuFfB27o?B7i)Wt}dG?Il2LdI(U%7%})~rub|1;o*Xnw)Z6P z`mev%s-Vkn1vOg$FR6p$6QI?&k77d3FCahs4k2@4RJYx4ADrFw z4fPGSepZ{-iUvu4kvOLkO%h4U8JaI?dnu}Owcg*d_z(cxo3ne%ow^zt6laGsaRHbH z*1L<&aPHtbs|bQRX0xT~6f@4^oj0*ac2#@GG0gz)=aE~VzT#P-G%(HR zQHU(sYdX!tz9gdp^`x2^ToX6By)4TgVJN%IPF1k+e|@>mhwv&9TnhHND1oKtmsBOi0V^>+)_=aU0I2>~o$*sD5ZaGO$Xp3ZhTg`JSSf?&4x zm@`UJjbS64J=W6{YaXIkYUi=^_^^w@Y^<&JeIE0fzN>0rn!UfDzi@!*Ip{jmZ83O0-}&N>;%p7m zi`d<2^>_=hX#PpYh4qr;cl3 z&C010LgJ}8P4AOaFu@ZgDMT+y%DNL3YZ_|C(MQyKr_`_LlGx^^o7fmRcWJ||vdN7m zi^CM9og#>ObNFuJB93KekP ztopNEI3kTB0EA^2es;$aizV+8Ux0}ABZojiOoG)TYykAsOl_XdD?y@a;~xKr0(uiN(MI<0+N`1&v6H&WNyj=28Qc(p09RJ8Y&q|*B%ov z0f>u!Man9b55siGe)BlJwJb{lDk$)8zc zitrZSjeM|Swtp0ihZbW&y6R9`cJ(FFyC++XdU(?~t*8A68EKCbJM4HY z&D{B#a))K5Y7>MQPwVXgd5C!12jX(XI78|yP&yaTqj-JOt}VqUn0%XvbElB`AsWu& z$smpL_4$QOqe2(ZG~H%H24qG?b35hE{ERJa@XPz$3H=S`7?RtS5zZ3ff!Xa3JmUw= zGE7-ZAC#(@xogYXXlv>UX%yBiQ?>0s5K#Uz?s8)4ZW}oyXi01n0R1$JKgR0(ikVPv zH5SrL?Bo`DpBo^j`fUR}OFebn(g)!-pMTla_`8-nksvoH5{XOub8_{r5X6!- z*Y0BUp(_W&^LA5_=??E=L^9+$h1HrvY-Z$TWrk$6WZ?Drt3hnN7KwjeV6Fy_t?d{k&|LZ5=6z zDN&{L1eE|kK)}CC4cg1&upt6ne;2=5(;ZQ)yujwQNnXR?rI%p`sXQA!&6aIBvh0tw zbZpdH3Qp3RI=ML#qq+(U>RlnFk5hhySF1zCsI0vS>>)n6deVbGT~xctc58bHN@t+% zJphEi&&I&P#X9G*y-Iq|KhppS3oD;~h^B%-`!G{Gr@+Y>I#kEVDRR!eC{mZ>I--vdg0_t$E~wz zf`-ixFAaSwmMXyPEi>X}`9NFs3`sIEy&yAslNg1dSEUaGNM{* zk$2&kM9Z^u73Db(5&7BNAUU6UE$b^=ZXpUkqD#RC%sivLs1*`k#O?D?Qq_`oP7ugb zd*e;7@asK&(LxttIQ89{tC@Y}#@d*6qKD)19MDQ_Bu;hl?q_=A)}njt(V7Bztq12Q zTq_(9^}yQXf5C%6%d{5efJ6^Aq<5ZMLPp)UsS_1oA>#vZ< z1De=vzt$1oeng(Mim~Its9OD1rUkRCj;#Z|rPnR*M_#X_vMJkRTfLHAS-b0#Ln`Sz zJpXM;K2rLASjM&JcJ$;=66kK{j8-Dp|MVZZ;T}jBiau${>kO^>9;4YrMIbYvYrC@eb;h6t#S{`kp1! z;HBLUq{s7#9oZ|eE%rdiENiw5*UoXRmdO5PjPz_Vq1R`2pyyT! z$CyoU8-K9@;UaCKl^Q{^2}hcAnd%*SI^$ z`9a8;#&)Wrr3cL?*xU}nWV)Ny!7qga)4t0FYR#9)b+VP`#cCNMQW)k~Nw!*d44?=) zbi|LoM<>&X+=E>KT&QDd8cNl{YQ);-D90OJX<`UjKPx3?+G7bbO0cs7+gvmT|LJs= zI+x*iz%(bPdV0<+Vyh$FpS(-fNERlzJc5Ra+k5yGhuE2i1i-7S0e4J%x#c#2ch6Km zalS8}U$<+IGbO-Kci5r#)9u`?LM|Ln%IF$l@qY55B&3#_Ib*Z~TgZWlnOTD~7Umyf z_x;NRZ579fYjg0kv^a9LFoViLHIod_)_uvowl1S%Z$s?4r_N7hIT!KN#dVUo7&r%| zv6a1TG~1Wi-c+OjJ-Wx-zs@p9^fE4M z3z-R-j(g?`ucq_6CH!pJg6t*o>dW?e*TmDE_Vu+lJFG}CLmxnvS_v_*q=~zkCR=)p zT)MfhBxrWj88wq^T}mk;<$8APAFmRLzplu33ntMUc!NFfgZqEWz&Uv0R@S=QciI-k zXr*sYF>!+Valp(SRJCjeOPEYrg>>!97&FiG7Dur(1}wTHOMZzoy-D$mj{#>9U5uRD zTaMMh6~AMI^i}3@I1U2f+xn*D5I&ML5aXxLep(1ur}$Wt5nJmWw%qhta~hDm{;+#c zJEjY?RBK=SD>9LhQXFr$md^Ki#jCneh*V+n^*tgmlk>;>NLOa$e88JOX8_rbZx+6V z&pYzz_7Pk4y%f%AfNChJa)^({DR}m%Z^0IX@&peB_n4tSNES^z3P#YZ@Xu;@6+fCqrh%&9Ff;tzne_x zAt=4P4o~y=&f^Q`A;p$duHMOKviJPg?Ne^w!-bRnP8De4(e6hqAKb7VvhwPWB_KTI zXVxG^#PDr~riz*az-;VkYJRdXz`WYt@c}VF<_2O+v{byaWxYQ--bm~mXSM%58d+-_FKd=3}L-i86~dD z8vO)2Qd=US{T~(tr`NCob6l#t?hhd=>`=S7ETU+{NVZE~`fU*|vU^#i?uham&`x0Z z->LSRpmC#>yH&iPwmhpR8nSk_UeoI<6^a5P!7- zqU;FbO=|4hj%bHGn{{C4ch75k_87paqUTGizbD-DOz^T_c2@-;Uz z#>p9dkw>Kg>!V=zP8ziRN3J^#lMIf{VNiTzxp~CxorbXUx>arK?puE3s<;YT<26Nx z43w!);IoRKc;DIB3>s3q-Zlgr5gy2#C9C=F^QRfcm+q{xsEsMxd1x1gabm&|n>$sfikZN9$ zjFTK_y?vR3ZvP0ei2|*Y1ywH0;Gv=WLB!e!Iu&E)EoWE6+DoSPSfOQ_go|cUCN5Kk z`CaSc8DKZ;d!CkV50od$+qQ$$ls$`jIJ9b&serKd`RWYs1hKL|Y$c{SPluPvgxQ{Gpl*|5;Og@D4ll{j@XvOAOCVQNheVDbPL=Dq_wZUf;gVL=Yi0u#mSAk ztVz2n({?_JIe1@VuQ^8QzbKkix*gvJb5D7U=BYKJk5aeao?>K^7-gUM<5@HEzn?FU zW-DWXRQ={%34oX?rSJ7NyGz?u32EKhbJNmH|E?Qa>fs<$ieuc|`Ko0)N2bgFT@n@6 z#@te?jg1I$?Evb_x5U!3Y0x^nicf(Klf>yMOx_@4pdzGL%u9duWH;*pfV;E@)rED6 zikQZHeatf3rq&32DrEx~j_w1Zcn|BIMm8HIkk)fe%7vKYsu6nr9@#}pm z!Bp2ezkvlzy%o0XLBe6G_^NX?(-r-(%FJnh>Im*j^yMWMs+BbJ7l=oH;3Lal_RV#{ zyd?zlm(=SoKI$lfuH-<}Q`Z0@G)1J1I!0UOh8LdzI`Ec%)#ql}a~{0Fqz1LGy|u~E z)KdTzjOw?^K^OGa-_#4OpbgbyK3o{jxv;8`?m?2^{(=Z<#vC5hO|KO8z}hM<2htvIFalz?P5>dkM*+on~t}ZZR~++xY`dPEzKrH_y0>6)Y67#U$;;oVW`v zDdj8>w>O$Zu1$eKOOn?rLwu=B%azi6TBk+ALeJ-RrXs4%O#@w2hc{Eh&at~Ki~NTU z3pn@aq7>WjQT8S=LLT{AFU!iJqRX|rOHGmVegO?OQQm_F$oOV@Q|F5FF|b*wqUM&a zvo>-~D%IuLvWaYe+n0_OnV-#jJsqZ>wCH+_2m2VED(5zRPjbRPRrT$>-qi-iEpKrCtH?<{c;Fz#L5 z7xdcgugPG6u=(-bgOM!>F$NcCk7isPWE3W@^#De0dks)|5P#8p=G2-OjIsUv!AIrX zfAy3%eNTOWY3dh%If-9)(WxXmWp3YRPp^1Xygr1D{2Fd!0*xLUH`m%8%%Aw(T0(3j z(bo!A$G2P`&c|o5sJ0{UZ)^OZI2>FD;BK9wCOgCz;oYu+OzRquLIZxTq$=>8%Pr{P zi_5&0a>U{DnbD@L)i+_Nxx_Rxuj8GozqXaHvq72@dPnDM-*|w#5?*$C2N43L?vf8f zdFS7R3j|nI>oC+?p|KcM0cO%RBN!JKO5CFR)671a&p2FbnJV6cLBi?Ol zUS(Xn)Im#A`eo}b2BgkA>Ecb&k$H>vbW{~^w`ni2fu3HHgzp(kWfq+2uJcQ$Kv zAa3e0xH?V%{kE@3J3=HP~_RXki~Tvs$|;iXqCV74Et{ z=HmbnzCJ`#&jem*G8Dg7s?|H7>dgeD3H_9_zOT0yRH`=k_&-?9}H@Zk_viTN{I<7vJ z)C^N{Ap<{6XBD-gtfnMFbW@(Nc8xj$^ip{Rre(|8-86yQ)a6)@IbcYwXU_D}*4#SIG1j+GYK8?^qwc0QhdP4W#?Yh!dQx2ODc6=P}_q zuW3BiJ10bjX2DHT{+#{!`Uxgq%#C_T1BM;R03vN}OpEDwtb(vapAr?APA05WceI|S zhgEO^U`F62*P}-4^=l81nQ)KI^wXcBW!gA0rTu(fp>!_Ls_n0G7wuuC`t+*5Vh`!{ zCT8AhR}N6IXLAlG0AoPyKkbaP%fY4*U7sPAwm zQ8B7=HErF-&08hJ5#ho|Tw7RvZYC>Yo5H^ik{!SshYIGSPWsn`M$B)!<<;uZNtXW5 zEw7ln+UhVfW=O-xSPKWBl|ynV6IuhQhkuQ%__=KQVC|p8KT}ZCgv!Y}B|q)hXNLiI zU+seBI+yTl_MT&;lY31}EH>7jHY8yQQ=}y5XucYBOszRS2?0___P2m9!?+ z2ZZPa%+hUB=V_sfT)Xc5Q=7Wt&ZESI)q_P`e#xbB!JX}#_PXPYUUBjrZ4YQm0k(eO zE*w4QYB^PU=NAxU-kYn64#A4$y&<$5Kg6|irwj_n9p@sc66cMbUxLD8t=!CHbF0nA3%nqx zyS7`GhG2>~K$0%!aoo(Qx`{(Oy5{?Mk_dQ(e^M(#In~%hr1H;O>r1k?kngqkl*Fz5 zT%p_^6lxy(w?a{K@UpZ7I@gx_vC_h%$A47K0}mkh9(cjtGgo)Ei@9^rHjf?$djRyE ztOoOQl{tB!X++$%*@z$QygaVpR+dBx6~9?pXtdmUNTBKVel;vf+TqDIR6J`@sP#Am zd=M|6|2^}!PjfZpwuU=fs_Xi%7}<9<#RdjavH4`4CopJWZxwdqLS$-B=1yY^gW-h6 zuqTH1?|*8Z(|L_l>ZeImpSVu(f5OBgaW)m3xf~?M9@I*^*;!J;E^&cgbuN8|tAFR` zdW)50m18u;tMH3$F9%c><@=dcbG^#RczV##- ziE*fF72NtaIRmy$b#4T>wRw)rKi0P0yc1hWG(zMMO`G2wBt=L>*A>}v zyVZrYL0e5DBt^8&_{2xDuRcs}J-C!6O0Lgt`c*ez|4a>lf6ld(u4r~hf^&&vW>~e& z_}gk=b7fp)n(UP7*4#1-s{)oVMgl!sGA z;sO=g_=l*AglR6WNXF!0!`~gTJ_Z+wXQXza7W+0| z5&gZj-&Tu0$4S4PP?`3R@r;Jk{~zZXICfE=dVNA{7lv$thQ{bLcdvJ=l= zxfPjV%-o<&^H?SYv2pW=$s^09DKGkkPY!Y0dMU8(GKNtPO(A}{H-s;iVN%MDQbUHF%Ajqqb$(&kqKBP|vU3nQA6|`0PIIN5|nEFk-+nM!?+-vtOC#sZzII4epH=ofuvx}6%4Rrc1>V>XWWiG?ZQy z4Vu2Si~iMQN$*%^+u!e@HCt~ir}go*)$wKWAJv?T`?TyqqQ}RZyH(EbQ8t1p>NnwS z?|b?t`W8K>sYvwG&Y?+J=7*BOdZ%W)`?PL;a;&6BE8DYmILEhGbOd9!=U4N1B)CBA zPu+TN3F+RAk(d5mZA`ietJ}Fienf@Xe42( zP~s&WKs)Y%R_!uvDSJkfCrBX3qloTFfW+eS(=9sct;QfF`^ZExl*2Ly+U5c`G2^7Y zo)+mc)qpLlXTw|7!!;j%VPF9!;H4@eDF2R(s?ENtZXyl`Q2Kd9I=)k6+mURPe4*7b zGavmK4+*+@1CGzFXj*Y*{an8QFcEua1cICLwY|kABj+JFaX))Swtl<9c|+&Tq=j&ZQgza~heChv%wng?Q0k{~(NGf}{=bsufc4~qT{zPEv#X!z>o zI#q2F1@6G!TbpOVLWy-G8m8?A1&z4IIM6DbJC2x$SbbZa&P_wh>ULOvzm*+5U+6(6 z_)r8FbYu>)-KQ4p=34*Mm;7LfNEuQ^C`)W7+_aEwWh)%+m0_^8+DT^Hmp&%-{45K4 zU9Evp$e9&(4zya0ZoY1*Zk$ooOfOT99Q>jicuVnRPDIXbUdabmdfHX2p1c}S0Z(fj z!)=X7{ku@=MvallHwaEkn3G?R^##(m(FE8hfG^p2|_l;JzT$g4N$ca;%0sX;T5KQToyv+!HV9cU7GGz z@FbaJ>rn%p|9m{idFSGHy1>2a*@iilnlvETI{AC-=G0SHk|Enm>bBV-d^Qhf`D5>i z^60g)+WaxKIe0*BTnl_sV5gwKIatl6xuvAhLKQ*|}iat}9a=p4$Y4CH$k_EyV!|Q{uD`?F7t53i#~LDNdyrx^ zdd>e(1?t&sU$%T3#jRmQ_nh+xIAGZ|p?ed2?=(G~-(7U;Wm==>Ij4l`(dKJ}e2<%@ z%<0VK=aHS8bUs(KsP>~p6u4xN?n&>;s=1)7g)d%=zt=mf`j<2lbMZOqc879>k8U21 ztEVVQ7GIMw%?VW>wJ9gK?cRL(ZxvBLa$Z)jKc!pgVQtndzp3Qz=66@b9Kkt}t*sq@ zNXr9|vl>Ge=5O>N@2+OLbB{iKf@rmHWz}^i&9AC1ACVdhpV|D=Pvyt3AmU`dsXc$N zZVi0qL?RBoJJD<7?VfLJO(1e{(C1@`6Yxr|av}6&QD{FhjTy#Gw{Rk<&<((ZoPAD* z76rd?DW0F2-Q*y8WrGM}D-q+_y>AiGXV-QYSZNNLITAMTdx5d_Oq~{V57RkVtLiSL zZ$qKVsJY9Kk)TlArU5fbs=P{RiAaPik4H}-%6C84B`s>Z!WEP<(QE*D0ope&yGfXt zp7Z<>3T}p>>bXS(ff2a;1AMJkau`n(dnKEJ^FLo)Tgakm+* z&8^>L5E9bylq7S?^5}}|+uK4;y@u>jo~3C<cOSc&Fxw&Qsvs04xI4>%ty55{B7NZCHDiY-dEdTRY8dule~~tPyfr7 zgwma&O|Ary)c`8-ksEO~>Q8leRF8;*g~mG`mI@b-D}J*xxL3>W_49P`zDI!Mptyx-o8RQxa7B5tE1T;v~X{Xk3G7IsVqRx#s|&3XmMcMplatM-^$#W_Mn1?iX_-`RmK^W7H;% z=F;t_2Ux433B89klN{8^888+m>0SJ3VKm~%=vFH^A(?kZpeCuYw+yS*)Niu_;y=mYRBAafW$r?F~90%yd z2LJZQmh^~il40fQxg-qTPwC}@u%nMd-113^Hz&y0AVdc~~h@Vl38s#Gw z+Lfm9avt3!urmr*5fXq%bClMe`=F`Bs6E1lXu`f}S{@R$sQSD%?bBt&vV+dhrFED> zH6o3frfch588!E`tPF#DV?yNYSj>^%O!|J9%~{Q{IiD$|2xr^RCjITp={tI=>p>=H za)aGk-WTmdOmWnq_twe2ur5>3L5a`z(P9(K7Kl8axIm94-v8Ddb4fXL&q6ZNP~4DB zN_OeFJ#=%+!h4zzD}rW<$CO36a5YXn#~qi?DDIWOTkrT2861jSfBqvd zIoIgAB1A3Qk6K_0B`o09#K@G{*!-e4EFiBS^8E=0-=2c^KC|MiU)cSG5xr(eQYlLm zowv(op7x_hdN5SSo+37*%eP!v+m|r5{aSKynqkFk{;vA1;tb61DPM6vnm%8iCIyIM z_bzI}NL&pGb8GRE)eA5=yDnAo)hZ#LcT4z{caN4M6HbWC3$7$BWu#mTJ1{E`ILL0w|@Quufv-@w0@4iLn5+`bHV z?MK}kzczID%@xoNL7$tYEJaDsGBv7T;}|8{n2Kh~n_kOup1z_(*Q-FY{(N$E?+KHH zIF0ryU%;;~gP{Q2zb7B0unhW1!_WWKUwNMOi*QZYd$&LyQ9p}4klkC|#~7U3t~9%T zly7TtO5I!Y9KFYX!^!RZg!M}sO*Po*8uR5X@jz`Q`zeeQS|0(K%hB>7oSx5XRs&UT z^4d-n&M`rnaQ0O-AK+syw1?x>ty%900m25zd(`RO43YE#!Dbi|KPZgX768Gr zu6@{ig*GUkeopPZ(;@7X{0^(3ZguO1@im8u=KLsbKn0k=L(~g=S5Ade%kP<1-g;Zb3y=!>#Sg8=o4^g-C zoAz;xRy82WsUXivdfDc_H`I%2vd2JyTN;HSYj#dFjfaKfV$)QDtTHx3cev7B-eg4O zXFI8x7TKgb4|A=PMHjrPQY7vl*y%?a`|%YM)o?t=qfxKBRX}20uHL!&*@^e3D;~w( zdB`CmEt}g14A}N?GJ2BgIrGpO%eTh1DQBSD$`_$PSR^j~K%&J0e8;0-`|T{h-_KKw zjNiV6D{S6Cq361)gOw4zIJ>{^KOu|eR zo-n0&zsuw)+aTwz(7TcmVJMQ4!>-?RbMIJcPpruy1)}XBpt7p)yvMTnKYB!Q# z%M@3uabpa8YQM>ORe*=^V-@O#UNr4{yRu$U)PXB8h}Q!yO{o)ZlhoVCrpq@Y#$|qr zFJPU=GItvq*jgB_u`|lNPu|MY6HPX{Uz}UoE@BQPY0?U%%+Ufdu%+u3R_AVWi#u=3y>STGg7RwtopPeuS zKid!8H}NXjjCo>}*LqX652^GE)GoCU^&bZ<9sjdf4P1%n7c(Hw1S5*VtFKjS*0xX*SBTH&Da2>`U;R*$cSp=G29xy>-ZWWBJ>rFs=RM2 z#vn2CoTD0?>K+u@aa$VPJ$)j&Pj)W?fu|HZnaf`>aHipFOh50KaR!s`QwG`}8q#7) zl5ApZ>xH-FD3;AV&se3IZT`0R1W7ncn&F>_kmY+!qY(yUbwtt1n(oA>TCC~csL+;v z{=qAsO1)?2tXMp*;@7v@cKhOQPxE{gR&8xerN3O}SAYiFYNdY9H9W`cfgrtf`P}gk zA31u6)c2l{x8w90D_LXK8gZi%TocB5R4{E;UF$#TPgTIUMKQjC-5n7?_1DiI)4K@z zDw_uMIckst@~~DgtFb#Bv4^BHJlFY(UZ37}>)MhR_@=HpPQ2{bs{ zZIleVCu!vXepLi}rZ9)ktQhE~BitW_DLn!z)Y9L=s4(YfNX$dYhf2MIhv3M6x?tiaS|)qD z*}rNfGDpqAkhUiSw7**G8qC3B%Y|#$s7dd1*7KorIDaLv z)Y;4`uGQ%(p6%_1e81xcvjE>#CAOY8E}siT|6bb9hKRVEo*xzgwQJP?1$T#w*^`6- zBA-Cx7X?B4;ysh8_3pO`j2{>tRBMN@1QR`0iHf)+_gI*YpO73yFC z(8iuGkux~?y~IynZmd{^rZ~%cUuw7&*7J(3JaWwHq_(~I)_qgR^%#>tTGS6;(nj~t z$4tc3PQ70B{`lA&Tk!uq&q=)W6N=Bq1kqkVZ}Ib`G*k4n0|dI+NCR%9%JA z)L4m_mu_AgGtY7(ki^`YtW}6qZHUdm15!$YOw}ovoMtQRBs#i_a7hFtP4u}=$<|8xQ z7;2Aj7H>s)J9W=_h8`m%pI)taJ>VF5&tAh?SBiXPril}1ueq+9NK8bGh%)|uNhWIs??X5y$6lSXt_jgT zmT4@+eb)`5)CyIliJlo&`P-ar48*8mXXo7QI;}-;1PdMgXd`cZ>no-XAGOZ8~dRwOPrNL$^ z)6w&*a|258O}WOeT8?E>BmZKsXk}t(RJCD~v8W$EmI8v0E!@1v$N6IhjB3bfXboLU zYtD{4MtA%1tGwrk=)9%N7GGBvE@41#u~)sp4;8S5ZQx2iOQ_SKmzyL{Y?O2A^?FS? z*|{~cX-8{sGiqkaMG;P%^7qwZ9QzCktJU*bR?n+5-p~tuScGgXupmlS{KmNn?ppJc zu_}1xPgQ7e;u0RpGDRI?eyf1z8<@31U`{%I)GJET2a7jPsUaEcD<7TN|SN z6WXxN>-p-1(Y?pFl>7UiN*eY8-n%LiTcv~0ebdOzmsHS1nX+zy7EF=wZWTyC{zN&J zF=eYu*5os-Z!(qK#BKAxoT+U&WcTWO#e1ifA#Hj^+_kq@ez_MO#-vUY_kl4P}UlWd8Y1 z8lR8;iZtMr+t#KrM5+9T*1k_M{YN+JJ-;0rMzQTZN%`fB*`ZpiI_EWZ5G^+UVv`1l zrd#K0nu0$Y_6{Qxn@UKh>n*);6jIR^@tiNXIprUn!%o;Wu9obJIx#<`+6ONpJGYJ3 zt~~;XXNmr$y`N$txV?7Kvvo-(r;x;J4%#=dGVRaJPyJ$2fqk6)Acc8gAW##|BT%uD zN0?>ccGki5ST@wrHTuGeT1k<~m-V6`JaPd4_NO*bLlig9WPKvfJUpbjF6BDDnwNdg zN@!~2t6Ju7LonWZysE8E9p*B33rx|03{d96&c1vMRBYzz&3ppe5q{Gy^}T(Wb3;gy zWNmtJ!`hE_tp9*v51ZCD5!s9{01HmY-?cV0vL6`#p&@Rg0oy|hne-9M5se`?0(F9e4TEy`Np1h!Sl!oY2kNT z>x6dwSCUdR#iI6(=I;zd`-&^Z(6^2X+_jHs0jGGcWOftAbBSDf9?Bo2y)SnM@928& zdb~M9XfRYp^>bq+CrgMUzVpW)u~5g60pZ*<^@jAwqM^=>`uvFA^z6<#=pLFQy0)Tr z3v_}6s*>L79|N{B9R?_>nUp(Z^)xKo9%7bL-)(1vBc{1-I0=21A0 zn8~0M3&~40vxgiouc{4SKN(!N^ULb-K{fihWu)h8r-QDXiC4^?5$xQxaOG`WV@sHQ@mJ6|(#=IH)kb1VBE^&xk$%>uo8{lz2QOWe?ZFIaKQBAO#X;WQKZ`w@1JmfG zE}+&7F6oENYHO;nh3&!DAXe$EO#-@@s>s&R)VW;>b9PL_M7?sojl}q+I_`;5MU?!z z{EgiZgz4R56u&#YitB8du2pw(;9b^YTz)G+$ITk@LwG+&7vPT7Oxr$&Xn5sKp2MMC z;{Sl0mrs{)?R~OD9=vhETBUSiJc4sPXU1P0b$KgSaMTqTTg8pSf-c4xx4?|QeyJZ& z+3E&qfBP>G@_###lwx($E&}&9XKAZ{c#Ke$%J0-l#J%FY^!6`-6eeS4Y{G^1B5F7Ry9xXxlGA)KP0PvE_}Ap0Z` zcY2!h*Y)P6xP9Kwjok)BHr7uF(f4P(YbV|!<#Emo@Z{PU?2HS{W#?%QQ>BD_H!LTo zIoMIEd0!S|g|k3>aZQQAIS6x$`=A^vDTgAOzh$HsTWL-eN+x~iCT^on_Hk~vN5-cb z^6#P|m->9^5CU_19xZ6vUMkC>L-y3tG)11Hsm|wqT>@#pi(|%7_HeVFUaF@fAdctD z1lJS_Vs3Y5B6#O_K>b370V1#YC2TB{aT>H@gzMin2Ft*!nfr^`4(=oFzwS5pEK%KiT0phnG zEungQY#8z?S}#4{0c3}}y5()=FS`XHpSiAH2%y0kVdW&;NlT=}0 z&iCucxJIU6x9eUJ+06A$7*$8xk5ckUYrK`-*u#yg2-b}t+WUc=esQ?_+-kF;m!a%2 zMJWMqCN^_YQP1#4mc&_~?PZ;Nrcmkjk5k8ZBsGzzt+pV~Vv}zh1jbmejA>N->>KHB zr;YO_yv9u;@9ICg2ZAmBDvP)pVIscZ4x^-wRlk~(q*!r;L{h8fxmND^2CO0K1-b>b za4_M#hTHYm+~xRWeNW+0=X9t3(`dVX7D8(uqrrUxg{Y=kg%b-K0e$g~(dH41DvIXU zg~61ju3;!dsAWcZxuQfppS-B}qtJD4ApxXP&KJ&{lF=g>1Qg&d!f?y#aDn1RnJ z=O_h$<<6ys`9Y6TgDDndY8_3rMmMxXfI8h?)ptydPGW>FfM!w=-Hx6OsdiT^v;$!! z6gDlLH@*kA8@LGzKR-`GElIU14)EtjbgB~IbKX0F0WKer!|h?4iq#ZhO$_<=_g`X# z)pKO5g5{P1_s9zTWPhG27bCFgU4Ul|(l-*CUV}w+YPx?C7xadT@*DMU5jI&rH|OWv zJFe{Mtg3};jY{sAKdWGe{^Y6dfJDL(#Z6+{7e0Y`b8Yp%G&xnthF>G+=Nf|$b{yo+|0 zW2s(xBAX=Cne^_ZXUX$1)vXaa_@&`T`3)o&N;7xriUV#xT%zaS=Q?^FxxyeNauDbG zsVBo}hnpRcMOL#^*b%%L2)}Qg8P92T33QiIo6@gNDI{q>?-_1xU0OSY=G(MkbKy3L zD({FipgW(&())sGQIp%d&gq4)-QGTW=ZuxCcX~As$GmIbye*wJxyGbNl6`f#m#Cj~8g_?2m5&=##DZuE=LulIkBTP>{IE98a*t#~# zpg%U>+#-eoWa6q9KbGDp{n+Z_>JP-t>1UWM1*?uY;2UiSj2xiPALkJ_P-n%dD@{&20=yZ?gXvJf_PZAIFVks$0V5JmYGay?NE z1OHvVjJlJcsoBy8s=s?Q!Fw6IA|<;E+T%-Ah{(LT)_;^ab4zor&UZ@;+QeMSk<&E9 zB&>>r*%)rzx*Nj#tT*f&Ia9u`Pmo-C``U<5S(xH-;B`bV^$CDJz}i}jC0Y8gm8gRC zQl)myCrr<7h(8s7695MVjdo^Y{nWSy%$3AZd*(_Oe2S}i{T>-~ixG4A7B-!c7`;S; z{|NY;ALoeyYvE9XhV70@LIiy$>CV|@!Vp_HyO2xuR|xG!*wK{g61Cgs zL01ZPu~59Wlp;IdA>*+gUrjL<-rQUF+XZq`+W^u&*Rt^eOsbB1;5ijFn#933)%m$@`Wq3{8M4-!p4yUL$H}_>;G;(LJr&30pzCRz*yQsCn0eH( z)a41{p-%X7kN$n%IoKAJ-}OV~dCgVu$t~|F&f0H4q3YAeFxxBp<0KaS?yG$*eD5%J zFNpe=YOaU;%ndFHv=9R%WeRZtX${VpvJ{(p{!Dj$UCmNtH>xa;nBTF^^A^cqTB6`rFNX{eTD)>L>h z);H9_op!F4Ae6QspWlO2?Pd%1-nvGL(dTul#Hm2fY5F)i>Oe!du65%)a%ZubrYo9{ zE!d?^K3$tfXKsdf;N;!v50}a1bpnp#1=L&S31N~4W2(HZ(j%wEnzz)V7O%T~AONX% z;QcQwNn7#2D?rOGnubO;qJDrBu%8rK-6}FH3`5D6-)b+SsnonQIJ6nJXShkV_8c`@ zkMr)Sxn^uOzc0c2+v7KILr((s`zYK2H&$XfYFN9yyW{#*!2l&{=*wLSGgD1fzSd?#rvSPWMda>77tfop_W>eOZcjUQM zqi#w|PA5&S3iN2ArI_wo#J}GM0lq-wSmXgWs8e!@XPdn_x!Pu23pXaf)UQfpoLh^ssa-{+}ob2d>%MhT=e;PtiD zS%PGpZr(JpanM;&jj(79)OdCLVx~?PV*dM<;#hATIM*5&N_iL3NRs%xOy%a-wY)Hg zdJo;{dww>jRvqv8Xhl^qXV=mUfMa*l=s5QtvZ80U3_Q8KnapcdP8g5%`8mj{j?Qc} z3AtyYSL-7n;{lIb+jduTHVW{ajtpa}kCdf_2xliRd^+V%^z4PLS+RYf{NA3ImQ4RGC9K4p(`&O5pDh?p;$kQ$i8-g zsGC(~-LMkIUbIuU*+wgPF3Anrcq6rHkdpTsdo=oX(VSS1uVzhY|pWKNW?FiHTF z`$u&iTGxa2k8OW7x9&fr&AF1K8FK9BuN~@1P5R?JLyNU1nEzrjuabDlW$(7+s3#*Xk9j6@ z2i^6@`D$JN^O4RjOSNY6_X&S^I&iF8LTCBt6pLgSr?#SBEmPYOt_lVh!Lu}v%eVaJ zjPy&_VS_H1oGFxytrZt`bIYb+k?Ph*nvc?ssZsx0rBujc<{%vBI?8rnzMRIuS8HQb z{E0VzPX=Pb*_$z8pL!zfi3ljV<~LhboX!Yh>b;FkmbvE(w$O88Knl#3_bu$fn!sl) z?v?=~c&cO6EK^Q`QNvZyD|BkRK_#w1SBM^2Uaj~1eb4dte=^33`6gv$5du{EY%=$N zF@pH$@v~b576_ONU246l>-c%* zfV(@1g|L=xa-Pk#427bB!bsR7M0%Nh-)|>tn-{uCCnz2<#|a*b8b-x6UDcer#~~xA4_s|U_D6D? z`AZW}MzlGHrH*nQ;h@L1=87Xshig+G>Z0LrXH-9I98J8I!iZ8M7ZT(AP8nV#_!m z4eoqv?Tuc7Kw4b9^BpX0B6Wzvq*)BOqOLF5ScuoKpMJc7^9rsuT|o+#2gy?|>kFUt z0;(zRf;{)ztT%A_%ABA3UB|FXX)T_Hlo!?$R24DLRS4F~MX@pC$YZHn{7fL{9C^+J z#Mawc{S<1F)V2CrCFDjQA2>k;!fr5AzHx0-7X@r8GTkY!QqTPs(6t1_^H>qL*&D6% znyr~or)pmm0C|0gPWIUPVm+!|UPFT0>fD+8=aAO%l38~mg@xE=$S4a-CVHphu^$On z2$$kVwGD%{5GAZh*J@v^*NPNDo>S#^2S~9ABQxTvy_N`Hp=E2XrLIoj%@$vhj~6w% zZ5ABSZ}9X6e(mpiC9zCjKaJV-BW^JW{&{iSY-dTD&n|#jSmm<{3usgR<2j5V8Kaa_ z6`(}@B3KvczI!yp_{z8CCfHjk!o47ollT>ngvGz!M>m@oNT}qg`lv?-Auz=|ILB94 z-F~oNMZ{H-_oAPl3S!P2?4BRnmN?JYq#m&9esR4?OqwruKI64#;GHy5aQvBf)G8Tm z2Nnhoe64@X{@6x$&jYYE@W4fXwx9oh%I*Y5lI=>)@QNPc^RNKze@i-_IR!KuX+fwd zumyCXDl@|U-ZPl}mJum~_5b`+|0S|})$vJ27V>xWtU#$dk5`hNucmPy$|23f75PjZ zP1{#)etoTc`P)JrOgXHC-p=}wZ$gsHQr7vhL@9dVp)YMSChi|A0y^LlGV8li0tA31S+4RB zofnF>r1sRq0IF%j(SIm>+n&*|WtX#jxi+pA*|&I{PaX9%PuEhL&EuYLL8&VYbNMkL zc({xJ%Q_TgZ#&#p$70hOtS2H@PTo z0|$+iu6YGd(wBO}(oYzCE^527>+^%jt*2LplWMv@b}MY*JrOq{UwF?umYGTsz!Y9`Yy4fUP%b9bzPVNS?TW8M9sc9K+>Mum>2L%jU6<7{d}j8!CpiEcmw8aXV(*O zt-ZrqG_`rRu7pqkRySZ;jJ0ImDtlhAS`M40IHjjeKYw{Gguh=VFK2=-Ytg*D%uPo` zeQi+v7X$h-hAVKHe;9CQyt;@FA@db?4>n_YrH26bPK-5RRs;2(twquJN^({ z2#H@k!Z1v20w}# ztbF(G4%U_XiRgf)>g|0d`7m(qHEnJULvqLOLJy~hY^V`r+t5DlL*7syP}?#;61C>^ zsAMqfmowYfdw=>Ya}}W|jx@mk-Vdj5q{+ttm`E~`i+naADNnVKEm{&av>He|-bhdNNv`FJ5 zvOSQe=I4KxWEr0_Sj;~N@>9#1XPO)%RI$5HmH9r|8P6XIi?fY8jlz zlGa^XNW-wFrnGvI^moAXwRvYKV)HL+D9&=qum92~AK3(9wVI@8j4Y zk>jPKkgviA-WpjdzC zu`S(CvV+?uuvJRp*@MRoYddC; z)`D!lbD6^!knA&cl5kTYu2J7Ye3dKwvFM{wN8B&5Glm=)G0`-_yLFi{y_SAV)3bGl z+r1>}OM1w1SGyc>|1_oKN5|Ilx9IlWl5~*?-us__?!V0^lOS$mv?so+M+o?XY8{k| za(b`-io;+hYUJ>(dNkY4RdR>4+#mZTFQqr>5DQd~gE`twwW%Uvl>76~L0DYO+B<*7 zR`kEIVj_O3DBh;v%on)AD;w3Q%t>Kr#e#k8Ee|Ko-Y(6II%v6_-#zIUZUTT~ss)nrANV!0dN}qq1oC=2 zE}Kd1d%4OmC+$RIA1`5c4_!%15Zs8ooOz)S%XH2~7A}7l95Y`f_ml0g0J1f0lav$M$AL z9htY<0o|X=xoE{JiZm|MfXuovE_PB+T-ka!iexzwK^#9=xiF3xx@i>PKdR*z&Dt}} z_SRi6#-Yoeajj8G6K-c`zkDEN@YZ$=3Nm})B{sY2dRxdS`Oux{=q(D|=tTYrF{SNE zd!0?=L_urK@A~9!K`A&==gK}xnC^Gt@5xhHGZ`(P?hQk@W@2=eP|B3Ba_J8!=*+&V z)S8%12rB$#l^7o2LOjfoaaO|GddldU?!ex;RDZ$nFFQfwv?O~ELO89W9(xIc!dkx0 zO^`S>DD%dMm+bptMHj>F@?&ivp#mT1f0x$P&PTCAvCMbAKLu$NlK491>z5F$i}L(AdV%}0n*!aP2xUck;{t;JLb>0}A*x!!a$|Ls zz583Pc#rKBXcX}&CT`vIxuA|n-;T4@M&Ekl2n{M~p4#pK2;-O~y1pyPMc%wN5|3Tq z@#A;BqgAwrJc^LcCnq^lJTgLN`5uxK4cB6nETy4K>FBdyRCp$OL~g=Byn1twt~ILN z?E~BrrBTWFbuuilNtE!)<7!|9Hc0j($6NohfJqifk&j@Iq9AdntzuH?o!_nJEX(Co z-p`4H3tF3VNAnzT){NO+)S5v6`(|t57OMX&A3Zul?CA3&c2vTeU@eEZccLy4B#kjS z>x8EssVPtrfnDErIqi&FgM9wCWuk87d4KV}60|Oupgh0xKFM*ozu8<}Ts({r3mp04 zgKJubGf~}n#qJ*piZ>gpU=Gdis;@V;1(7hfQEQtoI4x0L!GE_}F0N5CU?EOPyBAS$ z2&1OIvY_!9>ZVL}Dwp>JWNU#Rd2M9DULg-(eSeRvXz2vta_jfzNSlZ{Fc*uz4yqD8E&?xrWmVaC(f zlIHK9Z9@<^1Cth~Tr8LRjsxDD+30>tS>Q*bgqkl4PL(RB{AJGxTS?)&bbH|uJaqO6 zy0!Ms``qp9<>f6Uo6JiuJbAwNPkY`i0tpJ*Le@I|E>iuW7p{JHfULcv3nfUPBH`QJ z%$B^TC>qB?NLL~>bth9A$pe%nf2+Q`aTi4@-Me2$N` z4!j6cG@Sf7hCV$?%u>RcpLnm@#RSI!Z1xx$R*1tQR5!DF=*P0D`GyGRGpE-AV9?w* znfjR5lZr|^`SX|X-7`QhYL)f=A;N#mwjM!6j}XlEjzaS-0wpvl4Zwx;`kHTv*TQXT zAIKceJ3ZHYX#yG>N*_u0p?l3-ux&Qkduh6(>+j1I3b$;ukGP2b=O6oTZto4c#Ebdn zN2#Gzi)=*kthZ#9cJ#z4>-V0&?XI?+3!)TDc2};(LyQX(nlM zksGFe`^?(LB|gm@g9!A`$4|(w92hpe>0R!^xntIvKJGI1UL-bm;7dTG_(H@ZHTB+r zD6u_AlXYFY5gwVi$h?^ZP% ze#9!yb>U5_Lrym^a|h2{(X#&&ZjFXzkuH5!c`X?Y$3R$zYnzG9fndIkwy=4Y8r6@N z;Bh?c^WFbF2l^Dww6}-tK^REoF`|%>9{U-X>geo%O4-+xLr<}r1^MFHxDrhEl<{^B z5O3&ww)D_X5t=hA(=I=WCtv$a{S~BU=@J`29WK0A7DD2pj;FA4JiF7cy6WcP1V*bb zDc;#vHl4L+bbL?kBFOyd{x%#SR4jNbj@tIwK2ZZn6JwpJe@X=R84c!D^;5Tbs_%&R ztLeR0a^6KtJP*=qAk<#uxjPwr*UVSzR4hBo5T5qCjiVzTv5VY6h|l?*n{h1*>s{2O z5o|M7CFq0f$=_P`s!@-}xP94fw_UkG&Ev6v-F#X>B|nf6iU7WcD_llu^F7H9+p2BQ zx(Q{6ukHR3{Y~3{EJ;Z2a?c9@&3I_hI!N{3lgj8xsEujTNu+ zAT$;TMv86CtB|W8rRv2vf7$!FT@xTuzJT~}?M9G83)&)glvpSh3%isai|olKX-0Ri zNo2>4$A~avj8N|ETxBc_rcqot^|Tf9X@^a=yRv+f zQOJ#PTm5xF?flpbC2&rNZsqgH$A1E!Okvb#_^wRGiR6;^IH9>CkUeh|3Ij@A30#SE zRGMI5{)p%@a$n+(Tx#gRl0>^8L8hwft>S!HQ%NXF6*5hP%y%+nx{Q~%yb0^S+)Pw+ z57ufQY=-U1txNN?v{8TFtDQ^W_2;{xWa{pN!~Fr0erlCZKYUiC1^Sd=1i5L1#5}G`qv#*W9MWR{d+_fw&7bKttO93eI zkIoQ5i-O=X&g-#ooZT*lHA3}1#5YX8lAOK$Xq7X>CC9=eBG?~V?!*d9&)(pfrl z?n3@?v$`p(lD=JG_Y=OLNK~H**F>i@YS9)S@=%fNN-5CycQx*o)6?V(ojWQ z4Mp8?MvzOA9$8KYi5;h0vL$enAC;Loy7P27Ys&q$FhR-wz3#XFWmC6__71G*EulsZ z{P_aR_gF=WHX%uV^Bzd2F-oi**ctw0a4U~0xqh3VQvS6$T>tau|F87Pb4^IyCAWEP z1A9?I60x7;3br0kd=%Xecb99d{IrMGQ@~Yp^ELZhuNWfwoARWN2|xgEv3GQCP5fh^ zdXhTtH`Pe1ti*Ed*+7eCtBUiLg?y1WAj-Ngh6Gn`o_9>Xs{f@s*%i5w_ts6q24_0Y z=R#N6k?lyL)3EGZ(hJeQZ9f$)~dzN#`QMWVKVJjzjAdE z(2PC?EU-TnXvhASk;WdGRjWwT<%=%OJM+WQtDI99F2&ar^K$6!s(EwM{uRu{ds5FZ zrq?$M&fj?9Ca%BQDTqC_2QRRKoV2zJE1G6bd~6?*V_Lyz)1ayk%WFl{D#Al%b0scJ zv#>w0x!S&Uq`xcz#F9nd?TxJ;$Fs_?@~6*wpBsgl1rzw*Er%0SWNPv=cGK&J9T^^! z)pWl2EOF~Udhk@63|b18ekDB23;K}}rn#EDEt21?p|9s71ho_TC2$MbJ7s@6Q3+OQ zdot1bF=Q5AHjN|C%36&>_Kw#Rtq2ZM6&KHWFB|p*8d|%69k?WLgmHO;O%E~i841YnacENAwWcj>Rg2HT3@Xt0Sv&DS?Q;|v?o>_P z5}}sq`<({4J|Cw*EH-mW!tU%mt_#UtG0S;c=YMP+s|zd6uO=pvjRZYHEBS8icQq~* z33w+$sRWm#9*^o42j*!r-SAQuLF}e1O99!1m3w3zgbr0PfjdFAh}-!+>9boa%){dY zS(3cielQ}xLst2G{YRUHT3^pAg^ZE_iF(j`{3#nKZmWEEw=frczB=Ms440!X2&CIc zvJXsope+jx>(=UgJXF`Onth%%Q9rdMdJRkGyUe1gj<+uZ9nkiL-r&!dO2l`LgIln} zUVxeDBaxPw6V!M;QF-NW-}puyA3Yjf^hn0KS2%CF zggvD(Au7>gJJ%?((jhuXitaT4scl}rUBSMV=*tYFsrRJDFo^dH;Y&;~&R>(J*$%De z)GfIYLgpwB?=2bgG6Hu%7m%{C5YUX^PUwzyyXb4D5&*O_qN!gzO}UbDp3S!-R-`QP z&oW;hN1tyjiO|F`Iq5ylvPYdu?WE~H`7z#tBKYS+;2v`lfkQpj`g5Cb-dAj;cl%O( zZZbZ@Mls20deFmqOzFQ8VbrtXA_KZESg5DwoM-P{^#5G-^P;SYDFi`LAxBK zyG#eSv7eD(+m$yv>a%6QMpAk*jx5gPZ z;U@1{e)xwUFU$+fDjlP4);=bvX76xU)t+3!*A$LVuqibT`t)p1Jsq>h-pyx>kW(K# zG#p!ZBkys_8jCDPfpIxyfvpeVfb~buZLaT4^`0g_LqQwkZkUHeiK zDtDjCqIWCV63K0wPYp(nl&4ejx691`OyJ_QE%lA|dh+9)z`^U^6H#5p!kcjrBTu8& zjF>>d0JE2Pdhi(8l0vXc1s%L z9~QG><2z+QHK^fVy4zm42YcDl=6%TI;l2Y4`LS7Dq8XA7jlt7KGOwH-4LrUgCo2F%rpsi=W3mh`=^ zAyqtC7~9m`{YHJ}*UU7WXr#|qcaQlk(a|8Sek6+xR73`%-0r3KF1}2%3((TL7gYH) z49AlGROhw3;Kx%na#=-o;|9s8%t_R+2D1|nBOdBq9|u4k^33hFpd+t>Po5T=OFn;R z^J=(Mmm!4U_m$$;M6r|Dbp{^F2YRzFwWlGRBgw4Lqux$da__@OtXl2;S9G1uU%zb? zn1m*M1Wt1aWNMN}ESWW->%kOuTVWy+gkxT|NX^TLPPomha~usDoZmputljcy2-&`b zyi$C2iQ?%7v>0{y4v{F@PsYWPL<5rIy$%82q^iA~&KL-FxOW6|pYy!WNJ8cSo|z)= z>}eLKyvQec)brpKT?^fzRoQ$VVmV5C=QlXcEhoO_qBGV3gg6>p(ZH&8c*@ubONzhn zV^*K9Xr7Es3tlqg|4E)6sRe$X5o9ZXEJ&^1d@dxEJzsLJq*LU^A~vLJux)DQ_;r^T zfnwM#n0_8#RI1v7TvU@bsz`7(PhahrzM_Wz@VvpzIU)nmr4ops9sqvTR}Y- z2=&wbydVc`^P$S=EU#De0=Z2}%!V=2V-b>z^WHmm!S-vHjH4duI-4Yg>fGVI3!YHl zvu1~v?MmYvg^E76AKNXW^;R2lvT(w69p2Rgy{ypso618nx z^O&8jBkf<%4OFZ_^!17zxGvu0tD(pNE9vRl58*ALirV1WH>Uc9<{Q`t7u_ z2UyFj=$}MgJ+Pkd!(X}ndN>c|h#P%6{r?59{cjV?c}v8Dh9|QWZa^}S9+7?X_zTpk zM=4M4o{ZICQO@= z&yu%F)m@=m(r|AfA9ahm22ZyvCnHEhcBF#Zqx%6qo^!3kxHD^lP?RcDJ>cqabZvBr zrQ`lh4~`|d+i+ujxuvvN{JR2P>&c8QF%8TU<6_t4pW;c+M6u;KNv z5_=F~=7H(jE)7Y}{5a2+T(k0`Dz4}MY6!w3U0c5=Z_8y-HZONQzr_?zHyNN8J7N3l z;{HBlOMo!c{nkb505e6-Tu<*u5q0|9?x!ghQ;%JM?kGom!)-|8oJ}ja&#_xWLXET6 zFmA=9)#!_b3GMY!z`#5SgpzJ{li`*oRGIQnNl4%e=y+Dd+ong8PO(8 zDRG&lcOAYdx}7W?zz-4o%caA*8vIs=Q?G}9ZhrcW|MqMXXp!5Iitm_Z^+}q-RH6@< z$KKH_+zWRkL^Nx?A|iB$e4<%3acvds$BMhfEX_^Rs=DhzBoflPKT9d={t3{|^ER&_ zid$Wwa0UcebzYJf``^Yr5|$d{_1S*9P2z^zdoj;`Yej(gWQhXC38Y!?W{zt#?LE8x z_GEImrA245=;%Au!Y!IiA=1fJ8~`Vgie7E6`lT(1_IV#LRHrHKyaRW}ls57l&Tjmh zdj6DC^CZHm>H5>9XGcX?-uY)YrzXW{Ajq{xIFtM-#Zg&XYgM{(^O@xaRP5Z4u5vfN9;>aNSpL*KPqyB5tU~BZB>Q4x>^;(L`WNYXSK=er`s%!{4^{NM zYSru()Ym3EbyLV!!;}-rd_ycqfqHnU=K$F#=xxuhdIYbc{^k%lj=YA|Q@wu7_&3(- z-hsUCRiIGzm8WTd4CV4HCBU|vbIJlcAbKqroLUYpeD4k%3GHB2?IrY=O>=Z|k-NTX zsRzb77rGmU!QhYmI5&_I}D`#(}x9Sub^oE{#jn+YdQdZG4%&u%iqc zc@tuzf8}<12w9tUCdf`7MM%cx6GV{}a~r!GFtt zEy1Ss1fquL*`23EA6MsZxO-MNF%lOCd6F9UF9e4=?5@dC7a!9W&?*;2RXM$LHaJi$ z$CoD4THah=3#0SV_l3LPbBSRm+lCH2Ub5OJNA1b=Qg^m(^WH35 zN4*_L8h3J9S8q|>?y~_2%6)Qdw+dk+`U*k%dgLVSoqk!yL~&p$)74%ee=Ipw zdw85vqNhSI9^6|W%1g$k1RKbh+WxkO!5va<6{*`48*f_edDwQ1avx?%tG%bP-VJR<>=E(bb?3cEdD0*3p;+C0ZKx_%Jb#WyL4~a#r%EICkH3CMh-WtkJid&QDC^Q zIIF|FV-4z#x>$-*?|5}YYaVFI$95nfm0`qOf-ag&CL0}CN_fJ(pYqh71O_OcZwFLd z6lHuL`EA=@7kPxdczxhnTdYGQs=t0#nue$Z~=7aH}!e zAOD+a@IRYC@#d$7hZwi#3{4$t;(CWk`r{wHg2kJveCr&zJK792$Q?6h`xc~RDnL}d ztA>Aa;>Bs6v%b$Kb^#tNIz|Ht)QL+$gj4!R(35*&Opl2$ShiQ)Sk?# zuD8^l*KYdSzb^XJ^He|62ed!8Y;4H$qv0?V{+;`bT=T&QdXA>6$Vdb(`@+h93xmTa zGNoPqGAWS-NRq9F%G6aJ+G}(t@^2 z%iZuM@ZA;B+BymYeyB9#^`a!-@prD46s9F@)H1ooPh$Jl=%Ih4 zd0T(464Zcg+Vic(y{^1?M~^^+vD}khgH~LNwKL35s423zRt(F`nfn`5`oWv1)$ozf zTd6-V=~b?x0I^LE!1?bXsK1P#-$u!BurnEz3}Qadgc$Zc{`SdX*QA?2904{tVfP+qQiN z2@tgg|75*g@#JA+Ldblk77RDSm@#U`hd%;YIinr`j(Iw2Z8UxAm53~}%|f#F$Br!# zRLX(vhv<9x+DPR5?W#tJd9*3lr;ClbxCajtP{CnZ@2!o7;1ZomY){QF?O2^v${3nn z%|t^TV+8`hLw9JJEOi@4`T_v0rO$Q7uW;LskQ2z z-eP_E=9Icpzove@dCG6anw#o=VTs#CdVXO)ch;Cc2*~2c$X2(#lM`>tvpE3i3B_Ty z5!xP`^)9rzA;1;?x%6)Cm${&O5#>ZYD#E#LP|`-r7EXAv`~MVZeX?U&F~wu$ia=u}w=Evwb&(Q7=!& z9NhJN+dyg5eUF0wSETGb&5M^fsO1_~KtC4sG0j}{p)MQf>~guW-?QSbAuQi`1p?jp zK~c0_G;iZ?E5>rK=6i6YFa#KIGJfRVY1mkz&3 zgd=9;S+QEld%V89%K2u`j_){wgj>_QzZE;WB(h^mM(R??&K~}0FpdmGrypIboqdg! zj}C;wqdrL%_KQ`-oIifLAJKqka4f`8$5ISfA9Ew|JG4qa!cV^zGp_vo$NtunJ0tKVWWgDI+pnk2>Yo9>O8!tf5H5Dxxp12T?qvs9G@3}&tMax#Wmoe2% z_c9NOu4${40Ev89y@I69VkikcBg6oK#Wo8a2+8n=VGd(oB(50*subtYye+x9w}S$7 zH;p$zsv`bLzrgoJYy!uu{k`2IcTP-lbADftbl^|kljQCg^%CI)( z@t}Pu0t7$VnqWIx$EVZ~jzXe?Hz^`#vDQ%?9$EbO+v4nM4d4Y5^pcbD{k4{2?)>L~ zQ#5rgPzEnET35u0!iegPM0YRiaSoBUOV`(I%Gbbbr!uK43MC7=`5Yud%=&PAo?5d_ zEBdXg(oa|0>Y~|DCTkVH+`%-h2}`Z#)`f%>lBV5n9gc4y8?q&kJJvpt(&b7RZJd*J zyKP;UcF@;I zqnn#yzK)jf^~K9je(Ch;p|!Zx=%w#iCieP>%o{ZoAqA^lR=ct=zpkVt*sXWJul!pg z9_I{3e=Xy641q9ZV$)V<(~%!W#}VuH?E|vuB3^?Qudc)Z^>sb6*m~9@&D4{{f_S=0 zx)Bhr1TjE->z-)O7JpCI)vvWHpZ_P5I6Hu8Q@iisDqi-JZT@1;ZmTnQ>in*C13n$Q zblq?nYVZX*7jFYUcv$5^){59}Z|i)O;CK&?mgDIRTH69@|GC+wwrtgr zoG6*kZiTIN6*nl&nf_?&8BmMi^9hb%c6@JD5x(4C&g6!Ru-EL4`9j&F=FgIs_2hB0 zXJXXdDc55G=5z3aUFIj`@1<_wgQgpHTkZeZQv6pnrAT|~`ZYylrE|!?g~2r{dus-I z!tuPDAAqBUL>yno`bK|R*q#}ts?MdouUi-a<*&P#o!2Y>=saO1E1kNTcJrOja@w4Z zIwfnG?}n|TN9FF>ZG71YXnpNxV^SsAwUJ-C$>CjTDMf?uIn_ImI#o=ryIrg5LY%{ul8&$Bo~*4T1U{Fb~ibvu{v6Y$G< zGzA&-ZWW8=!M8roz3b$p-VvYfNoVZtSCX(jhBXuZx6A{#9HG(Vo@q+zM1ws4-K=_B z)Pc3KZs%M4~Zx9 zImPRI9*_Usj)qHDxkZ}vwh(*U3I8)+!sCc&ZgD_pP5zre!}@?2hsPh`dniH-kC9k6 ze{ODU89mLZIGw{DmgddT`u7LoX)|>8glpb^OtGDPbd<}20@c0*1^?7b^V91h{{9lS ze;HqXDd4hK{%(C&9?B~`+XLUfd~C_hyG4(`ZneH0-0rVV+W-ZQztw17m)&1yKCxCQ zMnq=Fo%X>`6Fbjgf51#2f}>H?sp%D|+Oh@M(}xPk)vz04+ggUV3xP)acCo4EYQb<_ z7m}0=iMv2l|49gE(x@%{?slN6s4?HJ)mqih*+OJxQLmSu%pa@4X-Dw7)A=mSll24y zW?UWR7%r`93tKmtF;wSGk0eLZ;qoRDraSNj(?4IvMGL3r^bd7|#J%!N$czob9^9w0 z!X;|+rqcr|o9i>Xp~EU(Suk5fpRYTfFS?uN_g`VKnTCv1_XbJJ?KAI)U-8Amt{Rd9 zf@xb5Z@RV9Wu-dZEd%Jef9$=p7gtG2wOpHXyLrLLj68J`qZS%(DjzJ32@}fy02ttt&%Z0Z+_2qe+U2>5_c%p z^2gR}0ue0D+Lu0^IM2X$H}y`xv#qgWVbjPKAE(Ddg{~!@+jc2v$Cxwy0?&uS-TS!A z*SHh;nGE-veSXs;C)E_4dja)I2Lo-RAf}J}y8zGF6=m87>;7rRQPAiut_Hy|HH$(N zofP&dOZQTh%D#PtC(P#-g+iU=VQnW%Lhf-L_{q|6C5nBjm;&nu^BG*kIqR!)Uu^x2 zWHLp}Rfr6%m3wmI@D{a0)tCapz;BQJO&k z|D81&crgdix1T?j((cSx*ugeM$J!b7kp9@sq88UKT$zfNZb7uYkkEE|TLH`yDeMas zxH7z^;hneAEZd=0<8!7_S;YFhF~C;^Pd6uBP>wjdNfU41d{R1mvR^uIecTN0B`6y2pRJ9irnR8GY~LGPVf|Mw zl+(*#HdPmiI$mN$h1FCt4f?Xu7*pnK)*b)z5B>K@Z;6B^R!da8?dQ0`JzvWHLrd1a z=6xP@;+fBsS@jyb-{_pWMJjAJgY6mL94H{PPL(=~(M$V3FVWN4LwQu^?@XF%-Md`2 zGpKHJ4{oJB36mjRon0m)>)%c8D(~29J@xo*(9ruZbYpRv1~pY8L@s}&g1dqxulLex z!h1>|Yh@RSBS=1_TU4Dj01nqdfcce@uvKS>o6k4+o3}$`Wg^B_E|%zvR!*3s3SC{(dU;hpgA~ea;RepJR9rab!<~ zYX_Okvn@%LmAq|KgmWgooIx0kr7i^bSdD2v_8$E0h3A7Il0KU*bd|w$y5#_;wHf8E zUV*>PU8D6lN83F?iEr5Bw`gBzenXLpi83zu4-=*-NtQKgp1qXs>&K#|LqC0V)wL2c z4FlBNB~@RV!-IN+;_mOybt8SHV?XSfIHlT?Vb{4JBuH$ib@W$jPv-%>{T2yHVq2GF zI6evf>nT%|G=`OjNPsq9I_JoOEIepT?>Z{pp|;mdn69&A*VvrX_^p}OPhH+xHnEW? zNJIi{f-~Qb@r_{?<7pSP(Fx9X>CJSy{g|C^$j_jFQhDpVVJ;VjU&EQ5A+|k|FxGGK zDNG&yHZmCQJ{%-~$>IX)o>&Z=VCA6b>c#hjEIAe5W@X#z8zNANgq#U;E;p0O8-BE0 zk2j?M_IW_>-pFz^x%aQ=F#i5^4P3lMD(Z0;sl#dXN?G`INay*+qcV?YZKURG=TbwS zy-a}G-zJ;q$jp{B??)pmizwhFuK)JUU-Bs~44$_T4HBCS!92h39zSC{OfLnSAwiN1 z>%bu|0x$QJK82EGzRL~HZ~z7JcYCykd6>){Ca=4Qnznx>gK{$$#fz-RxA>5k{C5tI z9&*8|`DM|}{aB~5YMqDkS1`riW4YG(hOT$X+gU;YzYI0wO2j@$?N)InP*xnKf~VdF zRRsj_d2K=~(DO@rwLPGawh!qY5m z<3oFeJJwb)X%vXQQ(E)`#^4Ct?F#6!usY}b4tNMmwYZd%U zaZ-T+kww7?UWCcjJd(6*c+Gu2+A8xA&tT9u&&j+k^$mRjkhDgY>S0YFG?+(s=*wskBt!dhfO;Q)(&e*~m#$+jjubPS#qX+Aezz(P=9XBqi?_Olb7(bIbr*sF^3!sir%eb7zS z`}56)V57o0E4*v9g9*3rM|$M0B?Iu%j|-xyEP>bXS)-yWPeW%J)`NjBGh1CILK}%iXokIR&y)oWi>`!Q{$PVprz( zn0BZ~L(uOiIXI3=cDu>hy#*A0300^Aj}0U6;x`36uS>8)$@jqFZ&!f3?US3k1?cfc z9#~4}>-j*EmrWMDa}|y~VnZ{GU;3LYazz5bE%k$Cpbpr8ScMQiQ#t(SMfGzI8HenP zm%I^0nZni|7+yl|yVR|_lfmht!5%U`sur%qPD*c^#{tr&J%z|gPS^z({O^aA{^3Kr z%sEAE+kOMKviXaiOw3CzG(*iidnXMhdrn;zhJ1gXmLU4}dg~u*Y;CiG7|C+g2Qz5p^B8ltEO9+ihOR^ zj_@@c0PV4#Y$!5q9TnWBC|{eXYvun1n6;yqJyt$1%e^gz1m2ge-m5~0$j!(uj-EZg zN1dcjy_iRupj(f{NXqhf)r5+C(zCB^eNvyBMqY_H#gGG&S?BIF0bDB5mw>NlK* z^7zV6Thn=FuGz+JcjC6-95U@FGXh~5+Z_$hRuWas8!UdFfXA1zd(3GhmJ8i%D(|&q z!FetnMV>mF*xFD!T=u*yKtk1LXMuX|9~tWL7|X(#+aI(mfijSaJ(FD9i6) z4vFpuvNK0Xw=N%4XLwVY zp~0M=@f~=)=TPm5;!Z2s)4>)Lsq(ksvQ(H?&|TE(qS#R`4f~NOhFY6i_}tR7Y3+O7 z9Z4cpkgZLZ&`azywkOiq+rGmcGkpk<#(Wi5L1Jc1E!M2xP&@2Y%bMD#zHEMXAOCZBYCHye$6}^a20FWK#J$`t8tWB;BLwe6%I70tH zHa=Gu6(rdr*Jy#1i0B2J34#$U$e1u=U+Pn}a^RLl`6Lv{0PmV=&-W+&KF z5VVc98N5tTlF6r~7fx}?(npy%XV%qAKm<;-I0g(=QX4f^NfoprNuWqd3>n|Vku$?Q1?Kus_6qa3aXGAF&zdR4!QfdlCc3yz z|5o>hNPDNbJw+#X``a1oxW);&z0M)zUx>nXmcMn;=tVG#3_P*x%i&&~4t%4U$X4>m zXy3B{Z#M2!>@JP>E6aMM5RlA6pZ(I?S7ES^Vh)AXL1KJWdSKQ=CVA3_VinkwY*)a> zS5EvN`Wi~8BifU89Fb7qq$&M1lJ#Alr}1_M&Z~EHH{(rldL>EVZrcL&+LMT78uPV_ zCAkA$gaQ7UFKhb1oL$8pm&U-K(zxxk!Yl~Xc8R6O~JCA|0^c- zzf2+l>h(};1WRw9kJB20kbIAbsuhmMkpfiU&R!hu2~K@I?9`xVi3N^d6{5ymcW&Yz zR8d!}nZFpwYLh*mY-LX7^QH{Q7}Aq|pGgaSJ0hJaN5I07WmSt<*eQG-B#IN8{YRF> z$&+}!X##tM=_iu8jRY~1OL>#s$2>O@SmyO;kCyZNGMQpx+p3g#zvHAebvoLRE=7dk z5(`-iy1##e4XWw#@mi@ZH7x+H%+AQTkI%n;_1cch^|htFXus%7&NTnr$zocM3I>UL z9^F$!dhKQ;RJ%xYW1JlIM-xV}FF~%C`zBltM6w0Eh?cZTf!-t za#eEONtKO*_VgxJtmWk!5E}l2%$FF0n@IXB7!4&My5M4nc*WG$i|O0OkmvKc%1SvU zP(BYe@(RvTE72H+?f~oV-riY;Pw^lmNpySlK{9eo5&EGp;0o(U%q&iBXS>;kbe!N* zGOqF;Nq@Rs`N%xv1d-l5MhvZi9paVO@nh+|i36atn;T?)yrz?%uPj~T5<72=wx+9@ zOUpLvEsMx+Hc!!rI`Zy6JmY)5e~kH8_HUCxtITa$cr}iyoJf>o7}xJsV#D0vGIv(X zqQ&f_e{AM3d5k|Ue5-1YlS)iBCk2wqt@v`THI2lRG=V5s+zH7U< zc&j(-_@adu?zmPrpbY@6&c(bhC9fmf+v|zo%O~#QeoyXrt`M>Axg~aD8JrXSK7NXBh{tnZ4ns<9SF`}QD~gL67ESg08ZV7?_4?OFTWlL`NAqGm{;EWPvjL={p&5877W#a{IF=DyCR zrL*u8I`XKG9=~v}q?b7;*V8x)f~+0obM*3Z0;ny2&+D=_*GS4U-q$V>*iQhvH&WZZ zLNu0Kd*+BlUbQ)W@(r+}E)4Fi+LD+#WnR2M#s849K{kwMNaTIj)CIrmxFiRzV_G5~ zGvOVf?ra6Y8Qinb#1qoD!Iynf;=864S&uUF$sKuQy2PA)|wHMM9u6n0h<0+j(!B``6@|TJ+{A6$nNy?(}Zt7CemCN zzzfKdJvC%ntoaobG`NiQUYNg*74^)b=kCZbZf*I5(%<*al-o^b9F|XJw)LOQSAII+ zE>eR3_Df~lp2Xk1kcIR3R{|cjI?3Ygnk^MS(ml8%#Fjvuzb_p&DBP`u zyjEaF^~nhjx$HJyW7xKc{xp2bwRNt|ZvCboMgvk>pKbo|SW1%1$u95JOMJ<+cT>>4 ztm1$FqPt>`DDau%r9M6I@1vaMC1iRQ|@Cu+u^L>=(v}_Fm8P&ymDlV?tS;Y+mmZUqGlrQ;RPDkGy^(0Ds&|6{wQ55W}zsK&ELyMSiLX40Yz~Y*t1Fia8jiC~oZx^`SAzq2zL& z{5`qKtLeC-tl#YJoA$tjoZ=xgwGzD>t=AcA6XotaBduK*>3WCBilE+UJ|Cia3l*`fg^D{azn zHR^ouoHNGnz3Rn1kjuTM{w;U)MQKEEf`<0@l@d?2T|l_%^!$JRlN%Zty^?nAY(Z$= zsH9Wov%UM&%Ai%6J6X+HFwp-7gB?Ij5dLlJ5pAbtVoQeNUZ?FOep6*9n}oii|8O=~ zU~t0xx(pjg2rTFgMWgMWm_%7`=m2|E%M^=YbSA*NtF^I(uh3FW`0IZvZbb{Eo0teN3 z@NYbVHs(!k-+Qzd6icXBKVrc=JR5Ql;BKjzwtu-!-dx=TfmPvRi%1YY^ERJ;L`=%}3bOfLwzLee#DUGnjirhvE99HYuNNq)iFzurI$$ z5gb7n_w7`g%EY$Er&l)k44UMsgH$Ej3-JKCw|9S)W#gNqhz(JxRZc281H%tjSZmUY z)#GM)ED($ItxN2~OV~WMtF|zkUv-Y~GkAwq`W+Yx4~opazmt>9;Qs9>n*%UIH zQvSBg|KW`Eyv{=s^GoSJVNl%da%O%A!lr>{mnM+Zv6kPGcToHn9V@bTs{-b;1)$>v z=#wuw+y^P{>$h#Ca1s~%Wwcko40ViccCkMo`RiSLUEX$KXSaaU2iT)t+wa`!*O83K z`2_2`CpAViZi_sd-dhNCTUF1ezNSEzXiy!fs|Z?T zy1Y^Cr7!?kIO-JO{2 zR3qD?{0KL@R{&BSk~7>RH%wTDO>_&K_-c%+Iqp zJtgs;HTw?7a7CdN!12~`>pWqnn1DOU2tTwC>`!@BZQS;{sUj+$zX>ij`i7B;Uee0x;dqPN&Ii<=jxL-#iTpG;2X+^qg}guLT<;vs{V zsv9k&(8p^Jc3Q<6bj~05@*vHv#+e%>0pa8#uIWI!9W{mMhwPw>OD~Y~>!Qk?$Dq!R z$rjA`1MWPVS@`h$>{ z5Xx3YrlslRzqc&Wan1eb{`b5;Ez)<*zl7-UBIi{3@%n|V z&cB@}xxQT-f0rVCdibLbDfY`_jxC9iQit>S5%bsBA1)r@zkdY*w=T@ZoWI9G%#Sk{ z2%pdnL)xx}mFV$3<8^Lmqg1-tbkXZ)U{v40BiVZH`?V$}BSNg0baP;P#H;q0(Ah}c zQdO{eD*@*ypDGB2ce^`cecLWBlQjm}wH1^kbYJp1?@B#?Z;$SKYJ3&#br&ZlX_qQF zA7FbEv|bVm=-=iSIO=gpR7%{&+A|eLt6@167Yeiaw$8dD0p;eDv3KERuj>P<=oOhT zNm^Y3H^tQby$c?fcB`J48kTLlW4ixvZv=s+_%PjV(iv%TQrRxVu=>@buHP%84slq` z0rd_THcwT)b+%X>p}PaboUNsIP_&(y+(d%h5%%B=JGPTUbuD~i2O$@O1OT1gQIRUE zCRq=%1`*QbQd7`E4o;`|$O7zN>@IP`-}d4_wWH8HV9q4Ynx<3!v>7|g+!g=dUb(`q z-QW)9gtLOI1*F+~!rZ5^sbXNhg-7j}p<$QyPknKsX3W1R%)M!bAL_AdN^}m2YQj;P zo1h|VP6JzU4Uar(_ret5g#wjId3BA@Kpds>@lTSq+BC@XSi1X}PXC?iK)3hyo?eGU zzO=5%XXz`(D|ASFGZ#uze5{|8+4}|8UY9;pCcdtq0PYe28K*#)UF@8i;PxH{`f2z) zk5dn1{J=~CxF|HwS_Bzm??RNVLh@ z+v9mOHo2dnllP_p!_`{+g6H3wJ0V~dM4d${M`eWiPSp*9<1lrW`YnV)wFs_9jHpwJ zNGi7kn9f0WYvbELoKb3|aqs-zRVl)TE{tH$3sEKQB)O?_UJIG3oLP9=@>sgp*Uoey z-E+pNbo{N|m6m<`G*k1t6nLAzjhsa7x{Ff$8~&2_bzay#L60rC(-}9F!9uxuvUS&J zj$5w8YNLHSga6}6|8Ij!RHsM&U9!U~c$#jLW$Dp#ZY>)$#uL+(IZS&i zckkI^qB?)9u!V$5pJaP#=bmdzTc)7In`<=PxXqt9A*^Qi4%H)&njh*!gX$qNRb$uhuBmvhNP9{H?0&c&cd&S6$>h+-H~6z)kI;ES(y^KD^gPT#6lC zZtW1ZEBS-AKWEHRwT6vC_e$i#TU`2CEiZ2}ATx>ldphuSIj0^6Y~ZY)$UI~Ou~QyS z+rKryeT;xN3(R`QF;S-o)7j8EO1$R0su%46-=IFZ0HLeJXr9ZPTGY0;V~7xcPcm1r zPY`y0ea383karkAHvsJ|(guceI<#@;Ja zEQKsAEofUT;2~;bi_C1=w5vY7pY!6y>{T~63K1)tSXY1N+4BB~e+yl_?RK=&VQk+Dtu~ohCI<0lhga1Ch=G3Wz)u3iMio6@>Txb-aTYy( zXFmOx(NPXuSx%*;O8WGvEm%7@ExsU|q6hMJttJG79k6-Ydv$SBr@+y}1e?s=Ek7mZ z4P*}E&t)&#-t@ zT*tel1b*W`E+(J{cXJiJ@`fot}N=V zicT?Fa@=3J(|WMLYNB_LF|R+U{4&Gzni{n#n^y5$B(HLtyVOQbgBD$K;?s5@(a+9z z&mt=lsojvCpH-=9%6~dPIWX79S5A<=NaC{|=x;Rb(S6z0sy{nFmEs)!~;fb(bP( zGo+)wZS@Gr%g(l}XPd{c$=O%QG{i-_nCUu%Q5VFC#8X%|<||a1M@87?Qwh)VEIxkk zoO)%Zma*V``p*lLp{lN*?R2nnr=sZE<}OvvD>`};K5n;4q1US98!?3K{jh_mU%Xp* z=S#uQDrTV2Q;RHVFW#kJ`|lbFC3nGUMBAQ^42P7iWd02o&G)vP!9-m>_mbpEz_%Up z`D3lXPrYOVzH}&HU=u3MxqhD#yOpt^vy|KWm9Er+5~F<3M9o`OKC^7MSm`xJ5{K#r zKYtPQN7CKzd#FNwm(nNMGEWer9eT1+uA*1xeGpzzrLq zPmQ+4>{06?=ja}3r8QO!Go6R_R*vo7gR0pvZhhE}0gB!>4qnY@UZT#7t2-9;we_7h zhEc9zg6EqTnxcH4s(LT<0GqE$BIXo*g0C~1?!rh)rLczI; zUpD+>FNx-m`T7AfXr8Dx;*XB#My-)uU8m3iUZ@fUrM1d@O`5`^5dg)nwW4HH+cU58 z4+!s03OVh4@)#KxYS+LDEt(javH701oywHX>B)4kBIfuCk6<jn(F)!o9Qfp!%y1E(LdH+N4fDI;|<}`0w2GYb_VNopV^8%7(4%-Sec) z?M|vEaMuY(~=fY$3CinxzRko^(5ugm@gb*VqU>A z0|SDZ6A1rx zBXtp=%^d~b5X#1Vr3eE?>unb<;gnaPI&&NU5UEV}MsV(wsbxo~?qUbj)-|3WYp&_4 z5NBjS{#_*6NYXvrvVZtF`>A%rPaX84`pjOMQoGYB%eW{Srhg*uS+*E{{mo^?sUD6v zJpsN;@re6JwV2xj3rLpTTDeV<9l!j!PXE}Bwa^9T`7oE6zwBv6r%a8DrS>Fv>Af76 z$R>qmPKK?dOeu+ts@;q)o5KE|t=xYbMv_#K$y1SY8nhE?e)|{GaO&=-teNtJFss~PaQ#1byp$cvMqw%mI1>yB8f2Pg>(Vs!s9DXTs&Zp`DAyoIb&dDr(ny+fGz zce6;DT9eo=X`<&NZayzddD}sLsvk}|^Q22_nXIM1?*ht#MK@w;ZNl1OCZ;}Q0(v1D_e~N_KUnenfH)h+u7WhJ9T#>t1rVN{H)Ajao=2So;M1>Y+2cvzBIds>j%q_!W9tkzh9G!a*)cb?RE^WSqJX#;EFvTGF?SZqfx}QaZTw_X-n$ke{kx0#Hf35lWmMRav7s=vV zLbW?rB@}J3MpMbP0E%UP)VwD;S7UTU9b#(XU%viUs>i=Peeoh@7&5h9SJV(91K6SV>ftl-yt45o?fBv7 zkqff35NUYosjvp#Lh1cuF2t-kRq>n};p9~^gcARWaf6Sn&bB&~2`EfgmX8 zjY)YgpRR?VDf=b)?`hMGdE~V*zWse&dItREU-XBLBS|Rbm=6+IkPBAS76UV_T{!_Tzd z@Q1A4>ZwOT$05q%-pSuA+E4NA1PbW?Ph#V)D^z{;8+76ddzk7;JdMou#;B5jRq>G^vDsX3nt?dAu= z;;79THTDA}GjCmD!piS3my=R{nwEF@F}hzrjJW)Bg1}af?#V~A2%$Tz?oZhmxvvtUqt~ewtY!x#D%skuNV3gRc{05D)TDM7cEVX}h z53X^$J}XAA0M@KdkoT|pM9y_Bb({rl}(-RvtlRsBwR_sr|(X_9JJ(dlQV zNzouKYdL#0?-FUvVpae3NZt2v$(i8ii@0k?ORuRwdo%SLvU|t*J57Tj~UZ zom*_=56HcJ38a5lql0I^&Pd{kqlwWsq!WvfgMRC(sh)sP>ZT0qpSqOfJ!3+UNx&mq z9!mOs4edTH%a6Sp9h;oOJm^(r1akV=mRyT9K|P$40!}!QYoi_Yirn{ODw$;WID3>L zeqsURWk=vC+OMQ(3vHaou9irP#F-oXU|xlCb7V6}IU&=Gg8b}Bp^l>oEALI>?hwLu{D5#s#+Xkbs(X0JS*E-M zH$Th5Hv)D^q=sa3f%rD+H&4tB7qplJc7_Vr3cD!%KvlFTdQuFqYVZ$geYuA-B*7q=cKu1YJBm!_2fN;jBxF~&sq1H zS_wL5LqkK#R$;6{P4Pjqi)w#LG*?nfvBBzz>LpRmQ2g(ma63&d<&OM8hi^R?yi0Q! zE#DBbmIMlr7t}<)^;vTdAtsnnOi##=>(MYzqg2Mj@7kVmU*w~LHrt&yqORsp5V7z0 zM6b2w9?BIo#Rdg=uCmikM9bnUN4mN@hFkz7d7kpK!S5(!`K>}h2x`1l&^8hTXZJ_Q zY0tRuq?29ciFCW2GdFU9x$RCd+1|dW(%vV{ZWT7pwTK$>2%+bMX+5w?r-a z`7?9AazF0fC39}(5iifbhOr&a^GW#8j|8h-O>zl<_1FzOpG{AOWz_(^-~guP+8+>sJAs(CDL6M+{@ps zc^*_&`oxx=Mbc|)fSs$aJ&bsYhm3IGjqWW07e6wN$U${3%MW5l=Bo6qhE4^SpGMjr zB+0*D;kfO2mKO%kpE&1UXcEJ6E?Mr)-BedzpYv2JG~Hee``*t7vsZrJ-efXskYd*v z55>Fx0I(ywdbRI6QMBdpFuE7e5Po4d#k_IXeC5sE)9!d9A>DNnE9Czdu#oPzdDvGK&iUK;5; zixw83sbBWm5(vhT8X`8t$f)PpM88d2BtyB>2j&Xl+eD~T%RQ?D`6DY#T&D7s&{m^Hl%V=;3G(yE{~>W-AX6b_sE%GDy+rb`esQ z%T6iL+OhSrT35bXWv`*Q41^8~0>|$?Tgd(0fy1DTdQ!)OoZNI_St0 z0%gSF?naVRdXNF_RayJGW<8is^w8DqL{IyA>18t4WPy2(j%0)+n5cWF0-e2&D2saj zA;v55z>6K#lFQU%%R%q7@bh(4CW+&eiCKf(eGhzdp9F&RE}XaRt>p{@m@kuPdAGTYubNB;M7{Z1Kkd>Z~+R7hV5QYi&0{Z z=?*Hm_X@DoD4Z_6T)M&8a%H&ZB#)1)uvVv zcL}1)Z%TDYA{CBZLnfeWB{|#vrHuhVUI0rNnXrJ$GdTy~R6Lgr@ZN%pLNQv>M`*D2 zuHJDz`bJq~=x^H%zTPoBIcv5iR#$Hw$zGZA$5f^x(`7iFIB+NOSVuq7Rhs-6t1flu zYff|~o_Aj%ID1~!Me1@n-HzU1aTOg)@byPIqC=je0ZiDF{Gtv9NuY-b74dS715EY@ zsW04Ky(kUW=pC0hQoEujUiNVIWQX=TFKr)V!)Dst94N#=^9=3COj`$Rog~thiw3K2 zPsNpQBRYK#AGVevPY~wwVVv_`-!+bk7M59BF!x<&?`K@Y=sZNkb%=oTD(2pP><2t% z9=9m27ryacB3T3yLRphGso-sWCf1jxdik4OnP`dg$m1v~ybT)m(8$2v)@-)g2RkpQ zBzZaIRynozP#PJ|c&+aqDk=L@ZU>axQCbh3DOi(D{7LNCUIcarzHF20vUtv-3aWHF zv{2KlO%fSl(KG*D6=72WW*?Ujg10)|P(J3JdLsK-ns|juTBj&s zh*a+XOE#%R5^anBZv@yc&W$b|o-l=JRTd$)n;2;2+8{MxViPg=V&vow=nnLGk3?#3 zMsR9)a||0ql(%+Y6DKhoOaX>0*-%q&`spM(-kl9_9YM2+Phygyd7>KsnVt1l^W-vQ{j#Wd>>WBBqm2Z>DZ)#y9gR zOu5bOsgJnlFNmrcyN;$-Cit!pgH*F zrAe4YeRz-fwqBxzYU*&M$m}}wHFS1m?&z+zbb3V|cQ-bC!2ImzwSW|F?c5S`KZU^w zL6Vq_cC81G@-DqvJj1qYYMTfAMospu<}k53cIg&Ws&ecw%pj6KML1=zJeh7zd$ za(Q1}yCHjH?$J;^EBkyp)!R4*k<9d_&aRWd=65}{zqJaMS0W7kQ~b8zdSt?|rUcj5 zS>h5XUeYAC_v{IL(U;Ccq7on$s;90Pnz=}y#2QsO+@6%!ji`lXt##$pjSGLylO)LY z?3y13ND%}_eU5w${75idwP3iZM`7GvZ$ulIKVRM{{HoWz#~h!*u4=WfLh&$9!lHD&?~`bYtYiS+}gaDd@$8 zvl;l-A58fCyejF%pY9){Ki%#Bh`DMy5=H!#-dSE$eWUo~&SX8x%h~H$dY;j0A>-`u za^;BO;G6eS(&Jjd$Nzj-6x*c`kMyYoZ=ZC{S)H$PO1~qR;(DL4H(d!6zQk^J<@t`1 zI#;%xcs;*waAykTJN){Jflhk!_7TwbN?|!f0}DH|qOM1H6mG$eAKJ`D%=cyCpd1iw zfL(2fs6AUDO)^Dl{`tLjv=6Ss|`B&v{)XEiQDb}ODs9x^ktK1ZMt@L8;;%7 z(^K`aigx|R!-B#LLdoCSY!_J=ojZ|C`>pJFQ?|;v>K5XKQ;-aD)g&z?zeHz7qe2f& zUsr&oQ4TnhdBx^;t%K#{n@RLA(W_x&TUI{MbEpo5xf+sAD7*7$pHjK&t_I;LBp^}X zt!m}kn&bZ_@HyX}P~i(tWakFCTQ6DOTB}@L*ZRLRmj36jsxO4>gV<-X6l43 zD|g>PHuaV3ZJlyj_8v%wty15CRd17)>4CRaOUlKd0K;uN8;d*rC9;|)Bw?$y+Bt)+ zT;}85_h!5gad3VlKcS4E)`wbZvsuo2Xvy8oMZ9bq3^&PJWx20!^nZuUAED57{&2gn zZ^ON_FD2&$B>(ap9Zz$0vWu1Fl5r!|Q> z%<8Qssj)x+lpPjL^`&2pZ4`Eo5l>MN$7Mp=r;t6{bi^AYm+K7mc|EFDWxAD1BfWB+ z?p-BlcDV$2Hjhz(LjMz^-OZ52J0fAJwFh$XE+h@XoBc1N?3sTLlIX3QufTpTa?_Vg zscn}maeZw27jV^%K+}5*-7Al08&D})Z}F%oclCRp^F7*u4Uwg%@NAppuFX!s&bgBz z6S>8UX~A8E6k)~^YXV>p-IQMuw+Qo5RiD8B^v|`iWP{7oBOOnWv ziJ0f9UL6lNGM~F;^aoG+_slM^2 zc_`O*rl#6rz-2itnXRd~$kzyIR3b+W5`vnP5unXPf2=Qq;Hrnq^@e5XQuzhQ>^K8C zeXFZv3-;D{lBl;Jfb!P?I0*Uk4c8-|!Fd&jInU_XkhSZV6l|h3_3Y7)RXUH$&5P8y z^qt!ocKiIlXYb#>d4J%i+fAQe>AX_L&m8!664hqOtQqBm^-Dp#>ll)mJlDdB-d>Hf z7Cu=_gfU&cAg6p#&dqH4sxtgZZ}f@{oExy!mJlz*37eVz`@`#mT1w}C!(cY~D!0Ol z3A|+hR&F-JvqeY!Xb76zRLT+6%@G_$9l8hrqDj2(495F{W18eOqt|*Biv3f~sR4+$y#LDR}rS z-zbDSTx7L^%)Rh7_C*W^8|0vK;jSBk_5Ko=-d!ML(Nu?P>SKU;J*+D$5Mr*F*EZN{ z@a~lI=Lx{jzZmXGdw8h?ZHGWGj;8ue&ghh6mO>Jx`tb(rD8L{Q8*QXD-xCww24vqy z9bnAda#!$bU7df&1G4;LoyoTx3;8I8G!ZW7^>&?vCI@Hv_<`HEUPV8WbSlIrC~s^!g{(P&$6j`&}j7<#EcGJ^~;p8qfPBo@P!#@s~U ztYycUngkL^o!jS2W)N#eD!`%T%J#*WdQ$Em-R!(OEEcWfb#^@v2Gzxmj=NdZ7Yh0< zJXYM7cP(msGpOBqM!hbDq`XP4GTT)S5!%)&w3ZS~_IhB#9;RyT@_Fa-JVUrP&8ar= z&AL$T4JozGuAMm_`$s#tT+wZPa zoTunuRE~;b`Du4C8Nf%LcXg>t<%^O;=FLGAE*rNh&x0*%kYjXqdmYk|Idf& zn7_22`|@d?If0E<&T0&u_V7frghG2;6SIX2^QKpyU!X?qBo5ESQk42u&n}(Llwxp6 zYxb1wkWLkDO>`nxSB)W=$R=2U0K7g)*kT8SeKsll()G(f6$ZiopEa*yzIAp4y4N@C znpTu3oagcgTA*p7@~Z0X_V{7Ya;j=uD1^n{oUCLr?Mhml=dS%9$@0R=y@1npn!#25 z8eXs9hjhDV5ng6KYo&0)NL^j*xlmGW*`duR*9%AtwCCTIX5qOg+I?3?C>xrn_A7kn zILkfdS*27QuT{64QkuOwpfx3(pK1!uSFlE{`0U~4IsXQ}C4@P8U_bf%nRVfItB;71 z>!qP_ay~t@1nh@Q7Lm@Vv0c;Y6m4wTBCCT~yP3dxjd52FW8kbphk>@ba{^LgzAD8i zk75V6F7{MY+X5VR2LLfR+&c*R4`Cm!9kO$Dx_80l+x^W1~GEC6eOaXBV*d8o|>K9VU}v{gzku0FzDqhBmYq})Qah* z+(N3LA?_x!E7U)x6GZ=IL#Cl+k98|B22cs!>^=p zV%e;BrOlJ@`}x=XlJ!;J9WU4!k+yt@5-gTMXR0sDN*u|Gm8RaG!(UcU#vXkza;+I8 z5_9*ty4{jkk3-Z`yTKTxm+Y4w9K(9(#K06Yt7&Yt>_#JShzSlX@b5o{TYo6fj~&vs zmL-0AStx>ke+1MyUfrCaEA68DJWQrjFhF-hxcXP;P3D4pDZrXCk`qcpaz*F%l!;iH zbImq#;QPFFA%PXEsZIJuPcE9C_VQc=HhR?+sa8sd_5{1q?V}43HZ9z#cdTTz zDPH#ibj+qYG7F?k|J`OEuM`jk)jX1Sm5OSmX=2TB_Lhj4W124zrZABo%={2kUSaq3aKT8=aTR)!JXHtXK~z$xE(U!#F zI{ZE6TFDlq?LPDPUq5u&h6wX|n+!P`>#*racyhuqm-g7NWG%MB#KnridVu-{@9>CV z1xjjN!0bRR-rnhA+Ug9{Z;!-b{&Una%Zw&^GE0=To)-W}WSe+JG`e*U;3#&2-mkQl zs(-nx!KdEYVM3}OaP!<;+ZI3R-OdXa@S7aD+p?gQr^K>Gzq|Q0FIw*u_Idp2LM(t9 zsaM4`_cnmny%cHZ$#b`_+0{v0UH{KNwf9Hq3^R8%VX2kfEd@Xu`DC)%u56?yzNEvp zs4e0+jj;W}Unn7ZP~S?KbLnN8;3Gjp^K%h7-!iJZENlL`QwK{2@%-Ii-~Wn^BIDPH zQU1?A4GttX3SV}G+NiGp;9pj z1p3w~3OZ6ookFt&&O0Z(W}CuZF%SB&B@1?Ye3r;FdL{Id7}_i7EbxZA5`@gQvyJaRNFzrhcq$fnzP z!@;U;?!8H<);-a!)LwEAiyXu67K7Eku()hPwKpnn-8#WEdNqXC+9ZC7UHb&WQ~lj0 zJN3_9j6!oIz5e3mhlj?ZjK@k>)M3)x%!b2T{(p7YIQJj!4-XTGTlppo-;JWz92WH{ z0Ta!{^zcSB@aQ^Ux(x~KZaqn;MOU}^J$2Y~bVz_Je9r?nP0?0Bde*ge^o-dAnWa$= zn_m?!odo-?d#ybig5;M(zLm>YH!X)uq+T)Reo<35m^DdQ%hx6b`@fXkS+X44wVdk~ zffjYq0QJ91cYGdOW|uU0Zqtzt^*{(%D>GuwQMmukI{)zcZg-uROiMilDdFRh(13!F zz*U-iQh5VeQ@(-Zv^>I7q&0O~nWe0@KbVx3d*Byct|WqmLsy6MBvNFvS0cYE0}}8? zDU6iT-q8h}S_ad~h*CsNp4;gj{jT?EXx+qzbT%KzdZ~r_pCl-9xj!*%y)|TG>h8zx z4m##;6RUai*p59HIq)n0aX$7r1dlIP;;yUlc~9;m%2V3=e(n0N=k^1WB*d-%s)!0S zee036K|$6elgx!b4c$Y2Sbx=HlQ_L%sw_>DP8z-ng%=Lmq-CJIYN5HF9nR$E(tZk1IkuR%Rni&>(Hhw?Ch zymrzY5%Y+Hqqgg*!tjHhNBX&r;d&2BgOqMdvt4-MH#{`^vvT3OmZ$Sy$hd=%E7cPP z@dg(oNv+MMUpZzOt!@^gy$$0ll1`{v*b6x+J>vEzsNu0D=+jOXU}_YSuanuTmZ#cH znhsd=`W)YONSnDruj3>hzDsZx#rC-VC){Y@qSF)6CW+<} z-orZ!9gA%eBWGldSs2o>KFABh609qk zEk2|J4RGIgu1OCk#M2Wx&_9QR4TOWsV zS$cvZt0oQSaiFKPI*D454AB%xRoJcY?2~Ka2WWoUf`vdfaGjlqp`%IkJXBZGF}svU zJ2o%L7L-pHq0%5N0s7i_l&53a!*693e4%G+sp|H6xuyBg>QF*%(4+g%r1WjxT%}Xl z`&B_C+dVEJL}4(WOA*qAWq%5}e18E=aW#%L1tGtDt3F?|Ib;5l6|A*RYR)VC8~U9- zBG+-gnSwETG)tthA-drM)$$`ZVM>{xDyK%>%H}46i-gQROJW;)U1?tYZY7i7W4`kJTtJbBxY zEVoodpa{r6bCFRfHOq=!?x#)4j;No_H_Js(TG^XK=?pS%w;_}66M zYWnfHo)A7)_oum9sVLqgxV$u0(^Gck->qQVl(}lo$`E|%VCR@Q+T?Ju%a`29~?;fqyJ1H7<#Zw*ou zE1NMkGjKss2W|u4Xs7vTgi6?{hc+DzrpjG!cd@jU+wi{bCmv81Xt=37>f#5Z6&pPOydg4kB&_Za_zVl2D%=aQ^ ztVP&AyhVjtpYZ_B&kOtpOLFx)bC)~+^DP!l;bq@@+H=%0@W1f>TJopAs^K)}Co??=R{&at5Xso5y=^VmCw`BI>> zMs25T|G8Y%UvzemG^}W)Zb$hD{-2x#Mn^UqK-oh6Wo0>3#>M5S` zg)8L@^`WJ}EYsx~)gQPvX4I_$w{)gUGaM->!6nDqJR5Pk$hof=O=|)3ojY=Yo^d`O z8TJO!yL7Gk{*hzyv6E4@Dhu^yUS^S}GNvmIat)Oep?3cCQ&aL{hL~ePuiR+%S#cNx zTHro=iG|KD`bhgV7Jq(>yCKdDJWf%(ebJlkoF`}=kFBT7%muYE8({D3|AT7y*SPL| zRh@03<=#I3mU#9mHCQ=*n9PMq8wy*DHQ_C!(oMc?<8qgNT?u5=E}Y?Z0oUJNP6e6o z{NDskwAzud{7CpTG+>xdst}Z;RJfuqXm5$k=s;VTrK>Eku8^m-vun|V ztd%c7S+o%cqvkK&U2-ROHQHf&?$$Wqnm$Jmnz03yPwsH1Xj7KwD%KJo+)e>XQXP(8 z)8^2e-oP#MQm*wy(o|k5+Kd`IxJ(&3-Nym;xK!ibYZS%Ve_?Xe(sl_mf&t|lXZ%po z&kuGd0CKHaHd~ylh`=nbTPL0a7y&)61`zeDS6IE9MKU99g|E$r8mp4A!d`KfVnsY= z_O`M-Dg_1*A(Jo`ggWWvtzMFjl1sk+3MStViSksp#cGqSk>20h0sXkGAGd_UMzEa? zZ~N-4Oey13r|shi50{Vhx;a4G6|g4H`XZ28dndRb5e^~s2iVYFWvF~ay(@b2S|FYz zUVaH9r?c%?uH?U&_8nsTDpKL=VhJkrNp(Eo;E2nSdZb4hO9!OLSER2$w4xrh{4wL2 z%9(f)m-u+dua=VQxSzwBo$RLjZqE?5!7{IcP)9@*K>ECzx}Cq$8`#Eltp0}@;u0Lw$x2HE z6{{G`y+uQ0mj2|B-{v4(8==(IG5^@XnCfHed5DJ0>xol-nlALAS)zM|_nw^&jWVFf ze3ML7P!xVR>%gqAZbe;1lEMW_tIA|4!JI`X&RzjYOdO4GMP6_J1{irY`?ZZYG z;tt&ECRg#jhe>2l-BY^4YqyIbn7u2;lqAT)*JxyKlU%Yw8P*5cYy#W66rLq*{+|RO zH$943>IDKH&}UD$AYO(I-&A>`$;x*{^*OiR{H=3OHd1_`?T##e5wCfdfIiF(J0srH zmC&p1eHE2LGgHx$WMK2U(CX7&RTnhiO<-dhjw0a-_h_}% z{ss&&i@EuFk75kT`kEqaS(C?AMw5|$*bGo(J{&*QZYa9POkMH2wv!H_NF4fAe!;42+f7}_&msX6j3o2eUq40N?p?%`%c zGX&hJ{j3O@7+yUh_V^{nRWxm76~!>~?4e)G&AFBNU5v1F(Nh8k=FpQD5kAi^`>(L~ z!ad6E8?fG0Anh5{TaLw2v2Nu(Oh;yw^GZXhj)cU4v$l((d~;IN68Ql9e&q+s;c3P1 zyzl~IxM7zbQg8TVx=7l8_AGD@CFtJ1a;)|C=#1|C23tlJYfp%@zx!iaE=735Wo#%q zB?O4z+s3=rd(sbhv+in>$FSo0WrHvVXtnQjxhI6q{CsU;pG_q$6^|rPY;6^h+*#i6 z^0x}_q$LnBsf2jyySFQ!Jw!sORSx;g$_A)Wj8QrQYRlQ&qGU#Hl;9kcVU_k0F9Lhg^L zQ|G{KV--7TVFzM@I}%~hfWy#R!R!@@lROEgX}IaL_H}l<^K^$JM}qPH|6~6)p1iUy zHLM`lYWp=D5ND0&7(KmCi)ikkg{J~L+X#h_^LQh*6z5qJCzr?po@bfIVM@O`n3qW^ z1N<^MSlak(e++Gy<(SNVglgR|Y}A{#aYXq%?tsKorQc7ay?(>->J#ep}!^3Tsp-i3UQ8$s1`JoTx^$;tCdj9H&5eqOBr9`rh42_4j) z1a?}#dA_GGsQ;)91r_S~;Tqd2&Y=_a3@cP^rj9(0d^7Q%x8YM_7nb~zeutiVbJ{s( z)&&Js#hLSoIZzny*kg~nnLYyE%(H%MWiI_ExM+IzXwc94p04xgUJq=#l&v!Sb)8tj z%Ffc=uHD;lNBF*a+@J1JUsscsU3d97N!!R7{D&f8p5&w8Yg0$e_j-PY=8LwqJ(@{B zp@=iktb+q<>A5`#t>pZ*OI>u?#-$8T(dwWxGuZhXi8*_M+Z2RTMr#Hce`>rfQrBv~ zhY;FCN}3;(+_2{$16uvKs0Z1#qoSHuqIKr1{d7+c3Uogn5<(-NbUDhW=9`zVC6?La zdlw%|Fa}dxYC}*=_S!hi52a_ItXTR#Ixm5F=f%)K#ZU|VC14gV3UJ`^qrulXk8LU(bra_E)A1#jQs4%>qgt*VQerd=0gi5d%~1ut2PH*4*aqI3BO zS5yByeHOQoB4e|>e#-7n@ZVjMA?NJsUzd!Jaa8Ja(hxf8LHT^0Sv`Uq$!pNH^RebGjmRk(J4 z!i<_9>VUK+FR#_n0;Dvp(PwC_Yo?19|1_W=!)=4V5Lu_XTV-yDj%klLkpL-@f_Cj$ zL1*NIw05y2{g`D4dff8H6z-0;b`9&tTzx5w%$#mgUyn>Mk*exzDh|sKLhe*yS?2?0 zWtd}dk$clG`W0t8;K=z)pBkf+3z^qiZjZ0FT^|=%hC9+E=q_7{Z@)E#KD!)zOQuszQEMzMEq;N>#+(j+p<_`!a`=dQ(`QS%ACNJE*bb< zmOlGl@Lei`)l_W7sK;vgk?RFyFfGm8UuRv+%ef-|*&-}y@yiQpr=~OHkF9T_X*L}q zb8AVW@94`l^2iIAw>MCR(L^fK+Y>NQP^g}zevsZ`EqHsn)e z)EWa-11OI5ww{HuR*rxTt-kAbbq6;ClGTcqNXiPO4r8&==K9~~DWa>X zjvrqV*>)0sYNJ7jbj`QLPfu{)805FprJ(3{rN&OkS-}8&L6npBio+zTbnPn zo?1f4)B$*Pcg>Pytr6}W$w-GTKoE$g*SrZ&Y@geihf$Nq{!^DZ8^j_Ig&2#fwK;h` zwnRO%2>s|+roV#+-Uw8ij}pOqDvBw|p84wgD=(%lt6(d?PGPdAR2NF#UaMx)$*c&B z%A@r@K^elD`6r*kxLE~@OGng2ljig)Yv&(4lmeYL1t_s3wp6{+9PVmKzMUf=+#hB? zEL_g%`5qcyX|=E9sM-VfTr0~*xU5{cn1H89?Tw}SUDbo6(KPS?vi^h=wK*?;EM6X2 zMWBHMLG4$#SFWRtAolMfSD&qRm`icK1S;%Wbk6@QQ<8a(&Q7Hg^l30=k6vDuOij~M zE?YbX_0?lIdLioPojJQ&h~Qhai6QsV1>aljYHtD>_Wn)HJ3{?MID53FM7za}d8_M8 zx+((Fgo}oMKEFb=^Wnl->+)#Q>f9OvSIHwIo(7~ZGf@;`9|+g8oeFVjnd?&C^l)L7 zn#V|s@51V-m~;Cp?&p1;*6QgQE|+UhuO`EL>)+RufO1yXLp=S}IN8^expgMkPt|}4 znXvrw+}%qjhH(B7!75|l()R_!IxpY;h4%dz8JsSw`9(Kb7*+dov1UZc{RWF#XFHD^ z_Di3;7jMR=!ufVWQu}^fk`k&=KFBThzbn*2WH}PnX@(_XuA7uRLi;~3(>gTQYrI*K z5nZ*(uh%_W-hEAKSfz2wn$2=+ZirfX(s0hfi&JjX-uj8nG&-QEgFL0R!aV7Euz7i= z{jS2o`;CA~>!Zm40GtmEgEuT##z7;oN6(wIuilGb!ySHPV2 z)9w17+vyGe+VHV9rb|-zl7#Eptz+c*k$@z211q6+H3X2s!}8*0*lk1q%)t-ndyh%g zQ_o-aM7fH<-NdUG_mrJ+vR~UjxNS+4nA>4qnp%V)x5#0C<+|1wj%m(qlAl82YJ zLs=$GXl~U1{viH!D!C&3%NZiStck*VxbWt{2dhBmpXN`9XTOuoTPGt6Ay~!=Yuytp zQI#PTpcEg~wmXHb5u9PszOJ>TfvuZ7RvXzioOmqa+y#j;TUC%j7AhT~PG9Y#u_|Snw7Nv=`dqcJ`cK4#<@xg$fs- z7n&1A&gRzFm$It~J88SG?nu~UhKDEfB=veIod2CyBCwctQzYy53!%(hy}jN#GZU)J zblZFi{B4oji&(jIYTi7%FG=JBw%d*;YkcatCBa*zcnL||WwPx=Id>P~gO5IQnZz;L zZvJ&z2X!^>@!Xr8Z6srS=X|pczq)P~esrN}GBWC9h4})eqPBg%nX2lq%Gb2>E5g9k z3e2;ySs^Zz7j>{eS4-7rX;G3}62){L$(=-KT6zfR9JF5ez{H^GDW6)*7yY z+Hd`lW`|lRJV{hW%mQuH0*pIv%=Cu*2lauASmm7FmX7&t-N+n(H?#9x*(*L#S76I} zr=(#V(@gfpR6D!$5+ZMBes>A$nJv}h zp?s3O*UB8xF2{MHwC>ft0zLPDjewFix=Dhk5HlWOr&PV|^R@6_ILnAPYv;W@hcIb2 zx%p<7PA!q0!sTF*>lV| zk?yNP*M#bc5P!40Z80R$i*|?RmY=L0Hl~C~2dd_$>Jv|^*ms}zMibXGW5Vye32C=W zV~*Lk#GlC7M(5MZw@avnf$dv(q@T<3Wy+XWtH6%GN9dH~=^#8CeCZPh&$DK;-adJ2O(@0#qSz)7K38ukXd2hlUTRSUm zj)DD0O-BBTFp=8fsvCqi0Xy^P7$|OkpZwyVBC_~j9qo@*m0ET#N!?auB}ir4ZHYA# zy$noT(k|&O%e%Uv{z86VD=324X6QZbr(fQrj+a+yr3epayq=H&mhaCE{B8TyulYnE zDD$E?UD~!MTshl_le+KiPEqK#(*-mSO3O>#@U>Q`1nRRA))W}&hQ%~x4bM+QWOyS8jvHg5M03ia$sWGvcQzKBD=f`Nc&ncQc@EK-Z^ z+Rt|Q$xKt$Btq0C45sFTDDOQUYDt>iRGt^V)>FMb7X{?}5(yQrywMfY04X|e!&NJ6 z@0DpO@e(F&Un&PyV)8#fVOtE4A@KviP)sYEr8b=)~=$Y|fXJv@|nKPfVS2~m4lpl}PAPW!A@7qcaMT$4R)09D(aUOH6l!qM zUq|=xMh<~>vvyV?x4{z^i#x5#sx3R=htExxUZ=?(`DQhm8^2RW_-+8h_*OB3)asdC znClEMs}G@krHO@Fk5o0a@Bvj~E;wYk*Xq-XirPm!$`qkJbdTKrB0HJa;;3&A=hqfB zn#!_eEzaSvGv&@_$kotj&`5bnnKMDJRyhHm5-;dU64dZxRPl2oWmtkYuZ z)Hej%RfSYhC~%y)ORPT2ZZrj6Wbi^Z;St)jWXDr`o)^gi(7C?Rdz6&sdu&cUGgo$3 zQtt_E+gwQ9e5w~O=`Hm>haIJ=V6G}xa8~iaxyvELt9MRd7+mE~g35d1#(cDMoL+e0 z`2X$WfH8fOxp=fgKRu^#h&iX{wzeIwtwJh0sh#(BbWO*`N~_ge2s_F-otuyY2ioBV zTj&m^IhG_s09v&kF?@M+&#$3VCn#_jZ~G0y?4_>POoDMt4uzZaP!+F0{6i$v zm0%JSFG1Iffmffnd>H4GWkZ0>@>J2cU_SV(vx;PF5HGoydx%uknaw+R zbMPC$H361cIwPL(%fl&Ev#vy!z)p~TmAPeF0=5I|fZYhL!#Gx11!&h>U^mqe;Z}Nu zLPY=CVcil?PE!JpXa&J?nUM9*moTkdty=WGOB7beUbk?P8SKiZeGuec&-@c?=5ZH3 zI-q(=8yzP6;xcaRBK3oO$80D+V!eIct0JV88f~V!XF=t4!LTl>o8;Bo4aURE5L(Ok zC6sen@AD&ecdM8jQiweSp7L*Aatfd^u*uiIZ`;kn{F-X7 zhZgH9Sfw3EaajVUkmIjCt$uEgguZ|q-Mtf>x@YIyCj-B(5{{KaWI8gr7eQ9Gt*=q! zy7)qGqTq6$%D%ydo^na5POaY=q`oQ8ZKKiS)h+?u-x?n;t>T2KK@1oHQfqcvL|}^m z-pw6dGsGzsre-;((O`&_J0QI|B9oOgbHqwp0h5s4Wcjt?*QuR3_)<8(F&LGT2iO-i=Do_JKMFT z50R>M&8y%PR=L#IgSTqL}Aln5JW0`mec36p+m9^eY@1r<4hlkbsQns{eAy zX6O@3H~75W;KFn}f7P8EzI+~rm2ZUWyrgZ(fkul(F>l;kP_vGx#YE8gKOb_ZLd?@R z?cSPAb>X9C%5wxU$f&N}XorPq5n+=Pw%f6E(l+>VwXRN3I)YZX!D61ZZV$mje)c&z2qNty=4oELdNSez6+s;_gXvRT!@iy05!gS|}!9+q_y|1-g=u^>JKW#^) z!BBY5^Thnyp?}iPlilGaR(yUGo7T_N2ZSD#mBWWT(^djg94;dStyNQ?^it6L6XDKr^3{EPac&RnK;a@-%m!}zP) zJ813|LWNtdUJkdtH@x!#qfk{IASOGh?R>gb2gEg=zY79U)7p$3A_?ZhvrJe1biWwW z=_x2DZ%&=epn1K)Et$%fS8xd*SA>u%yc*l>Oz8nmbh74%RU6R(&v|Y}+VD#|TYO2#>0g%W#oX@xAyTQNt*^V???JD|o_Vbxg zp)`c`v{z(4P?_GA_Jes~rR<5ezbn*Cp7{a`=BP1@t!FBCwxD$G@LDyXdCwg2c|_{>PV2|TmrSD?j)Zoi;6dED3#c~kn?;-kumR$KZ35&pf`+iT^(8a- z{gW6RZrkp@0Wp+rD`ts-n{0f)TM4~dRBCi+rS?pvNF!G;WZ%v4CK3FO3gN%Lg?}AR z9&vz~SDbs#ts%i>*+bA0mDqk@no6IOL!cW&tP#&6vxDvF?Qi167k2a=G^JiSq`&gh zpN~#jn{HN2*~*-3KR$Fu&15>sGVOeE|E)|;*r;;0dsgSBqm?o7yy~=i4s2B>oW~}l zq87q)P@os^CUyWafs5Z^?vykV^~(}$trYg*RivW7MX3Wa)aBK4%$}*_Z0vtzo3UJw z=&MUGDeGS8fLgNo03@u(wvFkWdzLs$-JM=qRW%OI-H#|A_tHj+6ckkb+~SWiTwo{s zF?8NC8=EhFXZC65@wS44oXhiMJl(ttN1_$TVWtr+dZa9N=Yx1c4LITuZ668S^%Fch ztw4L;qzZl>VXn>oz#Ycr#H08hT}v(0VLvl&afa3%4=5p}^qNDhNms0uvgMf0>)J|b z5^Z|&z2;BfXZ*T-!tlKgyiL`JX)T7`y^)t6eVvtE>}W_pJwQ zF{Nky`^@&F-JZ!VZ|#?xgA4Gs7I~Y8)pAuB(aB6##guE>vgJ!6tl5Vfi*W)#o}>@A z>f}ySdqPn>MG=@g8>R6`hO{|Id3HaT3)_;sr}}*0fH=$P-=5|w%nNAA_q^o7N0lQP zXlUM%9OvTg=JsS9qrD<}_8qId&d|r+OqBZ-vW6S+>2E3pCq@&QeAC`aj%oxvtqN)t-!Pufl zdOLNAP)-=w>mV#PM6MDucBug@sEup1sYA3&W~gU#@@QHiAr^pHRI4T>IIY*05J7(E zi*~@(N!R z)bb%{r8>?NX=jNgL!o~2bB1r=J}-69{H?9Q-5>^Td!J{qQ*3_>3WSS-zf|U4`QbR< z{K>h-_lkc!-ek7rayxsDG~ms&hFbZfNUGxhNOvOw*5B5v_a&B+7e#~071pHMM#TQq0CP?+^kNJv=v~s*$cXHnPb4fWvHQ>wHFFFJcqjsfS`BmWr64l5lDF$I3aq28d}@*A?$eHZ&g3g*&A_m~)Swu7q$& z*S;{F$5+z4NpW;O)z+iyNouwULIpblqmviP-_oE}5d_1=V$k}^TJ5OIc}Y1Q}V{U-R%iJ%C*mx^4s&Yx=lWevx;1n5HAxg@lz8k?mm`siglFVEmt0 z$y_yf_tyF?z+&$Eu>9sOdAqvU-jAD0!-CobIZBFkUM|pYc0CH zAb5j9T|!biYQw!pkS8GS!GiDLQR&(LoOAQRwdvE&-=AXImc3RkNu#?2qAyQEE8C-V zCX&P)!YHs6bMz(1JmzAQsr947YdZp<P~pycR=9dMn*`4{zr&s^ z3LP$K&y>}F) zK3TIFwB971YH5;2NEA%>7CC3Vs<7zhGF#bb_Zqbmpu!;_i#4czB1ujovxs@A3r3_P zd(k=DmLE7%u-7S#08ZYPQs=L;saY?P&vX}ctV(~Uh$2*}M5!HPdp)>5Sx}yF3 z=Ka$+gDtfyX%7h-2u2Irc z`cHl8n(sk+2Lcs0<@|NEze|!)lJvv^wFSt0R1#?JCnWnmY~;Gx(O6*Tx}eZaGp!p@ zdc;vbP>u)VQ<-da-^|ZwF0w2U zLUbUgE!sTeMx9TUT`ck2o(FgF(IiOPtfYEQWse+HRE&QTZ1n9b=9oJw`h3q)aZC8s zQhiXH6nLl>QE`==5ZMd){pGo^b~_!sn?m?R{KT8pUjQvvZv^-Tn$qU4f`D&nmt5~)qZEw~PAKlBAZSRha% zZAAy4n6mAq5SPWFPihC(Vz1?2g-5FmhV;T$=dgn4)nP9C-j{$R+To}>-dDuTp059H z0H)NAfmm>NGdccnQS$~|G%;J?RPCdKF4u+6Yj~DW?ax8aU@uZ4lluAy6W8boZouW* z*c{AT)ZYnZ>)yEIRGZD;6zx)7r)_k5Vj6_U{-F6hk5+IhWm}&g!&TUkRop8{WBuXW zGq1MWe6?1s@%n^q<$UU+@af&OU6Qia4#hY?0FFi51>D@^2h&OW2d9xc1#DM`v`v{4 zj(TP-A`0cB{TB*20ZRQ%mrMg<1B^YOy*B_syRj69ZjVZT%|!wlA`z~l66m{Q$_zZO zt;#z%3gw%cBR`#}_bjSaVXlaN9pq;m>BNx%Sa>Mk9(AP;NBu3-pCrD{!(np6uigcS zvbI*-?!Du$LdiXptHJoyJ>P|t0$CJcK`WBY$ENtn0k`*rXN>?9u>DNe5}gQ*LQCx_ z?{0lz-2#xhx2tCWUi05Nv#{FV;{Qx43*Yt`K1D~8P`*2%T{NU?_0Q#OQ$tV5&9qd% zDG2`~8`mid+w*S69*nT>S?lElS-6!?wuBND4?mP1ebHm5KTKCAyv=fdg$g6J8-KY4M zaw8!FZL8e^TqldulR2qQ%9vWiMOJKet%Ndh8d5Spt!5vRUx|oz^dXnje)-EtJ-%3g z_BMo_x8xbf*@b8?r8I zbvPG)$BGtQPsuq&e65e~VXCZ}^{NuS;T)5L+VoUrWweYrN`Cl`+{I^*JD$$Q5*Hk+ zl`(28Gyv!K5(6|{^uCv|YouON@9YwHse$X#v#Txz zYArrfSwi+G{?K|IWtX4P@vfh9fgcY|Zu@hLhI{b!CoyPKc;3MJlGC5F5+nY6$cQ6~ zXK^O&^jedZNu)zl`nEe{1$lLYFktV+0QQk3z|{fNK#1CxkFK`p*6++N>U;owfG;$b z`tH@UPM7#dH?tQHUaVNtm_QcCKi&tR=mQtg{=WV2wTBb3P!`IrtDS^|s4d}&qB3d- z$%a8pT1qG0s@?gU$mW;1ZW8{}^I{~;+j0BOYM%~%%|M#0n65e}i6>`7VSHOJ#EBYv z(xy@^I=YMnF&aP6*4{^{QyekhooZfRe^dG4gc(M@OcQq-N#M=fJdzk*(R0=2WC5F* z8{|cHs}C?iA*qspgS&(C0&hm9yEJNrY#mwHBHr5*clS+Tm?LvfN=mt(y30KM2|ao= zH~onNZhs8XAOBl_)8|dkpQZfPB=%n@{pMFR^Xu%&%T^{N{Qc*kLBcOsKbl<6)7_H3 za5M2wL(u0NT+lBjm!|)%vAf{6$r2?(?Xf&|XC%>=L%-r6-o)G8nZB0B&Vp~A9&6a^ z!2#)cJ4XZ~@PsE^a#iea(H_s$o0PtK)fgUa(TpWGv`Ht>>d)kSdJ*dZfogTlwaZrj zcAMEP+=9VrPfTC!eWqJZY8lsZCzVg*@5x}F$Z=RMByeV?6qxe05*HLx>yvQF?Cjg0 z6N@R@b{<`j!&*>bhw=URTFasDA}2|K<8y?xgB3pexMXQ-&FY(FAPfRQ3HbJY03sKa z%EI_AnMZlvGIKqNqnu6c7mbc>DtEfp2!L99Asg)W##rR^@OjCMG<)-?mkUXc2P9;M z?wzkoD#DI3p{i$C!$G)>Y>tr(|iyeM{I+dQMz7a~UyN6E6+Z1tNE`BVmLDnR2ctcn%;w7N93f0WuwZS)S9=cUl;R5A z!aD7EVAjNyUX~`HF6Oq&+K^C}tn29sc}zIln@QT*md4C{+!*s4vZS`fkywX|os4X< zg4kB{$R)yp&0pHel2uI=OyBcEamLK`iXD;bRALWOLK3=pA@%S*oeJadITL%~SLppO z^3BT9_1r>p?h|0E}34r79g;zV{SqVzGVU&%3QOV57<)zqk=wzXmW z$^noa`kXY?!k{z{u?yd@FiWxu+>`v_VzgN7c9K`rsH6p~zB<#GOOXU*UV?D>YhPek zcq=6YZC6bJv3F1ahP*W&ZJwcoagf3laZ;QPb8T`j#*u{*DwB}OCX$R(yOt8Gb!X9%}pwszA8i% zR7}k>s=NPnPF&-sINjFbrp@3qI~eQWrCp*)^t3;WyPvD0ny;=nq%T<`^ZwT_LC-h` zmL0m-==OxnA9YqBX9PB5SIb0PHgwk5{_y}D))T<$EgH2zQ-SH)o*p5~qSAi*71 zzZfn!$|>!FLSOrKCAb+ebc<%QyfwL&_xWtSj8#0rnY6fxTnc*`uYax`*)_I;=MPJj zBjm|g3BRkmN?>ycrPt_1YOKu%EztGYGL_P$>sr?rc@_8-hoDPvsua}Yu`)?Xs^ERM$G?WkSg6{r@I(kqC$&M2dZ z0u&)1r~|(I^je<;dDru1UWnjb-o%Y{o7IXuZt8p$VPI-K%0{K=LuTBVut)f80PEk8h0B*yq@qxZaPjnon};C~P6?~crwfAQeTFqV7E z^1{tKg|Yh*2>LBV$25ymmqRAqavt|Cw_i-6UFz0hBiq9{|#MblnD_^?k9aEs)v z*Ua31Qkv#>rrzpmwg?-+3g_g#et-z=`Ol3~<{~Fbu$P72I!IWF=fVUHSlRR=T zEml%~!oKnP<~3Q`ep*6=A=D8my`m!GNk9WI0dk85!jax z#{9<8d#L-&K}xT@25vpqB306Tm8j)ZLtlXU{AD6=oAuOtx9&#D+gccAnF^c+ zh5Ca-Vsv|{Y=09m3P)X3T!<*?J#@*e3vPF>lGDytV)dLV?az&hT z-_)w)jBWKjsLweP+A|c-?-5bZU86ZyyZ-5Y7ksUjBckSm!m;E=4sXDgQwF!L>rU!) zt*YXSL99TLuIeJK@!WZb6hTQhN{a>o<+%6oV74C zeN*z#z39UC7}MH6YG^Wdr?|MY$NtH3*gTR3@b#9>9DzoH4Ymz2<~tCv2E7(?L;KN= zuz09#5+??{RwX$+NLqB$HS#il%l_@)%c&f>jkzA=y}8KWr$4@h zz|sjm=7@jl5_Nq&m(nY8_jMD`?)5wTCUd%#_lidJMm#-0&Cb@5&G&<@gtAf&(pZ`R ziKg!i-1D!$<@|Hgyj~w_;cb~m;bXlP_4B2Q_-X~+aT}-4Q@a>;6iZ8@tS-5F3Ha)e zBT`=+p1BRWj~ap8+sPzhhS8c+0<3w>kC4{7`w?OKf!3XB0)nD#MmMTff*kh28t#khC$(Hi^hT=*rAFvO;+A1 zGj~YYr|YxP!pQGlcINhhO!Js~F~hzRtly!<2cD{HZ30%gsoVh+D8NORkqTS50hljCycF&S#u*yX`g5u-Mq=(N%15xniTdF&YNP73gwzJYv+8U%<93t_ z7=YKjq|F6WRPe`6CQP8uUkb_;>) zC42E3_#v)egnxWTEv1igcmodx-s(JilhSG2X(Ah|VT~#E-7@xgo}xngbZ;vbsXx}| zJBul$;4hzzws!4Cao=^`gU!fKyx z>;!XnEDVfS+3qpADMG$@%m1;%{VR|1bAnmVFMEY0$j#mMAMw}17oI7=F93x4y7^blA?NOgaH(^!BMCnbo~*;5>N%l|67mKh zQMPK|uOX%>zMo}nRb8?;U#tY8H&*;!2L~E-#jw%Um2ZNIwrs)xJ4@$?3J9~LmRx=u z%2KuA1Ne@r>*51QT4V$Ezyhp?VH8Sgr!S^u+-|r@EKx>wn zd+*;aw+w0Lqq|t>vAgGZt}@0XQY4<1MtG@yd|7bw(LKykEgGEk<+>FyTkLHuJuYLI zEh-b*_gaJd3g&c>X!O?oTTFw#PB2uxYc1L4)4=K1S@ojxCS5gmdXos)9wc|vZeqZW z;R>%^i7JfZmkO<^r9GA)skTUOnfvFO&-_AoPlZ zzOEBrtH~|ldRKX=l5YT$Zs}pRUV0a!P9rZ(HQY$m_N)n*I2QY0oUpzSjwJF3QgJ`J zXVBo6JUFR0mBcg!m_erGzg_TAQ^$aV*xAmxGm zC2{7LJW)B#E$vjuom_A}jtF~X=7$j>?u?& zPoH|_D>8!6rqsuq8VZ<0{r{}pHLbo5{SMvW>aMigr)7WwoqV;*o|gz8lYM!vg*MJI z>@=}6YGnthPm;`gi?p@J-4KT8=$<|0!2S0vd{Ru#cyWZw%FZkA)g1KhmOCn@%9Ndx z&+?9-3oN5@bT|u+?O@YC?-E=Wz{s?uc%g_(RdsW{8K7x%Gf!@15604!q`9@YV#A+F znBH|7XmuQu3SjzH=>V3Ctsrw*gc@Tq(SA)1;o~BCKTalu@713z;9=n*^KoFwm&MPOlk78qw1YL*w&@q)ja#(x*^$XGWQX)tWH_FP1wUa}+i zUVqq>vFQV@P(eCRJETUh|o)C$oh5x3^B7) z(&S)o$$Zml`YKl>inlGE13N)j!KM2jWyrscCX;&X2MCdOZINAuCd?Vull1^YK)k;X zol-I`NH*E4b@XEi17!7bD|FGCTH8$T0rUAm8MzEhjaQh7`_6sc!bjz~c{*ZUD7O0^ z1>#4_JnJ~{@D}wuVI0NDP-6p8OwN0&?3vkLC>ZGC0-)-=v9Rqs3D}u68nI7`r#|-B!C9 z;-L2cu&`Sw3D5JX3BILaN?cbZz|GSif7*U4G`IS|o z#vU8;VNCC^#(7l$G3O`KIY;39ARWuWCBE{#tTVQY(H$dr{=_@jgKgwzrS+d%DG`K(4pG^5U-6c<|`{T9<8C0J%9I z2LxQZg&3uG8g_ALmAgsP$Wp}L`u7vuI>tul1oL~^E8uIo=fMdm{fQi){W0lUT+8q; z#Y~h+MtP<47dKb8+LrN>NfVp&_xXjn&z-{0f`rka2RyJCpoVUglC^x&^7HY^iEYHf zY}}{Ky`ojP%LV`EqYQ2~(#pG~QvPi)cLfig*jwgENlkLQB-3?G)=_&t;vl1RGNh<8 z^7$vHKG_6S%-2=bz~_OmPSx+BY@L=0h2KMV@=_*deg(;ae7RRj?OL_T5Sli1D%kg3 ziZUiD6|*oPMD*jPcIP(`O@Z6sEi4Lk%NC@k97h`b#?}!{5r6so0!=Nxsu=F;O+Ne_ zUJWwn6;3X>zpN>b?0t{Glav2bzfsX~U%E(xfBXd^VW(M?#+) z<8nzpl@OmT{T{HS)Ou6N9wMyqx=m-7X*}8xG*q?2NkhroL9mj997Yj>wRI>uJPGOT zk*n6+xnq->q#b>Vx!4u7#oxO}3)3f{VL+I)GbdEL*qpm|uhEfhh0o*=pF<(QZjWxC z)L6pcak47nPn5?ysXD|{Q@~avXKXp=6%+Ek7S>aMba@Nry<^_4qyQF&N6~iWR%m~W zkpN5rZ$_p=J$P}hwM+6x8w2sPx13JE?M#hbeg_?s+WMvAX!Rfc_mj;#!*G|Y*!p?V zfw`v9tU@yW>4cf?TWBJ`<^l<0d1R8+PHl=(>Ff_=_glu68MtZKB)I=BAfTwVs5O*&t2W;68Jj6({88es-5VM-ZW2()r5@`cft!cu!(Pz?owdH^P;=hXj=n|f`>knX#pfg~%lFl~Yu;sGXpYUk z^PL_8)<_%K+n^OOc@BC@#G=~M!oNawLUnx#{XR3sIkgw8X)~{S8(=aC42fc^>7K*A ze98Z&?wIzq$J`17*pW|HT9n#O-|VPdiE@4Zdp7p3)5wcva54G;I;&#&gP5Befh)RA zVU|pW=7|Xeb#2NTIL2uf@8nFXmfC}rEQBqPwxz^${VbX2h=Lb8Qf#Ganf zzE7uq2aW^V)O+!mj!7pn?5cF{o!c{(x%vFc*ujpPBc2B=GqXl6^-eqr174xOf4mtd zEOJuMkXGKNImy$yK+Mj)o_OKzi#kQiCM=~h#T7xGlJz^1Yw5D?7*^H;F1jAGZXt^Y zJVoEyK|#TBu1Wk^e&}W#uiHEvz60{tj*Ymo$CIeLmE$-&BpZ7+b=Kl4_nYcBE`u=p z`~LPKaza{t1-y3<-kf+RZ~@B4UJ2Bc?Uwu-xqPL7a~3m)LU$J1b7Jc@(=Afq>uMG@ zx2to}5DD(FxNiS^vBw%qQ##|gT13vHW^!^TCGH3H;w90UKOoNKsIsp`CBbDfU69Fo z`QWAt;R)V3SKpGFkP|aJiqlM*5TxsO-*ozrkioIlM~-WiMe(}jN7bJWTK7S13gx|> z5H#7)iz`h}_2+C>>DR*dPGeuc+2h;H%voZw-4E9@`#fP_ctCZ(sq%i4Ri>>iB;(YQ zPb5)lnE8CFgh`0ZD%J1(;aZ{R66k`Te3aybKmTNc*|=xAP%=Ui3T0yOq?6yP7rrWOX3DX*EOS}(m|-&+SM?n# ze*qf(Gl!>CQNoB*uXjItL=IQ0gbtYpDw-IuB2te()Ql}vjfCEw1c^C%grJ!-_Ojv{4oUO~5=R&kvJ z6Lpay?3x3zS~!fE#LQ6?Gw0U2|%rHZcaSUISx(y z`NrE{hwKG%Ye7OIQ15J_yFKHp^5W$Dzx6>$-q`BE+T)>-M8tXJ8d-Ekhev}+Z9C))51^!I7k&2sTD8VXP0yjKh-u$risNA1*^sR=_kNb69D(3vHD$Hq@TxBA8dL2gNuiGAh*vqKSc)%ijy)+uo`xbNOGXun#IlpVXS z7PyWzxsY1rz0OJ~UIUsvs5qbQQ+twBers{(+o~9E0nI;nMMX`fvHXDa z%t=n`L9l%m7hSBgwqwEp=@#2{wD8*4m=lD~$I@F;j7vwM!mx)-e#ΙdGDUECTs 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

t#+WCmqoobc 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 z%0D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∨i1WOI#&80|j2^$FKfk^R@`GJ+eN%^> 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 Xsv;8dKki0&J#gUR;QXnOUeEpu``X5* diff --git a/app/src/main/java/org/audiveris/omr/classifier/Sample.java b/app/src/main/java/org/audiveris/omr/classifier/Sample.java index 5c1ef4ae3..c320d5e16 100644 --- a/app/src/main/java/org/audiveris/omr/classifier/Sample.java +++ b/app/src/main/java/org/audiveris/omr/classifier/Sample.java @@ -50,29 +50,32 @@ public class Sample private static final Logger logger = LoggerFactory.getLogger(Sample.class); - /** For comparing Sample instances by shape. */ - public static final Comparator byShape = (Sample s1, - Sample s2) -> Integer.compare( - s1.getShape().ordinal(), - s2.getShape().ordinal()); + /** For comparing Sample instances by (logical) shape. */ + public static final Comparator byShape = (s1, + s2) -> // + Integer.compare(s1.getShape().ordinal(), s2.getShape().ordinal()); + + /** For comparing Sample instances by physical shape. */ + public static final Comparator byPhysicalShape = (s1, + s2) -> // + Integer.compare( + s1.getShape().getPhysicalShape().ordinal(), + s2.getShape().getPhysicalShape().ordinal()); /** For comparing Sample instances by normalized width. */ - public static final Comparator byNormalizedWidth = (Sample s1, - Sample s2) -> Double.compare( - s1.getNormalizedWidth(), - s2.getNormalizedWidth()); + public static final Comparator byNormalizedWidth = (s1, + s2) -> // + Double.compare(s1.getNormalizedWidth(), s2.getNormalizedWidth()); /** For comparing Sample instances by normalized height. */ - public static final Comparator byNormalizedHeight = (Sample s1, - Sample s2) -> Double.compare( - s1.getNormalizedHeight(), - s2.getNormalizedHeight()); + public static final Comparator byNormalizedHeight = (s1, + s2) -> // + Double.compare(s1.getNormalizedHeight(), s2.getNormalizedHeight()); /** For comparing Sample instances by normalized weight. */ - public static final Comparator byNormalizedWeight = (Sample s1, - Sample s2) -> Double.compare( - s1.getNormalizedWeight(), - s2.getNormalizedWeight()); + public static final Comparator byNormalizedWeight = (s1, + s2) -> // + Double.compare(s1.getNormalizedWeight(), s2.getNormalizedWeight()); //~ Instance fields ---------------------------------------------------------------------------- @@ -340,7 +343,7 @@ public static Shape getRecordableShape (Shape shape) return null; } - Shape physicalShape = shape.getPhysicalShape(); + final Shape physicalShape = shape.getPhysicalShape(); if (physicalShape.isTrainable() && (physicalShape != Shape.NOISE)) { return physicalShape; diff --git a/app/src/main/java/org/audiveris/omr/classifier/SampleRepository.java b/app/src/main/java/org/audiveris/omr/classifier/SampleRepository.java index 36359a504..e1e5289f4 100644 --- a/app/src/main/java/org/audiveris/omr/classifier/SampleRepository.java +++ b/app/src/main/java/org/audiveris/omr/classifier/SampleRepository.java @@ -265,9 +265,9 @@ public void addSample (Shape shape, SampleSheet sampleSheet, Double pitch) { - shape = Sample.getRecordableShape(shape); + final Shape physicalShape = Sample.getRecordableShape(shape); - if (shape != null) { + if (physicalShape != null) { final Sample sample = new Sample(glyph, interline, shape, pitch); addSample(sample, sampleSheet); } @@ -480,8 +480,7 @@ public void checkAllSamples (Collection conflictings, Collections.sort( allSamples, (Sample s1, - Sample s2) -> - { + Sample s2) -> { int comp = Integer.compare(s1.getWeight(), s2.getWeight()); if (comp != 0) { @@ -518,7 +517,7 @@ public void checkAllSamples (Collection conflictings, } if ((s.getInterline() == interline) && s.getRunTable().equals(runTable)) { - if (s.getShape() != sample.getShape()) { + if (s.getShape().getPhysicalShape() != sample.getShape().getPhysicalShape()) { logger.warn( "Conflicting shapes between {}/{} and {}/{}", getSheetName(sample), @@ -566,8 +565,7 @@ public void checkFontSamples () Collections.sort( fontSamples, (Sample s1, - Sample s2) -> - { + Sample s2) -> { int comp = Integer.compare(s1.getWeight(), s2.getWeight()); if (comp != 0) { @@ -605,7 +603,7 @@ public void checkFontSamples () } if ((s.getInterline() == interline) && s.getRunTable().equals(runTable)) { - if (s.getShape() != sample.getShape()) { + if (s.getShape().getPhysicalShape() != sample.getShape().getPhysicalShape()) { logger.warn( "Conflicting shapes between {}/{} and {}/{}", getSheetName(sample), @@ -786,8 +784,7 @@ public SampleSheet findSampleSheet (String name, } root.getFileSystem().close(); - } catch (IOException ignored) { - } + } catch (IOException ignored) {} } if (sampleSheet == null) { @@ -1644,7 +1641,7 @@ public boolean removeListener (ChangeListener listener) */ public void removeSample (Sample sample) { - SampleSheet sampleSheet = getSampleSheet(sample); + final SampleSheet sampleSheet = getSampleSheet(sample); if (isSymbols(sampleSheet.getDescriptor().getName())) { logger.info("A font-based symbol cannot be removed"); @@ -1753,7 +1750,7 @@ public void splitTrainAndTest (List train, // Flag redundant font-based samples as such checkFontSamples(); - // Gather samples by shape + // Gather samples by physical shape EnumMap> shapeSamples = new EnumMap<>(Shape.class); for (Sample sample : getAllSamples()) { @@ -1762,11 +1759,11 @@ public void splitTrainAndTest (List train, continue; } - Shape shape = sample.getShape(); - List list = shapeSamples.get(shape); + Shape physicalShape = sample.getShape().getPhysicalShape(); + List list = shapeSamples.get(physicalShape); if (list == null) { - shapeSamples.put(shape, list = new ArrayList<>()); + shapeSamples.put(physicalShape, list = new ArrayList<>()); } list.add(sample); diff --git a/app/src/main/java/org/audiveris/omr/classifier/SampleSheet.java b/app/src/main/java/org/audiveris/omr/classifier/SampleSheet.java index d31fb3068..0d92f4b96 100644 --- a/app/src/main/java/org/audiveris/omr/classifier/SampleSheet.java +++ b/app/src/main/java/org/audiveris/omr/classifier/SampleSheet.java @@ -101,7 +101,7 @@ public class SampleSheet /** True if image is already on disk. */ private boolean imageSaved = true; - /** Samples gathered by shape. */ + /** Samples gathered by logical shape. */ private final EnumMap> shapeMap = new EnumMap<>(Shape.class); /** Has this sheet been modified?. */ @@ -137,7 +137,8 @@ private SampleSheet (SampleList value, this.descriptor = descriptor; for (Sample sample : value.samples) { - Shape shape = sample.getShape(); + final Shape shape = sample.getShape(); + if (shape == null) { logger.warn("Null shape sample:{} in sheet:{}", sample, descriptor.getName()); } else { @@ -423,8 +424,8 @@ void privateAddSample (Sample sample) */ void privateRemoveSample (Sample sample) { - Shape shape = sample.getShape(); - ArrayList list = shapeMap.get(shape); + final Shape shape = sample.getShape(); + final ArrayList list = shapeMap.get(shape); if ((list == null) || !list.contains(sample)) { logger.warn("{} not found in {}", sample, this); @@ -650,13 +651,17 @@ private void afterUnmarshal (Unmarshaller um, for (Sample sample : samples) { final Shape shape = sample.getShape(); - switch (shape) { - case FLAG_1_UP -> modified |= sample.renameShapeAs(Shape.FLAG_1_DOWN); - case FLAG_2_UP -> modified |= sample.renameShapeAs(Shape.FLAG_2_DOWN); - case FLAG_3_UP -> modified |= sample.renameShapeAs(Shape.FLAG_3_DOWN); - case FLAG_4_UP -> modified |= sample.renameShapeAs(Shape.FLAG_4_DOWN); - case FLAG_5_UP -> modified |= sample.renameShapeAs(Shape.FLAG_5_DOWN); - default -> {} + if (shape == null) { + logger.warn("Null shape for sample: {}", sample); + } else { + switch (shape) { + case FLAG_1_UP -> modified |= sample.renameShapeAs(Shape.FLAG_1_DOWN); + case FLAG_2_UP -> modified |= sample.renameShapeAs(Shape.FLAG_2_DOWN); + case FLAG_3_UP -> modified |= sample.renameShapeAs(Shape.FLAG_3_DOWN); + case FLAG_4_UP -> modified |= sample.renameShapeAs(Shape.FLAG_4_DOWN); + case FLAG_5_UP -> modified |= sample.renameShapeAs(Shape.FLAG_5_DOWN); + default -> {} + } } } } diff --git a/app/src/main/java/org/audiveris/omr/classifier/ui/SampleBrowser.java b/app/src/main/java/org/audiveris/omr/classifier/ui/SampleBrowser.java index 504248155..3148013cc 100644 --- a/app/src/main/java/org/audiveris/omr/classifier/ui/SampleBrowser.java +++ b/app/src/main/java/org/audiveris/omr/classifier/ui/SampleBrowser.java @@ -166,7 +166,7 @@ public class SampleBrowser /** Panel for sheets selection. */ private SheetSelector sheetSelector; - /** Panel for shapes selection. */ + /** Panel for (physical) shapes selection. */ private ShapeSelector shapeSelector; //~ Constructors ------------------------------------------------------------------------------- @@ -459,19 +459,15 @@ private JFrame defineLayout (JFrame frame) // boardsPane.addBoard( // new SampleEvaluationBoard(sampleController, DeepClassifier.getInstance())); // - JSplitPane centerPane = new JSplitPane( - VERTICAL_SPLIT, - sheetSelector, - boardsPane.getComponent()); + JSplitPane centerPane = + new JSplitPane(VERTICAL_SPLIT, sheetSelector, boardsPane.getComponent()); centerPane.setBorder(null); centerPane.setOneTouchExpandable(true); centerPane.setName("centerPane"); // Right - JSplitPane rightPane = new JSplitPane( - VERTICAL_SPLIT, - sampleListing, - sampleContext.getComponent()); + JSplitPane rightPane = + new JSplitPane(VERTICAL_SPLIT, sampleListing, sampleContext.getComponent()); rightPane.setBorder(null); rightPane.setOneTouchExpandable(true); rightPane.setName("rightPane"); @@ -537,7 +533,7 @@ public void displayAll (Collection samples) EnumSet shapeSet = EnumSet.noneOf(Shape.class); for (Sample sample : samples) { - shapeSet.add(sample.getShape()); + shapeSet.add(sample.getShape().getPhysicalShape()); } shapeSelector.populateWith(shapeSet); @@ -545,7 +541,7 @@ public void displayAll (Collection samples) // Populate samples List sorted = new ArrayList<>(samples); - Collections.sort(sorted, Sample.byShape); // Must be ordered by shape for listing + Collections.sort(sorted, Sample.byPhysicalShape); // Ordered by physical shape for listing sampleListing.populateWith(sorted); connectSelectors(true); // Re-enable standard triggers: sheets -> shapes -> samples @@ -1028,8 +1024,7 @@ private static class SampleEvaluationBoard @Override protected void evaluate (Glyph glyph) { - if (glyph instanceof Sample) { - final Sample sample = (Sample) glyph; + if (glyph instanceof Sample sample) { selector.setEvals( classifier.evaluate( glyph, @@ -1045,11 +1040,13 @@ protected void evaluate (Glyph glyph) } } + //----------// + // Selector // + //----------// private abstract static class Selector extends TitledPanel implements ChangeListener { - // Buttons protected final JButton selectAll = new JButton("Select All"); @@ -1243,7 +1240,7 @@ public Component getListCellRendererComponent (JList list, // ShapeSelector // //---------------// /** - * Display a list of available shapes (within selected sheets) and let user make a + * Display a list of available physical shapes (within selected sheets) and let user make a * selection. */ private class ShapeSelector @@ -1282,8 +1279,8 @@ private class ShapePopup { super("ShapePopup"); - ApplicationActionMap actionMap = OmrGui.getApplication().getContext().getActionMap( - SampleBrowser.this); + ApplicationActionMap actionMap = + OmrGui.getApplication().getContext().getActionMap(SampleBrowser.this); add(new JMenuItem(actionMap.get("removeShapes"))); } } @@ -1293,7 +1290,7 @@ private class ShapePopup // SheetSelector // //---------------// /** - * Display a list of available sheets and let user make a selection. + * Display a list of available sheets and let the user make a selection. */ private class SheetSelector extends Selector @@ -1337,8 +1334,8 @@ private class SheetPopup { super("SheetPopup"); - ApplicationActionMap actionMap = OmrGui.getApplication().getContext().getActionMap( - SampleBrowser.this); + ApplicationActionMap actionMap = + OmrGui.getApplication().getContext().getActionMap(SampleBrowser.this); add(new JMenuItem(actionMap.get("removeSheets"))); add(new JMenuItem(actionMap.get("validateSheets"))); } diff --git a/app/src/main/java/org/audiveris/omr/classifier/ui/SampleListing.java b/app/src/main/java/org/audiveris/omr/classifier/ui/SampleListing.java index 6b18284e7..53e13200f 100644 --- a/app/src/main/java/org/audiveris/omr/classifier/ui/SampleListing.java +++ b/app/src/main/java/org/audiveris/omr/classifier/ui/SampleListing.java @@ -248,8 +248,8 @@ void removeSample (Sample sample) */ private void sortBy (Comparator comparator) { - final Sample currentSample = (Sample) browser.getSampleController().getGlyphService() - .getSelectedEntity(); + final Sample currentSample = + (Sample) browser.getSampleController().getGlyphService().getSelectedEntity(); final ShapePane shapePane = getShapePane(currentSample.getShape()); final List samples = Collections.list(shapePane.model.elements()); Collections.sort(samples, comparator); @@ -279,6 +279,7 @@ public void stateChanged (ChangeEvent e) } } + Collections.sort(allSamples, Sample.byShape); populateWith(allSamples); } @@ -600,7 +601,7 @@ private class ShapePane ShapePane (Shape shape, List samples) { - super(shape + " (" + samples.size() + ")"); + super(fullName(shape) + " (" + samples.size() + ")"); this.shape = shape; setLayout(new BorderLayout()); @@ -643,9 +644,8 @@ public void keyPressed (KeyEvent ke) add(list, BorderLayout.CENTER); // Support for delete key - getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( - KeyStroke.getKeyStroke("DELETE"), - "RemoveAction"); + getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) + .put(KeyStroke.getKeyStroke("DELETE"), "RemoveAction"); getActionMap().put("RemoveAction", new RemoveAction()); // ShapePane popup inherited from scrollablePanel parent @@ -657,6 +657,17 @@ public void keyPressed (KeyEvent ke) list.setComponentPopupMenu(null); } + private static String fullName (Shape shape) + { + final Shape physical = shape.getPhysicalShape(); + + if (physical == shape) { + return shape.name(); + } + + return physical + " / " + shape; + } + public Shape getShape () { return shape; @@ -747,8 +758,8 @@ private class SortByGradeAction public void actionPerformed (ActionEvent e) { // To avoid repetitive grade computing, we save grade into GradedSample entities - final Sample currentSample = (Sample) browser.getSampleController().getGlyphService() - .getSelectedEntity(); + final Sample currentSample = + (Sample) browser.getSampleController().getGlyphService().getSelectedEntity(); final ShapePane shapePane = getShapePane(currentSample.getShape()); final List list = new ArrayList<>(); @@ -756,9 +767,8 @@ public void actionPerformed (ActionEvent e) for (Enumeration en = shapePane.model.elements(); en.hasMoreElements();) { Sample sample = en.nextElement(); - Evaluation[] evals = classifier.getNaturalEvaluations( - sample, - sample.getInterline()); + Evaluation[] evals = + classifier.getNaturalEvaluations(sample, sample.getInterline()); double grade = evals[sample.getShape().ordinal()].grade; list.add(new GradedSample(sample, grade)); } diff --git a/app/src/main/java/org/audiveris/omr/classifier/ui/TrainingPanel.java b/app/src/main/java/org/audiveris/omr/classifier/ui/TrainingPanel.java index 605610cec..261e5e5dc 100644 --- a/app/src/main/java/org/audiveris/omr/classifier/ui/TrainingPanel.java +++ b/app/src/main/java/org/audiveris/omr/classifier/ui/TrainingPanel.java @@ -167,20 +167,19 @@ class TrainingPanel */ private List checkPopulation (List samples) { - EnumMap> shapeSamples = new EnumMap<>(Shape.class); + final EnumMap> shapeSamples = new EnumMap<>(Shape.class); for (Iterator it = samples.iterator(); it.hasNext();) { - Sample sample = it.next(); - Shape shape = sample.getShape(); + final Sample sample = it.next(); try { - Shape physicalShape = shape.getPhysicalShape(); + final Shape physicalShape = sample.getShape().getPhysicalShape(); if (physicalShape.isTrainable()) { - List list = shapeSamples.get(shape); + List list = shapeSamples.get(physicalShape); if (list == null) { - shapeSamples.put(shape, list = new ArrayList<>()); + shapeSamples.put(physicalShape, list = new ArrayList<>()); } list.add(sample); @@ -189,7 +188,7 @@ private List checkPopulation (List samples) it.remove(); } } catch (Exception ex) { - logger.warn("Removing weird shape: " + shape, ex); + logger.warn("Removing weird sample: " + sample, ex); it.remove(); } } @@ -200,19 +199,19 @@ private List checkPopulation (List samples) final List newSamples = new ArrayList<>(); for (int is = 0; is <= iMax; is++) { - Shape shape = shapes[is]; - List list = shapeSamples.get(shape); + final Shape physicalShape = shapes[is]; + final List list = shapeSamples.get(physicalShape); if (list == null) { - logger.warn("Missing shape: {}", shape); + logger.warn("Missing shape: {}", physicalShape); } else if (!list.isEmpty()) { - logger.info(String.format("%4d %s", list.size(), shape)); + logger.info(String.format("%4d %s", list.size(), physicalShape)); final int size = list.size(); int togo = minCount - size; newSamples.addAll(list); // Ensure minimum sample count is reached for this shape - if ((togo > 0) && (shape != Shape.CLUTTER)) { + if ((togo > 0) && (physicalShape != Shape.CLUTTER)) { Collections.shuffle(list); do { @@ -387,7 +386,6 @@ public void propertyChange (PropertyChangeEvent evt) private static class Constants extends ConstantSet { - private final Constant.Integer listenerPeriod = new Constant.Integer( "period", 50, diff --git a/app/src/main/java/org/audiveris/omr/glyph/Shape.java b/app/src/main/java/org/audiveris/omr/glyph/Shape.java index bb3e85985..66f74d7a0 100644 --- a/app/src/main/java/org/audiveris/omr/glyph/Shape.java +++ b/app/src/main/java/org/audiveris/omr/glyph/Shape.java @@ -48,7 +48,7 @@ * NOTA: All the physical shapes MUST have different characteristics for the glyph * classifier training to work correctly. * The same physical shape can lead to different logical shapes according to the context. - * Two physical shapes are in this case (their name ends with "_set" to make this clear): + * Three physical shapes are in this case (their name ends with "_set" to make this clear): *

* As far as possible, a display symbol should be generated for every shape. *

@@ -91,6 +95,7 @@ public enum Shape // DOT_set("Dot set"), HW_REST_set("Half & Whole Rest set"), + EIGHTH_set("Grace & beat unit set"), // // Bars --- @@ -206,10 +211,23 @@ public enum Shape // // Grace notes --- // - GRACE_NOTE("Grace Note with no slash"), + //GRACE_NOTE("Grace Note with no slash"), // Handled by EIGHTH_set GRACE_NOTE_DOWN("Grace Note down with no slash"), - GRACE_NOTE_SLASH("Grace Note with a Slash"), - GRACE_NOTE_SLASH_DOWN("Grace Note down with a Slash"), + GRACE_NOTE_SLASH("Grace Note with a slash"), + GRACE_NOTE_SLASH_DOWN("Grace Note down with a slash"), + + // + // Notes for metronome indication --- + // + METRO_WHOLE("Metronome whole note", Colors.SCORE_PHYSICALS), + METRO_HALF("Metronome half note", Colors.SCORE_PHYSICALS), + METRO_QUARTER("Metronome quarter note", Colors.SCORE_PHYSICALS), + //METRO_EIGHTH("Metronome 8th note"), // Handled by EIGHTH_set + METRO_SIXTEENTH("Metronome 16th note", Colors.SCORE_PHYSICALS), + METRO_DOTTED_HALF("Metronome dotted half note", Colors.SCORE_PHYSICALS), + METRO_DOTTED_QUARTER("Metronome dotted quarter note", Colors.SCORE_PHYSICALS), + METRO_DOTTED_EIGHTH("Metronome dotted 8th note", Colors.SCORE_PHYSICALS), + METRO_DOTTED_SIXTEENTH("Metronome dotted 16th note", Colors.SCORE_PHYSICALS), // // Articulations --- @@ -320,6 +338,7 @@ public enum Shape // Miscellaneous --- // CLUTTER("Pure clutter", Colors.SHAPE_UNKNOWN), + /** * ============================================================================================= * End of physical shapes @@ -327,6 +346,7 @@ public enum Shape * All head shapes are among them, they are recognized by template matching * ============================================================================================= */ + TEXT("Sequence of letters & spaces"), CHARACTER("Any letter"), @@ -343,6 +363,12 @@ public enum Shape WHOLE_REST("Rest for a 1", HW_REST_set), HALF_REST("Rest for a 1/2", HW_REST_set), + // + // Shapes based on physical EIGHTH_set --- + // + GRACE_NOTE("Grace Note with no slash", EIGHTH_set), + METRO_EIGHTH("Metronome 8th note", EIGHTH_set), + // // StemLessHeads duration 2 --- // @@ -386,12 +412,18 @@ public enum Shape NOTEHEAD_CIRCLE_X("Circle-x shape note head for unpitched percussion"), // - // Compound notes (head + stem) --- + // Compound notes --- // + SIXTEENTH_NOTE_UP("Filled head plus its up stem and two flags"), + DOTTED_SIXTEENTH_NOTE_UP("Filled head plus its up stem, two flag and dot"), + EIGHTH_NOTE_UP("Filled head plus its up stem and flag"), + DOTTED_EIGHTH_NOTE_UP("Filled head plus its up stem, flag and dot"), QUARTER_NOTE_UP("Filled head plus its up stem"), QUARTER_NOTE_DOWN("Filled head plus its down stem"), + DOTTED_QUARTER_NOTE_UP("Filled head plus its up stem and dot"), HALF_NOTE_UP("Hollow head plus its up stem"), HALF_NOTE_DOWN("Hollow head plus its down stem"), + DOTTED_HALF_NOTE_UP("Hollow head plus its up stem and dot"), // // Beams and slurs --- @@ -460,6 +492,7 @@ public enum Shape LEDGER("Ledger"), SEGMENT("Wedge or ending segment"), LYRICS("Lyrics", Colors.SCORE_LYRICS), + METRONOME("Text-based notes", Colors.SCORE_PHYSICALS), // // Stems --- @@ -495,16 +528,15 @@ public enum Shape // ============================================================================================= // This is the end of shape enumeration // ============================================================================================= - // + private static final Logger logger = LoggerFactory.getLogger(Shape.class); /** Last physical shape. */ public static final Shape LAST_PHYSICAL_SHAPE = CLUTTER; /** A comparator based on shape name. */ - public static final Comparator alphaComparator = (Shape o1, - Shape o2) -> o1.name() - .compareTo(o2.name()); + public static final Comparator alphaComparator = (o1, + o2) -> o1.name().compareTo(o2.name()); //~ Instance fields ---------------------------------------------------------------------------- @@ -743,60 +775,27 @@ public HeadMotif getHeadMotif () */ public Rational getNoteDuration () { - switch (this) { - case LONG_REST: - return new Rational(4, 1); - - case BREVE_REST: - case BREVE: - case BREVE_SMALL: - case BREVE_CROSS: - case BREVE_DIAMOND: - case BREVE_TRIANGLE_DOWN, BREVE_CIRCLE_X: - return Rational.TWO; - - case WHOLE_REST: - case WHOLE_NOTE: - case WHOLE_NOTE_SMALL: - case WHOLE_NOTE_CROSS: - case WHOLE_NOTE_DIAMOND, WHOLE_NOTE_TRIANGLE_DOWN: - case WHOLE_NOTE_CIRCLE_X: - return Rational.ONE; - - case HALF_REST: - case NOTEHEAD_VOID: - case NOTEHEAD_VOID_SMALL: - case NOTEHEAD_CROSS_VOID, NOTEHEAD_DIAMOND_VOID: - case NOTEHEAD_TRIANGLE_DOWN_VOID: - case NOTEHEAD_CIRCLE_X_VOID: - return Rational.HALF; - - case QUARTER_REST: - case NOTEHEAD_BLACK: - case NOTEHEAD_BLACK_SMALL: - case NOTEHEAD_CROSS, NOTEHEAD_DIAMOND_FILLED: - case NOTEHEAD_TRIANGLE_DOWN_FILLED: - case NOTEHEAD_CIRCLE_X: - return Rational.QUARTER; - - case EIGHTH_REST: - return new Rational(1, 8); - - case ONE_16TH_REST: - return new Rational(1, 16); - - case ONE_32ND_REST: - return new Rational(1, 32); - - case ONE_64TH_REST: - return new Rational(1, 64); - - case ONE_128TH_REST: - return new Rational(1, 128); - - default: - return null; - } + return switch (this) { + case LONG_REST -> new Rational(4, 1); + case BREVE_REST, BREVE, BREVE_SMALL, BREVE_CROSS, BREVE_DIAMOND, BREVE_TRIANGLE_DOWN, // + BREVE_CIRCLE_X // + -> Rational.TWO; + case WHOLE_REST, WHOLE_NOTE, WHOLE_NOTE_SMALL, WHOLE_NOTE_CROSS, WHOLE_NOTE_DIAMOND, // + WHOLE_NOTE_TRIANGLE_DOWN, WHOLE_NOTE_CIRCLE_X // + -> Rational.ONE; + case HALF_REST, NOTEHEAD_VOID, NOTEHEAD_VOID_SMALL, NOTEHEAD_CROSS_VOID, // + NOTEHEAD_DIAMOND_VOID, NOTEHEAD_TRIANGLE_DOWN_VOID, NOTEHEAD_CIRCLE_X_VOID // + -> Rational.HALF; + case QUARTER_REST, NOTEHEAD_BLACK, NOTEHEAD_BLACK_SMALL, NOTEHEAD_CROSS, // + NOTEHEAD_DIAMOND_FILLED, NOTEHEAD_TRIANGLE_DOWN_FILLED, NOTEHEAD_CIRCLE_X // + -> Rational.QUARTER; + case EIGHTH_REST -> new Rational(1, 8); + case ONE_16TH_REST -> new Rational(1, 16); + case ONE_32ND_REST -> new Rational(1, 32); + case ONE_64TH_REST -> new Rational(1, 64); + case ONE_128TH_REST -> new Rational(1, 128); + default -> null; + }; } //------------------// diff --git a/app/src/main/java/org/audiveris/omr/glyph/ShapeSet.java b/app/src/main/java/org/audiveris/omr/glyph/ShapeSet.java index 90f1436d7..95dfd96ab 100644 --- a/app/src/main/java/org/audiveris/omr/glyph/ShapeSet.java +++ b/app/src/main/java/org/audiveris/omr/glyph/ShapeSet.java @@ -119,22 +119,16 @@ public class ShapeSet TIME_TWELVE_EIGHT); /** All sorts of F clefs. */ - public static final EnumSet BassClefs = EnumSet.of( - F_CLEF, - F_CLEF_SMALL, - F_CLEF_8VA, - F_CLEF_8VB); + public static final EnumSet BassClefs = + EnumSet.of(F_CLEF, F_CLEF_SMALL, F_CLEF_8VA, F_CLEF_8VB); /** All sorts of G clefs. */ - public static final EnumSet TrebleClefs = EnumSet.of( - G_CLEF, - G_CLEF_SMALL, - G_CLEF_8VA, - G_CLEF_8VB); + public static final EnumSet TrebleClefs = + EnumSet.of(G_CLEF, G_CLEF_SMALL, G_CLEF_8VA, G_CLEF_8VB); /** All clefs. */ - public static final EnumSet Clefs = EnumSet.copyOf( - shapesOf(TrebleClefs, BassClefs, shapesOf(C_CLEF, PERCUSSION_CLEF))); + public static final EnumSet Clefs = + EnumSet.copyOf(shapesOf(TrebleClefs, BassClefs, shapesOf(C_CLEF, PERCUSSION_CLEF))); /** Flags up. */ public static final EnumSet FlagsUp = EnumSet.of(FLAG_1, FLAG_2, FLAG_3, FLAG_4, FLAG_5); @@ -143,17 +137,12 @@ public class ShapeSet public static final List SmallFlagsUp = Arrays.asList(SMALL_FLAG, SMALL_FLAG_SLASH); /** Flags down. */ - public static final EnumSet FlagsDown = EnumSet.of( - FLAG_1_DOWN, - FLAG_2_DOWN, - FLAG_3_DOWN, - FLAG_4_DOWN, - FLAG_5_DOWN); + public static final EnumSet FlagsDown = + EnumSet.of(FLAG_1_DOWN, FLAG_2_DOWN, FLAG_3_DOWN, FLAG_4_DOWN, FLAG_5_DOWN); /** Small flags down. */ - public static final List SmallFlagsDown = Arrays.asList( - SMALL_FLAG_DOWN, - SMALL_FLAG_SLASH_DOWN); + public static final List SmallFlagsDown = + Arrays.asList(SMALL_FLAG_DOWN, SMALL_FLAG_SLASH_DOWN); /** All SHARP-based keys. */ public static final EnumSet SharpKeys = EnumSet.of( @@ -166,52 +155,35 @@ public class ShapeSet KEY_SHARP_7); /** All FLAT-based keys. */ - public static final EnumSet FlatKeys = EnumSet.of( - KEY_FLAT_1, - KEY_FLAT_2, - KEY_FLAT_3, - KEY_FLAT_4, - KEY_FLAT_5, - KEY_FLAT_6, - KEY_FLAT_7); + public static final EnumSet FlatKeys = EnumSet + .of(KEY_FLAT_1, KEY_FLAT_2, KEY_FLAT_3, KEY_FLAT_4, KEY_FLAT_5, KEY_FLAT_6, KEY_FLAT_7); /** FermataArcs. */ public static final EnumSet FermataArcs = EnumSet.of(FERMATA_ARC, FERMATA_ARC_BELOW); /** Core shapes for barlines. */ - public static final EnumSet CoreBarlines = EnumSet.copyOf( - Arrays.asList(THICK_BARLINE, THICK_CONNECTOR, THIN_BARLINE, THIN_CONNECTOR)); + public static final EnumSet CoreBarlines = EnumSet + .copyOf(Arrays.asList(THICK_BARLINE, THICK_CONNECTOR, THIN_BARLINE, THIN_CONNECTOR)); /** Repeat bars. */ - public static final List RepeatBars = Arrays.asList( - REPEAT_ONE_BAR, - REPEAT_TWO_BARS, - REPEAT_FOUR_BARS); + public static final List RepeatBars = + Arrays.asList(REPEAT_ONE_BAR, REPEAT_TWO_BARS, REPEAT_FOUR_BARS); /** Beams. */ - public static final EnumSet Beams = EnumSet.copyOf( - Arrays.asList(BEAM, BEAM_SMALL, BEAM_HOOK, BEAM_HOOK_SMALL)); + public static final EnumSet Beams = + EnumSet.copyOf(Arrays.asList(BEAM, BEAM_SMALL, BEAM_HOOK, BEAM_HOOK_SMALL)); /** Heads with an oval shape. */ - public static final List HeadsOval = Arrays.asList( - NOTEHEAD_BLACK, - NOTEHEAD_VOID, - WHOLE_NOTE, - BREVE); + public static final List HeadsOval = + Arrays.asList(NOTEHEAD_BLACK, NOTEHEAD_VOID, WHOLE_NOTE, BREVE); /** Heads with a small oval shape. */ - public static final List HeadsOvalSmall = Arrays.asList( - NOTEHEAD_BLACK_SMALL, - NOTEHEAD_VOID_SMALL, - WHOLE_NOTE_SMALL, - BREVE_SMALL); + public static final List HeadsOvalSmall = + Arrays.asList(NOTEHEAD_BLACK_SMALL, NOTEHEAD_VOID_SMALL, WHOLE_NOTE_SMALL, BREVE_SMALL); /** Heads with a cross shape. */ - public static final List HeadsCross = Arrays.asList( - NOTEHEAD_CROSS, - NOTEHEAD_CROSS_VOID, - WHOLE_NOTE_CROSS, - BREVE_CROSS); + public static final List HeadsCross = + Arrays.asList(NOTEHEAD_CROSS, NOTEHEAD_CROSS_VOID, WHOLE_NOTE_CROSS, BREVE_CROSS); /** Heads with a filled cross shape. */ public static final List HeadsCrossBlack = Arrays.asList( // @@ -238,18 +210,12 @@ public class ShapeSet BREVE_TRIANGLE_DOWN); /** Heads with a circle X shape. */ - public static final List HeadsCircle = Arrays.asList( - NOTEHEAD_CIRCLE_X, - NOTEHEAD_CIRCLE_X_VOID, - WHOLE_NOTE_CIRCLE_X, - BREVE_CIRCLE_X); + public static final List HeadsCircle = Arrays + .asList(NOTEHEAD_CIRCLE_X, NOTEHEAD_CIRCLE_X_VOID, WHOLE_NOTE_CIRCLE_X, BREVE_CIRCLE_X); /** All compound notes. */ - public static final List CompoundNotes = Arrays.asList( - QUARTER_NOTE_UP, - QUARTER_NOTE_DOWN, - HALF_NOTE_UP, - HALF_NOTE_DOWN); + public static final List CompoundNotes = + Arrays.asList(QUARTER_NOTE_UP, QUARTER_NOTE_DOWN, HALF_NOTE_UP, HALF_NOTE_DOWN); /** All quarter heads (duration: 1/4). */ public static final EnumSet QuarterHeads = EnumSet.of( @@ -344,23 +310,16 @@ public class ShapeSet WHOLE_NOTE_CIRCLE_X); /** Grace notes. */ - public static final List Graces = Arrays.asList( - GRACE_NOTE, - GRACE_NOTE_DOWN, - GRACE_NOTE_SLASH, - GRACE_NOTE_SLASH_DOWN); + public static final List Graces = + Arrays.asList(GRACE_NOTE, GRACE_NOTE_DOWN, GRACE_NOTE_SLASH, GRACE_NOTE_SLASH_DOWN); /** Octave shifts. */ - public static final List OctaveShifts = Arrays.asList( - OTTAVA, - QUINDICESIMA, - VENTIDUESIMA); + public static final List OctaveShifts = + Arrays.asList(OTTAVA, QUINDICESIMA, VENTIDUESIMA); /** Percussion playing techniques. */ - public static final List Playings = Arrays.asList( - PLAYING_OPEN, - PLAYING_HALF_OPEN, - PLAYING_CLOSED); + public static final List Playings = + Arrays.asList(PLAYING_OPEN, PLAYING_HALF_OPEN, PLAYING_CLOSED); /** Tremolos. */ public static final List Tremolos = Arrays.asList(TREMOLO_1, TREMOLO_2, TREMOLO_3); @@ -418,10 +377,8 @@ public class ShapeSet Tremolos, Arrays.asList(TUPLET_THREE, TUPLET_SIX))); - public static final ShapeSet ClefsAndShifts = new ShapeSet( - G_CLEF, - Colors.SCORE_FRAME, - shapesOf(Clefs, OctaveShifts)); + public static final ShapeSet ClefsAndShifts = + new ShapeSet(G_CLEF, Colors.SCORE_FRAME, shapesOf(Clefs, OctaveShifts)); public static final ShapeSet Dynamics = new ShapeSet( DYNAMICS_F, @@ -459,10 +416,8 @@ public class ShapeSet Colors.SCORE_NOTES, shapesOf(Heads, shapesOf(AUGMENTATION_DOT), CompoundNotes, Playings)); - public static final ShapeSet Markers = new ShapeSet( - CODA, - Colors.SCORE_FRAME, - shapesOf(DAL_SEGNO, DA_CAPO, SEGNO, CODA)); + public static final ShapeSet Markers = + new ShapeSet(CODA, Colors.SCORE_FRAME, shapesOf(DAL_SEGNO, DA_CAPO, SEGNO, CODA)); public static final ShapeSet GraceAndOrnaments = new ShapeSet( MORDENT, @@ -472,11 +427,11 @@ public class ShapeSet GRACE_NOTE_SLASH, GRACE_NOTE_DOWN, GRACE_NOTE_SLASH_DOWN, - TR, TURN, TURN_INVERTED, TURN_UP, TURN_SLASH, + TR, MORDENT, MORDENT_INVERTED)); @@ -533,19 +488,28 @@ public class ShapeSet ROMAN_XI, ROMAN_XII)); + public static final ShapeSet BeatUnits = new ShapeSet( + METRO_EIGHTH, + Colors.SCORE_PHYSICALS, + shapesOf( + METRO_WHOLE, + METRO_HALF, + METRO_QUARTER, + METRO_EIGHTH, + METRO_SIXTEENTH, + METRO_DOTTED_HALF, + METRO_DOTTED_QUARTER, + METRO_DOTTED_EIGHTH, + METRO_DOTTED_SIXTEENTH)); + + public static final ShapeSet Texts = + new ShapeSet(TEXT, Colors.SCORE_PHYSICALS, shapesOf(LYRICS, TEXT, METRONOME)); + public static final ShapeSet Physicals = new ShapeSet( - LEDGER, + SLUR_ABOVE, Colors.SCORE_PHYSICALS, shapesOf( - shapesOf( - LYRICS, - TEXT, /// CHARACTER, - SLUR_ABOVE, - SLUR_BELOW, - LEDGER, - STEM, - ENDING, - ENDING_WRL), + shapesOf(SLUR_ABOVE, SLUR_BELOW, ENDING, ENDING_WRL, STEM, LEDGER), constants.addClutterInPhysicals.isSet() ? shapesOf(CLUTTER) : Collections.emptyList())); @@ -555,9 +519,8 @@ public class ShapeSet // ========================================================================= // /** All physical shapes. Here the use of EnumSet.range is OK */ - public static final EnumSet allPhysicalShapes = EnumSet.range( - Shape.values()[0], - LAST_PHYSICAL_SHAPE); + public static final EnumSet allPhysicalShapes = + EnumSet.range(Shape.values()[0], LAST_PHYSICAL_SHAPE); /** Pedals */ public static final EnumSet Pedals = EnumSet.of(PEDAL_MARK, PEDAL_UP_MARK); @@ -801,8 +764,7 @@ public static void addAllShapes (MusicFamily family, * Populate the given menu with all ShapeSet instances defined * in this class. * - * @param top the JComponent to populate (typically a JMenu or a - * JPopupMenu) + * @param top the JComponent to populate (typically a JMenu or a JPopupMenu) * @param listener the listener for notification of user selection */ public static void addAllShapeSets (JComponent top, @@ -1083,8 +1045,8 @@ public static EnumSet getTemplateNotesStem (Sheet sheet) */ public static Collection shapesOf (Collection col) { - Collection shapes = (col instanceof List) ? new ArrayList<>() - : EnumSet.noneOf(Shape.class); + Collection shapes = + (col instanceof List) ? new ArrayList<>() : EnumSet.noneOf(Shape.class); shapes.addAll(col); @@ -1104,8 +1066,8 @@ public static Collection shapesOf (Collection col) public static Collection shapesOf (Collection col1, Collection col2) { - Collection shapes = (col1 instanceof List) ? new ArrayList<>() - : EnumSet.noneOf(Shape.class); + Collection shapes = + (col1 instanceof List) ? new ArrayList<>() : EnumSet.noneOf(Shape.class); shapes.addAll(col1); shapes.addAll(col2); @@ -1128,8 +1090,8 @@ public static Collection shapesOf (Collection col1, Collection col2, Collection col3) { - Collection shapes = (col1 instanceof List) ? new ArrayList<>() - : EnumSet.noneOf(Shape.class); + Collection shapes = + (col1 instanceof List) ? new ArrayList<>() : EnumSet.noneOf(Shape.class); shapes.addAll(col1); shapes.addAll(col2); @@ -1155,8 +1117,8 @@ public static Collection shapesOf (Collection col1, Collection col3, Collection col4) { - Collection shapes = (col1 instanceof List) ? new ArrayList<>() - : EnumSet.noneOf(Shape.class); + Collection shapes = + (col1 instanceof List) ? new ArrayList<>() : EnumSet.noneOf(Shape.class); shapes.addAll(col1); shapes.addAll(col2); @@ -1203,9 +1165,8 @@ private static class Constants extends ConstantSet { - private final Constant.Boolean addClutterInPhysicals = new Constant.Boolean( - false, - "(Hidden feature)"); + private final Constant.Boolean addClutterInPhysicals = + new Constant.Boolean(false, "(Hidden feature)"); } //-----------// diff --git a/app/src/main/java/org/audiveris/omr/glyph/ui/EvaluationBoard.java b/app/src/main/java/org/audiveris/omr/glyph/ui/EvaluationBoard.java index bc9e0273b..de4d736a5 100644 --- a/app/src/main/java/org/audiveris/omr/glyph/ui/EvaluationBoard.java +++ b/app/src/main/java/org/audiveris/omr/glyph/ui/EvaluationBoard.java @@ -49,7 +49,6 @@ import org.slf4j.LoggerFactory; import com.jgoodies.forms.builder.FormBuilder; -import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.FormSpecs; @@ -84,8 +83,7 @@ public class EvaluationBoard private static final Logger logger = LoggerFactory.getLogger(EvaluationBoard.class); /** Events this board is interested in */ - private static final Class[] eventsRead = new Class[] - { EntityListEvent.class }; + private static final Class[] eventsRead = new Class[] { EntityListEvent.class }; /** Color for well recognized glyphs */ private static final Color EVAL_GOOD_COLOR = new Color(100, 200, 100); @@ -98,17 +96,17 @@ public class EvaluationBoard /** Underlying glyph classifier. */ protected final Classifier classifier; - /** Related inters controller */ + /** Related inters controller. */ protected final InterController interController; - /** Related sheet */ + /** Related sheet. */ @Navigable(false) private final Sheet sheet; - /** Pane for detailed info display about the glyph evaluation */ + /** Pane for detailed info display about the glyph evaluation. */ protected final Selector selector; - /** Do we use GlyphChecker annotations? */ + /** Do we use GlyphChecker annotations?. */ private boolean useAnnotations; /** True for active buttons, false for passive fields. */ @@ -163,7 +161,7 @@ public EvaluationBoard (boolean isActive, //--------------// private void defineLayout () { - String colSpec = Panel.makeColumns(3); + String colSpec = Panel.makeColumns(2, "right:", Panel.getLabelWidth(), "50dlu"); FormLayout layout = new FormLayout(colSpec, ""); int visibleButtons = Math.min(constants.visibleButtons.getValue(), selector.buttons.size()); @@ -177,13 +175,12 @@ private void defineLayout () } FormBuilder builder = FormBuilder.create().layout(layout).panel(getBody()); - CellConstraints cst = new CellConstraints(); for (int i = 0; i < visibleButtons; i++) { int r = (2 * i) + 1; // -------------------------------- EvalButton evb = selector.buttons.get(i); - builder.addRaw(evb.grade).xy(5, r); - builder.addRaw(isActive ? evb.button : evb.field).xyw(7, r, 5); + builder.addRaw(evb.grade).xy(1, r); + builder.addRaw(isActive ? evb.button : evb.field).xyw(3, r, 5); } } @@ -219,11 +216,11 @@ protected void evaluate (Glyph glyph) return; } - } else if (glyph instanceof Sample) { + } else if (glyph instanceof Sample sample) { selector.setEvals( classifier.evaluate( glyph, - ((Sample) glyph).getInterline(), + sample.getInterline(), evalCount(), constants.minGrade.getValue(), useAnnotations ? EnumSet.of(Classifier.Condition.CHECKED) @@ -286,6 +283,34 @@ public void selectButton (int buttonID) } } + //--------// + // update // + //--------// + @Override + public void update () + { + final MusicFamily musicFamily = (sheet != null) ? sheet.getStub().getMusicFamily() + : MusicFont.getDefaultMusicFamily(); + + if (musicFamily != cachedMusicFamily) { + selector.buttons.forEach(b -> { + if ((b.button != null) && b.button.isVisible()) { + final Shape shape = Shape.valueOf(b.button.getText()); + final ShapeSymbol symbol = shape.getDecoratedSymbol(musicFamily); + b.button.setIcon((symbol != null) ? new FixedWidthIcon(symbol) : null); + } + + if ((b.field != null) && b.field.isVisible()) { + final Shape shape = Shape.valueOf(b.field.getText()); + final ShapeSymbol symbol = shape.getDecoratedSymbol(musicFamily); + b.field.setIcon((symbol != null) ? new FixedWidthIcon(symbol) : null); + } + }); + + cachedMusicFamily = musicFamily; + } + } + //~ Static Methods ----------------------------------------------------------------------------- //-----------// @@ -399,19 +424,18 @@ public void setEval (Evaluation eval, final String tip = (failure != null) ? failure.toString() : null; final MusicFamily family = sheet != null ? sheet.getStub().getMusicFamily() : MusicFont.getDefaultMusicFamily(); + final ShapeSymbol symbol = eval.shape.getDecoratedSymbol(family); if (isActive) { button.setEnabled(enabled); button.setText(text); button.setToolTipText(tip); - ShapeSymbol symbol = eval.shape.getDecoratedSymbol(family); button.setIcon((symbol != null) ? new FixedWidthIcon(symbol) : null); } else { field.setText(text); field.setToolTipText(tip); - final ShapeSymbol symbol = eval.shape.getDecoratedSymbol(family); field.setIcon((symbol != null) ? new FixedWidthIcon(symbol) : null); } @@ -437,7 +461,6 @@ public void setEval (Evaluation eval, //----------// protected class Selector { - // A collection of EvalButton's final List buttons = new ArrayList<>(); diff --git a/app/src/main/java/org/audiveris/omr/math/GeoUtil.java b/app/src/main/java/org/audiveris/omr/math/GeoUtil.java index 5349abd52..7e22b4bdb 100644 --- a/app/src/main/java/org/audiveris/omr/math/GeoUtil.java +++ b/app/src/main/java/org/audiveris/omr/math/GeoUtil.java @@ -164,6 +164,28 @@ public static double ptDistanceSq (Rectangle r, return d; } + //---------// + // rounded // + //---------// + /** + * Report a rectangle with integer coordinates + * + * @param r provided Rectangle2D instance + * @return Rectangle instance + */ + public static Rectangle rounded (Rectangle2D r) + { + if (r == null) { + return null; + } + + return new Rectangle( + (int) Math.rint(r.getX()), + (int) Math.rint(r.getY()), + (int) Math.rint(r.getWidth()), + (int) Math.rint(r.getHeight())); + } + //-------// // touch // //-------// diff --git a/app/src/main/java/org/audiveris/omr/moments/GeometricMoments.java b/app/src/main/java/org/audiveris/omr/moments/GeometricMoments.java index dc99c1ba8..dfd607194 100644 --- a/app/src/main/java/org/audiveris/omr/moments/GeometricMoments.java +++ b/app/src/main/java/org/audiveris/omr/moments/GeometricMoments.java @@ -233,24 +233,26 @@ public GeometricMoments (int[] xx, // (Invariant to translation / scaling / rotation) int i = 12; k[i++] = n20 + n02; - // + k[i++] = ((n20 - n02) * (n20 - n02)) + (4 * n11 * n11); - // - k[i++] = ((n30 - (3 * n12)) * (n30 - (3 * n12))) + ((n03 - (3 * n21)) * (n03 - (3 - * n21))); - // + + k[i++] = ((n30 - (3 * n12)) * (n30 - (3 * n12))) + + ((n03 - (3 * n21)) * (n03 - (3 * n21))); + k[i++] = ((n30 + n12) * (n30 + n12)) + ((n03 + n21) * (n03 + n21)); - // - k[i++] = ((n30 - (3 * n12)) * (n30 + n12) * (((n30 + n12) * (n30 + n12)) - (3 * (n21 - + n03) * (n21 + n03)))) + ((n03 - (3 * n21)) * (n03 + n21) * (((n03 + n21) - * (n03 + n21)) - (3 * (n12 + n30) * (n12 + n30)))); - // + + k[i++] = ((n30 - (3 * n12)) * (n30 + n12) + * (((n30 + n12) * (n30 + n12)) - (3 * (n21 + n03) * (n21 + n03)))) + + ((n03 - (3 * n21)) * (n03 + n21) + * (((n03 + n21) * (n03 + n21)) - (3 * (n12 + n30) * (n12 + n30)))); + k[i++] = ((n20 - n02) * (((n30 + n12) * (n30 + n12)) - ((n03 + n21) * (n03 + n21)))) + (4 * n11 * (n30 + n12) * (n03 + n21)); - // - k[i++] = (((3 * n21) - n03) * (n30 + n12) * (((n30 + n12) * (n30 + n12)) - (3 * (n21 - + n03) * (n21 + n03)))) - (((3 * n12) - n30) * (n03 + n21) * (((n03 + n21) - * (n03 + n21)) - (3 * (n12 + n30) * (n12 + n30)))); + + k[i++] = (((3 * n21) - n03) * (n30 + n12) + * (((n30 + n12) * (n30 + n12)) - (3 * (n21 + n03) * (n21 + n03)))) + - (((3 * n12) - n30) * (n03 + n21) + * (((n03 + n21) * (n03 + n21)) - (3 * (n12 + n30) * (n12 + n30)))); } } @@ -283,7 +285,7 @@ public double getHeight () } //--------// - // getN12 // + // getN11 // //--------// /** * Report the n11 moment (which relates to xy covariance). diff --git a/app/src/main/java/org/audiveris/omr/score/MusicXML.java b/app/src/main/java/org/audiveris/omr/score/MusicXML.java index fede99b75..8a0cdded3 100644 --- a/app/src/main/java/org/audiveris/omr/score/MusicXML.java +++ b/app/src/main/java/org/audiveris/omr/score/MusicXML.java @@ -53,9 +53,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.math.BigDecimal; +import jakarta.xml.bind.JAXBElement; -import javax.xml.bind.JAXBElement; +import java.math.BigDecimal; /** * Class MusicXML gathers convenient methods dealing with MusicXML data diff --git a/app/src/main/java/org/audiveris/omr/score/PartwiseBuilder.java b/app/src/main/java/org/audiveris/omr/score/PartwiseBuilder.java index b194dd6b2..efae6ed2b 100644 --- a/app/src/main/java/org/audiveris/omr/score/PartwiseBuilder.java +++ b/app/src/main/java/org/audiveris/omr/score/PartwiseBuilder.java @@ -56,6 +56,7 @@ import org.audiveris.omr.sig.inter.ArpeggiatoInter; import org.audiveris.omr.sig.inter.ArticulationInter; import org.audiveris.omr.sig.inter.BeamGroupInter; +import org.audiveris.omr.sig.inter.BeatUnitInter; import org.audiveris.omr.sig.inter.ChordNameInter; import org.audiveris.omr.sig.inter.ClefInter; import org.audiveris.omr.sig.inter.DynamicsInter; @@ -69,6 +70,7 @@ import org.audiveris.omr.sig.inter.LyricItemInter; import org.audiveris.omr.sig.inter.MarkerInter; import org.audiveris.omr.sig.inter.MeasureRepeatInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.MultipleRestInter; import org.audiveris.omr.sig.inter.OctaveShiftInter; import org.audiveris.omr.sig.inter.OrnamentInter; @@ -80,7 +82,6 @@ import org.audiveris.omr.sig.inter.SlurInter; import org.audiveris.omr.sig.inter.SmallChordInter; import org.audiveris.omr.sig.inter.StaffBarlineInter; -import org.audiveris.omr.sig.inter.TempoInter; import org.audiveris.omr.sig.inter.TremoloInter; import org.audiveris.omr.sig.inter.TupletInter; import org.audiveris.omr.sig.inter.WedgeInter; @@ -157,6 +158,7 @@ import org.audiveris.proxymusic.MeasureNumberingValue; import org.audiveris.proxymusic.MeasureRepeat; import org.audiveris.proxymusic.MeasureStyle; +import org.audiveris.proxymusic.Metronome; import org.audiveris.proxymusic.MidiInstrument; import org.audiveris.proxymusic.MultipleRest; import org.audiveris.proxymusic.Notations; @@ -174,6 +176,7 @@ import org.audiveris.proxymusic.PartName; import org.audiveris.proxymusic.Pedal; import org.audiveris.proxymusic.PedalType; +import org.audiveris.proxymusic.PerMinute; import org.audiveris.proxymusic.Pitch; import org.audiveris.proxymusic.PlacementText; import org.audiveris.proxymusic.Print; @@ -222,6 +225,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import jakarta.xml.bind.JAXBElement; +import jakarta.xml.bind.JAXBException; + import java.awt.Font; import java.awt.Point; import java.awt.Rectangle; @@ -247,9 +253,6 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; - /** * Class PartwiseBuilder builds a ProxyMusic MusicXML {@link ScorePartwise} * from an Audiveris {@link Score} instance. @@ -277,12 +280,12 @@ public class PartwiseBuilder }); /** Default page horizontal margin. */ - private static final BigDecimal pageHorizontalMargin = - new BigDecimal(constants.pageHorizontalMargin.getValue()); + private static final BigDecimal pageHorizontalMargin = new BigDecimal( + constants.pageHorizontalMargin.getValue()); /** Default page vertical margin. */ - private static final BigDecimal pageVerticalMargin = - new BigDecimal(constants.pageVerticalMargin.getValue()); + private static final BigDecimal pageVerticalMargin = new BigDecimal( + constants.pageVerticalMargin.getValue()); /** Maximum level number. */ private static final int MAX_LEVEL_NUMBER = 16; @@ -711,8 +714,8 @@ private Key getCurrentKey () // Browse the current list of measures backwards within current part List measures = current.pmPart.getMeasure(); - for (ListIterator it = - measures.listIterator(measures.size()); it.hasPrevious();) { + for (ListIterator it = measures.listIterator( + measures.size()); it.hasPrevious();) { ScorePartwise.Part.Measure pmMeasure = it.previous(); for (Object obj : pmMeasure.getNoteOrBackupOrForward()) { @@ -1004,8 +1007,8 @@ private void insertMultipleRest (MeasureStack stack) // Insert dummy measure current.pmMeasure = factory.createScorePartwisePartMeasure(); current.pmPart.getMeasure().add(current.pmMeasure); - current.pmMeasure - .setNumber(stack.getScoreId(current.pageMeasureIdOffset + num + 1)); + current.pmMeasure.setNumber( + stack.getScoreId(current.pageMeasureIdOffset + num + 1)); } } } @@ -1054,8 +1057,8 @@ private boolean isNewClef (Clef newClef) // Browse the current list of measures backwards List measures = current.pmPart.getMeasure(); - for (ListIterator mit = - measures.listIterator(measures.size()); mit.hasPrevious();) { + for (ListIterator mit = measures.listIterator( + measures.size()); mit.hasPrevious();) { ScorePartwise.Part.Measure pmMeasure = mit.previous(); // Look backwards in measure items, checking staff @@ -1171,8 +1174,8 @@ private void processBarline (PartBarline partBarline, final MeasureStack stack = current.measure.getStack(); final PartBarline.Style style = partBarline.getStyle(); final List fermatas = partBarline.getFermatas(); // Top down list - final EndingInter ending = - partBarline.getEnding((location == RightLeftMiddle.RIGHT) ? RIGHT : LEFT); + final EndingInter ending = partBarline.getEnding( + (location == RightLeftMiddle.RIGHT) ? RIGHT : LEFT); final String endingValue = (ending != null) ? ending.getValue() : null; String endingNumber = (ending != null) ? ending.getExportedNumber() : null; @@ -1197,8 +1200,8 @@ private void processBarline (PartBarline partBarline, // Specific barline on left side: needed |= (partBarline == current.measure.getLeftPartBarline()); // On left side, with stuff (left repeat, left ending): - needed |= ((location == RightLeftMiddle.LEFT) - && (stack.isRepeat(LEFT) || (ending != null))); + needed |= ((location == RightLeftMiddle.LEFT) && (stack.isRepeat(LEFT) + || (ending != null))); // Specific barline on middle location: needed |= (location == RightLeftMiddle.MIDDLE); // On right side, but with stuff (right repeat, right ending, fermata) or non regular: @@ -1279,8 +1282,8 @@ private void processBarline (PartBarline partBarline, } // Pick up last inverted fermata if any. - for (ListIterator it = - fermatas.listIterator(fermatas.size()); it.hasPrevious();) { + for (ListIterator it = fermatas.listIterator( + fermatas.size()); it.hasPrevious();) { FermataInter f = it.previous(); if (f.getShape() == Shape.FERMATA_BELOW) { @@ -1331,8 +1334,9 @@ private void processBarline (PartBarline partBarline, PartBarline topPartBarline = getBarlineOnLeft(topMeasure); if (topPartBarline != null) { - StaffBarlineInter topBarline = - topPartBarline.getStaffBarline(part, part.getFirstStaff()); + StaffBarlineInter topBarline = topPartBarline.getStaffBarline( + part, + part.getFirstStaff()); for (Inter marker : topBarline.getRelatedInters(MarkerBarRelation.class)) { processMarker((MarkerInter) marker); @@ -1491,46 +1495,89 @@ private void processClef (ClefInter clef) //------------------// // processDirection // //------------------// + // For sentences linked to a note private void processDirection (SentenceInter sentence) { try { logger.debug("Visiting {}", sentence); - String content = sentence.getValue(); + final String content = sentence.getValue(); + final Direction direction = factory.createDirection(); + final Point2D location = sentence.getLocation(); - Direction direction = factory.createDirection(); DirectionType directionType = factory.createDirectionType(); - FormattedTextId pmWords = factory.createFormattedTextId(); - Point2D location = sentence.getLocation(); - - pmWords.setValue(content); + direction.getDirectionType().add(directionType); // Staff - Staff staff = current.note.getStaff(); + final Staff staff = current.note.getStaff(); insertStaffId(direction, staff); // Placement direction.setPlacement( (location.getY() < current.note.getCenter().y) ? AboveBelow.ABOVE : AboveBelow.BELOW); + // Metronome? + if (sentence instanceof MetronomeInter metro) { + final Metronome metronome = factory.createMetronome(); + + // Tempo text indication? + final String tempoText = metro.getTempoText(); + if (!tempoText.isBlank()) { + // NOTA: Tempo text is put in a separate directionType element + final FormattedTextId pmWords = factory.createFormattedTextId(); + pmWords.setValue(tempoText); + pmWords.setDefaultY(yOf(location, staff)); + pmWords.setRelativeX( + toTenths(location.getX() - current.note.getCenterLeft().x)); + setFontInfo(pmWords, sentence); + directionType.getWordsOrSymbol().add(pmWords); + + directionType = factory.createDirectionType(); + direction.getDirectionType().add(directionType); + } else { + metronome.setDefaultY(yOf(location, staff)); + metronome.setRelativeX( + toTenths(location.getX() - current.note.getCenterLeft().x)); + } - // default-y - pmWords.setDefaultY(yOf(location, staff)); + // Note symbol + final BeatUnitInter.Note note = metro.getNote(); + metronome.setBeatUnit(note.toMusicXml()); - // Font information - setFontInfo(pmWords, sentence); + // Dotted symbol? + if (note.hasDot()) { + metronome.getBeatUnitDot().add(factory.createEmpty()); + } - // relative-x - pmWords.setRelativeX(toTenths(location.getX() - current.note.getCenterLeft().x)); + // BPM text + final PerMinute perMinute = factory.createPerMinute(); + perMinute.setValue(metro.getBpmText()); + metronome.setPerMinute(perMinute); - directionType.getWordsOrSymbol().add(pmWords); - direction.getDirectionType().add(directionType); + if (metro.hasParentheses()) { + metronome.setParentheses(YesNo.YES); + } - // Tempo? - if (sentence instanceof TempoInter tempo) { + directionType.setMetronome(metronome); + + // Sound tempo based on metronome value final Sound sound = factory.createSound(); - sound.setTempo(new BigDecimal(tempo.getBpm())); + sound.setTempo(new BigDecimal(metro.getQuartersPerMinute())); direction.setSound(sound); + } else { + final FormattedTextId pmWords = factory.createFormattedTextId(); + pmWords.setValue(content); + + // default-y + pmWords.setDefaultY(yOf(location, staff)); + + // relative-x + pmWords.setRelativeX(toTenths(location.getX() - current.note.getCenterLeft().x)); + + // Font information + setFontInfo(pmWords, sentence); + + directionType.getWordsOrSymbol().add(pmWords); } // Everything is now OK @@ -1957,29 +2004,10 @@ private void processMeasure (Measure measure) // Number of staves, if > 1 if (isScoreFirstMeasure && current.logicalPart.isMultiStaff()) { - getAttributes() - .setStaves(new BigInteger("" + current.logicalPart.getStaffCount())); + getAttributes().setStaves( + new BigInteger("" + current.logicalPart.getStaffCount())); } - // // Tempo? - // if (isScoreFirstMeasure && isFirst.part && !measure.isDummy()) { - // Direction direction = factory.createDirection(); - // current.pmMeasure.getNoteOrBackupOrForward().add(direction); - // direction.setPlacement(AboveBelow.ABOVE); - // - // DirectionType directionType = factory.createDirectionType(); - // direction.getDirectionType().add(directionType); - // - // // Use a dummy words element - // FormattedTextId pmWords = factory.createFormattedTextId(); - // directionType.getWordsOrSymbol().add(pmWords); - // pmWords.setValue(""); - // - // Sound sound = factory.createSound(); - // sound.setTempo(new BigDecimal(score.getTempoParam().getValue())); - // direction.setSound(sound); - // } - // Insert KeySignature(s), if any (they may vary between staves) processKeys(); @@ -2302,17 +2330,17 @@ private void processNote (AbstractNoteInter note) // Default-x (use left side of the note wrt measure) if (!current.measure.isDummy() && !current.repeatCopying) { int noteLeft = note.getCenterLeft().x; - current.pmNote - .setDefaultX(toTenths(noteLeft - current.measure.getAbscissa(LEFT, staff))); + current.pmNote.setDefaultX( + toTenths(noteLeft - current.measure.getAbscissa(LEFT, staff))); } // Tuplet factor? if (chord.getTupletFactor() != null) { TimeModification timeModification = factory.createTimeModification(); - timeModification - .setActualNotes(new BigInteger("" + chord.getTupletFactor().actualDen)); - timeModification - .setNormalNotes(new BigInteger("" + chord.getTupletFactor().actualNum)); + timeModification.setActualNotes( + new BigInteger("" + chord.getTupletFactor().actualDen)); + timeModification.setNormalNotes( + new BigInteger("" + chord.getTupletFactor().actualNum)); TupletInter tuplet = chord.getTuplet(); Rational chordDur = chord.getDurationSansDotOrTuplet(); @@ -2327,8 +2355,8 @@ private void processNote (AbstractNoteInter note) if (isFirstInChord) { List embraced = tuplet.getChords(); - if ((embraced.get(0) == chord) - || (embraced.get(embraced.size() - 1) == chord)) { + if ((embraced.get(0) == chord) || (embraced.get( + embraced.size() - 1) == chord)) { processTuplet(tuplet); } } @@ -2381,8 +2409,8 @@ private void processNote (AbstractNoteInter note) final MotifSign ms = new MotifSign(motif, sign); final DrumSet drumSet = DrumSet.getInstance(); final int lineCount = staff.getLineCount(); - final Map> staffSet = - drumSet.getStaffSet(lineCount); + final Map> staffSet = drumSet + .getStaffSet(lineCount); if (staffSet == null) { logger.warn("No drum set defined for staff size {}", lineCount); } else { @@ -2513,8 +2541,8 @@ private void processNote (AbstractNoteInter note) : AboveBelow.BELOW); pmFingering.setDefaultY(yOf(fingering.getCenter(), staff)); - getTechnical().getUpBowOrDownBowOrHarmonic() - .add(factory.createTechnicalFingering(pmFingering)); + getTechnical().getUpBowOrDownBowOrHarmonic().add( + factory.createTechnicalFingering(pmFingering)); } // Plucking? @@ -2527,8 +2555,8 @@ private void processNote (AbstractNoteInter note) : AboveBelow.BELOW); placement.setDefaultY(yOf(plucking.getCenter(), staff)); - getTechnical().getUpBowOrDownBowOrHarmonic() - .add(factory.createTechnicalPluck(placement)); + getTechnical().getUpBowOrDownBowOrHarmonic().add( + factory.createTechnicalPluck(placement)); } } @@ -2783,24 +2811,22 @@ private void processScore () // [Encoding]/Supports // 1/ Attributes of 'print' element - for (String attribute : new String[] - { "new-system", "new-page" }) { + for (String attribute : new String[] { "new-system", "new-page" }) { final Supports supports = factory.createSupports(); supports.setElement("print"); supports.setType(YesNo.YES); supports.setAttribute(attribute); supports.setValue("yes"); - encoding.getEncodingDateOrEncoderOrSoftware() - .add(factory.createEncodingSupports(supports)); + encoding.getEncodingDateOrEncoderOrSoftware().add( + factory.createEncodingSupports(supports)); } // 2/ Other elements - for (String element : new String[] - { "accidental", "beam", "stem" }) { + for (String element : new String[] { "accidental", "beam", "stem" }) { final Supports supports = factory.createSupports(); supports.setElement(element); supports.setType(YesNo.YES); - encoding.getEncodingDateOrEncoderOrSoftware() - .add(factory.createEncodingSupports(supports)); + encoding.getEncodingDateOrEncoderOrSoftware().add( + factory.createEncodingSupports(supports)); } identification.setEncoding(encoding); @@ -2876,6 +2902,7 @@ private void processScore () //-----------------// // processSentence // //-----------------// + // For stand-alone sentences (not linked to a note) private void processSentence (SentenceInter sentence) { try { @@ -2915,8 +2942,7 @@ private void processSentence (SentenceInter sentence) case UnknownRole -> {} default -> { - // LyricsItem, Direction, ChordName - // Handle them through related Note + // LyricItem, Direction, Metronome, ChordName are handled through related Note return; } } @@ -3107,8 +3133,8 @@ private void processSystem (SystemInfo system) } else { // Need to build a dummy system Part on-the-fly // Based on the first usable (i.e. not tablature) part - final Part dummyPart = - system.getFirstStandardPart().createDummyPart(current.logicalPart.getId()); + final Part dummyPart = system.getFirstStandardPart().createDummyPart( + current.logicalPart.getId()); current.isDrumPart = dummyPart.isDrumPart(); processPart(dummyPart); } @@ -3389,10 +3415,10 @@ private BigDecimal yOf (Point2D point, private static boolean areEqual (Clef left, Clef right) { - return Objects.equals(left.getNumber(), right.getNumber()) - && Objects.equals(left.getSign(), right.getSign()) - && Objects.equals(left.getLine(), right.getLine()) - && Objects.equals(left.getClefOctaveChange(), right.getClefOctaveChange()); + return Objects.equals(left.getNumber(), right.getNumber()) && Objects.equals( + left.getSign(), + right.getSign()) && Objects.equals(left.getLine(), right.getLine()) && Objects + .equals(left.getClefOctaveChange(), right.getClefOctaveChange()); } //----------// @@ -3541,14 +3567,19 @@ private static class Constants extends ConstantSet { - private final Constant.Integer pageHorizontalMargin = - new Constant.Integer("tenths", 80, "Page horizontal margin"); + private final Constant.Integer pageHorizontalMargin = new Constant.Integer( + "tenths", + 80, + "Page horizontal margin"); - private final Constant.Integer pageVerticalMargin = - new Constant.Integer("tenths", 80, "Page vertical margin"); + private final Constant.Integer pageVerticalMargin = new Constant.Integer( + "tenths", + 80, + "Page vertical margin"); - private final Constant.Boolean avoidTupletBrackets = - new Constant.Boolean(false, "Should we avoid brackets for all tuplets"); + private final Constant.Boolean avoidTupletBrackets = new Constant.Boolean( + false, + "Should we avoid brackets for all tuplets"); } //---------// @@ -3759,8 +3790,8 @@ private void populatePrint () if (!isFirst.part || (staff.getIndexInPart() > 0)) { try { StaffLayout staffLayout = factory.createStaffLayout(); - staffLayout - .setNumber(new BigInteger("" + (1 + staff.getIndexInPart()))); + staffLayout.setNumber( + new BigInteger("" + (1 + staff.getIndexInPart()))); int staffIndexInSystem = system.getStaves().indexOf(staff); diff --git a/app/src/main/java/org/audiveris/omr/score/Score.java b/app/src/main/java/org/audiveris/omr/score/Score.java index 5e90c132e..d0b49495d 100644 --- a/app/src/main/java/org/audiveris/omr/score/Score.java +++ b/app/src/main/java/org/audiveris/omr/score/Score.java @@ -29,7 +29,6 @@ import org.audiveris.omr.sheet.SheetStub; import org.audiveris.omr.util.Jaxb; import org.audiveris.omr.util.Navigable; -import org.audiveris.omr.util.param.Param; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -129,9 +128,6 @@ public class Score @Navigable(false) private Book book; - /** Handling of tempo parameter. */ - private final Param tempoParam; - /** The specified sound volume, if any. */ private Integer volume; @@ -145,8 +141,6 @@ public class Score */ public Score () { - tempoParam = new Param<>(this); - tempoParam.setParent(Tempo.defaultTempo); } //~ Methods ------------------------------------------------------------------------------------ @@ -725,19 +719,6 @@ public List getStubs () return pageStubs; } - //----------------// - // getTempoParam // - //---------------// - /** - * Report the tempo parameter. - * - * @return tempo information - */ - public Param getTempoParam () - { - return tempoParam; - } - //-----------// // getVolume // //-----------// @@ -998,19 +979,6 @@ public static int getDefaultVolume () return constants.defaultVolume.getValue(); } - //-----------------// - // setDefaultTempo // - //-----------------// - /** - * Assign default value for Midi tempo. - * - * @param tempo the default tempo value - */ - public static void setDefaultTempo (int tempo) - { - constants.defaultTempo.setValue(tempo); - } - //------------------// // setDefaultVolume // //------------------// @@ -1032,15 +1000,7 @@ public static void setDefaultVolume (int volume) private static class Constants extends ConstantSet { - - private final Constant.Integer defaultTempo = new Constant.Integer( - "QuartersPerMn", - 120, - "Default tempo, stated in number of quarters per minute"); - - private final Constant.Integer defaultVolume = new Constant.Integer( - "Volume", - 78, - "Default Volume in 0..127 range"); + private final Constant.Integer defaultVolume = + new Constant.Integer("Volume", 78, "Default Volume in 0..127 range"); } } diff --git a/app/src/main/java/org/audiveris/omr/score/StaffConfig.java b/app/src/main/java/org/audiveris/omr/score/StaffConfig.java index 3f5da32f0..0f379ff9b 100644 --- a/app/src/main/java/org/audiveris/omr/score/StaffConfig.java +++ b/app/src/main/java/org/audiveris/omr/score/StaffConfig.java @@ -167,9 +167,8 @@ public static List decodeCsv (String csv) */ public static String toCsvString (Collection collection) { - return new StringBuilder().append( - collection.stream() // - .map(sc -> (sc == null) ? "null" : sc.toString()) // - .collect(Collectors.joining(","))).toString(); + return collection.stream() // + .map(sc -> (sc == null) ? "null" : sc.toString()) // + .collect(Collectors.joining(",")); } } diff --git a/app/src/main/java/org/audiveris/omr/score/Tempo.java b/app/src/main/java/org/audiveris/omr/score/Tempo.java deleted file mode 100644 index 4d83bf18e..000000000 --- a/app/src/main/java/org/audiveris/omr/score/Tempo.java +++ /dev/null @@ -1,116 +0,0 @@ -//------------------------------------------------------------------------------------------------// -// // -// T e m p o // -// // -//------------------------------------------------------------------------------------------------// -// -// -// Copyright © Audiveris 2024. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify it under the terms of the -// GNU Affero General Public License as published by the Free Software Foundation, either version -// 3 of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -// See the GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License along with this -// program. If not, see . -//------------------------------------------------------------------------------------------------// -// -package org.audiveris.omr.score; - -import org.audiveris.omr.constant.Constant; -import org.audiveris.omr.constant.ConstantSet; -import org.audiveris.omr.util.param.Param; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Class Tempo handles the default tempo value. - * - * @author Hervé Bitteur - */ -public abstract class Tempo -{ - //~ Static fields/initializers ----------------------------------------------------------------- - - private static final Constants constants = new Constants(); - - private static final Logger logger = LoggerFactory.getLogger(Tempo.class); - - /** Default parameter. */ - public static final Param defaultTempo = new Default(); - - //~ Constructors ------------------------------------------------------------------------------- - - /** Not meant to be instantiated. */ - private Tempo () - { - } - - //~ Inner Classes ------------------------------------------------------------------------------ - - //-----------// - // Constants // - //-----------// - private static class Constants - extends ConstantSet - { - - private final Constant.Integer defaultTempo = new Constant.Integer( - "QuartersPerMn", - 120, - "Default tempo, stated in number of quarters per minute"); - } - - //---------// - // Default // - //---------// - private static class Default - extends Param - { - - public Default () - { - super(GLOBAL_SCOPE); - } - - @Override - public Integer getSpecific () - { - if (constants.defaultTempo.isSourceValue()) { - return null; - } else { - return constants.defaultTempo.getValue(); - } - } - - @Override - public Integer getValue () - { - return constants.defaultTempo.getValue(); - } - - @Override - public boolean isSpecific () - { - return !constants.defaultTempo.isSourceValue(); - } - - @Override - public boolean setSpecific (Integer specific) - { - if (!getValue().equals(specific)) { - constants.defaultTempo.setValue(specific); - logger.info("Default tempo is now {}", specific); - - return true; - } else { - return false; - } - } - } -} diff --git a/app/src/main/java/org/audiveris/omr/sheet/Book.java b/app/src/main/java/org/audiveris/omr/sheet/Book.java index 924ccc7ae..7e67344b9 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/Book.java +++ b/app/src/main/java/org/audiveris/omr/sheet/Book.java @@ -392,8 +392,7 @@ public void annotate (List theStubs) if (root != null) { try { root.getFileSystem().close(); - } catch (IOException ignored) { - } + } catch (IOException ignored) {} } } } @@ -1794,7 +1793,7 @@ public synchronized BufferedImage loadSheetImage (int id) { try { if (!Files.exists(path)) { - logger.warn("Book input {} not found", path); + logger.info("Book input {} not found", path); return null; } @@ -2031,8 +2030,7 @@ public boolean reachBookStep (final OmrStep target, LogUtil.start(stub); try { - if (stub.reachStep(target, force)) { - } else { + if (stub.reachStep(target, force)) {} else { someFailure = true; } } catch (StepPause ex) { @@ -2533,8 +2531,7 @@ public void store (Path bookPath, if (root != null) { try { root.getFileSystem().close(); - } catch (IOException ignored) { - } + } catch (IOException ignored) {} } getLock().unlock(); diff --git a/app/src/main/java/org/audiveris/omr/sheet/PageCleaner.java b/app/src/main/java/org/audiveris/omr/sheet/PageCleaner.java index db332b75e..5a6a2b780 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/PageCleaner.java +++ b/app/src/main/java/org/audiveris/omr/sheet/PageCleaner.java @@ -33,6 +33,7 @@ import org.audiveris.omr.sig.inter.ArpeggiatoInter; import org.audiveris.omr.sig.inter.BarConnectorInter; import org.audiveris.omr.sig.inter.BarlineInter; +import org.audiveris.omr.sig.inter.BeatUnitInter; import org.audiveris.omr.sig.inter.BraceInter; import org.audiveris.omr.sig.inter.BracketConnectorInter; import org.audiveris.omr.sig.inter.BracketInter; @@ -385,6 +386,12 @@ public void visit (BarlineInter inter) // No BeamGroup + @Override + public void visit (BeatUnitInter inter) + { + processGlyph(inter.getGlyph()); + } + @Override public void visit (BraceInter inter) { diff --git a/app/src/main/java/org/audiveris/omr/sheet/clef/ClefBuilder.java b/app/src/main/java/org/audiveris/omr/sheet/clef/ClefBuilder.java index fa12bfb29..39b75f9fc 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/clef/ClefBuilder.java +++ b/app/src/main/java/org/audiveris/omr/sheet/clef/ClefBuilder.java @@ -581,7 +581,7 @@ public void evaluateGlyph (Glyph glyph, ClefInter bestInter = bestMap.get(kind); if ((bestInter == null) || (bestInter.getGrade() < grade)) { - bestMap.put(kind, ClefInter.create(glyph, shape, grade, staff)); + bestMap.put(kind, ClefInter.createValid(glyph, shape, grade, staff)); } } } diff --git a/app/src/main/java/org/audiveris/omr/sheet/curve/CircleModel.java b/app/src/main/java/org/audiveris/omr/sheet/curve/CircleModel.java index 998a15989..7d05b7f25 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/curve/CircleModel.java +++ b/app/src/main/java/org/audiveris/omr/sheet/curve/CircleModel.java @@ -171,9 +171,9 @@ public void setDistance (double dist) * @param last last point * @return the CircleModel instance if OK, null otherwise */ - public static CircleModel create (Point2D first, - Point2D middle, - Point2D last) + public static CircleModel createValid (Point2D first, + Point2D middle, + Point2D last) { CircleModel model = new CircleModel(first, middle, last); diff --git a/app/src/main/java/org/audiveris/omr/sheet/curve/SlurInfo.java b/app/src/main/java/org/audiveris/omr/sheet/curve/SlurInfo.java index 818fdaf85..bc170d8e9 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/curve/SlurInfo.java +++ b/app/src/main/java/org/audiveris/omr/sheet/curve/SlurInfo.java @@ -144,7 +144,7 @@ public Model computeSideModel (List points, Point p2 = points.get(np - 1); // Choose a circle-model, otherwise a line-model - CircleModel rough = CircleModel.create(p0, p1, p2); + CircleModel rough = CircleModel.createValid(p0, p1, p2); if (rough != null) { return rough; diff --git a/app/src/main/java/org/audiveris/omr/sheet/rhythm/MeasureStack.java b/app/src/main/java/org/audiveris/omr/sheet/rhythm/MeasureStack.java index 7d62ad997..ca2d8451f 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/rhythm/MeasureStack.java +++ b/app/src/main/java/org/audiveris/omr/sheet/rhythm/MeasureStack.java @@ -752,22 +752,26 @@ public AbstractTimeInter getCurrentTimeSignature () /** * Retrieve the most suitable chord to connect the event point to. * - * @param point the system-based location - * @param xRange required abscissa range, or null + * @param point the system-based location + * @param area required abscissa range (excluding ordinate range), or null + * @param tryAbove should we first lookup at the staff above the provided point * @return the most suitable chord, or null */ public AbstractChordInter getEventChord (Point2D point, - Rectangle xRange) + Rectangle area, + boolean tryAbove) { - // First, try staff just above - AbstractChordInter above = getStandardChordAbove(point, xRange); + if (tryAbove) { + // First, try staff just above + AbstractChordInter above = getStandardChordAbove(point, area); - if (above != null) { - return above; + if (above != null) { + return above; + } } - // Second, try staff just below - return getStandardChordBelow(point, xRange); + // Try below + return getStandardChordBelow(point, area); } //-----------// @@ -1186,14 +1190,14 @@ public Rational getSlotsDuration () /** * Retrieve the closest chord (head or rest) within staff above. * - * @param point the system-based location - * @param xRange required abscissa range, or null + * @param point the system-based location + * @param area required abscissa range (excluding ordinate range), or null * @return the most suitable chord, or null */ public AbstractChordInter getStandardChordAbove (Point2D point, - Rectangle xRange) + Rectangle area) { - Collection aboves = getStandardChordsAbove(point, xRange); + Collection aboves = getStandardChordsAbove(point, area); if (!aboves.isEmpty()) { return getClosestChord(aboves, point); @@ -1208,14 +1212,14 @@ public AbstractChordInter getStandardChordAbove (Point2D point, /** * Retrieve the closest chord (head or rest) within staff below. * - * @param point the system-based location - * @param xRange required abscissa range, or null + * @param point the system-based location + * @param area required abscissa range (excluding ordinate range), or null * @return the most suitable chord, or null */ public AbstractChordInter getStandardChordBelow (Point2D point, - Rectangle xRange) + Rectangle area) { - Collection belows = getStandardChordsBelow(point, xRange); + Collection belows = getStandardChordsBelow(point, area); if (!belows.isEmpty()) { return getClosestChord(belows, point); @@ -1250,12 +1254,12 @@ public Set getStandardChords () * Report the set of standard chords whose 'head' is located in the staff above the * provided point. * - * @param point the provided point - * @param xRange required abscissa range, or null + * @param point the provided point + * @param area required abscissa range (excluding ordinate range), or null * @return the (perhaps empty) set of chords */ public Set getStandardChordsAbove (Point2D point, - Rectangle xRange) + Rectangle area) { Staff desiredStaff = getSystem().getStaffAtOrAbove(point); Set found = new LinkedHashSet<>(); @@ -1264,8 +1268,11 @@ public Set getStandardChordsAbove (Point2D point, if (measure != null) { for (AbstractChordInter chord : measure.getStandardChords()) { if (chord.getBottomStaff() == desiredStaff) { - if ((xRange == null) || (GeoUtil.xOverlap(chord.getBounds(), xRange) > 0)) { - Point head = chord.getHeadLocation(); + final Rectangle chordBounds = chord.getBounds(); + if ((area == null) || // + ((GeoUtil.xOverlap(chordBounds, area) > 0) && // + (GeoUtil.yOverlap(chordBounds, area) < 0))) { + final Point head = chord.getHeadLocation(); if ((head != null) && (head.y < point.getY())) { found.add(chord); @@ -1285,22 +1292,27 @@ public Set getStandardChordsAbove (Point2D point, * Report the set of standard chords whose 'head' is located in the staff below the * provided point. * - * @param point the provided point - * @param xRange required abscissa range, or null + * @param point the provided point + * @param area required abscissa range (excluding ordinate range), or null * @return the (perhaps empty) collection of chords */ public Set getStandardChordsBelow (Point2D point, - Rectangle xRange) + Rectangle area) { - Staff desiredStaff = getSystem().getStaffAtOrBelow(point); - Set found = new LinkedHashSet<>(); - Measure measure = getMeasureAt(desiredStaff); + final Staff desiredStaff = getSystem().getStaffAtOrBelow(point); + final Set found = new LinkedHashSet<>(); + final Measure measure = getMeasureAt(desiredStaff); if (measure != null) { for (AbstractChordInter chord : measure.getStandardChords()) { if (chord.getTopStaff() == desiredStaff) { - if ((xRange == null) || (GeoUtil.xOverlap(chord.getBounds(), xRange) > 0)) { - Point head = chord.getHeadLocation(); + final Rectangle chordBounds = chord.getBounds(); + + if ((area == null) || // + ((GeoUtil.xOverlap(chordBounds, area) > 0) && (GeoUtil.yOverlap( + chordBounds, + area) < 0))) { + final Point head = chord.getHeadLocation(); if ((head != null) && (head.y > point.getY())) { found.add(chord); diff --git a/app/src/main/java/org/audiveris/omr/sheet/symbol/InterFactory.java b/app/src/main/java/org/audiveris/omr/sheet/symbol/InterFactory.java index 6946aa183..b6be0ae19 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/symbol/InterFactory.java +++ b/app/src/main/java/org/audiveris/omr/sheet/symbol/InterFactory.java @@ -45,6 +45,7 @@ import org.audiveris.omr.sig.inter.BarlineInter; import org.audiveris.omr.sig.inter.BeamHookInter; import org.audiveris.omr.sig.inter.BeamInter; +import org.audiveris.omr.sig.inter.BeatUnitInter; import org.audiveris.omr.sig.inter.BraceInter; import org.audiveris.omr.sig.inter.BracketInter; import org.audiveris.omr.sig.inter.BreathMarkInter; @@ -69,6 +70,7 @@ import org.audiveris.omr.sig.inter.LyricItemInter; import org.audiveris.omr.sig.inter.MarkerInter; import org.audiveris.omr.sig.inter.MeasureRepeatInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.MultipleRestInter; import org.audiveris.omr.sig.inter.NumberInter; import org.audiveris.omr.sig.inter.OctaveShiftInter; @@ -288,7 +290,7 @@ private Inter doCreate (Evaluation eval, case F_CLEF_8VB: case C_CLEF: case PERCUSSION_CLEF: - return ClefInter.create(glyph, shape, grade, closestStaff); // Staff is OK + return ClefInter.createValid(glyph, shape, grade, closestStaff); // Staff is OK // Key signatures case KEY_FLAT_7: @@ -670,11 +672,10 @@ private void handleComplexDynamics () private void handleTimes () { // Retrieve all time inters (outside staff headers) - final List systemTimes = sig.inters(new Class[] - { - TimeWholeInter.class, // Whole symbol like C or predefined 6/8 - TimeCustomInter.class, // User modifiable combo 6/8 - TimeNumberInter.class }); // Partial symbol like 6 or 8 + final List systemTimes = sig.inters( + new Class[] { TimeWholeInter.class, // Whole symbol like C or predefined 6/8 + TimeCustomInter.class, // User modifiable combo 6/8 + TimeNumberInter.class }); // Partial symbol like 6 or 8 final List headerTimes = new ArrayList<>(); @@ -825,11 +826,7 @@ private static Inter doCreateManual (Shape shape, // Barlines case THIN_BARLINE: case THICK_BARLINE: - // if (sheet.getStub().getLatestStep().compareTo(OmrStep.MEASURES) < 0) { - // return new BarlineInter(null, shape, GRADE, null, null); - // } else { return new StaffBarlineInter(shape, GRADE); - // } case DOUBLE_BARLINE: case FINAL_BARLINE: @@ -887,6 +884,9 @@ private static Inter doCreateManual (Shape shape, case TEXT: return new WordInter(shape, GRADE); + case METRONOME: + return new MetronomeInter(GRADE); + // Clefs case G_CLEF: case G_CLEF_SMALL: @@ -1091,6 +1091,18 @@ private static Inter doCreateManual (Shape shape, case GRACE_NOTE_SLASH_DOWN: return new GraceChordInter(null, shape, GRADE); + // Metronome units + case METRO_WHOLE: + case METRO_HALF: + case METRO_QUARTER: + case METRO_EIGHTH: + case METRO_SIXTEENTH: + case METRO_DOTTED_HALF: + case METRO_DOTTED_QUARTER: + case METRO_DOTTED_EIGHTH: + case METRO_DOTTED_SIXTEENTH: + return new BeatUnitInter(shape, GRADE); + // Ornaments case TR: case TURN: diff --git a/app/src/main/java/org/audiveris/omr/sheet/symbol/LinksStep.java b/app/src/main/java/org/audiveris/omr/sheet/symbol/LinksStep.java index fe70591b9..af9b6b107 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/symbol/LinksStep.java +++ b/app/src/main/java/org/audiveris/omr/sheet/symbol/LinksStep.java @@ -164,29 +164,30 @@ public void impact (UITaskList seq, for (UITask task : seq.getTasks()) { if (task instanceof InterTask interTask) { - Inter inter = interTask.getInter(); - SystemInfo system = inter.getSig().getSystem(); - Class interClass = inter.getClass(); + final Inter inter = interTask.getInter(); - if (isImpactedBy(interClass, forTexts)) { - if (inter instanceof LyricItemInter item) { + if (isImpactedBy(inter.getClass(), forTexts)) { + final SystemInfo system = inter.getSig().getSystem(); + + switch (inter) { + case LyricItemInter item -> { if ((opKind != OpKind.UNDO) && task instanceof AdditionTask) { final int profile = Math.max(item.getProfile(), system.getProfile()); item.mapToChord(profile); } - } else if (inter instanceof SentenceInter sentence) { - SymbolsLinker linker = new SymbolsLinker(system); - + } + case SentenceInter sentence -> { if ((opKind != OpKind.UNDO) && task instanceof AdditionTask) { - linker.linkOneSentence(sentence); + sentence.link(system); } else if (task instanceof SentenceRoleTask roleTask) { - linker.unlinkOneSentence( - sentence, - (opKind == OpKind.UNDO) ? roleTask.getNewRole() - : roleTask.getOldRole()); - linker.linkOneSentence(sentence); + sentence.unlink((opKind == OpKind.UNDO) // + ? roleTask.getNewRole() + : roleTask.getOldRole()); + sentence.link(system); } } + default -> {} + } } } } diff --git a/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsFilter.java b/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsFilter.java index 4f12c922d..aaebad43b 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsFilter.java +++ b/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsFilter.java @@ -215,30 +215,25 @@ private static class Constants extends ConstantSet { - private final Constant.Boolean displaySymbols = new Constant.Boolean( - false, - "Should we display the symbols image?"); + private final Constant.Boolean displaySymbols = + new Constant.Boolean(false, "Should we display the symbols image?"); - private final Constant.Boolean saveSymbolsBuffer = new Constant.Boolean( - false, - "Should we save symbols image on disk?"); + private final Constant.Boolean saveSymbolsBuffer = + new Constant.Boolean(false, "Should we save symbols image on disk?"); - private final Scale.Fraction staffVerticalMargin = new Scale.Fraction( - 0.5, - "Margin erased above & below staff header area"); + private final Scale.Fraction staffVerticalMargin = + new Scale.Fraction(0.5, "Margin erased above & below staff header area"); private final Constant.Integer maxSymbolLength = new Constant.Integer( "letter count", 3, "Maximum number of chars for a word to be checked as a symbol"); - private final Constant.Ratio minHeadContextualGrade = new Constant.Ratio( - 0.6, - "Minimum contextual grade to hide a head"); + private final Constant.Ratio minHeadContextualGrade = + new Constant.Ratio(0.6, "Minimum contextual grade to hide a head"); - private final Constant.Ratio minStemContextualGrade = new Constant.Ratio( - 0.7, - "Minimum contextual grade to hide a stem"); + private final Constant.Ratio minStemContextualGrade = + new Constant.Ratio(0.7, "Minimum contextual grade to hide a stem"); } //----------------// @@ -342,6 +337,11 @@ public void eraseInters (Map> weaksMap) continue; } + if (inter.isFrozen()) { + strongs.add(inter); + continue; + } + // Check short words if (inter instanceof WordInter word) { if (word.getValue().length() <= maxSymbolLength) { @@ -414,10 +414,8 @@ protected void processGlyph (Glyph glyph) // Save the glyph? if (systemWeaks != null) { // The glyph may be made of several parts, so it's safer to restart from pixels - List glyphs = GlyphFactory.buildGlyphs( - glyph.getRunTable(), - glyph.getTopLeft(), - GlyphGroup.SYMBOL); + List glyphs = GlyphFactory + .buildGlyphs(glyph.getRunTable(), glyph.getTopLeft(), GlyphGroup.SYMBOL); systemWeaks.addAll(glyphs); } } @@ -444,10 +442,8 @@ private void savePixels (Rectangle box, final RunTable runTable = factory.createTable(buf); // Glyphs - final List glyphs = GlyphFactory.buildGlyphs( - runTable, - new Point(0, 0), - GlyphGroup.SYMBOL); + final List glyphs = + GlyphFactory.buildGlyphs(runTable, new Point(0, 0), GlyphGroup.SYMBOL); systemWeaks.addAll(glyphs); } diff --git a/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsLinker.java b/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsLinker.java index 7c3d38543..5197b7f10 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsLinker.java +++ b/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsLinker.java @@ -21,22 +21,17 @@ // package org.audiveris.omr.sheet.symbol; -import org.audiveris.omr.sheet.Part; -import org.audiveris.omr.sheet.Scale; -import org.audiveris.omr.sheet.Staff; import org.audiveris.omr.sheet.SystemInfo; import org.audiveris.omr.sheet.rhythm.MeasureStack; import org.audiveris.omr.sheet.rhythm.TupletsBuilder; import org.audiveris.omr.sig.SIGraph; import org.audiveris.omr.sig.inter.AbstractChordInter; import org.audiveris.omr.sig.inter.BeamGroupInter; -import org.audiveris.omr.sig.inter.ChordNameInter; import org.audiveris.omr.sig.inter.DynamicsInter; import org.audiveris.omr.sig.inter.FermataInter; import org.audiveris.omr.sig.inter.HeadChordInter; import org.audiveris.omr.sig.inter.HeadInter; import org.audiveris.omr.sig.inter.Inter; -import org.audiveris.omr.sig.inter.LyricItemInter; import org.audiveris.omr.sig.inter.NumberInter; import org.audiveris.omr.sig.inter.OctaveShiftInter; import org.audiveris.omr.sig.inter.PedalInter; @@ -45,21 +40,14 @@ import org.audiveris.omr.sig.inter.SmallChordInter; import org.audiveris.omr.sig.inter.WedgeInter; import org.audiveris.omr.sig.relation.ChordGraceRelation; -import org.audiveris.omr.sig.relation.ChordNameRelation; -import org.audiveris.omr.sig.relation.ChordSentenceRelation; -import org.audiveris.omr.sig.relation.ChordSyllableRelation; -import org.audiveris.omr.sig.relation.EndingSentenceRelation; import org.audiveris.omr.sig.relation.Link; import org.audiveris.omr.sig.relation.Relation; import org.audiveris.omr.sig.relation.SlurHeadRelation; -import org.audiveris.omr.text.TextRole; import org.audiveris.omr.util.HorizontalSide; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.awt.Rectangle; -import java.awt.geom.Point2D; import java.util.Collection; import java.util.List; @@ -274,107 +262,6 @@ private void linkOctaveShifts () } } - //-----------------// - // linkOneSentence // - //-----------------// - /** - * Link a text sentence, according to its role, with its related entity if any. - * - * @param sentence the sentence to link - */ - public void linkOneSentence (SentenceInter sentence) - { - try { - if (sentence.isVip()) { - logger.info("VIP linkOneSentence for {}", sentence); - } - - final TextRole role = sentence.getRole(); - - if (role == null) { - logger.info("No role for {}", sentence); - - return; - } - - final Point2D location = sentence.getLocation(); - final Rectangle bounds = sentence.getBounds(); - final Scale scale = system.getSheet().getScale(); - - switch (role) { - case Lyrics -> { - // Map each syllable with proper chord, in assigned staff - for (Inter wInter : sentence.getMembers()) { - final LyricItemInter item = (LyricItemInter) wInter; - final int profile = Math.max(item.getProfile(), system.getProfile()); - item.mapToChord(profile); - } - } - - case Direction, Tempo -> { - // Map direction with proper chord - MeasureStack stack = system.getStackAt(location); - - if (stack == null) { - logger.info( - "No measure stack for direction {} {}", - sentence, - sentence.getValue()); - } else { - int xGapMax = scale.toPixels(ChordSentenceRelation.getXGapMax()); - Rectangle fatBounds = new Rectangle(bounds); - fatBounds.grow(xGapMax, 0); - - AbstractChordInter chord = stack.getEventChord(location, fatBounds); - - if (chord != null) { - sig.addEdge(chord, sentence, new ChordSentenceRelation()); - } else { - logger.info( - "No chord near direction {} {}", - sentence, - sentence.getValue()); - } - } - } - - case PartName -> { - // Assign part name to proper part - Staff staff = system.getClosestStaff(sentence.getCenter()); - Part part = staff.getPart(); - part.setName(sentence); - } - - case ChordName -> { - // Map each word with proper chord, in assigned staff - for (Inter wInter : sentence.getMembers()) { - final ChordNameInter word = (ChordNameInter) wInter; - final Link link = word.lookupLink(system); - - if (link == null) { - logger.info("No chord below {}", word); - } else { - link.applyTo(wInter); - } - } - } - - case EndingNumber, EndingText -> { - // Look for related ending - final Link link = sentence.lookupEndingLink(system); - - if ((link != null) && (null == sig - .getRelation(link.partner, sentence, EndingSentenceRelation.class))) { - sig.addEdge(link.partner, sentence, link.relation); - } - } - } - // Roles UnknownRole, Title, Number, Creator*, Rights stand by themselves - } catch (Exception ex) { - logger.warn("Error in linkOneSentence for {} {}", sentence, ex.toString(), ex); - } - } - //------------// // linkPedals // //------------// @@ -409,14 +296,13 @@ private void linkPedals () // linkTexts // //-----------// /** - * Link text interpretations, according to their role, with their related entity if - * any. + * Link text interpretations, according to their role, with their related entity if any. */ private void linkTexts () { for (Inter sInter : sig.inters(SentenceInter.class)) { final SentenceInter sentence = (SentenceInter) sInter; - linkOneSentence(sentence); + sentence.link(system); } } @@ -478,53 +364,4 @@ public void process () linkOctaveShifts(); linkNumbers(); } - - //-------------------// - // unlinkOneSentence // - //-------------------// - /** - * Unlink a text sentence, according to its role, with its related entity if any. - * - * @param sentence the sentence to unlink - * @param oldRole the role this sentence had - */ - public void unlinkOneSentence (SentenceInter sentence, - TextRole oldRole) - { - try { - if (sentence.isVip()) { - logger.info("VIP unlinkOneSentence for {}", sentence); - } - - switch (oldRole) { - case null -> logger.info("Null old role for {}", sentence); - default -> {} - - case Lyrics -> sentence.getMembers().forEach( - wInter -> sig.getRelations(wInter, ChordSyllableRelation.class) - .forEach(rel -> sig.removeEdge(rel))); - - case Direction -> sig.getRelations(sentence, ChordSentenceRelation.class) - .forEach(rel -> sig.removeEdge(rel)); - - case PartName -> { - // Look for proper part - final Staff staff = system.getClosestStaff(sentence.getCenter()); - final Part part = staff.getPart(); - part.setName((SentenceInter) null); - } - - case ChordName -> sentence.getMembers().forEach( - wInter -> sig.getRelations(wInter, ChordNameRelation.class) - .forEach(rel -> sig.removeEdge(rel))); - - case EndingNumber, EndingText -> // - sig.getRelations(sentence, EndingSentenceRelation.class) - .forEach(rel -> sig.removeEdge(rel)); - - } - } catch (Exception ex) { - logger.warn("Error in unlinkOneSentence for {} {}", sentence, ex.toString(), ex); - } - } } diff --git a/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsStep.java b/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsStep.java index 45383e04c..d06b66bfd 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsStep.java +++ b/app/src/main/java/org/audiveris/omr/sheet/symbol/SymbolsStep.java @@ -77,7 +77,7 @@ public void displayUI (OmrStep step, { sheet.getSheetEditor().refresh(); - // Update glyph board if needed (to see OCR'ed data) + // Update glyph board if needed (to see OCR'd data) final SelectionService service = sheet.getGlyphIndex().getEntityService(); @SuppressWarnings("unchecked") diff --git a/app/src/main/java/org/audiveris/omr/sheet/ui/BookActions.java b/app/src/main/java/org/audiveris/omr/sheet/ui/BookActions.java index 635182cfe..557e71a52 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/ui/BookActions.java +++ b/app/src/main/java/org/audiveris/omr/sheet/ui/BookActions.java @@ -409,8 +409,7 @@ public void defineSheetScaling (ActionEvent e) try { // TODO: Is there a more civilized way? optionPane.setValue(JOptionPane.UNINITIALIZED_VALUE); - } catch (Exception ignored) { - } + } catch (Exception ignored) {} } } }); @@ -590,7 +589,7 @@ public void dumpBook (ActionEvent e) // dumpEventServices // //-------------------// /** - * Action to erase the dump the content of all event services + * Action to dump the content of all event services * * @param e the event which triggered this action */ @@ -1702,8 +1701,7 @@ public void windowClosing (WindowEvent we) JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, - new Object[] - { UserOpt.OK, UserOpt.Apply, UserOpt.Cancel }); + new Object[] { UserOpt.OK, UserOpt.Apply, UserOpt.Cancel }); optionPane.addPropertyChangeListener(e -> { if (dialog.isVisible() && (e.getSource() == optionPane) && (e.getPropertyName() .equals(JOptionPane.VALUE_PROPERTY))) { @@ -1847,8 +1845,7 @@ public static boolean checkStored (Book book) //--------// public static OmrFileFilter filter (String ext) { - return new OmrFileFilter(ext, new String[] - { ext }); + return new OmrFileFilter(ext, new String[] { ext }); } //-------------// diff --git a/app/src/main/java/org/audiveris/omr/sheet/ui/SheetPainter.java b/app/src/main/java/org/audiveris/omr/sheet/ui/SheetPainter.java index bf1e32daf..871ed629b 100644 --- a/app/src/main/java/org/audiveris/omr/sheet/ui/SheetPainter.java +++ b/app/src/main/java/org/audiveris/omr/sheet/ui/SheetPainter.java @@ -50,6 +50,7 @@ import org.audiveris.omr.sig.inter.AugmentationDotInter; import org.audiveris.omr.sig.inter.BarConnectorInter; import org.audiveris.omr.sig.inter.BarlineInter; +import org.audiveris.omr.sig.inter.BeatUnitInter; import org.audiveris.omr.sig.inter.BraceInter; import org.audiveris.omr.sig.inter.BracketConnectorInter; import org.audiveris.omr.sig.inter.BracketInter; @@ -62,7 +63,9 @@ import org.audiveris.omr.sig.inter.KeyInter; import org.audiveris.omr.sig.inter.LedgerInter; import org.audiveris.omr.sig.inter.LyricLineInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.MultipleRestInter; +import org.audiveris.omr.sig.inter.MusicWordInter; import org.audiveris.omr.sig.inter.OctaveShiftInter; import org.audiveris.omr.sig.inter.RestInter; import org.audiveris.omr.sig.inter.SentenceInter; @@ -223,6 +226,10 @@ public SheetPainter (Sheet sheet, this.withJumbos = withJumbos; clip = g.getClipBounds(); + + // To avoid the display being slightly clipped near a window border + final int margin = scale.toPixels(constants.clipMargin); + clip.grow(margin, margin); } //~ Methods ------------------------------------------------------------------------------------ @@ -476,7 +483,7 @@ protected void processSystem (SystemInfo system) // All interpretations for this system sigPainter.process(system.getSig()); - } catch (ConcurrentModificationException ignored) { + } catch (ConcurrentModificationException ignored) { // } catch (Exception ex) { logger.warn("Cannot paint system#{}", system.getId(), ex); } @@ -645,6 +652,10 @@ private static class Constants private final Constant.Boolean jumboColored = new Constant.Boolean( true, "Should the jumbo items be colored specifically?"); + + private final Scale.Fraction clipMargin = new Scale.Fraction( + 4.0, + "Margin added to clip bounds to avoid truncation"); } //-----------// @@ -1022,12 +1033,17 @@ protected void paintWord (WordInter word, return; } - FontRenderContext frc = g.getFontRenderContext(); - Font font = TextFont.create(textFont, fontInfo); - TextLayout layout = new TextLayout(word.getValue(), font, frc); setColor(word); - paint(layout, word.getLocation(), BASELINE_LEFT); + if (word instanceof MusicWordInter) { + final MusicFont mf = musicFont.deriveFont((float) fontInfo.pointsize); + final TextLayout layout = mf.layout(word.getValue()); + paint(layout, word.getCenter(), AREA_CENTER); + } else { + final TextFont tf = TextFont.create(textFont, fontInfo); + final TextLayout layout = tf.layout(word.getValue()); + paint(layout, word.getLocation(), BASELINE_LEFT); + } } //---------// @@ -1258,7 +1274,17 @@ public void visit (BarlineInter barline) g.fill(barline.getArea()); } - // No beam group + // No visit for beam group + + //-------// + // visit // + //-------// + @Override + public void visit (BeatUnitInter word) + { + final FontInfo fontInfo = word.getFontInfo(); + paintWord(word, fontInfo); + } //-------// // visit // @@ -1474,6 +1500,19 @@ public void visit (LedgerInter ledger) g.draw(ledger.getMedian()); } + //-------// + // visit // + //-------// + @Override + public void visit (MetronomeInter inter) + { + // Painted directky only when its member words are not yet created (case of a ghost) + // Otherwise, the member words are painted individually + if (inter.getId() == 0) { + visit((Inter) inter); + } + } + //-------// // visit // //-------// @@ -1561,12 +1600,15 @@ public void visit (RestInter rest) @Override public void visit (SentenceInter sentence) { - FontInfo lineMeanFont = sentence.getMeanFont(); - for (Inter member : sentence.getMembers()) { - WordInter word = (WordInter) member; - paintWord(word, lineMeanFont); - ///paintWord(word, word.getFontInfo()); - } + // final FontInfo lineMeanFont = sentence.getMeanFont(); + // for (Inter member : sentence.getMembers()) { + // WordInter word = (WordInter) member; + // + // if (!(word instanceof MusicWordInter)) { + // paintWord(word, lineMeanFont); + // } + // ///paintWord(word, word.getFontInfo()); + // } } //-------// @@ -1682,10 +1724,10 @@ public void visit (WordInter word) { // Usually, words are displayed via their containing sentence, using sentence mean font. // But in the specific case of a (temporarily) orphan word, we display the word as it is. - if ((word.getSig() == null) || (word.getEnsemble() == null)) { - FontInfo fontInfo = word.getFontInfo(); - paintWord(word, fontInfo); - } + // if ((word.getSig() == null) || (word.getEnsemble() == null)) { + FontInfo fontInfo = word.getFontInfo(); + paintWord(word, fontInfo); + // } } } } diff --git a/app/src/main/java/org/audiveris/omr/sig/SigValue.java b/app/src/main/java/org/audiveris/omr/sig/SigValue.java index 3f6d7760a..7482d478b 100644 --- a/app/src/main/java/org/audiveris/omr/sig/SigValue.java +++ b/app/src/main/java/org/audiveris/omr/sig/SigValue.java @@ -35,6 +35,7 @@ import org.audiveris.omr.sig.inter.BeamGroupInter; import org.audiveris.omr.sig.inter.BeamHookInter; import org.audiveris.omr.sig.inter.BeamInter; +import org.audiveris.omr.sig.inter.BeatUnitInter; import org.audiveris.omr.sig.inter.BraceInter; import org.audiveris.omr.sig.inter.BracketConnectorInter; import org.audiveris.omr.sig.inter.BracketInter; @@ -65,6 +66,7 @@ import org.audiveris.omr.sig.inter.MarkerInter; import org.audiveris.omr.sig.inter.MeasureCountInter; import org.audiveris.omr.sig.inter.MeasureRepeatInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.MultipleRestInter; import org.audiveris.omr.sig.inter.NumberInter; import org.audiveris.omr.sig.inter.OctaveShiftInter; @@ -251,6 +253,8 @@ public class SigValue @XmlElementRef(type = SmallFlagInter.class), @XmlElementRef(type = StaffBarlineInter.class), @XmlElementRef(type = StemInter.class), + @XmlElementRef(type = MetronomeInter.class), + @XmlElementRef(type = BeatUnitInter.class), @XmlElementRef(type = TimeCustomInter.class), @XmlElementRef(type = TimeNumberInter.class), @XmlElementRef(type = TimePairInter.class), @@ -318,8 +322,8 @@ public void populateSig (SIGraph sig) @Override public String toString () { - return new StringBuilder("SigValue{").append("inters:").append(inters.size()).append( - " relations:").append(relations.size()).append('}').toString(); + return new StringBuilder("SigValue{").append("inters:").append(inters.size()) + .append(" relations:").append(relations.size()).append('}').toString(); } //~ Inner Classes ------------------------------------------------------------------------------ diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInter.java index 5693d5cc0..67be0c3fa 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInter.java @@ -435,10 +435,8 @@ public void freeze () frozen = true; // Freeze members if any - if (this instanceof InterEnsemble) { - InterEnsemble ens = (InterEnsemble) this; - - for (Inter member : ens.getMembers()) { + if (this instanceof InterEnsemble ensemble) { + for (Inter member : ensemble.getMembers()) { member.freeze(); } } @@ -1002,7 +1000,7 @@ protected String internals () sb.append(")"); if (staff != null) { - sb.append(" stf:").append(staff.getId()); + sb.append(" staff:").append(staff.getId()); } if (shape != null) { @@ -1150,9 +1148,8 @@ public boolean overlaps (Inter that) } for (Inter thisMember : members) { - if (thisMember.overlaps(that) && that.overlaps(thisMember) && sig.noSupport( - thisMember, - that)) { + if (thisMember.overlaps(that) && that.overlaps(thisMember) + && sig.noSupport(thisMember, that)) { return true; } } @@ -1213,8 +1210,8 @@ public List preAdd (WrappedBoolean cancel, { final SystemInfo system = staff.getSystem(); - return Arrays.asList( - new AdditionTask(system.getSig(), this, getBounds(), searchLinks(system))); + return Arrays + .asList(new AdditionTask(system.getSig(), this, getBounds(), searchLinks(system))); } //---------// diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInterVisitor.java b/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInterVisitor.java index 4ec8b1456..bc6362c6c 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInterVisitor.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/AbstractInterVisitor.java @@ -88,6 +88,12 @@ public void visit (BeamGroupInter inter) { } + @Override + public void visit (BeatUnitInter inter) + { + visit((Inter) inter); + } + @Override public void visit (BraceInter inter) { @@ -149,6 +155,11 @@ public void visit (MultipleRestInter inter) { } + @Override + public void visit (MetronomeInter inter) + { + } + @Override public void visit (OctaveShiftInter inter) { diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/BeatUnitInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/BeatUnitInter.java new file mode 100644 index 000000000..7f2a9a30f --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/sig/inter/BeatUnitInter.java @@ -0,0 +1,325 @@ +//------------------------------------------------------------------------------------------------// +// // +// B e a t U n i t I n t e r // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.sig.inter; + +import org.audiveris.omr.glyph.Glyph; +import org.audiveris.omr.glyph.Shape; +import org.audiveris.omr.math.Rational; +import org.audiveris.omr.sheet.Sheet; +import org.audiveris.omr.sig.ui.DefaultEditor; +import org.audiveris.omr.sig.ui.InterEditor; +import org.audiveris.omr.ui.symbol.MusicFamily; +import org.audiveris.omr.ui.symbol.MusicFont; +import org.audiveris.omr.ui.symbol.ShapeSymbol; +import org.audiveris.omr.ui.symbol.Symbols; +import org.audiveris.omr.util.StringUtil; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.Point; +import java.awt.Rectangle; +import java.util.Objects; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Class BeatUnitInter is a word that represents the beat specification part in a + * metronome mark. + * + * @author Hervé Bitteur + */ +@XmlRootElement(name = "beat-unit") +@XmlAccessorType(XmlAccessType.NONE) +public class BeatUnitInter + extends MusicWordInter +{ + //~ Static fields/initializers ----------------------------------------------------------------- + + private static final Logger logger = LoggerFactory.getLogger(BeatUnitInter.class); + + //~ Instance fields ---------------------------------------------------------------------------- + + // Persistent data + //---------------- + + /** Unit symbol, perhaps dotted. */ + @XmlElement + private Note note; + + //~ Constructors ------------------------------------------------------------------------------- + + /** + * No-argument constructor meant for JAXB. + */ + @SuppressWarnings("unused") + private BeatUnitInter () + { + } + + /** + * Creates a new BeatUnitInter object meant for manual assignment. + * + * @param shape one of the METRO shapes + * @param grade the interpretation quality + */ + public BeatUnitInter (Shape shape, + Double grade) + { + super(grade, shape, Note.noteOf(shape).getString()); + note = Note.noteOf(shape); + } + + /** + * Creates a new BeatUnitInter object. + * + * @param glyph the underlying glyph + * @param bounds the precise object bounds + * @param grade the interpretation quality + * @param value the word content (music characters) + * @param musicFont the current music font + * @param note the metronome note type + * @param location the baseline location + */ + public BeatUnitInter (Glyph glyph, + Rectangle bounds, + Double grade, + String value, + MusicFont musicFont, + Note note, + Point location) + { + super(glyph, bounds, grade, note.toShape(), value, musicFont, location); + this.note = note; + } + + //~ Methods ------------------------------------------------------------------------------------ + + //--------// + // accept // + //--------// + @Override + public void accept (InterVisitor visitor) + { + visitor.visit(this); + } + + //------------// + // deriveFrom // + //------------// + @Override + public boolean deriveFrom (ShapeSymbol symbol, + Sheet sheet, + MusicFont font, + Point dropLocation) + { + //logger.info("BeatUnitInter.deriveFrom {}", symbol); + // MetronomeSymbol metroSymbol = (MetronomeSymbol) symbol; + // MetronomeInter.Model model = metroSymbol.getModel(font, dropLocation); + // setValue(model.value); + // fontInfo = model.fontInfo; + // location = new Point2D.Double(model.baseLoc.getX(), model.baseLoc.getY()); + // setBounds(null); + // + // return true; + + return false; + } + + //-----------// + // getEditor // + //-----------// + @Override + public InterEditor getEditor () + { + return new DefaultEditor(this); + } + + //---------// + // getNote // + //---------// + /** + * Report the note used as the beat unit. + * + * @return the unit note + */ + public Note getNote () + { + return note; + } + + //---------// + // setNote // + //---------// + public void setNote (Note note) + { + this.note = note; + } + + //----------------// + // getShapeString // + //----------------// + @Override + public String getShapeString () + { + return shape.toString(); + } + + //----------// + // setValue // + //----------// + /** + * Assign a new value and update note accordingly. + * + * @param value the new value + */ + @Override + public void setValue (String value) + { + super.setValue(value); + + note = Note.decode(value); + shape = note.toShape(); + } + + //~ Inner Classes ------------------------------------------------------------------------------ + + //------// + // Note // + //------// + /** Notes that can appear as beat units in a metronome mark. */ + public static enum Note + { + WHOLE(32), + HALF(16), + QUARTER(8), + EIGHTH(4), + SIXTEENTH(2), + DOTTED_HALF(24), + DOTTED_QUARTER(12), + DOTTED_EIGHTH(6), + DOTTED_SIXTEENTH(3); + + /** Duration, specified in 1/32. */ + private final int duration; + + Note (int duration) + { + this.duration = duration; + } + + public String getString () + { + final Shape shape = toShape(); + final Symbols symbols = MusicFamily.Bravura.getSymbols(); + + return MusicFont.getString(symbols.getCode(shape)); + } + + public boolean hasDot () + { + return switch (this) { + case WHOLE, HALF, QUARTER, EIGHTH, SIXTEENTH -> false; + case DOTTED_HALF, DOTTED_QUARTER, DOTTED_EIGHTH, DOTTED_SIXTEENTH -> true; + }; + } + + /** + * Report the note duration, expressed in quarters. + * + * @return A rational number representing the quarter-based duration + */ + public Rational quarterValue () + { + return new Rational(duration, QUARTER.duration); + } + + public Shape toShape () + { + return switch (this) { + case WHOLE -> Shape.METRO_WHOLE; + case HALF -> Shape.METRO_HALF; + case QUARTER -> Shape.METRO_QUARTER; + case EIGHTH -> Shape.METRO_EIGHTH; + case SIXTEENTH -> Shape.METRO_SIXTEENTH; + case DOTTED_HALF -> Shape.METRO_DOTTED_HALF; + case DOTTED_QUARTER -> Shape.METRO_DOTTED_QUARTER; + case DOTTED_EIGHTH -> Shape.METRO_DOTTED_EIGHTH; + case DOTTED_SIXTEENTH -> Shape.METRO_DOTTED_SIXTEENTH; + }; + } + + public String toMusicXml () + { + // Reminder: the potential augmentation dot is handled separately in MusicXML + return switch (this) { + case WHOLE -> "whole"; + case HALF, DOTTED_HALF -> "half"; + case QUARTER, DOTTED_QUARTER -> "quarter"; + case EIGHTH, DOTTED_EIGHTH -> "eighth"; + case SIXTEENTH, DOTTED_SIXTEENTH -> "16th"; + }; + } + + /** + * Infer the note from the provided string codes. + * + * @param str the provided string + * @return the decoded note, or null + */ + public static Note decode (String str) + { + final String shrunk = StringUtil.shrink(str); + + for (Note note : Note.values()) { + final String noteStr = StringUtil.shrink(note.getString()); + + if (shrunk.equals(noteStr)) { + return note; + } + } + + return null; + } + + public static Note noteOf (Shape shape) + { + Objects.requireNonNull(shape, "Null shape value"); + + return switch (shape) { + case Shape.METRO_WHOLE -> Note.WHOLE; + case Shape.METRO_HALF -> Note.HALF; + case Shape.METRO_QUARTER -> Note.QUARTER; + case Shape.METRO_EIGHTH -> Note.EIGHTH; + case Shape.METRO_SIXTEENTH -> Note.SIXTEENTH; + case Shape.METRO_DOTTED_HALF -> Note.DOTTED_HALF; + case Shape.METRO_DOTTED_QUARTER -> Note.DOTTED_QUARTER; + case Shape.METRO_DOTTED_EIGHTH -> Note.DOTTED_EIGHTH; + case Shape.METRO_DOTTED_SIXTEENTH -> Note.DOTTED_SIXTEENTH; + default -> null; + }; + } + } +} diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/ChordNameInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/ChordNameInter.java index 5b37ca4f4..b28d87c73 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/ChordNameInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/ChordNameInter.java @@ -158,11 +158,11 @@ public class ChordNameInter private static final String STEP_CLASS = "[A-G]"; /** Pattern for root value. A, A# or Ab */ - private static final String rootPat = + private static final String rootPat = // group(ROOT_STEP, STEP_CLASS) + group(ROOT_ALTER, Alter.CLASS) + "?"; /** Pattern for bass value, if any. /A, /A# or /Ab */ - private static final String bassPat = + private static final String bassPat = // "(/" + group(BASS_STEP, STEP_CLASS) + group(BASS_ALTER, Alter.CLASS) + "?" + ")"; /** Pattern for major indication. M, maj or DELTA */ @@ -181,49 +181,49 @@ public class ChordNameInter private static final String hdimPat = group(HDIM, "\u00F8"); /** Pattern for any of the indication alternatives. (except sus) */ - private static final String modePat = + private static final String modePat = // "(" + majPat + "|" + minPat + "|" + augPat + "|" + dimPat + "|" + hdimPat + ")"; /** Pattern for (maj7) in min(maj7) = MAJOR_MINOR. */ - private static final String parMajPat = + private static final String parMajPat = // "(\\(" + group(PMAJ7, "(M|[Mm][Aa][Jj]|" + DELTA + ")7") + "\\))"; /** Pattern for any degree value. 5, 6, 7, 9, 11 or 13 */ private static final String DEG_CLASS = "(5|6|7|9|11|13)"; /** Pattern for a sequence of degrees. */ - private static final String degsPat = + private static final String degsPat = // group(DEGS, DEG_CLASS + "(" + Alter.CLASS + DEG_CLASS + ")?"); /** Pattern for a suspended indication. sus2 or sus4 */ private static final String susPat = group(SUS, "([Ss][Uu][Ss][24])"); /** Pattern for the whole kind value. */ - private static final String kindPat = + private static final String kindPat = // group(KIND, modePat + "?" + parMajPat + "?" + degsPat + "?" + susPat + "?"); /** Pattern for parenthesized degrees if any. (6), (#9), (#11b13) */ - private static final String parPat = "(\\(" + private static final String parPat = "(\\(" // + group(PARS, Alter.CLASS + "?" + DEG_CLASS + "(" + Alter.CLASS + DEG_CLASS + ")*") + "\\))"; /** Pattern for non-parenthesized degrees if any. b5 */ - private static final String noParPat = "(" + private static final String noParPat = "(" // + group(NO_PARS, Alter.CLASS + "?" + DEG_CLASS + "(" + Alter.CLASS + DEG_CLASS + ")*") + ")"; /** - * Un-compiled patterns for whole chord symbol. + * Non-compiled patterns for whole chord symbol. * TODO: add a pattern for functions */ - private static final String[] raws = new String[] + private static final String[] raws = new String[] // { rootPat + kindPat + "?" + "(" + parPat + "|" + noParPat + ")" + "?" + bassPat + "?" }; /** Compiled patterns for whole chord symbol. */ private static List patterns; /** Pattern for one degree. (in a sequence of degrees) */ - private static final String degPat = + private static final String degPat = // group(DEG_ALTER, Alter.CLASS) + "?" + group(DEG_VALUE, DEG_CLASS); /** Compiled pattern for one degree. */ @@ -514,7 +514,7 @@ public static SentenceInter create (TextLine line) // createValid // //-------------// /** - * Try to build a ChordNameInter instance from a provided TextWord. + * Try to create a ChordNameInter instance from a provided TextWord. * * @param textWord the provided TextWord * @return a populated ChordNameInter instance if successful, null otherwise @@ -593,25 +593,27 @@ private static ChordStructure parseChord (String value) if (matcher.matches()) { // Root - ChordNamePitch root = ChordNamePitch - .create(getGroup(matcher, ROOT_STEP), getGroup(matcher, ROOT_ALTER)); + ChordNamePitch root = ChordNamePitch.createValid( + getGroup(matcher, ROOT_STEP), + getGroup(matcher, ROOT_ALTER)); // Degrees String degStr = getGroup(matcher, DEGS); List degrees = ChordDegree.createList(degStr, null); ChordDegree firstDeg = (!degrees.isEmpty()) ? degrees.get(0) : null; - String firstDegStr = - (firstDeg != null) ? Integer.toString(degrees.get(0).value) : ""; + String firstDegStr = (firstDeg != null) ? Integer.toString(degrees.get(0).value) + : ""; // (maj7) special stuff String pmaj7 = standard(matcher, PMAJ7); // ChordKind - ChordKind kind = ChordKind.create(matcher, firstDegStr + pmaj7); + ChordKind kind = ChordKind.createValid(matcher, firstDegStr + pmaj7); // Bass - ChordNamePitch bass = ChordNamePitch - .create(getGroup(matcher, BASS_STEP), getGroup(matcher, BASS_ALTER)); + ChordNamePitch bass = ChordNamePitch.createValid( + getGroup(matcher, BASS_STEP), + getGroup(matcher, BASS_ALTER)); if ((firstDeg != null) && (kind.type != SUSPENDED_FOURTH) && (kind.type != SUSPENDED_SECOND)) { @@ -859,7 +861,6 @@ public static enum DegreeType //-----------// public static class ChordKind { - /** Precise type of kind. (subset of the 33 Music XML values) */ @XmlAttribute public final ChordType type; @@ -879,6 +880,7 @@ public static class ChordKind public final String text; // For JAXB + @SuppressWarnings("unused") private ChordKind () { this.type = null; @@ -942,15 +944,15 @@ public String toString () } /** - * Create proper ChordKind object from a provided matcher, augmented + * Try to create proper ChordKind object from a provided matcher, augmented * by dominant string if any. * * @param matcher matcher on input string * @param dominant dominant information if any, empty string otherwise * @return ChordKind instance, or null if failed */ - private static ChordKind create (Matcher matcher, - String dominant) + private static ChordKind createValid (Matcher matcher, + String dominant) { final String kindStr = getGroup(matcher, KIND); final String parStr = getGroup(matcher, PARS); @@ -970,7 +972,7 @@ private static ChordKind create (Matcher matcher, } // Then check for other combinations - final String str = + final String str = // standard(matcher, MIN) + standard(matcher, MAJ) + standard(matcher, AUG) + standard(matcher, DIM) + standard(matcher, HDIM) + dominant; ChordType type = typeOf(str); @@ -1072,7 +1074,6 @@ public static enum ChordType @XmlAccessorType(XmlAccessType.NONE) public static class ChordNamePitch { - /** Related step. */ @XmlAttribute public final AbstractNoteInter.NoteStep step; @@ -1113,14 +1114,14 @@ public String toString () } /** - * Create a ChordNamePitch object from provided step and alter strings + * Try to create a ChordNamePitch object from provided step and alter strings * * @param stepStr provided step string * @param alterStr provided alteration string * @return ChordNamePitch instance, or null if failed */ - public static ChordNamePitch create (String stepStr, - String alterStr) + public static ChordNamePitch createValid (String stepStr, + String alterStr) { stepStr = stepStr.trim(); alterStr = alterStr.trim(); @@ -1140,7 +1141,6 @@ public static ChordNamePitch create (String stepStr, //----------------// private static class ChordStructure { - public final ChordNamePitch root; public final ChordKind kind; diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/ClefInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/ClefInter.java index 34b5207cf..90290f217 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/ClefInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/ClefInter.java @@ -342,11 +342,11 @@ public static int absolutePitchOf (ClefInter clef, } } - //--------// - // create // - //--------// + //-------------// + // createValid // + //-------------// /** - * Create a Clef inter. + * Try to create a Clef inter. * * @param glyph underlying glyph * @param shape precise shape @@ -354,10 +354,10 @@ public static int absolutePitchOf (ClefInter clef, * @param staff related staff * @return the created instance or null if failed */ - public static ClefInter create (Glyph glyph, - Shape shape, - Double grade, - Staff staff) + public static ClefInter createValid (Glyph glyph, + Shape shape, + Double grade, + Staff staff) { if (staff.isTablature()) { return null; diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/CompoundNoteInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/CompoundNoteInter.java index 69e4555d1..eee733c2f 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/CompoundNoteInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/CompoundNoteInter.java @@ -120,9 +120,9 @@ public CompoundNoteInter (Glyph glyph, //~ Methods ------------------------------------------------------------------------------------ - //----------// - // getModel // - //----------// + //------------// + // buildModel // + //------------// /** * Build a poor-man model, just from staff and bounds (from glyph?). * @@ -317,7 +317,6 @@ public Collection searchLinks (SystemInfo system) public static class Model implements ObjectUIModel { - public Rectangle2D box; // CompoundNote bounds public Rectangle2D headBox; // Head bounds diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/FermataInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/FermataInter.java index 1c92adaa6..f8d5e37b6 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/FermataInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/FermataInter.java @@ -280,9 +280,9 @@ private Link lookupChordLink (SystemInfo system, return null; } - final Collection chords = - (shape == Shape.FERMATA_BELOW) ? stack.getStandardChordsAbove(center, bounds) - : stack.getStandardChordsBelow(center, bounds); + final Collection chords = (shape == Shape.FERMATA_BELOW) // + ? stack.getStandardChordsAbove(center, bounds) + : stack.getStandardChordsBelow(center, bounds); // Look for a suitable chord related to this fermata AbstractChordInter chord = AbstractChordInter.getClosestChord(chords, center); diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/Inter.java b/app/src/main/java/org/audiveris/omr/sig/inter/Inter.java index 2c640e670..3b8237cf5 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/Inter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/Inter.java @@ -108,7 +108,7 @@ public interface Inter /** * Derive (ghost) inter geometry from the provided symbol, font and current mouse location - * (when ghost is dragged, dropped or when created with repetitive input). + * (when ghost is dragged, dropped or when created via repetitive input). * * @param symbol the dropped symbol * @param sheet containing sheet @@ -470,8 +470,8 @@ boolean deriveFrom (ShapeSymbol symbol, boolean overlaps (Inter that); /** - * Prepare the manual addition of this inter, for which only staff and bounds have - * been set (notably, sig is not yet set). + * Prepare the manual addition of this inter, for which only 'staff' and 'bounds' have + * been set (notably, 'sig' is not yet set). *

* Build all the UI tasks to insert this inter: the addition task itself, together with * related tasks if any (other additions, links, ...). diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/InterVisitor.java b/app/src/main/java/org/audiveris/omr/sig/inter/InterVisitor.java index 704ee2832..7181005b3 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/InterVisitor.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/InterVisitor.java @@ -54,6 +54,8 @@ public interface InterVisitor void visit (BeamGroupInter inter); + void visit (BeatUnitInter inter); + void visit (BraceInter inter); void visit (BracketConnectorInter inter); @@ -76,6 +78,8 @@ public interface InterVisitor void visit (LedgerInter inter); + void visit (MetronomeInter inter); + void visit (MultipleRestInter inter); void visit (OctaveShiftInter inter); diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/LyricItemInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/LyricItemInter.java index 151529afb..ddccf2602 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/LyricItemInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/LyricItemInter.java @@ -111,7 +111,7 @@ public LyricItemInter (Double grade) /** * Creates a new LyricItemInter object. * - * @param textWord the OCR'ed text word + * @param textWord the OCR'd text word */ public LyricItemInter (TextWord textWord) { @@ -248,7 +248,7 @@ public LyricLineInter getLyricLine () */ private double getReferenceAbscissa () { - final Scale scale = sig.getSystem().getSheet().getScale(); + final Scale scale = staff.getSystem().getSheet().getScale(); final int xShift = scale.toPixels(constants.leftShift); return getLocation().getX() + xShift; @@ -515,7 +515,7 @@ public List preAdd (WrappedBoolean cancel, // Look for a containing lyric line final Point2D loc = getLocation(); final SystemInfo system = staff.getSystem(); - LyricLineInter line = new TextBuilder(system, true).lookupLyricLine(loc); + LyricLineInter line = new TextBuilder(system, Shape.LYRICS).lookupLyricLine(loc); if (line == null) { // Create a new lyric line diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/LyricLineInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/LyricLineInter.java index dee250543..ef4dbb092 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/LyricLineInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/LyricLineInter.java @@ -306,7 +306,7 @@ public void setNumber (int number) /** * Create a LyricLineInter from a TextLine. * - * @param line the OCR'ed text line + * @param line the OCR'd text line * @return the LyricLine inter */ public static LyricLineInter create (TextLine line) diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/MetronomeInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/MetronomeInter.java new file mode 100644 index 000000000..8a20e4d0e --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/sig/inter/MetronomeInter.java @@ -0,0 +1,1491 @@ +//------------------------------------------------------------------------------------------------// +// // +// M e t r o n o m e I n t e r // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.sig.inter; + +import org.audiveris.omr.classifier.Evaluation; +import org.audiveris.omr.classifier.ShapeClassifier; +import org.audiveris.omr.constant.Constant; +import org.audiveris.omr.constant.ConstantSet; +import org.audiveris.omr.glyph.Glyph; +import org.audiveris.omr.glyph.GlyphFactory; +import org.audiveris.omr.glyph.GlyphIndex; +import org.audiveris.omr.glyph.Grades; +import org.audiveris.omr.glyph.Shape; +import static org.audiveris.omr.glyph.Shape.TEXT; +import org.audiveris.omr.math.GeoUtil; +import org.audiveris.omr.math.LineUtil; +import org.audiveris.omr.math.PointUtil; +import org.audiveris.omr.math.Rational; +import org.audiveris.omr.sheet.Scale; +import org.audiveris.omr.sheet.Sheet; +import org.audiveris.omr.sheet.SheetStub; +import org.audiveris.omr.sheet.SystemInfo; +import org.audiveris.omr.sheet.rhythm.MeasureStack; +import org.audiveris.omr.sheet.ui.ObjectUIModel; +import org.audiveris.omr.sig.SIGraph; +import org.audiveris.omr.sig.inter.BeatUnitInter.Note; +import static org.audiveris.omr.sig.inter.BeatUnitInter.Note.noteOf; +import static org.audiveris.omr.sig.inter.Inters.byAbscissa; +import org.audiveris.omr.sig.relation.ChordSentenceRelation; +import org.audiveris.omr.sig.relation.Containment; +import org.audiveris.omr.sig.relation.Link; +import org.audiveris.omr.sig.ui.AdditionTask; +import org.audiveris.omr.sig.ui.UITask; +import org.audiveris.omr.text.FontInfo; +import org.audiveris.omr.text.TextChar; +import org.audiveris.omr.text.TextLine; +import org.audiveris.omr.text.TextRole; +import org.audiveris.omr.text.TextWord; +import org.audiveris.omr.ui.symbol.MetronomeSymbol; +import org.audiveris.omr.ui.symbol.MusicFamily; +import org.audiveris.omr.ui.symbol.MusicFont; +import org.audiveris.omr.ui.symbol.ShapeSymbol; +import org.audiveris.omr.ui.symbol.TextFamily; +import org.audiveris.omr.ui.symbol.TextFont; +import org.audiveris.omr.util.Entities; +import org.audiveris.omr.util.HorizontalSide; +import static org.audiveris.omr.util.RegexUtil.getGroup; +import static org.audiveris.omr.util.RegexUtil.group; +import static org.audiveris.omr.util.StringUtil.codesOf; +import org.audiveris.omr.util.WrappedBoolean; +import org.audiveris.omr.util.Wrapper; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.font.TextLayout; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Class MetronomeInter is a sentence that represents a metronome mark. + *

+ * In the current implementation, a metronome mark can contain: + *

    + *
  1. (Optional) a tempo textual indication, like "Allegretto" + *
  2. (Optional) an opening parenthesis, '(' + *
  3. A note symbol, like a quarter note or a dotted eighth note to specify the beat unit + *
  4. The equal sign '=' (we also accept the ':' character) + *
  5. (Optional) some text like "ca." + *
  6. A positive number, like "100", to specify the number of beat units per minute (bpm) + *
  7. (Optional) a second number, introduced by '-', like "-120", to specify a maximum bpm value + *
  8. (Optional) some text like "env." + *
  9. (Optional) a closing parenthesis, ')' + *
  10. (Optional) some final text, ignored + *
+ *

+ * Examples of various beat-unit values:
+ * Examples of various beat-unit values + *

+ * Instead of a precise single number, we can have two numbers to indicate an interval:
+ * Example with an interval value + *

+ * Tesseract OCR is not (yet?) able to recognize music notes within a sentence, these notes are thus + * mistaken with letters. For example, a quarter note is typically mistaken with a capital "J". + *

+ * However, the equal sign ("=") followed by the bpm value or interval are standard text characters + * and can thus be correctly OCR'd. + *

+ * The trick is organized around this "= bpm" sentence part: the preceding OCR'd character(s) are + * wrong but their underlying glyph can be extracted and then submitted to the glyph classifier in + * order to recognize a typical metronome beat unit shape. + *

+ * TODO: There are more complex marks, which could be covered in a future version, + * but first I need to figure out what they mean precisely. + * + * @author Hervé Bitteur + */ +@XmlRootElement(name = "metronome") +public class MetronomeInter + extends SentenceInter +{ + //~ Static fields/initializers ----------------------------------------------------------------- + + private static final Constants constants = new Constants(); + + private static final Logger logger = LoggerFactory.getLogger(MetronomeInter.class); + + private static final String TEMPO = "tempo"; + + private static final String PAR_START = "parStart"; // Opening parenthesis + + private static final String NOTE = "note"; + + private static final String EQUAL = "equal"; + + private static final String BPM1 = "bpm1"; + + private static final String BPM_EXT = "bpmext"; + + private static final String BPM2 = "bpm2"; + + private static final String BPM_TEXT = "bpmtext"; + + private static final String PAR_STOP = "parStop"; // Closing parenthesis + + private static final String GARBAGE = "garbage"; + + private static final String spacePat = "\\s*"; + + /** Pattern for tempo textual indication. It includes a final space. */ + private static final String tempoPat = group(TEMPO, "[^\\(\\x{E000}-\\x{FFFF}]*\\s"); + + /** Pattern for opening parenthesis. */ + private static final String parPatStart = group(PAR_START, "\\("); + + /** Pattern for note. */ + ///private static final String notePat = group(NOTE, "[^=\\s]+"); + private static final String notePat = group(NOTE, "[^=]+"); + + /** Pattern for equal. */ + private static final String equalPat = group(EQUAL, "[=:]"); + + /** Pattern for bpm numerical specification, a single value or an interval: 123[-456]. */ + private static final String bpmPat = group(BPM1, "[0-9]+") + spacePat + group( + BPM_EXT, + "-" + spacePat + group(BPM2, "[0-9]+")) + "?"; + + /** + * Pattern for bpm full text specification. + * The spec starts at '=' excluded and stops at either ')' excluded or the end of the sentence. + * It is meant to grab text portions like: "ca. 100", "110", "120-140", "130 env." + */ + private static final String bpmTextPat = group( + BPM_TEXT, + "[^0-9]*" + spacePat + bpmPat + spacePat + "[^\\)]*"); + + /** Pattern for closing parenthesis. */ + private static final String parPatStop = group(PAR_STOP, "\\)"); + + /** Pattern for potential ending garbage. */ + private static final String garbagePat = group(GARBAGE, ".*"); + + /** Pattern for the whole metronome mark. */ + private static final String metroPat = tempoPat + "?" // + + parPatStart + "?" + spacePat // + + notePat + spacePat // + + equalPat + spacePat // + + bpmTextPat + parPatStop + "?" // + + spacePat + garbagePat; + + private static final Pattern metroPattern = Pattern.compile(metroPat); + + //~ Instance fields ---------------------------------------------------------------------------- + + /** Required single (or minimum) value. */ + private Integer bpm1; + + /** Optional maximum value. */ + private Integer bpm2; + + /** Optional parentheses indicator. */ + private boolean parentheses = false; + + /** Related model, if any. */ + private Model model; + + //~ Constructors ------------------------------------------------------------------------------- + + /** + * No-argument constructor meant for JAXB. + */ + @SuppressWarnings("unused") + private MetronomeInter () + { + } + + /** + * Creates a new MetronomeInter object meant for manual assignment. + * + * @param grade inter grade + */ + public MetronomeInter (Double grade) + { + super(TextRole.Metronome, grade); + shape = Shape.METRONOME; + } + + /** + * Create a new MetronomeInter object from a former SentenceInter. + * + * @param s the sentence to be "replaced" + */ + public MetronomeInter (SentenceInter s) + { + super(s.getBounds(), s.getGrade(), s.getMeanFont(), TextRole.Metronome); + shape = Shape.METRONOME; + } + + /** + * Create a new MetronomeInter object from an OCR'd line + * + * @param line the OCR'd text line + */ + private MetronomeInter (TextLine line) + { + super(line.getBounds(), line.getGrade(), line.getMeanFont(), TextRole.Metronome); + shape = Shape.METRONOME; + } + + //~ Methods ------------------------------------------------------------------------------------ + + //--------// + // accept // + //--------// + @Override + public void accept (InterVisitor visitor) + { + visitor.visit(this); + } + + //------------// + // buildModel // + //------------// + /** + * Build the model from metronome concrete members. + * + * @return the model built + */ + private Model buildModel () + { + // Populate the model + final Model m = new Model(); + final List members = getMembers(); + Collections.sort(members, byAbscissa); // Safer + boolean afterBeat = false; // Have we processed the beat unit yet? + + for (Inter member : members) { + final WordInter word = (WordInter) member; + final String val = word.getValue(); + + if (val.contains("(") || val.contains(")")) { + m.parentheses = true; + } + + if (word instanceof BeatUnitInter beatUnit) { + m.unit = beatUnit.getShape(); + m.unitFontSize = beatUnit.getFontInfo().pointsize; + + final SheetStub stub = staff.getSystem().getSheet().getStub(); + final MusicFamily musicFamily = stub.getMusicFamily(); + final FontInfo fi = new FontInfo(m.unitFontSize, musicFamily.getFontName()); + final MusicFont f = new MusicFont(fi); + final Note note = Note.noteOf(m.unit); + final String str = note.getString(); + final TextLayout layout = f.layout(str); + final Rectangle2D rect = layout.getBounds(); + final Rectangle buRect = beatUnit.getBounds(); + m.baseCenter = new Point2D.Double( + buRect.x + buRect.width / 2, + buRect.y - rect.getY()); + + afterBeat = true; + } else { + if (!afterBeat) { + if (m.tempo == null) { + m.tempo = val; + m.tempoFontSize = word.getFontInfo().pointsize; + } else { + m.tempo += " "; + m.tempo += val; + } + } else { + if (m.bpmText == null) { + m.bpmText = val; + m.bpmFontSize = word.getFontInfo().pointsize; + } else { + m.bpmText += " "; + m.bpmText += val; + } + } + } + } + + logger.debug("buildModel. {}", m); + return m; + } + + //------------// + // deriveFrom // + //------------// + @Override + public boolean deriveFrom (ShapeSymbol symbol, + Sheet sheet, + MusicFont font, + Point dropLocation) + { + logger.debug("deriveFrom dropLocation:{}", dropLocation); + final MetronomeSymbol metroSymbol = (MetronomeSymbol) symbol; + + model = metroSymbol.getModel(font, dropLocation); + logger.debug("deriveFrom {}", model); + + setBounds(model.box.getBounds()); + + return true; + } + + //-------------// + // getBeatUnit // + //-------------// + /** + * Report the beat unit specified in this metronome mark. + * + * @return the 'note' used as beat unit + */ + private BeatUnitInter getBeatUnit () + { + for (Inter member : getMembers()) { + if (member instanceof BeatUnitInter beatUnit) { + return beatUnit; + } + } + + return null; + } + + //-----------// + // getBounds // + //-----------// + @Override + public Rectangle getBounds () + { + if (bounds == null) { + final List members = getMembers(); + + if (!members.isEmpty()) { + bounds = Entities.getBounds(members); + } else if (glyph != null) { + bounds = glyph.getBounds(); + } + } + + return (bounds != null) ? new Rectangle(bounds) : null; + } + + //--------// + // getBpm // + //--------// + /** + * Report the bpm value (if single) or the mean bpm value (if interval) + * + * @return the integer to be used as bpm + */ + private Integer getBpm () + { + if (bpm1 == null) { + parseValue(getValue(), false); + } + + if (bpm2 != null) { // Interval + return (bpm1 + bpm2) / 2; + } + + return bpm1; // Single value + } + + //---------// + // getBpm1 // + //---------// + /** + * Report the (minimum) bpm value. + * + * @return the bpm (minimum) value + */ + private Integer getBpm1 () + { + if (bpm1 == null) { + parseValue(getValue(), false); + } + + return bpm1; // Single value + } + + //------------// + // getBpmText // + //------------// + /** + * Report the full bpm specification, that is the text that follows the equal sign. + *

+ * This is either a number or an interval (min-max), perhaps introduced and/or followed by some + * text, but excluding the closing parenthesis if any. + *

+ * Examples: + *

    + *
  • "60" + *
  • "90-100" + *
  • "Ca. 120-144" + *
  • "69 env." + *
+ * + * @return the full bpm specification string or an empty string if none + */ + public String getBpmText () + { + final Matcher matcher = metroPattern.matcher(getValue()); + + if (!matcher.matches()) { + return ""; + } + + return getBpmText(matcher); + } + + private String getBpmText (Matcher matcher) + { + return getGroup(matcher, BPM_TEXT); + } + + //-----------------// + // getDisplayValue // + //-----------------// + /** + * Report the metronome content, meant for display in InterBoard. + * + * @return text content + */ + public String getDisplayValue () + { + if (model == null) { + model = buildModel(); + } + + String val = getValue(); + + // Discard the spaces introduced by getValue() after and before parentheses if any + val = val.replaceAll("\\( ", "("); + val = val.replaceAll(" \\)", ")"); + + return val; + } + + //---------// + // getNote // + //---------/ + /** + * Report the note symbol used as beat unit. + * + * @return the note symbol + */ + public Note getNote () + { + final BeatUnitInter beatUnit = getBeatUnit(); + + if (beatUnit == null) { + return null; + } + + return beatUnit.getNote(); + } + + //----------------------// + // getQuartersPerMinute // + //----------------------// + /** + * Report the number of quarters per minute, + * based on the note symbol and the number of beats per minute (bpm). + * + * @return the tempo, expressed in quarters per minute + */ + public int getQuartersPerMinute () + { + final Rational r = getBeatUnit().getNote().quarterValue().times(getBpm()); + return rounded(r.doubleValue()); + } + + //----------------// + // getShapeString // + //----------------// + @Override + public String getShapeString () + { + final String str = getValue(); + final Matcher matcher = metroPattern.matcher(str); + final StringBuilder sb = new StringBuilder(); + + if (!matcher.matches()) { + sb.append("INVALID"); + if (model.unit == null) + sb.append(", no unit"); + if (getGroup(matcher, EQUAL).isBlank()) + sb.append(", no '='"); + if (bpm1 == null) + sb.append(", no bpm"); + } else { + final Note note = getNote(); + sb.append((note != null) ? note.toShape() : "no unit") // + .append(' ').append(getBpmText(matcher)); + } + + return sb.toString(); + } + + //--------------// + // getTempoText // + //--------------// + /** + * Report the tempo indication (such as: Andante) that may precede the metronome mark. + * + * @return the tempo text, perhaps empty + */ + public String getTempoText () + { + final String str = getValue(); + final Matcher matcher = metroPattern.matcher(str); + + if (!matcher.matches()) { + return ""; + } + + return getGroup(matcher, TEMPO); + } + + //----------// + // getValue // + //----------// + /** + * Report the metronome content, built out of the contained words and make sure the model + * has been built. + * + * @return text content + */ + @Override + public String getValue () + { + if (model == null) { + model = buildModel(); + } + + return super.getValue(); + } + + //----------------// + // hasParentheses // + //----------------// + /** + * Report whether the metronome is wrapped with parentheses (at least one). + * + * @return true if so + */ + public boolean hasParentheses () + { + if (bpm1 == null) { + parseValue(getValue(), false); + } + + return parentheses; + } + + //-----------// + // internals // + //-----------// + @Override + protected String internals () + { + final StringBuilder sb = new StringBuilder(super.internals()); + if (getNote() != null) { + sb.append(" beat:").append(getNote()); + } + if (getBpm1() != null) { + sb.append(" bpm1:").append(getBpm1()); + } + if (bpm2 != null) { + sb.append(" bpm2:").append(bpm2); + } + if (parentheses) { + sb.append(" parentheses"); + } + + return sb.toString(); + } + + //-----------------// + // invalidateCache // + //-----------------// + /** + * Invalidate cached information. (typically following a word modification) + */ + @Override + public void invalidateCache () + { + super.invalidateCache(); + + bpm1 = null; + bpm2 = null; + parentheses = false; + } + + //------// + // link // + //------// + /** + * Try to link this metronome sentence. + * + * @param system the related system + */ + @Override + public void link (SystemInfo system) + { + try { + if (isVip()) { + logger.info("VIP link {}", this); + } + + if (!sig.hasRelation(this, ChordSentenceRelation.class)) { + // Map metronome with proper chord below + final Collection links = searchLinks(system); + + if (!links.isEmpty()) { + links.iterator().next().applyTo(this); + } else { + logger.info("No chord available for {} {}", this, getValue()); + } + } + + } catch (Exception ex) { + logger.warn("Error in link {} {}", this, ex.toString(), ex); + } + } + + //------------// + // parseValue // + //------------// + /** + * Parse the provided metronome sentence value, to populate a model. + * + * @param value the whole sentence value (perhaps containing music words!) + * @param plain true for pure text, false for text and music + * @return a populated model, null if failed + */ + private Model parseValue (String value, + boolean plain) + { + logger.debug("parseValue: \"{}\" [{}]", value, codesOf(value)); + + final Matcher matcher = metroPattern.matcher(value); + if (!matcher.matches()) { + logger.debug("Not a metronome matching string: \"{}\"", value); + return null; + } + + final Model m = new Model(); + m.tempo = getGroup(matcher, TEMPO).trim(); + + final String noteStr = getGroup(matcher, NOTE).trim(); + if (!plain) { + // Convert string codes into note + final Note note = Note.decode(noteStr); + logger.debug("noteStr: \"{}\" [{}] note: {}", noteStr, codesOf(noteStr, false), note); + + if (note != null) { + m.unit = note.toShape(); + } else { + logger.info("No beat unit in metronome line \"{}\" str: \"{}\"", value, noteStr); + } + } + + m.bpmText = getGroup(matcher, BPM_TEXT).trim(); + + // BPM1 + final String bpm1Str = getGroup(matcher, BPM1); + try { + bpm1 = Integer.decode(bpm1Str); + logger.debug("bpm1Str: \"{}\" bpm1: {}", bpm1Str, bpm1); + } catch (NumberFormatException ex) { + logger.info("Invalid bpm in metronome line {} str: \"{}\"", value, bpm1Str); + } + + // BPM2 + final String bpm2Str = getGroup(matcher, BPM2); + if (!bpm2Str.isEmpty()) { + try { + bpm2 = Integer.decode(bpm2Str); + logger.debug("bpm2Str: \"{}\" bpm2: {}", bpm2Str, bpm2); + } catch (NumberFormatException ex) { + logger.info("Invalid bpm2 in metronome line {} str: \"{}\"", value, bpm2Str); + } + } + + // Parentheses? + final String parStart = getGroup(matcher, PAR_START); + final String parStop = getGroup(matcher, PAR_STOP); + logger.debug("parStart: \"{}\" parStop: \"{}\"", parStart, parStop); + m.parentheses = !parStart.isEmpty() || !parStop.isEmpty(); + + return m; + } + + //--------// + // preAdd // + //--------// + @Override + public List preAdd (WrappedBoolean cancel, + Wrapper toPublish) + { + logger.debug("preAdd {}", model); + final List tasks = new ArrayList<>(super.preAdd(cancel, toPublish)); + + // Build members from model + final SIGraph theSig = staff.getSystem().getSig(); + final SheetStub stub = staff.getSystem().getSheet().getStub(); + + final MusicFamily musicFamily = stub.getMusicFamily(); + final FontInfo musicInfo = new FontInfo(model.unitFontSize, musicFamily.getFontName()); + + final TextFamily textFamily = stub.getTextFamily(); + final FontInfo textInfo = new FontInfo(model.bpmFontSize, textFamily.getFontName()); + + final BeatUnitInter beatUnit = new BeatUnitInter(model.unit, 1.0); + beatUnit.setFontInfo(musicInfo); + final int beatAdvance = beatUnit.getAdvance(); + + final TextFont textFont = new TextFont(textInfo); + TextLayout layout = textFont.layout(" "); + final int space = rounded(layout.getAdvance()); + + final WordInter bpmWord = new WordInter(Shape.TEXT, 1.0); + bpmWord.setValue("= " + model.bpmText); + bpmWord.setFontInfo(textInfo); + + final int y = rounded(model.baseCenter.getY()); + beatUnit.setLocation(new Point(rounded(model.box.getX()), y)); + bpmWord.setLocation(new Point(rounded(model.box.getX() + beatAdvance + space), y)); + + tasks.add( + new AdditionTask( + theSig, + beatUnit, + null, + Arrays.asList(new Link(this, new Containment(), false)))); + tasks.add( + new AdditionTask( + theSig, + bpmWord, + null, + Arrays.asList(new Link(this, new Containment(), false)))); + + return tasks; + } + + //-------------// + // searchLinks // + //-------------// + @Override + public Collection searchLinks (SystemInfo system) + { + final Point center = getCenter(); + + if (staff == null) { + staff = system.getStaffAtOrBelow(center); + } + + final Point ref = new Point(staff.getAbscissa(HorizontalSide.LEFT), center.y); + + // We target the first chord in the first stack(s) of the containing system, + // regardless of the metronome precise abscissa + for (MeasureStack stack : system.getStacks()) { + final AbstractChordInter chord = stack.getStandardChordBelow(ref, null); + + if (chord != null) { + return Collections.singleton(new Link(chord, new ChordSentenceRelation(), false)); + } + } + + return Collections.emptySet(); + } + + //----------// + // setValue // + //----------// + /** + * Assign a new value and change all members accordingly. + * + * @param newValue the new value + * @return the new member words + */ + public List setValue (String newValue) + { + final String oldValue = getValue(); + + if (newValue.equals(oldValue)) { + logger.debug("No modification made"); + return null; + } + + final Model newModel = parseValue(newValue, false); + + newModel.baseCenter = model.baseCenter; + if (newModel.baseCenter == null) { + // No too stupid: center abscissa and baseline of middle word + final List words = getMembers(); + if (!words.isEmpty()) { + final int idx = words.size() / 2; + final WordInter word = (WordInter) words.get(idx); + final Point2D loc = word.getLocation(); + newModel.baseCenter = new Point2D.Double(word.getCenter().x, loc.getY()); + } else { + newModel.baseCenter = getCenter(); // Better than nothing... + } + } + + final int mfs = meanFont.pointsize; + newModel.tempoFontSize = (model.tempoFontSize != null) ? model.tempoFontSize : mfs; + newModel.unitFontSize = (model.unitFontSize != null) ? model.unitFontSize : mfs; + newModel.bpmFontSize = (model.bpmFontSize != null) ? model.bpmFontSize : mfs; + logger.debug("newModel: {}", newModel); + + return buildNewWords(newModel, staff.getSystem()); + } + + //~ Static Methods ----------------------------------------------------------------------------- + + //--------// + // create // + //--------// + /** + * Create a MetronomeInter instance from the provided text line. + *

+ * Some of its items may need to be further adjusted by the end user. + *

+ * The caller is responsible for SIG insertion of the created metronome inter and of its + * member words. + * + * @param line the provided text line + * @param system the related system + * @param quiet quiet mode + * @param words (output) filled with the created member words + * @return a metronome inter + */ + public static MetronomeInter create (TextLine line, + SystemInfo system, + boolean quiet, + List words) + { + final Context ctx = new Context(); + ctx.sheet = system.getSheet(); + ctx.line = line; + + final Reporter reporter = new Reporter(quiet); + final MetronomeInter metro = new MetronomeInter(line); + + try { + final GlyphIndex glyphIndex = ctx.sheet.getGlyphIndex(); + final String str = line.getValue(); + + final Matcher matcher = metroPattern.matcher(str); + if (!matcher.matches()) { + reporter.info("Invalid line: " + str); // We can continue + } + + // Index to the word that contains the '=' equal sign + final int equalIndex = equalIndex(line); + if (equalIndex == -1) { + reporter.alert("No '=' character found"); + } + + // Note shape + // We retrieve the 'characters' glyph located just before the equal sign. + final String noteStr = getGroup(matcher, NOTE).trim(); + logger.debug("create. noteStr:\"{}\" codes[{}]", noteStr, codesOf(noteStr)); + + // Perhaps the note 'characters' are in the same word as the '=' sign + ctx.noteWord = line.getWords().get(equalIndex); + ctx.charIndex = ctx.noteWord.getValue().indexOf(noteStr); + + if (ctx.charIndex == -1) { + // Note not found, let's look in the word before + ctx.noteWord = line.getWords().get(equalIndex - 1); + ctx.charIndex = ctx.noteWord.getValue().indexOf(noteStr); + } + + if (ctx.charIndex == -1) { + reporter.alert("Note characters not found in line: " + line); + } + + ctx.charCount = noteStr.length(); + ctx.noteGlyph = getNoteGlyph(glyphIndex, ctx.noteWord, ctx.charIndex, ctx.charCount); + if (ctx.noteGlyph == null) { + reporter.alert("No underlying glyph for note in line: " + line); + } else { + ctx.noteGlyph = glyphIndex.registerOriginal(ctx.noteGlyph); + + ctx.note = recognizeNote(ctx.noteGlyph, system); + logger.debug("note: {}", ctx.note); + if (ctx.note == null) { + reporter.alert("Non recognized note for glyph#" + ctx.noteGlyph.getId()); + } + } + + // BPM1 + final String bpm1Str = getGroup(matcher, BPM1); + try { + Integer bpm1 = Integer.decode(bpm1Str); + logger.debug("bpm1: {}", bpm1); + } catch (NumberFormatException ex) { + reporter.alert("Non recognized bpm in \"" + bpm1Str + "\""); + } + + // BPM2 + final String bpm2Str = getGroup(matcher, BPM2); + if (!bpm2Str.isEmpty()) { + try { + Integer bpm2 = Integer.decode(bpm2Str); + logger.debug("bpm2: {}", bpm2); + } catch (NumberFormatException ex) { + reporter.alert("Non recognized bpm2 in \"" + bpm2Str + "\""); + } + } + } catch (ParsingException ignored) {} + + // Build the member words even if the metronome is still invalid + words.addAll(buildWords(ctx)); + + if (ctx.noteWord != null) { + // To be protected against symbol competitors + metro.freeze(); + words.forEach(w -> w.freeze()); + } + + return metro; + } + + //---------------// + // buildNewWords // + //---------------// + /** + * Generate metronome member words from the provided new model. + *

+ * Items are placed around the baseCenter reference point, separated by standard spaces. + * Target structure is: + * + *

+     * tempo text|(B|=|bpm text)
+     * ..........S..s.s.........
+     * 'S' means space (w/ tempo font)
+     * 's' means space (w/ bpm font)
+     * 'tempo text' is only one word, using tempo font
+     * The potential "(" is separate (w/ same font as bpm)
+     * 'bpm text' is only one word, perhaps ended by ")", w/ bpm font
+     * 
+ * + * @param m the new model + * @return the generated words, ready for insertion + */ + private static List buildNewWords (Model m, + SystemInfo system) + { + final SheetStub stub = system.getSheet().getStub(); + + final MusicFamily musicFamily = stub.getMusicFamily(); + final TextFamily textFamily = stub.getTextFamily(); + + final List newWords = new ArrayList<>(); + final int y = rounded(m.baseCenter.getY()); + double xMin = m.baseCenter.getX(); + double xMax = m.baseCenter.getX(); + + // We start on beat unit + if (m.unit != null) { + final FontInfo fi = new FontInfo(m.unitFontSize, musicFamily.getFontName()); + final MusicFont f = new MusicFont(fi); + final Note note = Note.noteOf(m.unit); + final String str = note.getString(); + final TextLayout layout = f.layout(str); + final Rectangle2D rect = layout.getBounds(); + final Point loc = rounded(m.baseCenter.getX() - rect.getWidth() / 2, y); + final Rectangle box = rounded( + loc.x, + m.baseCenter.getY() + rect.getY(), + rect.getWidth(), + rect.getHeight()); + newWords.add(new BeatUnitInter(null, box, 1.0, str, f, note, loc)); + xMin = loc.x; + xMax = loc.x + rect.getWidth(); + } else { + // TODO: use a beat unit place-holder??? + } + + // Moving forwards from unit + final FontInfo fiBpm = new FontInfo(m.bpmFontSize, textFamily.getFontName()); + final TextFont fBpm = new TextFont(fiBpm); + + if (m.bpmText != null) { + xMax += fBpm.layout(" ").getAdvance(); + + final String val = "= " + m.bpmText + (m.parentheses ? ")" : ""); + final TextLayout layout = fBpm.layout(val); + final Rectangle2D rect = layout.getBounds(); + xMax += rect.getX(); + + final Rectangle box = rounded( + xMax, + m.baseCenter.getY() + rect.getY(), + rect.getWidth(), + rect.getHeight()); + newWords.add(new WordInter(null, box, TEXT, 1.0, val, fiBpm, rounded(xMax, y))); + } + + // Moving backwards from unit + if (m.parentheses) { + final String val = "("; + final TextLayout layout = fBpm.layout(val); + final Rectangle2D rect = layout.getBounds(); + xMin -= layout.getAdvance(); + + final Rectangle box = rounded( + xMin, + m.baseCenter.getY() + rect.getY(), + rect.getWidth(), + rect.getHeight()); + newWords.add(new WordInter(null, box, TEXT, 1.0, val, fiBpm, rounded(xMin, y))); + } + + if (m.tempo != null && !m.tempo.isBlank()) { + final FontInfo fi = new FontInfo(m.tempoFontSize, textFamily.getFontName()); + final TextFont f = new TextFont(fi); + final TextLayout layout = f.layout(m.tempo); + final Rectangle2D rect = layout.getBounds(); + xMin -= layout.getAdvance(); + + final Rectangle box = rounded( + xMin, + m.baseCenter.getY() + rect.getY(), + rect.getWidth(), + rect.getHeight()); + newWords.add(new WordInter(null, box, TEXT, 1.0, m.tempo, fi, rounded(xMin, y))); + } + + Collections.sort(newWords, Inters.byCenterAbscissa); + return newWords; + } + + //------------// + // buildWords // + //------------// + /** + * Build the member words of the metronome sentence. + * + * @param ctx context built while running the metronome create() method + * @return the list of created WordInter instances (perhaps including a BeatUnitInter instance) + */ + private static List buildWords (Context ctx) + { + final List created = new ArrayList<>(); + final GlyphIndex glyphIndex = ctx.sheet.getGlyphIndex(); + + for (TextWord word : ctx.line.getWords()) { + if (word == ctx.noteWord) { // This is the word that contains the note + // Stuff before note? + if (ctx.charIndex > 0) { + created.add(extractText(glyphIndex, word, 0, ctx.charIndex)); + } + + // Note itself + if (ctx.note != null) { + final Scale scale = ctx.sheet.getScale(); + final MusicFamily family = ctx.sheet.getStub().getMusicFamily(); + final MusicFont musicFont = MusicFont.getBaseFont(family, scale.getInterline()); + final Rectangle bounds = ctx.noteGlyph.getBounds(); + final Point2D location = LineUtil.intersectionAtX(word.getBaseline(), bounds.x); + created.add( + new BeatUnitInter( + ctx.noteGlyph, + bounds, + 1.0, + ctx.note.getString(), + musicFont, + ctx.note, + PointUtil.rounded(location))); + } + + // Stuff after note? + final String content = word.getValue(); + final int nextIndex = ctx.charIndex + ctx.charCount; + if (content.length() > nextIndex) { + created.add(extractText(glyphIndex, word, nextIndex, content.length())); + } + } else { // This is just a plain word + final WordInter wi = new WordInter(word); + wi.setValue(wi.getValue().replace(':', '=')); + created.add(wi); + } + } + + return created; + } + + //------------// + // equalIndex // + //------------// + /** + * In the input line, report the index of the text word that contains the equal sign. + * + * @param line the input line + * @return the index of the "=" (or ":") word in line, or -1 if not found + */ + private static int equalIndex (TextLine line) + { + final List words = line.getWords(); + + for (int i = 0; i < words.size(); i++) { + final String value = words.get(i).getValue(); + if (value.contains("=") || value.contains(":")) { + return i; + } + } + + return -1; + } + + //-------------// + // extractText // + //-------------// + /** + * Build a WordInter from a portion of the provided TextWord. + * + * @param glyphIndex the sheet index for glyphs + * @param word the source text word + * @param beginIndex the beginning character index, inclusive. + * @param endIndex the ending character index, exclusive. + * @return the created WordInter instance + */ + private static WordInter extractText (GlyphIndex glyphIndex, + TextWord word, + int beginIndex, + int endIndex) + { + final List chars = word.getChars().subList(beginIndex, endIndex); + final Set parts = new LinkedHashSet<>(); + chars.forEach(c -> parts.addAll(glyphIndex.getContainedEntities(c.getBounds()))); + + final Glyph glyph = glyphIndex.registerOriginal(GlyphFactory.buildGlyph(parts)); + final Rectangle bounds = glyph.getBounds(); + final Point2D location = LineUtil.intersectionAtX(word.getBaseline(), bounds.x); + + return new WordInter( + glyph, + glyph.getBounds(), + Shape.TEXT, + word.getConfidence() * Grades.intrinsicRatio, + word.getValue().substring(beginIndex, endIndex).replace(':', '='), + word.getFontInfo(), + PointUtil.rounded(location)); + } + + //-------------------// + // fullValidityCheck // + //-------------------// + /** + * A debug/test tool to check a given input string. + * + * @param input the string to check + * @return the match result + */ + public static boolean fullValidityCheck (String input) + { + final Matcher matcher = metroPattern.matcher(input); + System.out.println(String.format("\n\"%s\"", input)); + System.out.println(String.format(" codes[%s]", codesOf(input, true))); + + final boolean result = matcher.matches(); + + if (result) { + // Dump all groups + for (String group : new String[] { TEMPO, PAR_START, NOTE, EQUAL, BPM_TEXT, BPM1, + BPM_EXT, BPM2, PAR_STOP, GARBAGE }) { + final String str = getGroup(matcher, group); + + final String n; + if (group.equals(NOTE)) { + final Note note = Note.decode(str); + n = (note != null) ? note.name() : "null"; + } else { + n = ""; + } + + System.out.println( + String.format(" %10s %d \"%s\" %s", group, str.length(), str, n)); + } + } else { + System.out.println("Not a metronome matching string."); + } + + return result; + } + + //--------------// + // getNoteGlyph // + //--------------// + /** + * Extract the underlying glyph of the note 'characters'. + * + * @param glyphIndex all sheet glyphs + * @param noteWord the text word that contains the note 'characters' + * @param charIndex the 'characters' index in the text word + * @param length the count of characters to extract + * @return the note glyph + */ + private static Glyph getNoteGlyph (GlyphIndex glyphIndex, + TextWord noteWord, + int charIndex, + int length) + { + Rectangle noteBox = null; + + for (int i = 0; i < length; i++) { + final TextChar noteChar = noteWord.getChars().get(charIndex + i); + logger.debug("noteChar: {}", noteChar); + final Rectangle charBox = noteChar.getBounds(); + + if (noteBox == null) { + noteBox = charBox; + } else { + noteBox = noteBox.union(charBox); + } + } + + final List glyphs = glyphIndex.getContainedEntities(noteBox); + + if (glyphs.isEmpty()) { + return null; + } + + return GlyphFactory.buildGlyph(glyphs); + } + + //----------// + // isLikely // + //----------// + /** + * Check whether the provided text line is likely to be a metronome mark. + * + * @param line the text line to check + * @return true if so + */ + public static boolean isLikely (TextLine line) + { + final String str = line.getValue(); + + if (logger.isDebugEnabled()) { + fullValidityCheck(str); + } + + final Matcher matcher = metroPattern.matcher(str); + + return matcher.matches(); + } + + //---------------// + // recognizeNote // + //---------------// + /** + * Try to recognize the provided glyph as a beat unit note symbol. + * + * @param noteGlyph the glyph to process + * @param system the related system + * @return the note recognized, or null if failed + */ + private static Note recognizeNote (Glyph noteGlyph, + SystemInfo system) + { + logger.debug("Note glyph: {}", noteGlyph); + + final int evalNb = constants.maxEvaluationRank.getValue(); + final Evaluation[] evals = ShapeClassifier.getInstance().evaluate( + noteGlyph, + system, + evalNb, + 0.0, + null); + + for (int i = 0; i < evalNb; i++) { + final Evaluation eval = evals[i]; + final Note note = noteOf(eval.shape); + + if (note != null) { + return note; + } + } + + return null; + } + + // Rounding utilities + private static int rounded (double v) + { + return (int) Math.rint(v); + } + + private static Point rounded (double x, + double y) + { + return new Point(rounded(x), rounded(y)); + } + + private static Rectangle rounded (double x, + double y, + double w, + double h) + { + return new Rectangle(rounded(x), rounded(y), rounded(w), rounded(h)); + } + + //~ Inner Classes ------------------------------------------------------------------------------ + + //----------// + // Reporter // + //----------// + private static class Reporter + { + final boolean quiet; + + public Reporter (boolean quiet) + { + this.quiet = quiet; + } + + public void alert (String message) + throws ParsingException + { + if (quiet) { + logger.debug("Metronome. {}", message); // Meant for debugging only + } else { + info(message); + } + + throw new ParsingException(message); // Stop processing + } + + public void info (String message) + { + logger.info("Metronome. {}", message); // Feedback to the end user + } + } + + //-----------// + // Constants // + //-----------// + private static class Constants + extends ConstantSet + { + private final Constant.Integer maxEvaluationRank = new Constant.Integer( + "none", + 5, + "Maximum acceptable rank for note recognition"); + } + + //-------// + // Model // + //-------// + public static class Model + implements ObjectUIModel + { + public String tempo; // Such as "Adagio" + + public Shape unit; // Such as METRO_QUARTER + + public String bpmText; // Such as "ca. 140" + + public boolean parentheses; // Parentheses? + + public Integer tempoFontSize; // Font size for tempo + + public Integer unitFontSize; // Font size for beat unit + + public Integer bpmFontSize; // Font size for "=" and for bpm text + + public Rectangle2D box; // Metronome global bounds + + public Point2D baseCenter; // Unit baseline center + + @Override + public void translate (double dx, + double dy) + { + PointUtil.add(baseCenter, dx, dy); + GeoUtil.translate2D(box, dx, dy); + } + + @Override + public String toString () + { + return new StringBuilder("Model{") // + .append("tempo:\"").append(tempo).append('\"') // + .append(" unit:").append(unit) // + .append(" bpmText:\"").append(bpmText).append('\"') // + .append(" par:").append(parentheses) // + .append(" tempoFS:").append(tempoFontSize) // + .append(" unitFS:").append(unitFontSize) // + .append(" bpmFS:").append(bpmFontSize) // + .append(" box:").append(box) // + .append(" baseCenter:").append(baseCenter) // + .append('}').toString(); + } + } + + //---------// + // Context // + //---------// + private static class Context + { + Sheet sheet; + + TextLine line; + + TextWord noteWord; + + Integer charIndex; + + Integer charCount; + + Glyph noteGlyph; + + Note note; + } + + //------------------// + // ParsingException // + //------------------// + private static class ParsingException + extends Exception + { + public ParsingException (String message) + { + super(message); + } + } +} diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/MusicWordInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/MusicWordInter.java new file mode 100644 index 000000000..1c6f7b3ec --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/sig/inter/MusicWordInter.java @@ -0,0 +1,376 @@ +//------------------------------------------------------------------------------------------------// +// // +// M u s i c W o r d I n t e r // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.sig.inter; + +import org.audiveris.omr.glyph.Glyph; +import org.audiveris.omr.glyph.Shape; +import org.audiveris.omr.sheet.Scale; +import org.audiveris.omr.sheet.Sheet; +import org.audiveris.omr.sheet.Staff; +import org.audiveris.omr.text.FontInfo; +import org.audiveris.omr.ui.symbol.MusicFamily; +import org.audiveris.omr.ui.symbol.MusicFont; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.Dimension; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.font.TextLayout; +import java.awt.geom.Rectangle2D; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +/** + * Class MusicWordInter represents a word made of music characters. + *

+ * This kind of word is used to handle the music notes in a metronome indication. + *

+ * Examples taken from MusicXML reference: + *

+ *
metronome
+ *
+ *
+ *
metronome-note
+ *
+ *
per-minute
+ *
+ *
beat-unit-dot
+ *
+ *
beat-unit-tied
+ *
+ *
beat-unit
+ *
+ *
metronome-arrows
+ *
+ *
metronome-tied
+ *
+ *
beat-unit-dot
+ *
+ *
+ * + * @author Hervé Bitteur + */ +@XmlRootElement(name = "music-word") +@XmlAccessorType(XmlAccessType.NONE) +public class MusicWordInter + extends WordInter +{ + //~ Static fields/initializers ----------------------------------------------------------------- + + private static final Logger logger = LoggerFactory.getLogger(MusicWordInter.class); + + //~ Instance fields ---------------------------------------------------------------------------- + + /** Temporary use during marshalling/unmarshalling. */ + @XmlElement(name = "code") + private volatile List codes; + + //~ Constructors ------------------------------------------------------------------------------- + + /** + * No-argument constructor meant for JAXB. + */ + @SuppressWarnings("unused") + protected MusicWordInter () + { + } + + /** + * Creates a new MusicWordInter object, meant for manual assignment. + * + * @param grade the interpretation quality + * @param shape the precise shape if any + * @param value the word content (music characters) + */ + public MusicWordInter (Double grade, + Shape shape, + String value) + { + super(null, null, shape, grade, value, null, null); + } + + /** + * Creates a new MusicWordInter object. + * + * @param glyph the underlying glyph + * @param bounds the precise object bounds + * @param grade the interpretation quality + * @param shape the precise shape if any + * @param value the word content (music characters) + * @param musicFont the music font to use + * @param location the baseline location + */ + public MusicWordInter (Glyph glyph, + Rectangle bounds, + Double grade, + Shape shape, + String value, + MusicFont musicFont, + Point location) + { + super( + glyph, + bounds, + shape, + grade, + value, + new FontInfo( + musicFont.computeSize(value, bounds.getSize()), + musicFont.getFontName()), + location); + } + + //~ Methods ------------------------------------------------------------------------------------ + + //---------------// + // beforeMarshal // + //---------------// + /** + * Called immediately before the marshalling of this object begins. + *

+ * Transcribe value to a list of hexadecimal codes. + */ + @Override + @SuppressWarnings("unused") + protected void beforeMarshal (Marshaller m) + { + super.beforeMarshal(m); + + codes = new ArrayList<>(); + value.codePoints().forEach(c -> codes.add("0x" + Integer.toHexString(c))); + logger.debug("beforeMarshal. codes: {}", codes); + value = null; + } + + //--------------// + // afterMarshal // + //--------------// + /** + * Called immediately after marshalling of this object. + * We reset any empty RunSequence to null. + */ + @SuppressWarnings("unused") + private void afterMarshal (Marshaller m) + { + logger.debug("afterMarshal. codes: {}", codes); + value = computeValue(codes); + codes = null; + } + + //-----------------// + // beforeUnmarshal // + //-----------------// + @SuppressWarnings("unused") + private void beforeUnmarshal (Object target, + Object parent) + { + logger.debug("beforeUnmarshal"); + } + + //----------------// + // afterUnmarshal // + //----------------// + @SuppressWarnings("unused") + private void afterUnmarshal (Unmarshaller um, + Object parent) + { + logger.debug("afterUnmarshal. codes: {}", codes); + value = computeValue(codes); + logger.debug("afterUnmarshal. value: {}", value); + } + + //--------------// + // computeValue // + //--------------// + /** + * Compute the content value by decoding the sequence of characters codes. + * + * @param codes the list of character codes (hexadecimal strings) + * @return the corresponding content value + */ + private String computeValue (List codes) + { + final int nb = codes.size(); + int[] ints = new int[nb]; + + for (int i = 0; i < nb; i++) { + ints[i] = Integer.decode(codes.get(i)); + } + + return new String(ints, 0, nb); + } + + //------------// + // getAdvance // + //------------// + @Override + public int getAdvance () + { + if (value.isEmpty()) { + return 0; + } + + // As opposed to a plain WordInter, we use MusicFont rather than TextFont + final MusicFont font = new MusicFont(fontInfo); + final TextLayout layout = font.layout(value); + + return (int) Math.rint(layout.getAdvance()); + } + + //-----------// + // getBounds // + //-----------// + @Override + public Rectangle getBounds () + { + if (bounds != null) { + return new Rectangle(bounds); + } + + if (value.isEmpty()) { + return new Rectangle( + bounds = new Rectangle( + (int) Math.rint(location.getX()), + (int) Math.rint(location.getY()), + 0, + 0)); + } + + final MusicFont textFont = new MusicFont(fontInfo); + final TextLayout layout = textFont.layout(value); + final Rectangle2D rect = layout.getBounds(); + + return new Rectangle( + bounds = new Rectangle( + (int) Math.rint(location.getX()), + (int) Math.rint(location.getY() + rect.getY()), + (int) Math.rint(rect.getWidth()), + (int) Math.rint(rect.getHeight()))); + } + + //--------------// + // getDimension // + //--------------// + @Override + public Dimension getDimension () + { + if (bounds != null) { + return bounds.getSize(); + } + + if (value.isEmpty()) { + return new Dimension(0, 0); + } + + final MusicFont musicFont = new MusicFont(fontInfo); + final TextLayout layout = musicFont.layout(value); + final Rectangle2D rect = layout.getBounds(); + + return new Dimension((int) Math.rint(rect.getWidth()), (int) Math.rint(rect.getHeight())); + } + + //----------// + // getValue // + //----------// + /** + * Report the word (music) value, even if called in the middle of any [un]marshalling. + * + * @return the value + */ + @Override + public String getValue () + { + final String theValue = value; + + if (theValue != null) { + return theValue; + } + + final List theCodes = codes; + + if (theCodes != null) { + return computeValue(theCodes); + } else { + return value; + } + } + + //-----------// + // setBounds // + //-----------// + @Override + public void setBounds (Rectangle bounds) + { + super.setBounds(bounds); + + if (fontInfo == null) { + tryToSetFontInfo(); + } + } + + //----------// + // setStaff // + //----------// + @Override + public void setStaff (Staff staff) + { + super.setStaff(staff); + + if (fontInfo == null) { + tryToSetFontInfo(); + } + } + + //------------------// + // tryToSetFontInfo // + //------------------// + private void tryToSetFontInfo () + { + if ((bounds != null) && (staff != null)) { + final Sheet sheet = staff.getSystem().getSheet(); + final Scale scale = sheet.getScale(); + final MusicFamily family = sheet.getStub().getMusicFamily(); + final MusicFont musicFont = MusicFont.getBaseFont(family, scale.getInterline()); + fontInfo = new FontInfo( + musicFont.computeSize(value, bounds.getSize()), + musicFont.getFontName()); + location = musicFont.computeLocation(value, bounds); + } + } +} diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/RestInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/RestInter.java index 60582817e..d28673c2f 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/RestInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/RestInter.java @@ -148,7 +148,7 @@ public List preAdd (WrappedBoolean cancel, // createValid // //-------------// /** - * (Try to) create a Rest inter. + * Try to create a Rest inter. *

* A rest cannot be too close abscissa-wise to a head-chord. * @@ -190,8 +190,7 @@ public static RestInter createValid (Glyph glyph, // All head-chords in staff measure final int left = measure.getAbscissa(HorizontalSide.LEFT, restStaff); final int right = measure.getAbscissa(HorizontalSide.RIGHT, restStaff); - final List measureChords = Inters.inters(systemHeadChords, (Inter inter) -> - { + final List measureChords = Inters.inters(systemHeadChords, (Inter inter) -> { if (inter.getStaff() != restStaff) { return false; } diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/SentenceInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/SentenceInter.java index 74143b275..42dd0bc27 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/SentenceInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/SentenceInter.java @@ -21,11 +21,15 @@ // package org.audiveris.omr.sig.inter; -import org.audiveris.omr.glyph.Glyph; +import org.audiveris.omr.sheet.Scale; import org.audiveris.omr.sheet.Skew; import org.audiveris.omr.sheet.Staff; import org.audiveris.omr.sheet.SystemInfo; +import org.audiveris.omr.sheet.rhythm.MeasureStack; import org.audiveris.omr.sig.SIGraph; +import org.audiveris.omr.sig.relation.ChordNameRelation; +import org.audiveris.omr.sig.relation.ChordSentenceRelation; +import org.audiveris.omr.sig.relation.ChordSyllableRelation; import org.audiveris.omr.sig.relation.Containment; import org.audiveris.omr.sig.relation.EndingSentenceRelation; import org.audiveris.omr.sig.relation.Link; @@ -33,6 +37,13 @@ import org.audiveris.omr.text.FontInfo; import org.audiveris.omr.text.TextLine; import org.audiveris.omr.text.TextRole; +import static org.audiveris.omr.text.TextRole.ChordName; +import static org.audiveris.omr.text.TextRole.Direction; +import static org.audiveris.omr.text.TextRole.EndingNumber; +import static org.audiveris.omr.text.TextRole.EndingText; +import static org.audiveris.omr.text.TextRole.Lyrics; +import static org.audiveris.omr.text.TextRole.Metronome; +import static org.audiveris.omr.text.TextRole.PartName; import org.audiveris.omr.ui.symbol.TextFont; import org.audiveris.omr.util.Entities; import org.audiveris.omr.util.WrappedBoolean; @@ -48,6 +59,7 @@ import java.util.Comparator; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; @@ -85,8 +97,7 @@ public class SentenceInter /** For ordering sentences by their de-skewed ordinate. */ public static final Comparator byOrdinate = (s1, - s2) -> - { + s2) -> { final Skew skew = s1.getSig().getSystem().getSkew(); return Double.compare( @@ -131,7 +142,7 @@ public SentenceInter (Rectangle bounds, FontInfo meanFont, TextRole role) { - super((Glyph) null, bounds, null, grade); + super(null, bounds, null, grade); this.meanFont = meanFont; this.role = role; @@ -140,7 +151,7 @@ public SentenceInter (Rectangle bounds, /** * Creates a new SentenceInter object, meant for user handling of glyph. * - * @param role the sentence role, if known + * @param role the sentence role, if known, null otherwise * @param grade the interpretation quality */ public SentenceInter (TextRole role, @@ -221,7 +232,7 @@ public Rectangle getBounds () */ public int getExportedFontSize () { - return (int) Math.rint(meanFont.pointsize * TextFont.TO_POINT); + return (int) Math.rint(getMeanFont().pointsize * TextFont.TO_POINT); } //--------------// @@ -348,30 +359,14 @@ public String getShapeString () // getValue // //----------// /** - * Report sentence text content, built out of contained words. + * Report the sentence text content, built out of the contained words. * * @return text content */ public String getValue () { - StringBuilder sb = null; - - // Use each word value - for (Inter word : getMembers()) { - String str = ((WordInter) word).getValue(); - - if (sb == null) { - sb = new StringBuilder(str); - } else { - sb.append(" ").append(str); - } - } - - if (sb == null) { - return ""; - } else { - return sb.toString(); - } + return getMembers().stream().map(w -> ((WordInter) w).getValue()) // + .collect(Collectors.joining(" ")); } //-----------// @@ -380,13 +375,10 @@ public String getValue () @Override protected String internals () { - StringBuilder sb = new StringBuilder(super.internals()); - - sb.append(' ').append((meanFont != null) ? meanFont.getMnemo() : "NO_FONT"); - - sb.append(' ').append((role != null) ? role : "NO_ROLE"); - - return sb.toString(); + return new StringBuilder(super.internals()) // + .append(' ').append((meanFont != null) ? "mFont:" + meanFont.getMnemo() : "NO_FONT") // + .append(' ').append((role != null) ? role : "NO_ROLE") // + .toString(); } //-----------------// @@ -412,6 +404,108 @@ public void invalidateCache () // TODO: should we update sentence grade? } + //------// + // link // + //------// + /** + * Try to link this sentence, based on its role. + * + * @param system the related system + */ + public void link (SystemInfo system) + { + try { + if (isVip()) { + logger.info("VIP link {}", this); + } + + if (role == null) { + logger.info("No role for {}", this); + return; + } + + final Point2D location = getLocation(); + getBounds(); + final Scale scale = system.getSheet().getScale(); + + switch (role) { + case Lyrics -> { + // Map each syllable with proper chord, in assigned staff + for (Inter wInter : getMembers()) { + final LyricItemInter item = (LyricItemInter) wInter; + final int profile = Math.max(item.getProfile(), system.getProfile()); + item.mapToChord(profile); + } + } + + case Direction -> { + if (!sig.hasRelation(this, ChordSentenceRelation.class)) { + // Map sentence with proper chord, preferably above for a direction + final MeasureStack stack = system.getStackAt(location); + + if (stack == null) { + logger.info("No measure stack for {} {}", this, getValue()); + } else { + final int xGapMax = scale.toPixels(ChordSentenceRelation.getXGapMax()); + final Rectangle box = new Rectangle(bounds); + box.grow(xGapMax, 0); + + final AbstractChordInter chord = stack.getEventChord( + location, + box, + true); + + if (chord != null) { + sig.addEdge(chord, this, new ChordSentenceRelation()); + } else { + logger.info("No chord near {} {}", this, getValue()); + } + } + } + } + + case PartName -> { + // Assign part name to proper part + staff = system.getClosestStaff(getCenter()); + part = staff.getPart(); + part.setName(this); + } + + case ChordName -> { + // Map each word with proper chord, in assigned staff + for (Inter wInter : getMembers()) { + final ChordNameInter word = (ChordNameInter) wInter; + final Link link = word.lookupLink(system); + + if (link == null) { + logger.info("No chord below {}", word); + } else { + link.applyTo(wInter); + } + } + } + + case EndingNumber, EndingText -> { + // Look for related ending + final Link link = lookupEndingLink(system); + + if ((link != null) && (null == sig.getRelation( + link.partner, + this, + EndingSentenceRelation.class))) { + sig.addEdge(link.partner, this, link.relation); + } + } + } + + // Roles UnknownRole, Title, Number, Creator*, Rights stand by themselves + // and thus need no link. + + } catch (Exception ex) { + logger.warn("Error in link {} {}", this, ex.toString(), ex); + } + } + //------------------// // lookupEndingLink // //------------------// @@ -521,6 +615,52 @@ public void setRole (TextRole role) this.role = role; } + //--------// + // unlink // + //--------// + /** + * Unlink the sentence, according to its role, with its related entity if any. + * + * @param oldRole the role this sentence had + */ + public void unlink (TextRole oldRole) + { + try { + if (isVip()) { + logger.info("VIP unlink for {}", this); + } + + switch (oldRole) { + case null -> logger.info("Null old role for {}", this); + default -> {} + + case Lyrics -> getMembers().forEach( + wInter -> sig.getRelations(wInter, ChordSyllableRelation.class).forEach( + rel -> sig.removeEdge(rel))); + + case Direction, Metronome -> sig.getRelations(this, ChordSentenceRelation.class) + .forEach(rel -> sig.removeEdge(rel)); + + case PartName -> { + // Look for proper part + staff = sig.getSystem().getClosestStaff(getCenter()); + part = staff.getPart(); + part.setName((SentenceInter) null); + } + + case ChordName -> getMembers().forEach( + wInter -> sig.getRelations(wInter, ChordNameRelation.class).forEach( + rel -> sig.removeEdge(rel))); + + case EndingNumber, EndingText -> // + sig.getRelations(this, EndingSentenceRelation.class).forEach( + rel -> sig.removeEdge(rel)); + } + } catch (Exception ex) { + logger.warn("Error in unlink for {} {}", this, ex.toString(), ex); + } + } + //~ Static Methods ----------------------------------------------------------------------------- //--------// @@ -529,7 +669,7 @@ public void setRole (TextRole role) /** * Create a SentenceInter from a TextLine. * - * @param line the OCR'ed text line + * @param line the OCR'd text line * @return the sentence inter */ public static SentenceInter create (TextLine line) diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/TempoInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/TempoInter.java deleted file mode 100644 index 47bdb4b65..000000000 --- a/app/src/main/java/org/audiveris/omr/sig/inter/TempoInter.java +++ /dev/null @@ -1,192 +0,0 @@ -//------------------------------------------------------------------------------------------------// -// // -// T e m p o I n t e r // -// // -//------------------------------------------------------------------------------------------------// -// -// -// Copyright © Audiveris 2023. All rights reserved. -// -// This program is free software: you can redistribute it and/or modify it under the terms of the -// GNU Affero General Public License as published by the Free Software Foundation, either version -// 3 of the License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; -// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -// See the GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License along with this -// program. If not, see . -//------------------------------------------------------------------------------------------------// -// -package org.audiveris.omr.sig.inter; - -import org.audiveris.omr.glyph.Shape; -import org.audiveris.omr.text.TextLine; -import org.audiveris.omr.text.TextRole; -import static org.audiveris.omr.util.RegexUtil.getGroup; -import static org.audiveris.omr.util.RegexUtil.group; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Class TempoInter is a sentence that specifies a tempo value. - *

- * Its contained words are expected as: - *

    - *
  1. A note symbol (quarter, half, dotted quarter, 8th note). - *
  2. The "=" sign - *
  3. A positive number giving the beats-per-minute value - *
- * Comments: - *
    - *
  1. This is a preliminary version meant for scores where the note symbol is a quarter, - * often OCR'ed as a capital 'J'. - *
  2. Perhaps a better version could recognize a note symbol on the left side of the "=" sign. - * We would need to add the supported note symbols as physical shapes in the {@link Shape} class, - * provide samples and train the glyph classifier on these new shapes. - *
- * - * @author Hervé Bitteur - */ -public class TempoInter - extends SentenceInter -{ - //~ Static fields/initializers ----------------------------------------------------------------- - - private static final Logger logger = LoggerFactory.getLogger(TempoInter.class); - - private static final String NOTE = "note"; - - private static final String EQUAL = "equal"; - - private static final String BPM = "bpm"; - - private static final String spacePat = "\\s*"; - - /** Pattern for note. */ - private static final String notePat = group(NOTE, "[J]"); // To be improved! - - /** Pattern for equal. */ - private static final String equalPat = group(EQUAL, "="); - - /** Pattern for bpm. */ - private static final String bpmPat = group(BPM, "[0-9]+"); - - /** Pattern for the whole tempo instruction. */ - private static final String tempoPat = notePat + spacePat + equalPat + spacePat + bpmPat; - - private static final Pattern tempoPattern = Pattern.compile(tempoPat); - - //~ Instance fields ---------------------------------------------------------------------------- - - final TempoNote note; - - final int bpm; - - //~ Constructors ------------------------------------------------------------------------------- - - /** - * No-arg constructor meant for JAXB. - */ - private TempoInter () - { - this.note = null; - this.bpm = 0; - } - - /** - * Create a new TempoInter object. - * - * @param note the base note (QUARTER only for this version) - * @param bpm the number of beats per minute - */ - private TempoInter (TextLine line, - TempoNote note, - Integer bpm) - { - super(line.getBounds(), line.getGrade(), line.getMeanFont(), TextRole.Tempo); - this.note = note; - this.bpm = bpm; - } - - //~ Methods ------------------------------------------------------------------------------------ - - //--------// - // getBpm // - //--------// - public int getBpm () - { - return bpm; - } - - //---------// - // getNote // - //---------// - public TempoNote getNote () - { - return note; - } - - //-----------// - // internals // - //-----------// - @Override - protected String internals () - { - return new StringBuilder(super.internals())// - .append(" note:").append(note)// - .append(" bpm:").append(bpm)// - .toString(); - } - - //~ Static Methods ----------------------------------------------------------------------------- - - //-------------// - // createValid // - //-------------// - /** - * Try to create a TempoInter instance from the provided text line. - * - * @param line the provided text line - * @return the tempo specification or null if failed - */ - public static TempoInter createValid (TextLine line) - { - - final String str = line.getValue(); - final Matcher matcher = tempoPattern.matcher(str); - - if (matcher.matches()) { - - final TempoNote note = TempoNote.QUARTER; // Imposed for the first version - final String noteStr = getGroup(matcher, NOTE); - final String equalStr = getGroup(matcher, EQUAL); - final String bpmStr = getGroup(matcher, BPM); - - try { - final Integer bpm = Integer.decode(bpmStr); - - return new TempoInter(line, note, bpm); - } catch (NumberFormatException ex) { - return null; - } - } - - return null; - } - - //~ Inner Classes ------------------------------------------------------------------------------ - - public static enum TempoNote - { - QUARTER, - HALF, - DOTTED_QUARTER, - EIGHTH; - } -} diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/TupletInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/TupletInter.java index e9ac39d05..ed507f51a 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/TupletInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/TupletInter.java @@ -296,7 +296,7 @@ public Collection searchUnlinks (SystemInfo system, // createValid // //-------------// /** - * (Try to) create a tuplet inter, checking that there is at least one (head) chord + * Try to create a tuplet inter, checking that there is at least one (head) chord * nearby. * * @param glyph the candidate tuplet glyph diff --git a/app/src/main/java/org/audiveris/omr/sig/inter/WordInter.java b/app/src/main/java/org/audiveris/omr/sig/inter/WordInter.java index 581421d33..f6269ed79 100644 --- a/app/src/main/java/org/audiveris/omr/sig/inter/WordInter.java +++ b/app/src/main/java/org/audiveris/omr/sig/inter/WordInter.java @@ -38,6 +38,7 @@ import org.audiveris.omr.text.TextWord; import org.audiveris.omr.ui.symbol.MusicFont; import org.audiveris.omr.ui.symbol.ShapeSymbol; +import org.audiveris.omr.ui.symbol.TextFamily; import org.audiveris.omr.ui.symbol.TextFont; import org.audiveris.omr.ui.symbol.TextSymbol; import org.audiveris.omr.util.Jaxb; @@ -48,6 +49,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.awt.Dimension; import java.awt.Point; import java.awt.Rectangle; import java.awt.font.TextLayout; @@ -63,7 +65,10 @@ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; /** - * Class WordInter represents a text word. + * Class WordInter represents a word made of text characters. + *

+ * By default, a WordInter uses a {@link TextFont}. + * But the {@link BeatUnitInter} subclass uses a {@link MusicFont} instead of a TextFont. *

* The containing {@link SentenceInter} is linked by a {@link Containment} relation. * @@ -82,11 +87,11 @@ public class WordInter // Persistent data //---------------- - /** Word text content. */ + /** Word content. */ @XmlAttribute - protected String value; + protected volatile String value; - /** Detected font attributes. */ + /** Font attributes. */ @XmlAttribute(name = "font") @XmlJavaTypeAdapter(FontInfo.JaxbAdapter.class) protected FontInfo fontInfo; @@ -99,7 +104,7 @@ public class WordInter //~ Constructors ------------------------------------------------------------------------------- /** - * No-arg constructor meant for JAXB. + * No-argument constructor meant for JAXB. */ protected WordInter () { @@ -113,9 +118,9 @@ protected WordInter () * * @param glyph underlying glyph * @param bounds bounding box - * @param shape specific shape (TEXT or LYRICS) + * @param shape specific shape (TEXT or LYRICS or METRONOME) * @param grade quality - * @param value text content + * @param value the word content * @param fontInfo font information * @param location location */ @@ -151,7 +156,7 @@ public WordInter (Shape shape, /** * Creates a new WordInter object, with TEXT shape. * - * @param textWord the OCR'ed text word + * @param textWord the OCR'd text word */ public WordInter (TextWord textWord) { @@ -161,7 +166,7 @@ public WordInter (TextWord textWord) /** * Creates a new WordInter object, with provided shape. * - * @param textWord the OCR'ed text word + * @param textWord the OCR'd text word * @param shape specific shape (TEXT or LYRICS) */ public WordInter (TextWord textWord, @@ -238,6 +243,21 @@ public boolean deriveFrom (ShapeSymbol symbol, return true; } + //------------// + // getAdvance // + //------------// + public int getAdvance () + { + if (value.isEmpty()) { + return 0; + } + + final TextFont font = new TextFont(fontInfo); + final TextLayout layout = font.layout(value); + + return (int) Math.rint(layout.getAdvance()); + } + //-----------// // getBounds // //-----------// @@ -248,6 +268,15 @@ public Rectangle getBounds () return new Rectangle(bounds); } + if (value.isEmpty()) { + return new Rectangle( + bounds = new Rectangle( + (int) Math.rint(location.getX()), + (int) Math.rint(location.getY()), + 0, + 0)); + } + TextFont textFont = new TextFont(fontInfo); TextLayout layout = textFont.layout(value); Rectangle2D rect = layout.getBounds(); @@ -273,12 +302,27 @@ public String getDetails () sb.append("codes[").append(StringUtil.codesOf(value, false)).append(']'); } - if (fontInfo != null) { - sb.append((sb.length() != 0) ? " " : ""); - sb.append(fontInfo.getMnemo()); + return sb.toString(); + } + + //--------------// + // getDimension // + //--------------// + public Dimension getDimension () + { + if (bounds != null) { + return bounds.getSize(); } - return sb.toString(); + if (value.isEmpty()) { + return new Dimension(0, 0); + } + + final TextFont textFont = new TextFont(fontInfo); + final TextLayout layout = textFont.layout(value); + final Rectangle2D rect = layout.getBounds(); + + return new Dimension((int) Math.rint(rect.getWidth()), (int) Math.rint(rect.getHeight())); } //-----------// @@ -340,11 +384,10 @@ public String getValue () @Override protected String internals () { - StringBuilder sb = new StringBuilder(super.internals()); - - sb.append(" \"").append(value).append("\""); - - return sb.toString(); + return new StringBuilder(super.internals()) // + .append(" \"").append(value).append("\"") // + .append((fontInfo != null) ? " font:" + fontInfo.getMnemo() : "") // + .toString(); } //--------// @@ -392,6 +435,14 @@ public void setGlyph (Glyph glyph) // FontInfo? } + //-------------// + // setLocation // + //-------------// + public void setLocation (Point location) + { + this.location = location; + } + //----------// // setValue // //----------// @@ -415,8 +466,8 @@ public void setValue (String value) if (sentence.getRole() == TextRole.PartName) { // Update partRef name as well - final Part part = sentence.getStaff().getPart(); - part.setName(sentence); + final Part thePart = sentence.getStaff().getPart(); + thePart.setName(sentence); } } } @@ -493,17 +544,21 @@ public boolean move (int dx, box.width += dx; if (box.width > 0) { - WordInter word = (WordInter) getInter(); - String value = word.getValue(); - int fontSize = (int) Math.rint( - TextFont.computeFontSize(value, FontInfo.DEFAULT, box.width)); - model.fontInfo = FontInfo.createDefault(fontSize); + final WordInter word = (WordInter) getInter(); + final String value = word.getValue(); + + // Select proper text font (family and size) + final TextFamily textFamily = TextFont.getCurrentFamily(); + TextFont textFont = new TextFont(textFamily.getFontName(), null, 0, 50); + final int fontSize = textFont.computeSize(value, box.getSize()); + model.fontInfo = new FontInfo(fontSize, textFamily.getFontName()); + textFont = textFont.deriveFont((float) fontSize); // Handles - TextFont textFont = new TextFont(model.fontInfo); - TextLayout layout = textFont.layout(value); - Rectangle2D rect = layout.getBounds(); - double y = model.baseLoc.getY() + rect.getY() + (rect.getHeight() / 2); + final TextLayout layout = textFont.layout(value); + final Rectangle2D rect = layout.getBounds(); + final double y = model.baseLoc.getY() + rect.getY() // + + (rect.getHeight() / 2); middle.setLocation(box.x + (rect.getWidth() / 2), y); right.setLocation(box.x + rect.getWidth(), y); } diff --git a/app/src/main/java/org/audiveris/omr/sig/relation/ChordSentenceRelation.java b/app/src/main/java/org/audiveris/omr/sig/relation/ChordSentenceRelation.java index f12dfffb2..843f3303b 100644 --- a/app/src/main/java/org/audiveris/omr/sig/relation/ChordSentenceRelation.java +++ b/app/src/main/java/org/audiveris/omr/sig/relation/ChordSentenceRelation.java @@ -23,6 +23,12 @@ import org.audiveris.omr.constant.ConstantSet; import org.audiveris.omr.sheet.Scale; +import org.audiveris.omr.sheet.SystemInfo; +import org.audiveris.omr.sig.inter.AbstractChordInter; +import org.audiveris.omr.sig.inter.Inter; +import org.audiveris.omr.sig.inter.SentenceInter; + +import org.jgrapht.event.GraphEdgeChangeEvent; import javax.xml.bind.annotation.XmlRootElement; @@ -68,6 +74,29 @@ public static Scale.Fraction getXGapMax () return constants.xGapMax; } + //---------// + // removed // + //---------// + /** + * {@inheritDoc}. + *

+ * If the chord is being removed (and not the sentence), we try to find out a new chord + * to be linked with the orphan sentence. + * + * @param e the relation event. + */ + @Override + public void removed (GraphEdgeChangeEvent e) + { + final AbstractChordInter chord = (AbstractChordInter) e.getEdgeSource(); + final SentenceInter sentence = (SentenceInter) e.getEdgeTarget(); + + if (chord.isRemoved() && !sentence.isRemoved()) { + final SystemInfo system = sentence.getSig().getSystem(); + sentence.link(system); + } + } + //~ Inner Classes ------------------------------------------------------------------------------ //-----------// @@ -77,8 +106,7 @@ private static class Constants extends ConstantSet { - private final Scale.Fraction xGapMax = new Scale.Fraction( - 1.0, - "Maximum horizontal gap between chord & sentence"); + private final Scale.Fraction xGapMax = + new Scale.Fraction(1.0, "Maximum horizontal gap between chord & sentence"); } } diff --git a/app/src/main/java/org/audiveris/omr/sig/relation/Relations.java b/app/src/main/java/org/audiveris/omr/sig/relation/Relations.java index 9372af10f..d4f8206fa 100644 --- a/app/src/main/java/org/audiveris/omr/sig/relation/Relations.java +++ b/app/src/main/java/org/audiveris/omr/sig/relation/Relations.java @@ -46,6 +46,7 @@ import org.audiveris.omr.sig.inter.MarkerInter; import org.audiveris.omr.sig.inter.MeasureCountInter; import org.audiveris.omr.sig.inter.MeasureRepeatInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.MultipleRestInter; import org.audiveris.omr.sig.inter.OrnamentInter; import org.audiveris.omr.sig.inter.PedalInter; @@ -134,6 +135,7 @@ private static void buildMaps () map(AbstractChordInter.class, ChordPedalRelation.class, PedalInter.class); map(AbstractChordInter.class, ChordTupletRelation.class, TupletInter.class); map(AbstractChordInter.class, ChordWedgeRelation.class, WedgeInter.class); + map(AbstractChordInter.class, ChordSentenceRelation.class, MetronomeInter.class); map(AlterInter.class, AlterHeadRelation.class, HeadInter.class); @@ -221,9 +223,7 @@ private static Set> definedRelationsBetween ( * @return the list of defined relation classes, perhaps empty */ private static Set> definedRelationsFrom ( - // @formatter:off - Class sourceClass) - // @formatter:on + Class sourceClass) { Objects.requireNonNull(sourceClass, "Source class is null"); diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/EditingTask.java b/app/src/main/java/org/audiveris/omr/sig/ui/EditingTask.java index 597bf2cda..e5a763edc 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/EditingTask.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/EditingTask.java @@ -60,11 +60,7 @@ public EditingTask (InterEditor editor, super(editor.getInter().getSig(), editor.getInter(), null, links, "edit"); this.editor = editor; - if (unlinks != null) { - this.unlinks = new ArrayList<>(unlinks); - } else { - this.unlinks = Collections.emptySet(); - } + this.unlinks = (unlinks != null) ? new ArrayList<>(unlinks) : Collections.emptySet(); } //~ Methods ------------------------------------------------------------------------------------ diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/InterBoard.java b/app/src/main/java/org/audiveris/omr/sig/ui/InterBoard.java index 3c1664c45..ceb95e8b3 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/InterBoard.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/InterBoard.java @@ -26,13 +26,17 @@ import org.audiveris.omr.glyph.Shape; import org.audiveris.omr.score.TimeRational; import org.audiveris.omr.sheet.Sheet; +import org.audiveris.omr.sheet.SheetStub; import org.audiveris.omr.sheet.rhythm.Voice; import org.audiveris.omr.sig.inter.AbstractNumberInter; +import org.audiveris.omr.sig.inter.BeatUnitInter; +import org.audiveris.omr.sig.inter.BeatUnitInter.Note; import org.audiveris.omr.sig.inter.ChordNameInter; import org.audiveris.omr.sig.inter.HeadChordInter; import org.audiveris.omr.sig.inter.Inter; import org.audiveris.omr.sig.inter.LyricItemInter; import org.audiveris.omr.sig.inter.LyricLineInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.SentenceInter; import org.audiveris.omr.sig.inter.SlurInter; import org.audiveris.omr.sig.inter.TimeCustomInter; @@ -46,11 +50,15 @@ import org.audiveris.omr.ui.field.LIntegerField; import org.audiveris.omr.ui.field.LLabel; import org.audiveris.omr.ui.field.LTextField; +import org.audiveris.omr.ui.field.MusicPane; import org.audiveris.omr.ui.selection.EntityListEvent; import org.audiveris.omr.ui.selection.SelectionHint; import org.audiveris.omr.ui.symbol.MusicFamily; import org.audiveris.omr.ui.symbol.ShapeSymbol; +import org.audiveris.omr.ui.symbol.TextFamily; import org.audiveris.omr.ui.util.Panel; +import org.audiveris.omr.ui.util.SeparablePopupMenu; +import static org.audiveris.omr.ui.util.UIPredicates.isContextWanted; import org.jdesktop.application.Application; import org.jdesktop.application.ResourceMap; @@ -64,14 +72,20 @@ import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.util.Arrays; +import java.util.List; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; +import javax.swing.JMenuItem; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JTextField; import javax.swing.KeyStroke; import javax.swing.SwingConstants; @@ -81,6 +95,7 @@ * * @author Hervé Bitteur */ + public class InterBoard extends EntityBoard { @@ -98,34 +113,34 @@ public class InterBoard /** Related sheet. */ private final Sheet sheet; - /** Output : shape icon. */ + /** Output: shape icon. */ private final JLabel shapeIcon = new JLabel(); - /** Output : grade (intrinsic/contextual). */ + /** Output: grade (intrinsic/contextual). */ private final LTextField grade = new LTextField( false, resources.getString("grade.text"), resources.getString("grade.toolTipText")); - /** Output : implicit / manual. */ + /** Output: implicit / manual. */ private final JLabel specific = new JLabel(""); - /** Output : shape. */ + /** Output: shape. */ private final LLabel shapeName = new LLabel("", resources.getString("shapeName.toolTipText")); - /** Output : lyric verse. */ + /** Output: lyric verse. */ private final LIntegerField verse = new LIntegerField( false, resources.getString("verse.text"), resources.getString("verse.toolTipText")); - /** Output : voice. */ + /** Output: voice. */ private final LIntegerField voice = new LIntegerField( false, resources.getString("voice.text"), resources.getString("voice.toolTipText")); - /** Output : lyrics above or below related note line. */ + /** Output: lyrics above or below related note line. */ private final JLabel aboveBelow = new JLabel(); /** To delete/de-assign. */ @@ -156,12 +171,15 @@ public class InterBoard resources.getString("roleCombo.toolTipText"), TextRole.values()); - /** Input/Output : textual content. */ + /** Input/Output: textual content. */ private final LTextField textField = new LTextField( true, resources.getString("textField.text"), resources.getString("textField.toolTipText")); + /** Input/Output: mixed music & text content. */ + private final MusicPane musicPane; + /** Handling of entered / selected values. */ private final Action paramAction; @@ -189,16 +207,11 @@ public InterBoard (Sheet sheet) public InterBoard (Sheet sheet, boolean selected) { - super(Board.INTER, sheet.getInterIndex().getEntityService(), true); + super(Board.INTER, sheet.getInterIndex().getEntityService(), selected); this.sheet = sheet; - edit.addActionListener(this); - tie.addActionListener(this); - paramAction = new ParamAction(); - defineLayout(); - aboveBelow.setToolTipText(resources.getString("aboveBelow.toolTipText")); // Initial status @@ -214,6 +227,20 @@ public InterBoard (Sheet sheet, // Trick for alteration signs adjustFontForAlterations(); + + // MusicPane with sheet music family + final SheetStub stub = sheet.getStub(); + musicPane = new MusicPane( + true, + resources.getString("musicPane.toolTipText"), + stub.getMusicFamily(), + stub.getTextFamily()); + musicPane.addMouseListener(new MusicMouseAdapter()); + + defineLayout(); + + edit.addActionListener(this); + tie.addActionListener(this); } //~ Methods ------------------------------------------------------------------------------------ @@ -248,9 +275,9 @@ public void actionPerformed (ActionEvent e) // adjustFontForAlterations // //--------------------------// /** - * Text items 'shapeName' and 'textField' need to display alteration signs: - * {@link ChordNameInter#FLAT} , {@link ChordNameInter#SHARP} and perhaps - * {@link ChordNameInter#NATURAL}, so they need a font different from default Arial. + * Text items 'shapeName' and 'textField' need to display alteration signs: {@link + * ChordNameInter#FLAT} , {@link ChordNameInter#SHARP} and perhaps {@link + * ChordNameInter#NATURAL}, so they need a font different from default Arial. */ private void adjustFontForAlterations () { @@ -265,12 +292,10 @@ private void adjustFontForAlterations () //--------------// // defineLayout // //--------------// - /** - * Define the layout for InterBoard specific fields. - */ + /** Define the layout for InterBoard specific fields. */ private void defineLayout () { - int r = 1; // ----------------------------- + int r = 1; //----------------------------- // Shape Icon (start, spans several rows) + grade + Deassign button builder.addRaw(shapeIcon).xywh(1, r, 1, 7, CellConstraints.CENTER, CellConstraints.CENTER); @@ -322,15 +347,19 @@ private void defineLayout () builder.addRaw(tiePane).xyw(3, r, 1); // Shape name - builder.addRaw(shapeName.getField()).xyw(7, r, 5); + builder.addRaw(shapeName.getField()).xyw(5, r, 7); r += 2; // -------------------------------- - // Text field + // Text field (exclusive of musicPane & insertNoteButton) textField.getField().setHorizontalAlignment(JTextField.LEFT); textField.setVisible(false); builder.addRaw(textField.getField()).xyw(3, r, 9); + // Music pane (exclusive of textField) + musicPane.setVisible(false); + builder.addRaw(musicPane).xyw(3, r, 9); + // Custom time custom.setVisible(false); builder.addRaw(custom.getLabel()).xyw(1, r, 1); @@ -352,6 +381,12 @@ private void defineLayout () KeyStroke.getKeyStroke("ENTER"), "TextAction"); getComponent().getActionMap().put("TextAction", paramAction); + + // Needed to exit from musicPane when RETURN/ENTER is pressed + musicPane.getInputMap(JComponent.WHEN_FOCUSED).put( + KeyStroke.getKeyStroke("ENTER"), + "MusicAction"); + musicPane.getActionMap().put("MusicAction", paramAction); } //---------------------// @@ -403,8 +438,7 @@ protected ShapeSymbol getTinySymbol (Inter inter) * @param interListEvent the inter list event */ @Override - protected void handleEntityListEvent (EntityListEvent interListEvent) - { + protected void handleEntityListEvent(EntityListEvent interListEvent) { super.handleEntityListEvent(interListEvent); final Inter inter = interListEvent.getEntity(); @@ -417,6 +451,7 @@ protected void handleEntityListEvent (EntityListEvent interListEvent) textField.setVisible(false); textField.setEnabled(false); roleCombo.setVisible(false); + musicPane.setVisible(false); verse.setVisible(false); aboveBelow.setVisible(false); voice.setVisible(false); @@ -436,72 +471,105 @@ protected void handleEntityListEvent (EntityListEvent interListEvent) deassignAction.putValue( Action.NAME, - inter.isRemoved() ? resources.getString("deassign.Action.deleted") - : resources.getString("deassign.Action.text")); + inter.isRemoved() + ? resources.getString("deassign.Action.deleted") + : resources.getString("deassign.Action.text")); + + switch (inter) { + case BeatUnitInter beatUnit -> { + selfUpdatingText = true; - if (inter instanceof WordInter wordInter) { - selfUpdatingText = true; + // The text field is replaced by a JTextPane + musicPane.setText(beatUnit.getValue()); + musicPane.setVisible(true); + musicPane.setEnabled(true); - WordInter word = wordInter; - textField.setText(word.getValue()); - textField.setEnabled(true); - textField.setVisible(true); - selfUpdatingText = false; - } else if (inter instanceof SentenceInter sentenceInter) { - selfUpdatingText = true; + selfUpdatingText = false; + } - SentenceInter sentence = sentenceInter; - textField.setText(sentence.getValue()); - textField.setVisible(true); + case WordInter word -> { + selfUpdatingText = true; - roleCombo.setSelectedItem(sentence.getRole()); - roleCombo.setVisible(true); - roleCombo.setEnabled(true); + textField.setText(word.getValue()); + textField.setEnabled(true); + textField.setVisible(true); + selfUpdatingText = false; + } - if (inter instanceof LyricLineInter lyric) { - verse.setVisible(true); - verse.setValue(lyric.getNumber()); + case MetronomeInter metronome -> { + selfUpdatingText = true; - boolean isAbove = lyric.getStaff().isPointAbove(inter.getCenter()); - aboveBelow.setText(resources.getString(isAbove ? "above" : "below")); - aboveBelow.setVisible(true); + // The text field is replaced by a JTextPane + musicPane.setText(metronome.getDisplayValue()); + musicPane.setVisible(true); + musicPane.setEnabled(true); + + selfUpdatingText = false; + } + + case SentenceInter sentence -> { + selfUpdatingText = true; - LyricItemInter firstNormalItem = lyric.getFirstNormalItem(); + textField.setText(sentence.getValue()); + textField.setVisible(true); - if (firstNormalItem != null) { - HeadChordInter firstChord = firstNormalItem.getHeadChord(); - Voice theVoice = firstChord.getVoice(); + roleCombo.setSelectedItem(sentence.getRole()); + roleCombo.setVisible(true); + roleCombo.setEnabled(true); - if (theVoice != null) { - voice.setVisible(true); - voice.setValue(theVoice.getId()); + if (inter instanceof LyricLineInter lyric) { + verse.setVisible(true); + verse.setValue(lyric.getNumber()); + + boolean isAbove = lyric.getStaff().isPointAbove(inter.getCenter()); + aboveBelow.setText(resources.getString(isAbove ? "above" : "below")); + aboveBelow.setVisible(true); + + LyricItemInter firstNormalItem = lyric.getFirstNormalItem(); + + if (firstNormalItem != null) { + HeadChordInter firstChord = firstNormalItem.getHeadChord(); + Voice theVoice = firstChord.getVoice(); + + if (theVoice != null) { + voice.setVisible(true); + voice.setValue(theVoice.getId()); + } } } + + selfUpdatingText = false; } - selfUpdatingText = false; - } else if (inter instanceof AbstractNumberInter number) { - if (number.getShape() == Shape.NUMBER_CUSTOM) { + case AbstractNumberInter number -> { + if (number.getShape() == Shape.NUMBER_CUSTOM) { + selfUpdatingText = true; + + custom.setText(number.getValue().toString()); + custom.setEnabled(true); + custom.setVisible(true); + + selfUpdatingText = false; + } + } + + case TimeCustomInter timeCustomInter -> { selfUpdatingText = true; - custom.setText(number.getValue().toString()); + custom.setText(timeCustomInter.getTimeRational().toString()); custom.setEnabled(true); custom.setVisible(true); selfUpdatingText = false; } - } else if (inter instanceof TimeCustomInter timeCustomInter) { - selfUpdatingText = true; - - custom.setText(timeCustomInter.getTimeRational().toString()); - custom.setEnabled(true); - custom.setVisible(true); - - selfUpdatingText = false; - } else if (inter instanceof SlurInter slur) { - tie.getField().setSelected(slur.isTie()); - tie.setEnabled(true); - tie.setVisible(true); + + case SlurInter slur -> { + tie.getField().setSelected(slur.isTie()); + tie.setEnabled(true); + tie.setVisible(true); + } + + default -> {} } edit.getField().setSelected(sheet.getSheetEditor().isEditing(inter)); @@ -517,8 +585,10 @@ protected void handleEntityListEvent (EntityListEvent interListEvent) shapeName.setEnabled(inter != null); edit.setEnabled((inter != null) && !inter.isRemoved() && inter.isEditable()); toEnsAction.setEnabled( - (inter != null) && !inter.isRemoved() && (inter.getSig() != null) && (inter - .getEnsemble() != null)); + (inter != null) + && !inter.isRemoved() + && (inter.getSig() != null) + && (inter.getEnsemble() != null)); } //--------------------// @@ -540,7 +610,16 @@ protected void tieActionPerformed (ActionEvent e) @Override public void update () { - shapeIcon.setIcon(getTinySymbol(getSelectedEntity())); + final MusicFamily musicFamily = sheet.getStub().getMusicFamily(); + final TextFamily textFamily = sheet.getStub().getTextFamily(); + + if (musicFamily != cachedMusicFamily || textFamily != cachedTextFamily) { + shapeIcon.setIcon(getTinySymbol(getSelectedEntity())); + musicPane.setFamilies(musicFamily, textFamily); + + cachedMusicFamily = musicFamily; + cachedTextFamily = textFamily; + } } //-----------------------// @@ -619,14 +698,13 @@ public void actionPerformed (ActionEvent e) private class ParamAction extends AbstractAction { - /** - * Method run whenever user presses Return/Enter in one of the parameter fields + * Method run whenever the user presses RETURN/ENTER in one of the parameter fields. * - * @param e unused? + * @param e semantic event */ @Override - public void actionPerformed (ActionEvent e) + public void actionPerformed(ActionEvent e) { // Discard irrelevant action events if (selfUpdatingText) { @@ -636,10 +714,20 @@ public void actionPerformed (ActionEvent e) // Current inter final Inter inter = getSelectedEntity(); - if (inter != null) { - if (inter instanceof WordInter) { - WordInter word = (WordInter) inter; + switch (inter) { + case null -> {} + case BeatUnitInter beatUnit -> { + // Any change, including note symbol insertion + final String newValue = musicPane.getText().trim(); + + if (!beatUnit.getValue().equals(newValue)) { + logger.debug("beatUnit newValue=\"{}\"", newValue); + sheet.getInterController().changeWord(beatUnit, newValue); + } + } + + case WordInter word -> { // Change text value? final String newValue = textField.getText().trim(); @@ -647,20 +735,33 @@ public void actionPerformed (ActionEvent e) logger.debug("Word=\"{}\"", newValue); sheet.getInterController().changeWord(word, newValue); } - } else if (inter instanceof SentenceInter) { - SentenceInter sentence = (SentenceInter) inter; + } + + case MetronomeInter metro -> { + // Any change, including note symbol insertion + final String newValue = musicPane.getText().trim(); + + if (!metro.getValue().equals(newValue)) { + logger.debug("metro newValue=\"{}\"", newValue); + final List newWords = metro.setValue(newValue); + if (newWords != null) { + sheet.getInterController().changeMetronome(metro, newWords); + } + } + } + case SentenceInter sentence -> { // Change sentence role? final TextRole newRole = roleCombo.getSelectedItem(); if (newRole != sentence.getRole()) { logger.debug( - "Sentence=\"{}\" Role={}", - textField.getText().trim(), - newRole); + "Sentence=\"{}\" Role={}", textField.getText().trim(), newRole); sheet.getInterController().changeSentence(sentence, newRole); } - } else if (inter instanceof AbstractNumberInter number) { + } + + case AbstractNumberInter number -> { if (number.getShape() == Shape.NUMBER_CUSTOM) { try { // Change custom value? @@ -668,16 +769,17 @@ public void actionPerformed (ActionEvent e) if (!newValue.equals(number.getValue())) { logger.debug("Custom={}", newValue); + sheet.getInterController().changeNumber(number, newValue); } - } catch (Exception ex) { + } catch (NumberFormatException ex) { logger.warn("Illegal integer value {}", ex.toString()); custom.getField().requestFocusInWindow(); } } - } else if (inter instanceof TimeCustomInter) { - TimeCustomInter timeCustom = (TimeCustomInter) inter; + } + case TimeCustomInter timeCustom -> { try { // Change custom time? TimeRational newTime = TimeRational.decode(custom.getText()); @@ -691,6 +793,63 @@ public void actionPerformed (ActionEvent e) custom.getField().requestFocusInWindow(); } } + + default -> {} + } + } + } + + //-------------------// + // MusicMouseAdapter // + //-------------------// + /** Sub-classed to offer mouse interaction to insert music text. */ + private class MusicMouseAdapter + extends MouseAdapter + { + /** Insert in musicPane the music text that corresponds to the selected beat unit. */ + private final ActionListener shapeListener = (ActionEvent e) -> { + final JMenuItem source = (JMenuItem) e.getSource(); + Note note = Note.valueOf(source.getText()); + logger.debug("shapeListener. note:{}", note); + + final MusicFamily musicFamily = sheet.getStub().getMusicFamily(); + final int[] codes = musicFamily.getSymbols().getCode(note.toShape()); + final String str = new String(codes, 0, codes.length); + + musicPane.insertMusic(str); + }; + + /** + * Triggered when mouse is pressed. + * On a right-click, we display a popup menu with all beat unit symbols to pick from. + * + * @param e mouse event + */ + @Override + public void mousePressed (MouseEvent e) + { + if (isContextWanted(e)) { + final JPopupMenu popup = new SeparablePopupMenu(); + + // A title for this menu + final JMenuItem title = new JMenuItem(resources.getString("insertNote.text")); + title.setToolTipText(resources.getString("insertNote.shortDescription")); + title.setHorizontalAlignment(SwingConstants.CENTER); + title.setEnabled(false); + popup.add(title); + popup.addSeparator(); + + // Populate menu with all possible notes + final MusicFamily musicFamily = sheet.getStub().getMusicFamily(); + for (Note note : Note.values()) { + final JMenuItem item = new JMenuItem( + note.name(), + note.toShape().getDecoratedSymbol(musicFamily)); + item.addActionListener(shapeListener); + popup.add(item); + } + + popup.show(getBody(), e.getX(), e.getY() + musicPane.getHeight()); } } } diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/InterController.java b/app/src/main/java/org/audiveris/omr/sig/ui/InterController.java index 66c5d8daa..0ba1b8748 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/InterController.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/InterController.java @@ -28,6 +28,7 @@ import org.audiveris.omr.glyph.GlyphFactory; import org.audiveris.omr.glyph.Glyphs; import org.audiveris.omr.glyph.Shape; +import static org.audiveris.omr.glyph.Shape.LYRICS; import org.audiveris.omr.glyph.ui.NestView; import static org.audiveris.omr.image.PixelSource.BACKGROUND; import static org.audiveris.omr.image.PixelSource.FOREGROUND; @@ -67,6 +68,7 @@ import org.audiveris.omr.sig.inter.Inters; import org.audiveris.omr.sig.inter.LyricItemInter; import org.audiveris.omr.sig.inter.LyricLineInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.OctaveShiftInter; import org.audiveris.omr.sig.inter.SentenceInter; import org.audiveris.omr.sig.inter.SlurInter; @@ -252,8 +254,8 @@ protected void publish () /** * Special addition of glyph text. * - * @param glyph to be OCR'ed to text lines and words - * @param shape either TEXT or LYRICS + * @param glyph to be OCR'd into text lines and words + * @param shape not null, either TEXT, LYRICS or METRONOME */ @UIThread private void addText (final Glyph glyph, @@ -290,8 +292,7 @@ protected void build () glyph.getId()); // Convert to absolute lines (and the underlying word glyphs) - final boolean lyrics = (shape == Shape.LYRICS); - final TextBuilder textBuilder = new TextBuilder(system, lyrics); + final TextBuilder textBuilder = new TextBuilder(system, shape); final List glyphLines = textBuilder.processGlyph( buffer, relativeLines, @@ -300,59 +301,65 @@ protected void build () // Generate the sequence of word/line Inter additions for (TextLine line : glyphLines) { logger.debug("line {}", line); + final TextRole role = line.getRole(); + final List wordInters = new ArrayList<>(); + + // Allocate the sentence + final SentenceInter sentence = + switch (shape) { + case LYRICS -> { + // In lyrics role, check if we should join an existing lyric line + SentenceInter s = textBuilder.lookupLyricLine(line.getLocation()); + yield (s != null) ? s: LyricLineInter.create(line); + } + case METRONOME -> MetronomeInter.create(line, system, false, wordInters); + case TEXT -> (role == TextRole.ChordName) // + ? ChordNameInter.create(line) + : SentenceInter.create(line); + default -> throw new IllegalArgumentException(); + }; + + sentence.setManual(true); + sentence.assignStaff(system, line.getLocation()); + seq.add( + new AdditionTask( + sig, + sentence, + line.getBounds(), + Collections.emptySet())); - TextRole role = line.getRole(); - Staff staff; - - SentenceInter sentence = null; - - if (lyrics) { - // In lyrics role, check if we should join an existing lyric line - sentence = textBuilder.lookupLyricLine(line.getLocation()); - } - + // Retrieve the member words (already done for METRONOME) for (TextWord textWord : line.getWords()) { logger.debug("word {}", textWord); - final WordInter word = lyrics ? new LyricItemInter(textWord) - : ((role == TextRole.ChordName) ? ChordNameInter.createValid( - textWord) : new WordInter(textWord)); - - if (sentence != null) { - staff = sentence.getStaff(); - seq.add( - new AdditionTask( - sig, - word, - textWord.getBounds(), - Arrays.asList( - new Link(sentence, new Containment(), false)))); - } else { - sentence = lyrics ? LyricLineInter.create(line) - : ((role == TextRole.ChordName) ? ChordNameInter.create(line) - : SentenceInter.create(line)); - staff = sentence.assignStaff(system, line.getLocation()); - seq.add( - new AdditionTask( - sig, - word, - textWord.getBounds(), - Collections.emptySet())); - seq.add( - new AdditionTask( - sig, - sentence, - line.getBounds(), - Arrays.asList( - new Link(word, new Containment(), true)))); + final WordInter word = switch (shape) { + case LYRICS -> new LyricItemInter(textWord); + case METRONOME -> null; + case TEXT -> (role == TextRole.ChordName) + ? ChordNameInter.createValid(textWord) // May be null + : new WordInter(textWord); + default -> throw new IllegalArgumentException(); + }; + + if (word != null) { + wordInters.add(word); } - - word.setStaff(staff); } - if (sentence != null) { - sentences.add(sentence); - } + // Add and link the member words + wordInters.forEach(w -> { + w.setStaff(sentence.getStaff()); + w.setManual(true); + seq.add( + new AdditionTask( + sig, + w, + w.getBounds(), + Arrays.asList( + new Link(sentence, new Containment(), false)))); + }); + + sentences.add(sentence); } } @@ -382,7 +389,7 @@ protected void publish () public void assignGlyph (Glyph aGlyph, final Shape shape) { - if ((shape == Shape.TEXT) || (shape == Shape.LYRICS)) { + if ((shape == Shape.TEXT) || (shape == Shape.LYRICS) || (shape == Shape.METRONOME)) { addText(aGlyph, shape); return; @@ -483,6 +490,58 @@ public boolean canUndo () return history.canUndo(); } + //-----------------// + // changeMetronome // + //-----------------// + /** + * Change the value of a metronome line. + *

+ * Brute force approach: we keep the metronome inter but change all its members. + * + * @param metro the metronome to modify + * @param newWords the new metronome members + */ + @UIThread + public void changeMetronome (MetronomeInter metro, + List newWords) + { + new CtrlTask(DO, "changeMetronome") + { + @Override + protected void build () + { + final Staff staff = metro.getStaff(); + final SystemInfo system = staff.getSystem(); + final SIGraph sig = system.getSig(); + metro.setManual(true); + + final List oldMembers = metro.getMembers(); + + // First, insert the new members + newWords.forEach(w -> { + w.setManual(true); + seq.add( + new AdditionTask( + sig, + w, + null, + Arrays.asList(new Link(metro, new Containment(), false)))); + }); + + // Second, remove all the old members + oldMembers.forEach(m -> seq.add(new RemovalTask(m))); + + metro.invalidateCache(); + } + + @Override + protected void publish () + { + sheet.getInterIndex().publish(metro); + } + }.execute(); + } + //--------------// // changeNumber // //--------------// @@ -518,8 +577,9 @@ protected void publish () /** * Change the role of a sentence. *

- * When a sentence changes its role between "plain", chordName and lyrics, each of its word - * may have to be converted to a WordInter, ChordNameInter of LyricItemInter. + * When a sentence changes its role between "plain", chordName, lyrics and metronome, + * each of its words may have to be converted to a WordInter, ChordNameInter, LyricItemInter or + * BeaUnitInter. *

* Plus some conversion for the sentence as well. * @@ -626,6 +686,31 @@ protected void build () } } + case Metronome -> { + // Convert to MetronomeInter + final MetronomeInter metro = new MetronomeInter(sentence); + final Staff stf = system.getStaffAtOrBelow(sentence.getCenter()); + metro.setStaff((stf != null) ? stf : sentence.getStaff()); + metro.setManual(true); + seq.add( + new AdditionTask( + sig, + metro, + metro.getBounds(), + metro.searchLinks(system))); + + // Migrate the members from sentence to metro + final List members = sentence.getMembers(); + + // Remove former sentence (and its links to members) + seq.add(new RemovalTask(sentence)); + + for (Inter member : members) { + member.setManual(true); + seq.add(new LinkTask(sig, metro, member, new Containment())); + } + } + default -> { // Convert to SentenceInter if so needed final SentenceInter finalSentence; diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/InterDnd.java b/app/src/main/java/org/audiveris/omr/sig/ui/InterDnd.java index 4df538ac1..ad52392e3 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/InterDnd.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/InterDnd.java @@ -378,10 +378,9 @@ private boolean updateGhost (Point location) { final int staffInterline = staff.getSpecificInterline(); final MusicFamily family = sheet.getStub().getMusicFamily(); - final MusicFont font = (ShapeSet.Heads.contains(ghost.getShape())) ? MusicFont.getHeadFont( - family, - sheet.getScale(), - staffInterline) : MusicFont.getBaseFont(family, staffInterline); + final MusicFont font = (ShapeSet.Heads.contains(ghost.getShape())) // + ? MusicFont.getHeadFont(family, sheet.getScale(), staffInterline) + : MusicFont.getBaseFont(family, staffInterline); return ghost.deriveFrom(symbol, sheet, font, location); } diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/RemovalTask.java b/app/src/main/java/org/audiveris/omr/sig/ui/RemovalTask.java index f4e742b3a..19afebf90 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/RemovalTask.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/RemovalTask.java @@ -37,7 +37,8 @@ public class RemovalTask //~ Constructors ------------------------------------------------------------------------------- /** - * Creates a new RemovalTask object. + * Creates a new RemovalTask object, which saves the current inter links + * for potential undo. * * @param inter the inter to remove */ @@ -52,7 +53,8 @@ public RemovalTask (Inter inter) * Useful when inter is no longer in sig when this task is performed. * * @param inter the inter to remove - * @param links the inter current links + * @param links the inter links to save, to be used if/when the removal is undone. + * If null, use all the current relations when the inter is about to be removed. */ public RemovalTask (Inter inter, Collection links) diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/ShapeBoard.java b/app/src/main/java/org/audiveris/omr/sig/ui/ShapeBoard.java index ed2e45a84..bf5f5b065 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/ShapeBoard.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/ShapeBoard.java @@ -233,12 +233,6 @@ public void mouseClicked (MouseEvent e) /** Cached list of HeadsAndDot shapes, if any. To trigger board update only when needed. */ private List cachedHeads; - /** Cached music font family, if any. To trigger board symbols update only when needed. */ - private MusicFamily cachedMusicFamily; - - /** Cached text font family, if any. To trigger board symbols update only when needed. */ - private TextFamily cachedTextFamily; - //~ Constructors ------------------------------------------------------------------------------- /** @@ -418,12 +412,16 @@ private Panel buildSetPanel (ShapeSet set) new HeadButtons().build(panel, filtered); } else if (set == ShapeSet.Barlines) { new ButtonsTable(8).build(panel, filtered); + } else if (set == ShapeSet.BeamsEtc) { + new ButtonsTable(6).build(panel, filtered); } else if (set == ShapeSet.ClefsAndShifts) { new ButtonsTable(5).build(panel, filtered); } else if (set == ShapeSet.Dynamics) { new ButtonsTable(6).build(panel, filtered); } else if (set == ShapeSet.Flags) { new ButtonsTable(7).build(panel, filtered); + } else if (set == ShapeSet.GraceAndOrnaments) { + new ButtonsTable(4).build(panel, filtered); } else if (set == ShapeSet.Rests) { new ButtonsTable(6).build(panel, filtered); } else if (set == ShapeSet.Times) { @@ -901,9 +899,12 @@ private static void populateCharMaps () shapeMap.put("" + c + '4', Shape.QUARTER_REST); shapeMap.put("" + c + '8', Shape.EIGHTH_REST); - setMap.put(c = 'p', ShapeSet.Physicals); + setMap.put(c = 't', ShapeSet.Texts); shapeMap.put("" + c + 'l', Shape.LYRICS); shapeMap.put("" + c + 't', Shape.TEXT); + shapeMap.put("" + c + 'm', Shape.METRONOME); + + setMap.put(c = 'p', ShapeSet.Physicals); shapeMap.put("" + c + 'a', Shape.SLUR_ABOVE); shapeMap.put("" + c + 'b', Shape.SLUR_BELOW); shapeMap.put("" + c + 's', Shape.STEM); diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/WordValueTask.java b/app/src/main/java/org/audiveris/omr/sig/ui/WordValueTask.java index fe4f1c76a..c79e70859 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/WordValueTask.java +++ b/app/src/main/java/org/audiveris/omr/sig/ui/WordValueTask.java @@ -24,7 +24,7 @@ import org.audiveris.omr.sig.inter.WordInter; /** - * Class WordValueTask handle the text value update of a word. + * Class WordValueTask handles the text value update of a word. * * @author Hervé Bitteur */ diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard.properties b/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard.properties index b9f434752..d8bc6fd66 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard.properties +++ b/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard.properties @@ -12,6 +12,9 @@ deassign.Action.text = Deassign deassign.Action.shortDescription = Deassign inter deassign.Action.deleted = deleted +insertNote.text = Insert Note +insertNote.shortDescription = Insert a note symbol as beat unit + aboveBelow.toolTipText = Lyric above or below note line above = above below = below @@ -22,13 +25,18 @@ edit.toolTipText = Set inter into edit mode grade.text = Grade grade.toolTipText = Intrinsic / Contextual +musicPane.toolTipText = This is a pane for mixed music & text.\ +
Use a right-click for note insertion.\ +
Press ENTER to commit your modifications. + roleCombo.text = Role roleCombo.toolTipText = Role of the Sentence shapeName.toolTipText = Shape for this interpretation textField.text = Text -textField.toolTipText = Content of textual item +textField.toolTipText = Content of textual item.\ +
Press ENTER to commit your modifications. tie.text = Tie tie.toolTipText = Set/Unset slur as tie @@ -37,7 +45,7 @@ time.text = Custom time.toolTipText = Custom num/den time ToEnsembleAction.text = To Ensemble -ToEnsembleAction.shortDescription = Move to containing ensemble +ToEnsembleAction.shortDescription = Move to the containing ensemble verse.text = Verse verse.toolTipText = Lyric verse number diff --git a/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard_fr.properties b/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard_fr.properties index ab04fd325..1bd804fbd 100644 --- a/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard_fr.properties +++ b/app/src/main/java/org/audiveris/omr/sig/ui/resources/InterBoard_fr.properties @@ -12,6 +12,9 @@ deassign.Action.text = Supprimer deassign.Action.shortDescription = Supprimer cette interpr\u00e9tation deassign.Action.deleted = supprim\u00e9 +insertNote.text = Ins\u00e9rer une Note +insertNote.shortDescription = Insertion d'une note comme unit\u00e9 de temps + aboveBelow.toolTipText = Paroles au-dessus ou au-dessous des notes above = dessus below = dessous @@ -22,13 +25,18 @@ edit.toolTipText = Ajuster cette interpr\u00e9tation grade.text = Qualit\u00e9 grade.toolTipText = Intrins\u00e8que / Contextuelle +musicPane.toolTipText = Ceci est un panneau de musique et texte m\u00e9l\u00e9s.\ +
Utiliser un clic droit pour ins\u00e9rer une note.\ +
Appuyer sur ENTER pour valider vos modifications. + roleCombo.text = R\u00f4le roleCombo.toolTipText = R\u00f4le de cette phrase shapeName.toolTipText = Classe pour cette interpr\u00e9tation textField.text = Texte -textField.toolTipText = Contenu de cet \u00e9l\u00e9ment de texte +textField.toolTipText = Contenu de cet \u00e9l\u00e9ment de texte.\ +
Appuyer sur ENTER pour valider vos modifications. tie.text = Tenue tie.toolTipText = Liaison de prolongation diff --git a/app/src/main/java/org/audiveris/omr/text/FontInfo.java b/app/src/main/java/org/audiveris/omr/text/FontInfo.java index 217c431aa..f77146196 100644 --- a/app/src/main/java/org/audiveris/omr/text/FontInfo.java +++ b/app/src/main/java/org/audiveris/omr/text/FontInfo.java @@ -72,7 +72,7 @@ public class FontInfo //~ Constructors ------------------------------------------------------------------------------- /** - * Creates a new FontInfo object. + * Creates a new FontInfo object. * * @param isBold True if the font is bold * @param isItalic True if the font is italic @@ -102,6 +102,22 @@ public FontInfo (boolean isBold, this.fontName = fontName; } + /** + * Creates a new FontInfo object, with only bold and italic possible attributes. + * + * @param isBold True if the font is bold + * @param isItalic True if the font is italic + * @param pointsize font size in points + * @param fontName font name + */ + public FontInfo (boolean isBold, + boolean isItalic, + int pointsize, + String fontName) + { + this(isBold, isItalic, false, false, false, false, pointsize, fontName); + } + /** * Create a new FontInfo from another one and a specific point size. * @@ -123,7 +139,8 @@ public FontInfo (FontInfo org, } /** - * Creates a new FontInfo object, with no attribute set, just point size and font name. + * Creates a new FontInfo object, with no attribute set, + * just point size and font name. * * @param pointsize font size in points * @param fontName font name diff --git a/app/src/main/java/org/audiveris/omr/text/OCR.java b/app/src/main/java/org/audiveris/omr/text/OCR.java index 8e93d2ab2..af42c32d4 100644 --- a/app/src/main/java/org/audiveris/omr/text/OCR.java +++ b/app/src/main/java/org/audiveris/omr/text/OCR.java @@ -50,7 +50,7 @@ public interface OCR Set getLanguages (); /** - * Report the minimum confidence for an OCR'ed item. + * Report the minimum confidence for an OCR'd item. * * @return minimum confidence value */ diff --git a/app/src/main/java/org/audiveris/omr/text/OcrUtil.java b/app/src/main/java/org/audiveris/omr/text/OcrUtil.java index 0503fe77f..a2237c988 100644 --- a/app/src/main/java/org/audiveris/omr/text/OcrUtil.java +++ b/app/src/main/java/org/audiveris/omr/text/OcrUtil.java @@ -26,6 +26,7 @@ import org.audiveris.omr.sheet.Sheet; import org.audiveris.omr.text.OCR.LayoutMode; import org.audiveris.omr.text.tesseract.TesseractOCR; +import org.audiveris.omr.ui.symbol.TextFamily; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -99,7 +100,7 @@ public static List scan (BufferedImage image, final int height = image.getHeight(); final Point origin = new Point(0, 0); - // Add some white some white margin around the image? + // Add some white margin around the image? final int margin = constants.whiteMarginAdded.getValue(); final BufferedImage bi; @@ -124,20 +125,24 @@ public static List scan (BufferedImage image, final List lines = ocr.recognize(sheet, bi, origin, language, layoutMode, label); if (lines == null) { - logger.info("No OCR'ed lines"); + logger.info("No OCR'd lines"); return Collections.emptyList(); } - + Collections.sort(lines, TextLine.byOrdinate(sheet.getSkew())); + final TextFamily family = sheet.getStub().getTextFamily(); + lines.forEach(line -> line.getWords().forEach(word -> word.adjustFontSize(family))); + if (logger.isDebugEnabled()) { - TextLine.dump("Raw OCR'ed lines:", lines, constants.dumpWords.isSet()); + TextLine.dump("Raw OCR'd lines:", lines, constants.dumpWords.isSet()); } return lines; } //~ Inner Classes ------------------------------------------------------------------------------ + //-----------// // Constants // //-----------// diff --git a/app/src/main/java/org/audiveris/omr/text/SheetScanner.java b/app/src/main/java/org/audiveris/omr/text/SheetScanner.java index e208758c6..2e0900172 100644 --- a/app/src/main/java/org/audiveris/omr/text/SheetScanner.java +++ b/app/src/main/java/org/audiveris/omr/text/SheetScanner.java @@ -158,7 +158,7 @@ protected void renderItems (Graphics2D g) /** * Get a clean image of whole sheet and run OCR on it. * - * @return the list of OCR'ed lines found and filtered + * @return the list of OCR'd lines found and filtered */ public List scanSheet () { diff --git a/app/src/main/java/org/audiveris/omr/text/TextBuilder.java b/app/src/main/java/org/audiveris/omr/text/TextBuilder.java index 3679da90a..ee458c679 100644 --- a/app/src/main/java/org/audiveris/omr/text/TextBuilder.java +++ b/app/src/main/java/org/audiveris/omr/text/TextBuilder.java @@ -25,6 +25,7 @@ import org.audiveris.omr.constant.ConstantSet; import org.audiveris.omr.glyph.Glyph; import org.audiveris.omr.glyph.GlyphIndex; +import org.audiveris.omr.glyph.Shape; import org.audiveris.omr.glyph.dynamic.CompoundFactory; import org.audiveris.omr.glyph.dynamic.CompoundFactory.CompoundConstructor; import org.audiveris.omr.glyph.dynamic.SectionCompound; @@ -47,9 +48,12 @@ import org.audiveris.omr.sig.inter.ChordNameInter; import org.audiveris.omr.sig.inter.LyricItemInter; import org.audiveris.omr.sig.inter.LyricLineInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import org.audiveris.omr.sig.inter.SentenceInter; -import org.audiveris.omr.sig.inter.TempoInter; import org.audiveris.omr.sig.inter.WordInter; +import static org.audiveris.omr.text.TextRole.ChordName; +import static org.audiveris.omr.text.TextRole.Lyrics; +import static org.audiveris.omr.text.TextRole.Metronome; import org.audiveris.omr.text.tesseract.TesseractOCR; import org.audiveris.omr.util.Navigable; import org.audiveris.omr.util.Pair; @@ -83,17 +87,21 @@ * Class TextBuilder works at system level, providing features to check, build * and reorganize text items, including interacting with the OCR engine. *

- * This builder can operate in 3 different modes: + * This builder can operate in 4 different modes: *

    *
  1. Free mode: Engine mode, text role can be any role, determined by heuristics. *
    - * manualLyrics == null; + * shape == null; *
  2. Manual as lyrics: Manual mode, for which text role is imposed as lyrics. *
    - * manualLyrics == true; - *
  3. Manual as non-lyrics: Manual mode, for which text role is imposed as non lyrics. + * shape == LYRICS + *
  4. Manual as metronome: Manual mode, for which text role is imposed as metronome. *
    - * manualLyrics == false; + * shape == METRONOME + *
  5. Manual as plain text: Manual mode, for which text role can be anything, except lyrics + * and metronome. + *
    + * shape == TEXT *
* * @author Hervé Bitteur @@ -125,8 +133,8 @@ public class TextBuilder /** Set of text lines. */ private final Set textLines = new LinkedHashSet<>(); - /** Manual mode. */ - private final Boolean manualLyrics; + /** Shape specification. */ + private final Shape shape; /** Maximum acceptable vertical shift between line chunks. */ private final int maxLineDy; @@ -136,32 +144,17 @@ public class TextBuilder //~ Constructors ------------------------------------------------------------------------------- - /** - * Creates a new TextBuilder object in engine mode (TEXTS step). - * - * @param system the related system - */ - public TextBuilder (SystemInfo system) - { - this(system, null); - } - /** * Creates a new TextBuilder object, in either engine or manual mode. - *

- * In engine mode, manualLyrics is null, leaving lines roles fully open. - *

- * In manual mode, the user has selected either "lyrics" (which forces lyrics mode) or "text" - * (which leaves the role open to anything but lyrics). * - * @param system the related system - * @param manualLyrics null for any role, true for lyrics, false for any role but lyrics + * @param system the related system + * @param shape null for any role (engine) or specifically TEXT, LYRICS, METRONOME (manual) */ public TextBuilder (SystemInfo system, - Boolean manualLyrics) + Shape shape) { this.system = system; - this.manualLyrics = manualLyrics; + this.shape = shape; sheet = system.getSheet(); scale = sheet.getScale(); @@ -209,26 +202,25 @@ private void adjustLines (List lines) } } - //--------------// - // createInters // - //--------------// + //--------------------// + // createSystemInters // + //--------------------// /** - * Allocate corresponding inters based on text role. - *

    - *
  • For any role other than Lyrics, a plain Sentence is created for each text line.
  • - *
  • For Lyrics role, a specific LyricLine (sub-class of Sentence) is created.
  • - *
+ * Allocate corresponding inters based on the role for each text line. */ - private void createInters () + private void createSystemInters () { final SIGraph sig = system.getSig(); for (TextLine line : textLines) { + final List createdWords = new ArrayList<>(); final TextRole role = line.getRole(); - final SentenceInter sentence = (role == TextRole.Lyrics) ? LyricLineInter.create(line) - : (role == TextRole.ChordName) ? ChordNameInter.create(line) - : (role == TextRole.Tempo) ? TempoInter.createValid(line) - : SentenceInter.create(line); + final SentenceInter sentence = switch (role) { + case Lyrics -> LyricLineInter.create(line); + case ChordName -> ChordNameInter.create(line); + case Metronome -> MetronomeInter.create(line, system, false, createdWords); + default -> SentenceInter.create(line); + }; // Related staff (can still be modified later) Staff staff = line.getStaff(); @@ -240,21 +232,27 @@ private void createInters () } if (staff != null) { - // Populate sig - sig.addVertex(sentence); - - // Link sentence and words + // Create words for (TextWord word : line.getWords()) { - final WordInter wordInter = (role == TextRole.Lyrics) ? new LyricItemInter(word) - : ((role == TextRole.ChordName) ? ChordNameInter.createValid(word) - : new WordInter(word)); - - if (wordInter != null) { - wordInter.setStaff(staff); - sig.addVertex(wordInter); - sentence.addMember(wordInter); + final WordInter w = switch (role) { + case Lyrics -> new LyricItemInter(word); + case ChordName -> ChordNameInter.createValid(word); + case Metronome -> null; // Already performed at MetronomeInter creation + default -> new WordInter(word); + }; + + if (w != null) { + createdWords.add(w); } } + + // Populate sig + sig.addVertex(sentence); + createdWords.forEach(w -> { + w.setStaff(sentence.getStaff()); + sig.addVertex(w); + sentence.addMember(w); + }); } } } @@ -366,7 +364,7 @@ private List getGutterLines (List lines, // getSections // //-------------// /** - * Build all the system sections that could be part of OCR'ed items. + * Build all the system sections that could be part of OCR'd items. * * @param buffer the pixel buffer used by OCR * @param lines the text lines kept @@ -393,12 +391,12 @@ private List
getSections (ByteProcessor buffer, // getSystemValidLines // //---------------------// /** - * Among the lines OCR'ed from whole sheet, select the ones that could belong to our + * Among the lines OCR'd from whole sheet, select the ones that could belong to our * system and considered as valid. *

* Sheet lines are deep-copied to system lines. * - * @param sheetLines sheet collection of raw OCR'ed lines + * @param sheetLines sheet collection of raw OCR'd lines * @return the relevant system lines, duly validated */ private List getSystemValidLines (List sheetLines) @@ -462,9 +460,13 @@ private void guessLongRoles (List longLines) private void guessRole (TextLine line) { try { - TextRole role = (isManual() && manualLyrics) ? TextRole.Lyrics - : TextRole.guessRole(line, system, manualLyrics == null); - line.setRole(role); + line.setRole(switch (shape) { + case null -> TextRole.guess(line, system, true, true); // Engine mode + case LYRICS -> TextRole.Lyrics; + case METRONOME -> TextRole.Metronome; + case TEXT -> TextRole.guess(line, system, false, false); + default -> null; // To keep the compiler happy. + }); } catch (Exception ex) { logger.warn("Error in guessRole for {} {}", line, ex.toString(), ex); } @@ -480,7 +482,7 @@ private void guessRole (TextLine line) */ private boolean isManual () { - return manualLyrics != null; + return shape != null; } //-----------------// @@ -556,12 +558,15 @@ private void mapGlyphs (List lines, for (TextWord word : sortedWords) { // Isolate proper word glyph from its enclosed sections - SortedSet

wordSections = - retrieveSections(word.getChars(), allSections, offset); + SortedSet
wordSections = retrieveSections( + word.getChars(), + allSections, + offset); if (!wordSections.isEmpty()) { - SectionCompound compound = - CompoundFactory.buildCompound(wordSections, constructor); + SectionCompound compound = CompoundFactory.buildCompound( + wordSections, + constructor); Glyph rel = compound.toGlyph(null); Glyph wordGlyph = glyphIndex.registerOriginal( new Glyph(rel.getLeft() + dx, rel.getTop() + dy, rel.getRunTable())); @@ -707,7 +712,7 @@ private TextLine mergeLines (List lines) /** * Gather the provided raw lines into long lines, based on their ordinate. * - * @param rawLines collection of raw OCR'ed lines + * @param rawLines collection of raw OCR'd lines * @return resulting long lines */ private List mergeRawLines (List rawLines) @@ -902,11 +907,10 @@ private void partitionPartLines (List longLines) // processGlyph // //--------------// /** - * Retrieve the glyph lines, among the lines OCR'ed from the glyph buffer. + * Retrieve the glyph lines, among the lines OCR'd from the glyph buffer. *

* This method is called in manual mode only. - * Boolean 'manualLyrics' is not null and is either true for lyrics imposed or false for lyrics - * forbidden. + * The 'shape' element is not null and is LYRICS, METRONOME or TEXT * * @param buffer the (glyph) pixel buffer * @param glyphLines the glyph raw OCR lines, relative to buffer origin @@ -918,7 +922,7 @@ public List processGlyph (ByteProcessor buffer, Point offset) { // Pre-assign text role as lyrics? - if (isManual() && manualLyrics) { + if (shape == Shape.LYRICS) { for (TextLine line : glyphLines) { line.setRole(TextRole.Lyrics); // Here, lyrics role is certain! } @@ -941,13 +945,13 @@ public List processGlyph (ByteProcessor buffer, // processSystem // //---------------// /** - * Retrieve the system-relevant lines, among all the lines OCR'ed at sheet level. + * Retrieve the system-relevant lines, among all the lines OCR'd at sheet level. *

* We may have lines that belong to the system above and lines that belong to the system below. * We try to filter them out immediately. * * @param buffer the (sheet) pixel buffer - * @param sheetLines the sheet raw OCR'ed lines + * @param sheetLines the sheet raw OCR'd lines */ public void processSystem (ByteProcessor buffer, List sheetLines) @@ -998,7 +1002,7 @@ public void processSystem (ByteProcessor buffer, // - Sentences of Words (or of one ChordName) // - LyricLines of LyricItems watch.start("createInters"); - createInters(); + createSystemInters(); watch.start("numberLyricLines()"); system.numberLyricLines(); @@ -1120,6 +1124,7 @@ private void purgeInvalidLines (List lines) *

  • A too small inter-word gap triggers a word merge
  • *
  • For lyrics, a separation character triggers a word split into syllables
  • * + * If this TextBuilder operates with a null or TEXT shape, the role of each line is guessed. * * @param longLines the lines to process * @return the sequence of re-composed lines @@ -1195,8 +1200,8 @@ private SortedSet
    retrieveSections (List chars, Point offset) { final SortedSet
    wordSections = new TreeSet<>(Section.byFullAbscissa); - final CompoundConstructor constructor = - new SectionCompound.Constructor(sheet.getInterline()); + final CompoundConstructor constructor = new SectionCompound.Constructor( + sheet.getInterline()); final int dx = (offset != null) ? offset.x : 0; final int dy = (offset != null) ? offset.y : 0; @@ -1393,11 +1398,12 @@ public static boolean isMainlyItalic (TextLine line) private static class Constants extends ConstantSet { + private final Constant.Boolean printWatch = new Constant.Boolean( + false, + "Should we print out the stop watch?"); - private final Constant.Boolean printWatch = - new Constant.Boolean(false, "Should we print out the stop watch?"); - - private final Scale.Fraction maxLineDy = - new Scale.Fraction(1.0, "Max vertical gap between two line chunks"); + private final Scale.Fraction maxLineDy = new Scale.Fraction( + 1.0, + "Max vertical gap between two line chunks"); } } diff --git a/app/src/main/java/org/audiveris/omr/text/TextLine.java b/app/src/main/java/org/audiveris/omr/text/TextLine.java index 311c50770..0406d5f25 100644 --- a/app/src/main/java/org/audiveris/omr/text/TextLine.java +++ b/app/src/main/java/org/audiveris/omr/text/TextLine.java @@ -31,6 +31,8 @@ import org.audiveris.omr.sig.inter.ChordNameInter; import org.audiveris.omr.text.WordScanner.OcrScanner; import org.audiveris.omr.text.tesseract.TesseractOCR; +import org.audiveris.omr.ui.symbol.OmrFont; +import org.audiveris.omr.ui.symbol.TextFont; import org.audiveris.omr.util.VerticalSide; import org.slf4j.Logger; @@ -45,6 +47,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; /** * Class TextLine defines a non-mutable structure to report all information on @@ -457,10 +460,13 @@ public FontInfo getMeanFont () // Discard one-char words, they are not reliable if (length > 1) { + final FontInfo info = word.getFontInfo(); + final OmrFont font = new TextFont(info); + final int fontSize = font.computeSize( + word.getValue(), + word.getBounds().getSize()); + sizeTotal += (fontSize * length); charCount += length; - sizeTotal += (word.getPreciseFontSize() * length); - - FontInfo info = word.getFontInfo(); if (info.isBold) { boldCount += length; @@ -536,24 +542,7 @@ public TextRole getRole () @Override public String getValue () { - StringBuilder sb = null; - - // Use each word value - for (TextWord word : words) { - String str = word.getValue(); - - if (sb == null) { - sb = new StringBuilder(str); - } else { - sb.append(" ").append(str); - } - } - - if (sb == null) { - return ""; - } else { - return sb.toString(); - } + return words.stream().map(w -> w.getValue()).collect(Collectors.joining(" ")); } //---------------// @@ -938,7 +927,7 @@ public static Comparator byAbscissa (final Skew skew) { return (TextLine line1, TextLine line2) -> Double.compare( - line1.getDskOrigin(skew).getX(), + line1.getDskOrigin(skew).getX(), // line2.getDskOrigin(skew).getX()); } @@ -952,7 +941,7 @@ public static Comparator byOrdinate (final Skew skew) { return (TextLine line1, TextLine line2) -> Double.compare( - line1.getDskOrigin(skew).getY(), + line1.getDskOrigin(skew).getY(), // line2.getDskOrigin(skew).getY()); } @@ -986,11 +975,11 @@ private static class Constants { private final Scale.Fraction maxFontSize = new Scale.Fraction( - 5.0, + 4.0, "Maximum font size with respect to interline"); private final Scale.Fraction minFontSize = new Scale.Fraction( - 1.25, + 1.0, "Minimum font size with respect to interline"); private final Scale.Fraction maxTitleFontSize = new Scale.Fraction( diff --git a/app/src/main/java/org/audiveris/omr/text/TextRole.java b/app/src/main/java/org/audiveris/omr/text/TextRole.java index 3054b6b39..ba9f96475 100644 --- a/app/src/main/java/org/audiveris/omr/text/TextRole.java +++ b/app/src/main/java/org/audiveris/omr/text/TextRole.java @@ -31,7 +31,7 @@ import org.audiveris.omr.sheet.Sheet; import org.audiveris.omr.sheet.Staff; import org.audiveris.omr.sheet.SystemInfo; -import org.audiveris.omr.sig.inter.TempoInter; +import org.audiveris.omr.sig.inter.MetronomeInter; import static org.audiveris.omr.util.HorizontalSide.LEFT; import static org.audiveris.omr.util.HorizontalSide.RIGHT; @@ -78,8 +78,8 @@ public enum TextRole EndingNumber, /** Ending text, when different from number. */ EndingText, - /** Tempo indication, such as "quarter = value". */ - Tempo; + /** Metronome mark, such as "quarter = value". */ + Metronome; private static final Constants constants = new Constants(); @@ -103,30 +103,32 @@ public boolean isCreator () //~ Static Methods ----------------------------------------------------------------------------- - //-----------// - // guessRole // - //-----------// + //-------// + // guess // + //-------// /** * Try to infer the role of this textual item. *

    * For the time being, this is a simple algorithm based on sentence location within the sheet, * augmented by valid chord name, etc. * - * @param line the sentence - * @param system the containing system - * @param lyricsAllowed false for manual mode, forbidding lyrics + * @param line the sentence + * @param system the containing system + * @param lyricsAllowed false for manual mode, forbidding lyrics + * @param metronomeAllowed false for manual mode, forbidding metronome * @return the role information inferred for the provided sentence glyph */ - public static TextRole guessRole (TextLine line, - SystemInfo system, - boolean lyricsAllowed) + public static TextRole guess (TextLine line, + SystemInfo system, + boolean lyricsAllowed, + boolean metronomeAllowed) { if (line == null) { return null; } if (line.isVip()) { - logger.info("TextRoleInfo. guessRole for {}", line.getValue()); + logger.info("TextRole.guess for {}", line.getValue()); } final Rectangle box = line.getBounds(); @@ -179,8 +181,8 @@ public static TextRole guessRole (TextLine line, // Right aligned with staves (and starts after staff center abscissa) ? int maxRightDx = scale.toPixels(constants.maxRightDx); - boolean rightAligned = - (Math.abs(right.x - system.getRight()) <= maxRightDx) && (staffMidX <= left.x); + boolean rightAligned = (Math.abs(right.x - system.getRight()) <= maxRightDx) + && (staffMidX <= left.x); // Short Sentence? int maxShortLength = scale.toPixels(constants.maxShortLength); @@ -199,7 +201,7 @@ public static TextRole guessRole (TextLine line, // Decisions ... switch (systemPosition) { - case ABOVE_STAVES: // Title, Number, Creator, Direction, ChordName, Lyrics above staff + case ABOVE_STAVES: // Title, Number, Creator, Direction, ChordName, Lyrics, Metronome if (tinySentence) { if (isAllChords) { return ChordName; @@ -210,19 +212,20 @@ public static TextRole guessRole (TextLine line, if (firstSystem) { if (leftOfStaves) { - return CreatorLyricist; + if (metronomeAllowed && MetronomeInter.isLikely(line)) { + return Metronome; + } else { + return CreatorLyricist; + } } else if (rightAligned) { return CreatorComposer; + } else if (metronomeAllowed && MetronomeInter.isLikely(line)) { + return Metronome; } else if (closeToStaff) { if (isAllChords) { return ChordName; } else { - final TempoInter tempo = TempoInter.createValid(line); - if (tempo != null) { - return Tempo; - } else { - return Direction; - } + return Direction; } } else if (pageCentered) { // Title, Number if (highText) { @@ -257,6 +260,8 @@ public static TextRole guessRole (TextLine line, logger.debug("Abnormal part name: {}", line); } } + } else if (metronomeAllowed && MetronomeInter.isLikely(line)) { + return Metronome; } else if (lyricsAllowed // && hasVowel // ///&& !isMainlyItalic // @@ -308,26 +313,32 @@ private static class Constants extends ConstantSet { - private final Scale.Fraction maxRightDx = - new Scale.Fraction(2, "Maximum horizontal distance on the right end of the staff"); + private final Scale.Fraction maxRightDx = new Scale.Fraction( + 2, + "Maximum horizontal distance on the right end of the staff"); - private final Scale.Fraction maxCenterDx = - new Scale.Fraction(30, "Maximum horizontal distance around center of page"); + private final Scale.Fraction maxCenterDx = new Scale.Fraction( + 30, + "Maximum horizontal distance around center of page"); - private final Scale.Fraction maxShortLength = - new Scale.Fraction(35, "Maximum length for a short sentence (no lyrics)"); + private final Scale.Fraction maxShortLength = new Scale.Fraction( + 35, + "Maximum length for a short sentence (no lyrics)"); - private final Scale.Fraction maxTinyLength = - new Scale.Fraction(2.5, "Maximum length for a tiny sentence (no lyrics)"); + private final Scale.Fraction maxTinyLength = new Scale.Fraction( + 2.5, + "Maximum length for a tiny sentence (no lyrics)"); private final Scale.Fraction maxStaffDy = new Scale.Fraction( 7, "Maximum distance above staff for a direction (or lyrics above staves)"); - private final Scale.Fraction minStaffDy = - new Scale.Fraction(6, "Minimum distance below staff for a copyright"); + private final Scale.Fraction minStaffDy = new Scale.Fraction( + 6, + "Minimum distance below staff for a copyright"); - private final Scale.Fraction minTitleHeight = - new Scale.Fraction(2, "Minimum height for a title text"); + private final Scale.Fraction minTitleHeight = new Scale.Fraction( + 2, + "Minimum height for a title text"); } } diff --git a/app/src/main/java/org/audiveris/omr/text/TextWord.java b/app/src/main/java/org/audiveris/omr/text/TextWord.java index da63b1551..e58ad6f3c 100644 --- a/app/src/main/java/org/audiveris/omr/text/TextWord.java +++ b/app/src/main/java/org/audiveris/omr/text/TextWord.java @@ -28,6 +28,7 @@ import org.audiveris.omr.sheet.Scale; import org.audiveris.omr.sheet.Sheet; import org.audiveris.omr.ui.symbol.OmrFont; +import org.audiveris.omr.ui.symbol.TextFamily; import org.audiveris.omr.ui.symbol.TextFont; import org.audiveris.omr.util.Navigable; import org.audiveris.omr.util.StringUtil; @@ -67,8 +68,7 @@ public class TextWord private static final Logger logger = LoggerFactory.getLogger(TextWord.class); /** Abnormal characters. */ - private static final char[] ABNORMAL_CHARS = new char[] - { '\\' }; + private static final char[] ABNORMAL_CHARS = new char[] { '\\' }; /** Regexp for one-letter words. */ private static final Pattern ONE_LETTER_WORDS = compileRegexp(constants.oneLetterWordRegexp); @@ -115,9 +115,6 @@ public class TextWord /** Underlying glyph, if known. */ private Glyph glyph; - /** Precise font size, lazily computed. */ - private Float preciseFontSize; - /** Has this word been adjusted?. */ private boolean adjusted; @@ -244,38 +241,46 @@ public void adjust (Scale scale) } } - // //----------------// - // // adjustFontSize // - // //----------------// - // /** - // * Adjust font size precisely according to underlying bounds. - // * WARNING: OCR bounds can be crazy, hence bounds-based font adjustment is not reliable enough - // * - // * @return true if OK, false if abnormal font modification - // */ - // public boolean adjustFontSize () - // { - // double size = TextFont.computeFontSize(value, fontInfo, bounds.getSize()); - // double ratio = size / fontInfo.pointsize; - // // - // // if (ratio < constants.minFontRatio.getSourceValue() // - // // || ratio > constants.maxFontRatio.getSourceValue()) { - // // logger.debug(" abnormal font ratio {} {}", String.format("%.2f", ratio), this); - // // - // // return false; - // // } - // // - // // fontInfo = new FontInfo(fontInfo, (int) Math.rint(size)); - // // textLine.invalidateCache(); - // // - // return true; - // } + //----------------// + // adjustFontSize // + //----------------// + /** + * Adjust font size precisely according to underlying bounds. + * + * @param family the text family selected for the related sheet + * @return true if OK, false if no font modification was performed + */ + public boolean adjustFontSize (TextFamily family) + { + // Discard one-char words, they are not reliable + if (getLength() <= 1) { + return false; + } + + final int style = (fontInfo.isBold ? Font.BOLD : 0) | (fontInfo.isItalic ? Font.ITALIC : 0); + final TextFont font = new TextFont(family.getFontName(), null, style, fontInfo.pointsize); + + final int fontSize = font.computeSize(getValue(), getBounds().getSize()); + final double ratio = (double) fontSize / fontInfo.pointsize; + + if (ratio < constants.minFontRatio.getSourceValue() // + || ratio > constants.maxFontRatio.getSourceValue()) { + logger.info(" Abnormal font ratio {} {}", String.format("%.2f", ratio), this); + + return false; + } + + fontInfo = new FontInfo(fontInfo, fontSize); + textLine.invalidateCache(); + + return true; + } //---------------// // checkValidity // //---------------// /** - * Check the provided OCR'ed word (the word is not modified). + * Check the provided OCR'd word (the word is not modified). * * @return reason for invalidity if any, otherwise null */ @@ -470,28 +475,6 @@ public int getLength () return getValue().length(); } - //--------------------// - // getPreciseFontSize // - //--------------------// - /** - * Report the best computed font size for this word, likely to precisely match the - * word bounds. - *

    - * The size appears to be a bit larger than OCR detected side, by a factor in the range 1.1 - - * 1.2. TODO: To be improved, using font attributes for better font selection - *

    - * - * @return the computed font size - */ - public float getPreciseFontSize () - { - if (preciseFontSize == null) { - preciseFontSize = TextFont.computeFontSize(getValue(), fontInfo, getBounds().getSize()); - } - - return preciseFontSize; - } - //-------------// // getSubWords // //-------------// @@ -647,20 +630,6 @@ public void setGlyph (Glyph glyph) } } - //--------------------// - // setPreciseFontSize // - //--------------------// - /** - * Assign a font size. - * (to enforce consistent font size across all words of the same sentence) - * - * @param preciseFontSize the enforced font size, or null - */ - public void setPreciseFontSize (Float preciseFontSize) - { - this.preciseFontSize = preciseFontSize; - } - //-------------// // setTextLine // //-------------// @@ -722,40 +691,6 @@ private static Pattern compileRegexp (Constant.String str) } } - //------------------// - // createManualWord // - //------------------// - /** - * Create a TextWord instance manually, out of a given glyph and value. - *

    - * TODO: Perhaps we could improve the baseline, according to the precise string value provided. - * - * @param sheet the related sheet - * @param glyph the underlying glyph - * @param value the provided string value - * @return the TextWord created - */ - public static TextWord createManualWord (Sheet sheet, - Glyph glyph, - String value) - { - Rectangle box = glyph.getBounds(); - int fontSize = (int) Math.rint( - TextFont.computeFontSize(value, FontInfo.DEFAULT, box.getSize())); - TextWord word = new TextWord( - sheet, - box, - value, - new Line2D.Double(box.x, box.y + box.height, box.x + box.width, box.y + box.height), - 1.0, // Confidence - FontInfo.createDefault(fontSize), - null); - - word.setGlyph(glyph); - - return word; - } - //---------// // mergeOf // //---------// @@ -809,7 +744,7 @@ private static class Constants "Regular expression to detect one-letter words"); private final Constant.String abnormalWordRegexp = new Constant.String( - "^[^a-zA-Z_0-9-.,&=©\\?]+$", + "^[^a-zA-Z_0-9-.,&=©\\?}]+$", "Regular expression to detect abnormal words"); private final Constant.String tupletWordRegexp = new Constant.String( @@ -833,7 +768,7 @@ private static class Constants "Maximum ratio between ocr and glyph font sizes"); private final Constant.Ratio minFontRatio = new Constant.Ratio( - 0.5, + 0.3, "Minimum ratio between ocr and glyph font sizes"); private final Scale.Fraction standardFontSize = new Scale.Fraction( diff --git a/app/src/main/java/org/audiveris/omr/text/TextsStep.java b/app/src/main/java/org/audiveris/omr/text/TextsStep.java index 36a1f1adc..048fc8593 100644 --- a/app/src/main/java/org/audiveris/omr/text/TextsStep.java +++ b/app/src/main/java/org/audiveris/omr/text/TextsStep.java @@ -42,7 +42,7 @@ import java.util.Set; /** - * Class TextsStep discovers text items in a system area. + * Class TextsStep discovers text items in every system area. * * @author Hervé Bitteur */ @@ -110,7 +110,7 @@ public void doSystem (SystemInfo system, throws StepException { // Process texts at system level - new TextBuilder(system).processSystem(context.buffer, context.textLines); + new TextBuilder(system, null).processSystem(context.buffer, context.textLines); } //--------// @@ -161,7 +161,7 @@ protected static class Context /** The sheet buffer handed to OCR. */ public final ByteProcessor buffer; - /** The raw text lines OCR'ed. */ + /** The raw text lines OCR'd. */ public final List textLines; /** diff --git a/app/src/main/java/org/audiveris/omr/text/doc-files/font.png b/app/src/main/java/org/audiveris/omr/text/doc-files/font.png new file mode 100644 index 0000000000000000000000000000000000000000..d482915b201fb411c2536d3e4c12e8574af076a0 GIT binary patch literal 104231 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 !<`%r^d~j(pUrI%-OO>F`oIUSt{ydm=FMJq6|& z%;J?u;k*GHVt>zfG?%TbcJg!f;<}rsgSq)YPh8Q&a->&iGl2LXJFlk&1Cn2t@#A%= zvJQmGkm1$;MgP6?zJCg2Q6}d)q56qx2|)^y7-N5-naqtL}%N zlRkjR03guuQi2r>pMe(t>^>q=7UmL#oZy|GbHtIuJh9G^&>vKpj-1{*{|#MfCKy=U z%dknPw$_mcrmRFq_Tdy&C$@Xo#pAKk&x95TWL}Q{r;(ykpM^G#3FvtJV(-zJ+ z>KT`jfdD;=F!EyaqQkZ;r)uA7Y-HMiIqvVG4>GIsbNn&tqweCQiTo`1b-pQJ-sBYg z=u#fJL8})0C5J~lDc#-X9V-7S-GI9NG+sWaSyv}%+j{s)JM{`$GC;-_4=kOmVc+pm z{-*6h+3d7}ydyq`x{{on!%go1T6WhdG~> zrfU(Uy+a$q6EDJVca4tVnZLBeNeQTdP&8cgn)LLkZev5KEIQgiL*wAb2bHk!z=Zht zrDr2cBS*lNs~vlMm>!i)9vQ&|V576s0yZP46ISQibSos6^Ld0}UW4iz&>!gKNMXcW z$dPh>JA9VQG3G6{nz@s;swPly6NQnPQBf83^%MWFaLGV0s?e`Y`fTrbo}u~@PW0+k zTv>z@&O4+^96UJ2UuPOg3(Z+rc7SgzH|RiKU~EG~acQBTInJLC9mOSDnyt)^;#Ab?RMPW*j4lp+>)6=mM3y;&I%mUL z`o3Xg3dp&jlg`qMNR_nx@=-7Z=UqENdm2y&v(Ium>JU|V& z*oRL@;q zZ^Z0`_}`Bxu=$`&7cnf9;YGSlNr4)Om{CEk%yFQV?{o=th470VnvCD((=wP3SgprOB1s6d!2Q>zrx;0RuJyza?_R$cUOxZnh~X#&0kOv4-suZ z-Q4fY<;!obs_G2vQ}QfQg>V}GF??bSu07KNxRKT=&pf0=ZWvDwDJtUAo$wC?kDW#Y zSP(+ivK{^X7$(Zg92(m+cs?h`ml+u=e7-%T5%ECWs|Pd~$0=G`o0XI*% zCX!9%fro@u#iVhBww{d%Y?rF~r$F|AyYzOTkNiDRUd$G^aAV`lqS*7dNtOwXB(oc& zk=ft>0+pf>Wa?0yL=wg%zOv)i(C{b6v8x@%^I00^|DrmUw$Qfxzv4-)wTd^dGR_z2 zG4Z5S-To;I%os7j1~MPYrkeWthbhOPIGL=jHe=stzWsKCn!kbE1Pz!Xrg4MrYXSRFN`Fo zkNZ7{qkf-(^i<%=3KC(uKp=U2xll{MEcE^DGN>Dz!!^}|cF&%Xi=Kf9rSA3`6~;s= zJ$?Pqk9IJa!qRpmC$K3%Jwe7|^cZ~4VNZ2{;t0Q6UykZDgZ|`)!c^KmIZ(|%XH%DX z(;E?(%Ig00$R$9KTKfK%AY}j%pgXd3;vPFaV>>?Sw8b|AOaMiEh7<(?3*3wd#~{9i zrD^~mfaxYHDlMCO3;slJrS)5J8eG|pxriw|(Q}gj!oP8Qob-QlM*=(s?cekb@-^gk zk>5ZP#7Ge4@n(2jK^1rC4bb=67pqRilf+p&gS&DxcQpRX#>GVPTU~k<|^!&t8 zWnp!wPdR0LM`&!HT6y$3+Ig_eqpc4gCG}%pzuujTP^oe~JU6-U4{%&gN20)Cz>1zH z+x(hoL_2jYf+T7$MBE=_Ms&n6`mYb}FVB34ipjogJ z%XvH!nJCcy`FzSI&=1<+?1N-68~dP-7-}Pb^X!% zw5LNwph-vZy?S-kX7JlwyrJ`F(UX!a!-gUlp?;L(B*h)?xWe>~rcqxaFm{IxnI4;T z*aQ&V5}_tAA&ZMC-BtHoJ(D6i_u&}v**O<+d7TkDp;b21brc{ugCSbW{0#fw?GDP5 zzZ$8x11KN$9tu)!AdI16w)CQqIKZe6eDTbejL1*QWH~o!L~wJ;%5hZBM#@zTBOBfK zJtK^HZ4x)ZQzSVHa1Ta2gO7GegX|6~)nJ`LUCj+^GBIfY^Rx)ktNY+SiF-qcNhsj( zm~BPa-Z&$Zh|@DWoBg?CMb3~jL?i9&^T>&a;u1dT#^mAs{t~FtQ48{OHENDUJYGy_ zKCtn0?IcJvD8x>uZn{11r1I3R-W$Q@lV1I*Vjo1?AdRc-v;8$A@0{UcWt3+8ECy0n zSC=NIOFWAU+1e5&F0%F0v&$<`G#H}x!}n+giso~PCC&>I`;TUwewOH&&m;cP*ss868| zAhjKp@?G1FAY6}2fCnK=dceUKbrT{Z|7T$(QaGmvV7wQGbb~ zQkisxx*+CIaGx@0 zCCJyJA6GLQj5_bGwDX0BgxK5XDZ6?bf+2lCTieZzv_obFI(t)lyGn|hPlYOn%_)M+ zXtRX@k}pNn>l(XGEni}X%n`VHq(0ke4Z7LIzOjvo`+zLEY#CYa4Wt{YhHkl8Fs(|G z_~Dm8nVtm@Cn#(4)B{lpf8$u7>Sw6K20he-p3Ub|9$2I5^^Caj76z3@jSp5L&;QGV z4DZRCD&|)g08wwuX+i~sXC>ms#;ioIP~O~o3EQPUSk49dy?N7UlnhwNKSzav-^I=! zVCUM%IgXS;bxd?j#f>Z<235?P!z!XScX@ejrp^k1YKA4r28=kNT=uh+SzhPD%PnEt zVB`aE5)upvV5((R1v#5<+zz1r?WluGo4U6VybGp1~Xucq$)G?uW zquXTW$P5)_y}J`ZrpJ*T`FyF{c=|JW%(LS?S0p~t@!A9|;xQP(y4=z@UVfg#D(|DY!tQX2w4mSX#1xcuI^vc;Awm4XkUR8a0dk>=FZpp`#bl zcp|YZ@vrAO_T2Y3jBO1ua{C*+c&B~APiN#?W@=g}V=3FH;~idKUHu%}a%@mVM}!~j zCP0zLU^{v1Bg`&TOB)-=B^i>G#AOqop2=Rm7U+L~`OrsAN<-sgjQMA$RRLHT^AVq} zdo!GDdkHn^%{45u;E<5?a?t408PtxU-t8D`ST4MOwxCJjb;ABio@Lu>>_T6wxM2m4 zj-I|{XHP!*=PV!Ju-w*rE2HbePkp=&9(BU?Yi#Ygk8ErzomN>%wF`A;R*OY7vJCTZ;7p%u&&FY(Klm3X6+ID+@e!HN8v^=l%UZ zWoOfU#oa15uR?jwbw@kna)p%8c%pz4AG0RfHD1g6UR(3&?{al3^Qn>Kygq{l8J0!&QdQ7 zgOT{+@ZfS4iN<_T+~GBo6A<`q)*I9;Mhh8^0qvSn54W&l0kKlSh|rOO+or}(p@opL z>hobSab7i>Z=0m_1J;dl?B(^TOA#S!cj+OyZ)-!0txULPmQ4WErb*CH>1rXy34ky3&x=|+dfRk@nyB|wNDgY&x zU0*gk^)p|EMQgb0?5)BAH00b%>dP9b!wNZQsra3kzW)2ypv7ZQ<mbJGzH3{@Y{@u^ndvtZMRV)W?L3*=mNfl}c5p1g=-TAYt} zUlLA{F&6$Ig2gI6??lm8O#1LbL{?){C2+9D>sT6?=;fwMj@=bhDNNKB}ZXPvo(=w}4qtF5E|Ll&5+d zn`E$DI!vBH25CJpNDC+$&gXw=KG_IEI>`{e}HhH+0oiLu6xW zT5+2KtZ&-cP1ZKOP;0wj;-^5^9hyF3=6`f%)BMD(@i*3E-ltNQ*Ik-6;(g(Q%QciY zCwY7v4c@6>#yI5oc_%@&wQQw3F_!D|G?O&LgVdj&t!6gUlLs#;4 zv-mZDMGA_csIS1_fxp|!Yv19$c_-qHeJqy?DGe>@<;&d5WBXGai>e{7)fcXl)Vu$l zX3Up(2DTNowJ1gWPNG~Ax^~PwL4nae>l#RwL(Cu|^jhaPeI@fs0k{F4A*>n@;TgN^ zIgpLAl6~EKKy3BUQQseSa>FZTP;P|?<-P6ec{~Qr@?JmjAN@yPA)LI$_g%R zC;&Dg?(ms`%m!C1cNb`zgX0l6W;)j&eE+`yF#P6!1Hg)Ux*OL|ZjzI~GPZg0z9qt| zj4r9GnllNK!(|Q&w1wVzcF=Qk3%t&sw!!KprC4NC@JS!GMxD`I~DnlBa~$wb%?%V7#ll~dQm8(7y?Rkq1FqqVOO*xPaZMk_YI zh$((Ey7sQz%mZB|Rm9=<^i^x?f|2rbhTv*PCOR-q%73v7*R}X~x|~x87Fu{2v5D15 zWy=MarpPzxl}R(<<{Ad5vGA%{KOD!-=PBe9BrcD@G81NGPqS~Z_5;O9 zZp)uxy0ay$PYN&kggw+u?Cz5#d6HY!O5@>Sr};2~T9jorsPWx(a}-5N`iSvDy}^@h zQ+>h`47HF!a>W1a?`_Fq`qjGuacx2ra5@N}*;_tJy?i9W*h%%XTq^q8!zKJe=BDc0-^qB_M0c93RaI2(awQPco}cX3@a>4n5hj{T zJk8C`vTmdAObbQ*%SiJm*?dLM4h*{ARtKA3=vIKz*2k)FztGn4N6!*pLC}g!1O!F?9|)?R@HYfyT_CzM(y}OL z_UsuDi%ekM06^q%M-~yq0|(*PuQr(w6vW`BSyJkq^09kOzYAr9*#Y+X#yYq5jaUL; zMZOFaHe=5P!0KksK>f*%ipa~bbTFoxtx4egM!?gXV1ancSaR<|8wEQ$8I6=s7a8qU(o`$_I?q&BNo$hO^N?Kj;@!sA!F$q$4B} zYoKgI+JL!?leurK2qKDvp;LcQYU7fECal@Tr(1fDxrr1C7dmBx#)anlsA@nK=D4nI zwQn2y^XpRk+qYZ5{>sC}rFdD9VDaW1qAalS9yDGdlftmbgKoLQPx9ay7=m+6zb7&o z&+=f%Q0y&lccpr5pdvNC5;M=pMF1g?ax+c1aV~XJBMS(!(V3#Vg_7S)XQvJ3eKTtr z_v$f(!}j*FBHnfiBX$O4qJJz)2d%tXT$hg3}6L z7}54l;}7^i*VmqaXA(&pE);$JaPN^Ko53jl%%yPO#0Y3rk4mSo6kLn@$gYGV zIab5w5+T(GGQq_jm0gN=-E71{eAGfhs{MMD|EF0B>~ofzv~npaPhhn8#E9^61FVQq z5KyCLQ~9lUe&&A5gF9#8cpn??CRIv9(lIx1B|KDn)wMOizfEKZU{E@2{OebyEHOgS z^V(CGW_4GI=WUY1i1|un$O{5jS1WvV&Git`&C=S}nLn|kss`AQ-~9!Kqc<-qc)C~b zK9Eu>p%W~DsSNrS1N4wmo=XJ8#9)0;=vq9Yre^`OEUZJp2>za}JVvD^K5bwl<)Y|mh zz&m%e^&Y&5WmMB&^Ly(RLMAJD?KikJ#6QlrT|d{paV|9Y~nhVdEbJ49((>Arr| zk+sPHh6k(rEibDmY3U{x-owAkyszE!6GrK4#54{9>Xq%&7BqAHdG>SFATS5Zt7*X4lz4ah>h)u?`~3D(LwPTcjG41qQO*3{@@|+xk7zH`-IcCpEU7%vXAw zXRiS8u3Rv2>~R4g>^LnAhPgM!%1Q)Z~c5zPWExV)nL?b~PI-IuL(=Y2gHj*5EtWQ?bE_~S5y;$pKrj@MN|&k@jy zw}T+BQ5rA%l?}xtzN?zYhpsSXSAq>CjQA53L!pmcryUAYZW4s%cDe*r_5#z%pdoeK zxQ*2I83$-o65(pYk+Li)LLB-Ri|Ymy0k9u2=SUufRe)a;3maR~1M8)M3NA? z&lN=QWDz0IuwJL}0PD%}19NoX)sPx%Bn()n|`(`>Y1? zncLsupg7w7ZYHQ(g|z&1o*o?c$Q1HG6i0$3c|QKbb`%~D8wAUuY6<-y;TjH(NxL^yHxk!17(F2tLaLa+bxkAlE;Y1JWr&ePe^V4tK)QisEO`c2xaes7 zchdJzsHx=Dm6z(h&N&gg7^XkM#(;{_qF0x~gNXDqr0Gb#b(d@i48q?n&AhJf^*pi! z7m(%go^4h(JHckR|5M|%Uk&Gpx4@QugG4D+RJebG_2~-jzfD`T3ML_#x0WD z9(0b7z`?^~Z`bdwc}@V%R_`}wr!|*opkOWCj;^V}Jn-(g{0f&vD>MbohZ$aH%&X5%f#rpPpGPb<4UHW6bF`KKR{A(SW&fOLR*0 z!u-}No(uP&C%z%GQC6nI&DTFux*8_r=K*pu$RLks{l`sT{p8%JgvjF~o~vK%+s!h?-x2a`WVe zsI7Jj5-_elad!@We^EB{I%Ue8^*UemOP!hV0VD2!_GlE1HTv%KTq`e(WDy_BEd2}8a>V3AN`~WK(WBb0m+0N0h zX6IBW#&WfLE&*^ggy4cpy(VjWWZT;wK=`U3G;y5=Z-Sot3MkxT`xq=TJykLT_Zf6V z%@?280U#1hSnycBkC87cr?YjiX>W8L<5Gg$mLnY;g$_cylOe-nJH^x+p2zFmki>>S zeP*B{-y4w5>w9l74Bs@8N!QBPa0a)Pu{bZ|jTq^^mPX&DI1q5CTxe(zY^*9u?BEc7 ze~9kVA%3vb5wI!Cx7;#mt#Au*Ao&+T-_7k@mSdg_u9DtOAXSmfe>9{tSzk?X5Y0*;meznGT1k8s)ybu_=+^@L|%^#npRr` zfG>p-uv>|$0aSxchXe&$FoPbrtuMU`B9>b9hv`jB8$#P5F(6FC7v6)g(!(L^II;cr zsICDSd~gN!Zi49;DXhZl-~vA;1%%!O~H?ty>DcVV&A zA*NG6E2UaLw+R=zzp~~_b*`KQ{Dv>3`M%;mjH>f*wxpX3cS+CdBgxw$Fg4;|sai5q zF)*yQQlzqO{tmuij#&zz#4YjTsX5)K`7z*L3ywI-4^3SoBIh;DB7o zUkNP`70sq;#j?J{&;-+}f78F|k`)4<*pg%r!1Jc!rjhvspwHJ6%im={R% zvv^KbL8?dWg~ZHzPh3&iRSl@cO|@U$LWK&&F zP|#USi}(;O;HkEo;hWda&dDmgC-q7vAs0)rUrN-;xw7Py>Ih!PEhJ52(M4^u3ysmr zADO7)$@2AwjlXq@^b^3)H#)TUe^JO4wz6&O>#wWH!psQ%e$Jzo)*o7NFMUA5VGtP9 zLC)X4sE&Wp(WS+a5bTg7{8igm4S6v@^xR1%)3Djie^0juV+@4xt-qY1AdI7=&>n8a zW@Wj8&!qN-in3EdmE-TlREZ_Ddz-K<%fW!=)E3E5>;f6jG}yUT@f_p7Wpp`D7r$>{w?;@Uga_0goceT{{vk_V?z!UrKe!>qQWXcY~?w%WyRJz@G zSogFm%sc1XC45X{U>Tywm37NHy3oHx{8l*7u&0O0n54+mC1DGx4x9$}c`~QO{@$aEowHkSW$&Q63(}$ zwC6j0TF;)r2GXf_aq{QWJs>nIi6Ss6kDMEFM)lT`RhAS~ts6b^TqZ!k<~t2^{yR61 z9DwBZHE;u5_cAY^{dCUCDrD5Huz-a$SwR&irzCxoHXy=xN| zEBZCT-o`{T$f_UHK{p`m0axukLYRFT1B{CWC{gQhUpsz(5I>)w2eXyBNdF~nShGDZ z^#(oz;Gos8%6j}6Zt{@cn&tQ?7G3Zv7~@LuQs{MrWfuR}v>g@uUzjqe%EIITG-B-e_FBeBBfhIh>&L5GH<@e1B{6|g zsG(#oEO_|gLW=>S92`WKSZ38)VdAog@ z4oAwz>|Mk)UB-Ci6jA{-?J5dmh zDB$2!gFk;TUs*DD4WrNk_Ke_A)p1?uwg9<-p^jxT5wtUkfNdUgv&Njmz;ozF|K!lq zP3+5v|A!l`_sMCcy@wyV#Mhl@x82V0E9kIIKw%i*W=Ru3mgtk9Bv?u_W?L0E&ue^- zn)o0p+{A6cKligV#H!Q=krC#x`Aem8Td(gRWc!25f64ZrCI6P~X{Cl^HvZ`LpYdfP ziuwrjz&UF~q}2OvApa|-6WlY8Xtnz}&d>q6fAX*0`dM`LYk8RfVBI$scPV1W6 zlBNgdM^yz_nPSo+_4rZ=82jtt7M)#u2@Db|1>c{eDc$_kz z?MWer!W{ph&99uBPS#(kxXRb}#aG>HxlP}`?aX{JIWmTY-RbWXbqnQ%=-@`2Ycp7G ze&jN+sQ~!R;;WR*%%sx}GvZvQmp`WQ3p#(xNJZERgw@N2i zQYlthXZELFFDVGH(cH}GUp@+L`jIq}UCvk;`v}~95>vsGN5(AvP}PoJ1Nighb}hXoH47MAWqTc-Q@ zO~9J2HvIxE%~EMPR}e)Yg$Fmje#^Kl_wWbK09Wk>bT`dFG;O$VQDH!2Xr$H^t;KA!Dpd9=4uVgiQ^%_@7mZXgNs$FQg(cRk%jDTT2%lv~{^JyhW?!7L`61lPu z&p<=oy?m)a?ZMy2|6z#{E2MiPO|XU<)oRz{!Olm$ax)BRi_hI~;AaQ$&}>I- zpTep@o6&QH!CbK$eMq{6*%`2nSf z-~Ut0-}At{etl`2Ush)nRyTY+fn90QLOn7D;tpF)pu!A~#UtO}fneWUT~t&LkZyki z)K7NZXmw&=Zs*^V>d=KxJj7e8BW&Iq7vU6DqBm2isj2b)ESb=zvi({T$0(BGl@jh2 zIH5Y?*sjOjk3+EqUXrRuon204HP;KG(WqsSPY#?j6&W z5;Y%a4oshGKO-x$7EdJLT3F{nAemJ=UwP5t{szF_GIJpJ^D}&DVx6-~J7o zIMZ|J36~2C3qRxhg-MbA!K6*Z|Hhu(d9aN1$o`8?5+^+i5B`vEF`Ju?MT{(nTL?_bt~$1Xy$OsE{)P2&LmVl_i(GH zHd8@K2@MNDUtAh2w3$Dzd`_>bsd-GHf+n^|l#^rRjn0>zNu5nits9Ina;G16mp^SF zq>;)U`@Y<>B2_g>4UNmKkGpShUqK7FT;ayAs+O4ePNaX{Eam)1jYrKLBzsK5pQopu zgU>%<9dDHHi?9wYmUoRjPYnVF_0|Lak?0VGx33wVUmdlrprd0;D~C&N+Q-rpcUTfd zJa%GPWR~-p`ppWpTZwn}_Ch04Tf-wr<>xs57%X+uhwAiN7&`!-$K7l#8#} zed{p>oyB=@-;{~9HD(#UiptR8wt3l>$FWFRWu?_XN7Px%j}+k`;We7DlBz1I=RqOv zug}QKv%U+>-@ar1a*HCC&4Sw$<;u|morIbiQH3HND-BAbYX!B=>!NRY?$Wjs^1N?| zj~8^Oggs|kDk>3dgxW7914rRZQq!PglC+~qpqLcowDZ7awVzqk?|yK2Wr*yKA$@e$ zd5!ZH8BIoZKS5ZW)Az9i&PQMG+;4O7A1w-Z!X;c{nOvG#ugXyk*jrD|+xloPwuVm@ zmgG63A?x`?>*LVw+XTUVTfZy&kCd3)X;t2BzSwGa+w^WGU=$H%W@e?O^~P4D^AW#< znN2KPm5y%tMO9{gJ~9f5$7Z(b-Md)??4*%46OsXIoqN~i3fW%l8$2x3k__01 zDyvOVJ^uN_d}vfxSnVM)k)l*H1nl%j>d|&{1`9%75pq2AXSb;0OcUE;cz&Y4qE;KH zkbBHaBcd=kS7GV3@Kz(Jpq(AIO@7I=b}V|om`Z-(ZQzj!_Y73p*xTz`E^kCeBH7xi zB$Fbm(X&|FfZ`LophBIOr%?6O!%(M4(e5`G)cY$r_%U%YkdQPm=`GN?0;-(~?6&43 zm6ON8#7~CLv$Znta`K`0O0cxLbc5oEaE>T16H`cz%DL0AlO`$#DiTsYDo(}a1aYdi zRFXfxNSf-aeB=ORB%}dfbY1a6jI5p*kIiOJQ`axs(_;Ky9Kn1VZ4LR^>Q**kfldrq zQ|c?&i{qbICwD8YTkDUQ)j#O!=lsrIX-LZ9S7k&(Qe}ISM%SOOnvh^U?5rw4$G{Nv zYxuF%XsE7;(@IbMywF>oW;Lp@Fu9!ZS{+%2vh^4%rQ^M>AF_`GeOHJ#>8_3@a~|(* zo3)NrarE@{Sr2|Ym~NEOLpuroU2w2bBP5_Y_EM3#{mx(i77P4a7U#z8=b_(|h&rD8 zJ#lF>;d!dx7A}|m?VIB8agZw-_C{Yt-pnu6+{8p!$7!;v6QyL(usdk|m_Z0$EK9+u z+1L2rzh`tfIQC6iKa@}$@9lb??%wWDCnopAQ_Xd|_-Gau7r#DVWoMF8QG5ZxrSC(< zsYdRyWvT(0nW$j%bKG8}DQ99=KJGM31j}_PgLkHCh77j7^V9FEu-nKMHsIZu{(`%5 zcG}0!AM~R5w{3&)SDwq}6rk)YD~Gc%%bV&kpPW47*IYbye)!SOTSQ64uyJ3Jde`+= zUBh<$*Ypl}pO#5aa%{zp-$d(X@PJDtm+Y+VzB4*J?iBZ~1P{j(7x_S}^=zf%)gYV* zPZU#A_oY$ZCvSf2UHWO$+raI>Y(A!wEK(N|eptxoiKh>{8=vGH436$k{oLIDAyoOF z4<%0(5ATYB!C2XxPC0$_e(hF=(er)t8t3(U*-afdw~S$dm!IF2qvL(6kzOBe>%BF( zOr>POD)VB}^tnR4sT{9QgoSzpB)4we%i#=&o(R$@qm8b^$gVz$2@DJ=E*`QjMy-6h zelQ#2fx7Hh8_Qx&LP8Qox;#}?{Cs=S`N^}kYFuXa4JBd}C;3=1GMfaX(yFiBZ4mz$ z%~7eMS4u32FKA~}W0C-s6jJfl{$EfdpdP^KF?nA2;4S30VHJ(} z{suYpxMx4l!r1*|qE<@k5@WEpj7`i-c&AGJU)D>;W!DDhF#kEijCfYNE6>foxx`|1 zbOJ_OeNB!&8mKDl?res!d%EvBuku2!`{eM>h@iJA_SW9oq4zioGjnL{!Qn3O69cx) zunei-kc&S06P3in+N9)F!<|-zmiZba53IzoyRU?9L?Yf!f&-Tb>sM{3;_}a8i4FUTm6& z(%Z1G1-P@vOFg|Sxs&=eSPoZkviZMsxW2>95xeDjUOPrZ>aN-JfI6h+;IS zjvO919=3{Rm(G3s$m`)z=Rb-YjB$GEE+ws;<~Kk85sPeeb0cN+&mTgm&KQ>ct*a{$ z^sJxBd29HX3c8~XX0)AgQb1_Ig3=&$HG9=O)p^cnqFOPCO@$csD5#H)hQ46z!eDzze7$^OyhJw zJK?>jhwojjS)MWF-b9gzL=V}FvRxpJNh1yC; znMsF5k_=?1p4@61%k45xU7s(!9Uw2KqlhwXz5et2+oLOZD>WgZ^~r)$H=J^+-fiP}$O0eOVlh!@(_^kj2ZX5XMI^#|lqqnI?{rLMf<$6yM8 zV>nqy;c!S^(?Uc+5^r1fdKke}` z2E>Eh&!jv$+FuJ+J8g6F@T`oKKXW;-IEsn=`O}up8g>{_%1{Nu&0nc$9(K}&bvySB z#WGbhaewZ;585t;7*dBjeM%Y$nXO;HezZ0G1+YUbUCUbCanBBvl6x(y~5opwE zK7XWxHUzrdm${;=Bdjm^YY@t11q>dZyzUa}?Z`h00G#?a;3KRwgwPu#+d`_=Gc z?pWy5%p#Io!_>8KCSFyydaSWAd$2Qo5>lAitmhs~OmYmJ^LmfbN00T^6rxlfrKutz zrRj2tDMT{G@J+pVZDL_jV%kZ~^>TbXbMgE7V9{w#+35M)%HlMkq{JK-Qy z74uFV`OtAWh`SzUBx9vC{rTKgBgEBU`RPDiO<-YRY|U|bXZ(*_Q+95|4u@MeDN@;q zl@hixq}u~9ugEF_zB}Yuz4`|+?Xuwdp2Va457t4(#Zc4y^9x#}i8E=xI5%6utzXB9 zkXCOoTn(Y@`19{}-w3$%iz!Y02%t&v@EoM(?>JhBnkrp>^rvH{Q(g|O6;;dEuY7zil(Ddtozl|< zxVHYAG$$kWQq5x8Lm$dS6RuKY{ds0w0iz9Gl^Gdqg7kAlT=M|{n-_F*Q$3HqwdQno za$v*el{LT)QKF?)SJfAPq%JQkbXl936_u88ng2R6s5?r|aqhFp^!f9Y0D%AOGL6DM zJlv(6ID`hG#i-8MOCOz+A}m<`JQ{9Ws?W15-`T-qWzp`+?m$4S*oFgR(bI#uh}LD7 z;gT~VqJriLs#mQ4Y1KpGv9aqgVt{!M#e@6Bf%nRaI#)n2RLJ@Mm6d^3jv&1ctfRfX zLX2%HNx{Lbm?=x%U0Ggt6S)KhS8JXtJcb{~_vgp8;pUfdRh8HY3bHc}o0*!Xyg4X( zkUl&2Gm0~4N*ZF0zWJMB8MzM1%G6$hw)XbK$?iXu?H^7`d!0X=t-m2jbm4Q0jr%Y@ zI2i0EP;Cog!Ql!OQ2g!cyEI@)8S{#(4qqSV&d8eDlhM$)Hq2J5}I0`|930 z^@7aqd`D~sRC#>cOdWM~D_h$y-{el#u*Fs|{v3}=W(^ZMe*TSx_$y4EH#3X=d@sM} zapg0ZR!7RW7dmBPD5zu&{+xiBb|&}^!~guJNCDy+|0z+#+UdjfXsp=eLX%7@yb|V{ zN;in3;e8suC~YX?($*@n7MxXm3((Zs#z&r!SZSo;YvAEiaR{4&Iw>?QJdBV7@C@?^)O;3R%r(!qm-vq|DFuzFd#6J9h2~B`PK+ zA=w;L+pSVpp{8z;kygGT$@WUn>DjZC!m`(PmJRyvj-{%P^PS3i;**OcR!Qf4to|@jvoB#U z2z6WH%B(6?K{07prrZ!;i2C3>(_JbdvWjFc};ZZ zVb%tWdL~9`hWDepNPc`*de<>;J~)UEw{7FvPPaFW>6994LBfZrKRnO!PPPB>zRHk* z3%;Qt$KJQ_N-z%Be^ifVw(`I3G*Y$%#j^cKikSD$i-uvKH#4%{qpsca^12O4{%2A~ z=uJaKWNitT3;Fp4Mq!z5LiqD_-Gyl*i7Tm|)j`Z~C6tI0b77hhN$m0QK2R)h4X+C7 z`g-ohgzy;vUq|p(qbGd-V56|)GLX;z@ZpAI$)hhX1U&k(`FO77Bf8`yA7&V{&^HR0GP2%iOGf ztxIH~@5eb#&iqlaohN5^|`PS<}Rg@bQrV4@m{aI@VyF;y!YNaOg=oc9iGSL+AEr3QH zp8C*9dU~|F*-;oU50`U(Jb+ug&7Mr2q@+y*w?hg(CLkQD2#4-YTW}1&ol!DWXT#5q zo3moV!gbNnj`a`T>SlYkCp`$zELe10TcUrOWNc;@opf?=o1!z4ilgND?;rw?RDoDC zpiIWzsP0cQ)wwyr;f?!pBod? z?7P<$7okGnEEvc!NbkzU+5IyPhxn-XYfxjYy_W0;s9lTm?PR`t$8hxl<`OKo(heR= z@8CWI{@3u6!%iTDNS5kbr|T)R>+3`mqAKH1I)&XuO3KU4?y~$%ND`n#F%bMI)CflM z*GS}JF#3XfyQ8nq>Fgxo{fnvk2)MXSx6*;OI8oUBmiw?wwy~|Pgj)r?V>dUqCzURR zR72@~6XQv6Sidw$m&H!l+uN2kkIwTN)HqMa=IO#HYnvqONV88Y==>%<-6u*-eI-P? zDRq3)nO>1_Gc*Qzqd1vg&SkWtmX@v?@cJD$#v87aj|UEf24i5NqfgUFrl?+cv>I}9 z0%MUu_cb+*jM6wJar3jYcbWoF_J5_~r-}zaA;5|6$IEv;d*Ljcm=#)PAC~?8-K>$R zX_14W-;w(2G!1o22toRGVwp0Bfxr`BY~xyJRJi}tmo{8x0k?Mr)?>4?6}`O^R8*HH zCsV2uJI=Mr$_AY`#vkgiEBr+PmT(+;(Omey!MgCK_SX^uP7c;XMNTlq7HE?=x-Wb2 z5-SlIFd0;C(WJn8?aMi@rW4qbyjT)$%>TIlr;V#JN^1V6Kg%&{IPK;EhBVYkC^*R- z6nfzj=OwlA+`oEGkN315NQ$D>Xb$KahUXosaWr0>e|{loh*6Ctyt{C#k@;K;DiJa9 zn>U2&on2jpppGyXv~!tueu`!R0hHeO#<_ zfuE%MkuSsmvfm|U52DJ>PDmjOchZ}*@_o|$Hb0JjJu|(dg8Yn;7EUe?o1CQTkQV3V`-`<>%2;_N{I;cig z9oZQl(Jk}zsdBBps}C;mUw6c#uO#6s$|`wDgYN=P{n2TLKY4lzFO4VMk+A%B>5>So)w~4vHRjBsrQb- z1}N8WmtBU6G@+WU=?kz3y{M?K_k_K$^H9s9dSuU0@5QSGi*8}95(#=CF$ zmPgn#igTnljxA(`NJVFayqC3}IB4yAUtjF?2+bOMn$*l3AelZ;2qfTCezF;h&dudy zemoWfjXFD#8!deUQ&GuaW#f!>)$~USw(Rk+{rz5K&roiy3uT}mIPW%vuMwq+N^jT4 zKSjrYS?4j}EueE*ACsV?-}ZGr?F-@9!{defbHqMiT9z{I4*SR`$B$1V+95bL@} zP@QqW8Hh8+0rR{sU!t`}&!jm4Ia7c<6_3XA@HiEG9=uA7O$Pj$lw_#+0-~WD0_A8dT1E;8 zHLPSzoAt32K;V~FTkCCkG<$@lDVVqw&uf=tgoTA~F`dQL4H;70d2xVbAJImE{ihId z1qgTw1;o6|&W<_#_(Z27Bcm|QAWG?_Sbk$i!wHw)#Fp#9@Au%pHCrSWfPFb~%AO~L z;iheo1P?u3Bi|F>6*nkxQs%YAzhAzv;QoNB;X7;&h1*;v{Ht3fmIn$tgYn9THxur- zHyiKt$ZYra#!>KOY{@)XoE)$<6S4j4t;oAm)EPGaAjhPykW7h z<$wXbWF38YouUj!fL;&k*t4y9ECKpuIeA^^DL=@og9@S;U|nDti2@v_?CkHd7P*nk z&-~D@dsxnXopx)H*!)Kt{58QsB{f!Rl8_cll^>Vdu-i%z@mf49lNGT47t zX@J2n637=8Y%)#Y*%x67InXAMhKIto_P%UXy(Uel?8U_@cSn#STmCc6aRFC_A&v|? zio~AIEHA^w){0tii?hs!4_bw~{LyLOKp*7q2DNg1-9}bY_O7gYOE{S{;%I4r-e*M%kotgu+NGk!P{r;B2PrvuO$V?!U1jy%_9yyMGq}+SV`M0RIAO5c| z6Vagmzulj(a@DE>2OQ$}XomRuz66c|{YX-Xt9X0M@Sn1z8+__+Qx>m}?c>f4iSv01 z9|Od%Y_0extZh?oH@jA|zrF4caE_^vbN!k<4vxP+Oq6=a&jqZpeHOWyPSsUFs_C%T z*!yhO6$YQLfL7X-r|K1fIqYYb#*#vKZ3b+O1KZSdY%G@qt8WL6WVN^U?x_lW{@bm0 zcGa=P7pDX&?l=At@9lN!(aX#AcN=9h@4%bK3u3ri73!1VH@2N?$hR$v!0FkAo+UobEnF&C8Zfq2*1tN&n&FaJ|fkX@dxelF{r5}E*4i + + 10 + + UMLClass + + 280 + 40 + 80 + 100 + + *Font* +-- +name +style +size +pointSize +-- + + + + UMLClass + + 220 + 180 + 200 + 160 + + /*OmrFont*/ +bg=#ffffaa +-- +/fontCache/ +-- +computeSize(value,dim) +getLineMetrics(str) +layout(str[,fat]) +-- +/createFont(name,file,size)/ +/getFont(name,file,style,size)/ +/paint(g,layout,loc,align)/ + + + + Relation + + 310 + 130 + 30 + 70 + + lt=<<- + 10.0;10.0;10.0;50.0 + + + UMLClass + + 340 + 410 + 220 + 190 + + *TextFont* +bg=#ffffaa +-- +/defaultTextFamily/ +-- +TextFont(font) +TextFont(info) +TextInfo(size) +TextFont(name,file,style,size) +-- +deriveFont(size) +-- +/create(textFont,info)/ +/getBaseFontBySize(family,size)/ +/getTextFont(family,size)/ + + + + + Relation + + 370 + 330 + 30 + 100 + + lt=<<- + 10.0;10.0;10.0;80.0 + + + UMLClass + + 80 + 410 + 220 + 450 + + *MusicFont* +bg=#ffffaa +-- +/defaultMusicFamily/ +-- +musicFamily +-- +MusicFont(font) +MusicFont(family,size) +MusicFont(info) +-- +buildImage(shape,dec) +buildMusicFontScale(width) +computePointSize(width) ??? +deriveFont(size) +deriveFont(style) +getStaffInterline() +getSymbol(shape) +layoutNumberByCode(num) +layoutShape(shape,dim) +layoutShapeByCode(shape[,fat]) +layoutSymbol(sym,dim) +-- +/getBaseFont(family,il)/ +/getBaseFontBySize(family,size)/ +/getDefaultMusicFamily()/ +/getHeadFont(family,scale,itl)/ +/getHeadPointSize(scale,itl)/ +/getMusicFont(family, +size)/ +/getPointSize(itl)/ +/getString(codes)/ + + + + + Relation + + 250 + 330 + 30 + 100 + + lt=<<- + 10.0;10.0;10.0;80.0 + + + Relation + + 10 + 410 + 90 + 80 + + lt=<- +m2=backup + 70.0;10.0;30.0;10.0;30.0;50.0;70.0;50.0 + + + UMLClass + + 630 + 40 + 130 + 260 + + *FontInfo* +bg=#ffffaa +-- +/DEFAULT/ +-- +isBold +isItalic +isUnderlined +isMonospace +isSerif +isSmallCaps +pointSize +fontName +-- +getMnemo() +-- +/createDefault(size)/ +/decode(str)/ +-- +/JaxbAdapter/ + + + diff --git a/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOCR.java b/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOCR.java index 426268681..a5c72ba72 100644 --- a/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOCR.java +++ b/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOCR.java @@ -75,9 +75,9 @@ public class TesseractOCR private static final String TESSDATA_PREFIX = "TESSDATA_PREFIX"; /** Warning message when OCR folder cannot be found. */ - private static final String ocrNotFoundMsg = "Tesseract data could not be found. " - + "Try setting " + TESSDATA_PREFIX + " environment variable to point to " + TESSDATA - + " folder."; + private static final String ocrNotFoundMsg = + "Tesseract data could not be found. " + "Try setting " + TESSDATA_PREFIX + + " environment variable to point to " + TESSDATA + " folder."; //~ Instance fields ---------------------------------------------------------------------------- @@ -369,27 +369,23 @@ public static TesseractOCR getInstance () private static class Constants extends ConstantSet { - private final Constant.Boolean useOCR = new Constant.Boolean( - true, - "Should we use the OCR feature?"); + private final Constant.Boolean useOCR = + new Constant.Boolean(true, "Should we use the OCR feature?"); private final Constant.Boolean forceSingleBlock = new Constant.Boolean( false, "Should we force OCR to use PSM_SINGLE_BLOCK rather than PSM_AUTO?"); - private final Constant.Boolean saveImages = new Constant.Boolean( - false, - "Should we save on disk the images sent to Tesseract?"); + private final Constant.Boolean saveImages = + new Constant.Boolean(false, "Should we save on disk the images sent to Tesseract?"); // // private final Scale.Fraction maxDashWidth = new Scale.Fraction( // 1.0, // "Maximum width for a dash character"); // - private final Constant.Double minConfidence = new Constant.Double( - "0..1", - 0.65, - "Minimum confidence for OCR validity"); + private final Constant.Double minConfidence = + new Constant.Double("0..1", 0.65, "Minimum confidence for OCR validity"); } //---------------// diff --git a/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOrder.java b/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOrder.java index 7fd390b06..f79b5d3f0 100644 --- a/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOrder.java +++ b/app/src/main/java/org/audiveris/omr/text/tesseract/TesseractOrder.java @@ -354,16 +354,6 @@ private List getLines () line); logger.debug(" {}", word); line.appendWord(word); - - // // Heuristic... (just to test) - // boolean isDict = it.WordIsFromDictionary(); - // boolean isNumeric = it.WordIsNumeric(); - // boolean isLatin = encoder.canEncode(wordContent); - // int conf = (int) Math.rint(it.Confidence(WORD)); - // int len = wordContent.length(); - // boolean isValid = isLatin - // && (conf >= 80 - // || (conf >= 50 && ((isDict && len > 1) || isNumeric))); } // Char/symbol to be processed diff --git a/app/src/main/java/org/audiveris/omr/ui/Board.java b/app/src/main/java/org/audiveris/omr/ui/Board.java index 494226c0a..4bab019eb 100644 --- a/app/src/main/java/org/audiveris/omr/ui/Board.java +++ b/app/src/main/java/org/audiveris/omr/ui/Board.java @@ -24,6 +24,8 @@ import org.audiveris.omr.ui.field.LCheckBox; import org.audiveris.omr.ui.selection.SelectionService; import org.audiveris.omr.ui.selection.UserEvent; +import org.audiveris.omr.ui.symbol.MusicFamily; +import org.audiveris.omr.ui.symbol.TextFamily; import org.audiveris.omr.ui.util.Panel; import org.audiveris.omr.ui.util.UIUtil; import org.audiveris.omr.util.ClassUtil; @@ -57,28 +59,23 @@ *

    * Each board has a standard header composed of a title, a horizontal separator and optionally a * dump button. The board body is handled by the subclass. - *

    *

    * Any board can be (de)selected in its containing {@link BoardsPane}. This can be done * programmatically using {@link #setSelected(boolean)} and manually (via a right-click in the * BoardsPane). - *

    *

    - * Only selected boards can be seen in the BoardsPane display. A selected board can be made + * Only selected boards are displayed in the BoardsPane display. A selected board can be made * currently (in)visible programmatically using {@link #setVisible(boolean)}. * Typically, {@link org.audiveris.omr.check.CheckBoard}'s are visible only when they carry * glyph information. - *

    *

    * By default, any board can have a related SelectionService, used for subscribe (input) and publish * (output). When {@link #connect} is called, the board instance is subscribed to its * SelectionService for a specific collection of event classes. Similarly, {@link #disconnect} * unsubscribes the Board instance from the same event classes. - *

    *

    * This Board class is still an abstract class, since the onEvent() method must be * provided by every subclass. - *

    * * @author Hervé Bitteur */ @@ -165,6 +162,12 @@ public abstract class Board /** Board is selected? (it appears in boards pane). */ private boolean selected; + /** Cached music font family, if any. To trigger board symbols update only when needed. */ + protected MusicFamily cachedMusicFamily; + + /** Cached text font family, if any. To trigger board symbols update only when needed. */ + protected TextFamily cachedTextFamily; + //~ Constructors ------------------------------------------------------------------------------- /** diff --git a/app/src/main/java/org/audiveris/omr/ui/Colors.java b/app/src/main/java/org/audiveris/omr/ui/Colors.java index c7076f065..6fe2a2f42 100644 --- a/app/src/main/java/org/audiveris/omr/ui/Colors.java +++ b/app/src/main/java/org/audiveris/omr/ui/Colors.java @@ -132,7 +132,7 @@ public abstract class Colors public static final Color RUBBER_RULE = new Color(255, 0, 0, 100); // Colors for physical score view - /** frame: barlines, brackets, clefs, markers, time signatures. */ + /** frame: bar-lines, brackets, clefs, markers, time signatures. */ public static final Color SCORE_FRAME = Color.BLUE; /** frame: heads, beams, flags, rests, augmentation dots. */ @@ -189,6 +189,9 @@ public abstract class Colors /** Warping points. */ public static final Color WARP_POINT = Color.RED; + /** Background of a MusicPane. */ + public static final Color MUSIC_PANE_BACKGROUND = new Color(255, 255, 240); + //~ Constructors ------------------------------------------------------------------------------- /** diff --git a/app/src/main/java/org/audiveris/omr/ui/EntityBoard.java b/app/src/main/java/org/audiveris/omr/ui/EntityBoard.java index 7df5ecb68..feb73c6e7 100644 --- a/app/src/main/java/org/audiveris/omr/ui/EntityBoard.java +++ b/app/src/main/java/org/audiveris/omr/ui/EntityBoard.java @@ -69,8 +69,8 @@ public class EntityBoard private static final Logger logger = LoggerFactory.getLogger(EntityBoard.class); - private static final ResourceMap resources = Application.getInstance().getContext() - .getResourceMap(EntityBoard.class); + private static final ResourceMap resources = + Application.getInstance().getContext().getResourceMap(EntityBoard.class); /** Events this board is interested in. */ private static final Class[] eventsRead = new Class[] @@ -241,7 +241,7 @@ protected void dumpActionPerformed (ActionEvent e) // getFormLayout // //---------------// /** - * Overridable method to provide layout of the body part of the board. + * Override-able method to provide layout of the body part of the board. * (not including the top board line: title + dump button) * * @return the proper FormLayout diff --git a/app/src/main/java/org/audiveris/omr/ui/field/LTextPane.java b/app/src/main/java/org/audiveris/omr/ui/field/LTextPane.java new file mode 100644 index 000000000..6f50b3c54 --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/ui/field/LTextPane.java @@ -0,0 +1,97 @@ +//------------------------------------------------------------------------------------------------// +// // +// L T e x t P a n e // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.ui.field; + +import javax.swing.JTextPane; + +/** + * Class LTextPane + * + * @author Hervé Bitteur + */ +public class LTextPane + extends LField +{ + //~ Constructors ------------------------------------------------------------------------------- + + /** + * Creates a new LTextPane object. + * + * @param editable Specifies whether this field will be editable + * @param label the string to be used as label text + * @param tip the related tool tip text + */ + public LTextPane (boolean editable, + String label, + String tip) + { + super(label, tip, new JTextPane()); + + JTextPane pane = getField(); + pane.setEditable(editable); + + if (!editable) { + pane.setFocusable(false); + pane.setBorder(null); + } + } + + /** + * Creates a new non-editable LTextPane object. + * + * @param label the string to be used as label text + * @param tip the related tool tip text + */ + public LTextPane (String label, + String tip) + { + this(false, label, tip); + } + + //~ Methods ------------------------------------------------------------------------------------ + + //---------// + // getText // + //---------// + /** + * Report the current content of the field + * + * @return the field content + */ + public String getText () + { + return getField().getText(); + } + + //---------// + // setText // + //---------// + /** + * Modify the content of the field + * + * @param text new text to set + */ + public void setText (String text) + { + getField().setText(text); + } +} diff --git a/app/src/main/java/org/audiveris/omr/ui/field/MusicPane.java b/app/src/main/java/org/audiveris/omr/ui/field/MusicPane.java new file mode 100644 index 000000000..221a5718a --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/ui/field/MusicPane.java @@ -0,0 +1,224 @@ +//------------------------------------------------------------------------------------------------// +// // +// M u s i c P a n e // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.ui.field; + +import org.audiveris.omr.constant.Constant; +import org.audiveris.omr.constant.ConstantSet; +import org.audiveris.omr.ui.Colors; +import org.audiveris.omr.ui.symbol.MusicFamily; +import org.audiveris.omr.ui.symbol.TextFamily; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.Color; +import java.awt.Font; + +import javax.swing.BorderFactory; +import javax.swing.JTextPane; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.DefaultStyledDocument; +import javax.swing.text.SimpleAttributeSet; +import javax.swing.text.StyleConstants; +import javax.swing.text.StyledDocument; + +/** + * Class MusicPane is a JTextPane which can mix text and music code points. + * + * @author Hervé Bitteur + */ +public class MusicPane + extends JTextPane +{ + //~ Static fields/initializers ----------------------------------------------------------------- + + private static final Constants constants = new Constants(); + + private static final Logger logger = LoggerFactory.getLogger(MusicPane.class); + + /** Minimum code point value to detect a music character. */ + private static final int HIGH_CODE = 0xE000; + + //~ Instance fields ---------------------------------------------------------------------------- + + /** Attributes referring the music font family. */ + private final SimpleAttributeSet musicSet = new SimpleAttributeSet(); + + /** Default text attributes. */ + private final SimpleAttributeSet textSet = new SimpleAttributeSet(); + + /** The specific pane document. */ + private final StyledDocument doc = new MyStyledDocument(); + + //~ Constructors ------------------------------------------------------------------------------- + + /** + * Creates a new MusicPane object. + * + * @param editable Specifies whether this pane will be editable + * @param tip the related tool tip text + * @param musicFamily the music family to be used initially + * @param textFamily the text family to be used + * @see #setFamilies(MusicFamily) + */ + + public MusicPane (boolean editable, + String tip, + MusicFamily musicFamily, + TextFamily textFamily) + { + setEditable(editable); + + if (tip != null) { + setToolTipText(tip); + } + + if (!editable) { + setFocusable(false); + setBorder(null); + } else { + setBorder(BorderFactory.createEtchedBorder()); + } + + // Specific attributes for music portions + StyleConstants.setFontFamily(musicSet, musicFamily.name()); + StyleConstants.setForeground(musicSet, Color.RED); + StyleConstants.setFontSize(musicSet, constants.fontSize.getValue()); + + // Use a large enough font size to make content more readable + setFont(new Font(textFamily.name(), Font.PLAIN, constants.fontSize.getValue())); + + // Use a specific background color, to avoid confusion with plain text fields + setBackground(Colors.MUSIC_PANE_BACKGROUND); + + setDocument(doc); + } + + //~ Methods ------------------------------------------------------------------------------------ + + //-----------------------// + // adjustMusicCharacters // + //-----------------------// + /** + * Process every character to set music attributes where needed. + */ + public void adjustMusicCharacters () + { + final String str = getText(); + final int length = str.length(); + + // Set default attributes to all characters + doc.setCharacterAttributes(0, length, textSet, true); + + for (int i = 0; i < length; i++) { + final int code = str.codePointAt(i); + + if (code >= HIGH_CODE) { + // Set music attributes to the current character + doc.setCharacterAttributes(i, 1, musicSet, true); + } + } + } + + //-------------// + // insertMusic // + //-------------// + /** + * Use the provided music string to replace the selection if any, + * otherwise insert it at the caret location. + * + * @param str the music string to insert + */ + public void insertMusic (String str) + { + try { + if (str == null || str.isEmpty()) { + return; + } + + // Selection? + final int start = getSelectionStart(); + final int end = getSelectionEnd(); + if (end > start) { + doc.remove(start, end - start); + } + + // Insert raw text + doc.insertString(start, str, null); + } catch (BadLocationException ex) { + logger.warn("MusicPane.insertMusic error {}", ex.getMessage(), ex); + } + } + + //-------------// + // setFamilies // + //-------------// + /** + * Switch to the provided music and text families + * + * @param musicFamily the new music family + * @param textFamily the new text family + */ + public void setFamilies (MusicFamily musicFamily, + TextFamily textFamily) + { + StyleConstants.setFontFamily(musicSet, musicFamily.name()); + StyleConstants.setFontFamily(textSet, textFamily.name()); + + adjustMusicCharacters(); + } + + //~ Inner Classes ------------------------------------------------------------------------------ + + //-----------// + // Constants // + //-----------// + private static class Constants + extends ConstantSet + { + private final Constant.Integer fontSize = new Constant.Integer( + "PointSize", + 20, + "Font size for text and music"); + } + + //------------------// + // MyStyledDocument // + //------------------// + /** + * A StyledDocument which adjusts its content (music vs text) after each insertion. + */ + public class MyStyledDocument + extends DefaultStyledDocument + { + @Override + public void insertString (int offs, + String str, + AttributeSet a) + throws BadLocationException + { + super.insertString(offs, str, a); + adjustMusicCharacters(); + } + } +} diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/BravuraSymbols.java b/app/src/main/java/org/audiveris/omr/ui/symbol/BravuraSymbols.java index b23f4ab8d..3cc814fe2 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/BravuraSymbols.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/BravuraSymbols.java @@ -72,6 +72,10 @@ public int[] getCode (Shape shape) case DA_CAPO -> ints(0xE046); case DIMINUENDO -> ints(0xE53F); case DOT_set -> ints(0xE044); + case DOTTED_HALF_NOTE_UP, METRO_DOTTED_HALF -> ints(0xE1D3, 0x0020, 0xE1E7); + case DOTTED_QUARTER_NOTE_UP, METRO_DOTTED_QUARTER -> ints(0xE1D5, 0x0020, 0xE1E7); + case DOTTED_EIGHTH_NOTE_UP, METRO_DOTTED_EIGHTH -> ints(0xE1D7, 0xE1E7); + case DOTTED_SIXTEENTH_NOTE_UP, METRO_DOTTED_SIXTEENTH -> ints(0xE1D9, 0xE1E7); case DOUBLE_BARLINE -> ints(0xE031); case DOUBLE_FLAT -> ints(0xE264); case DOUBLE_SHARP -> ints(0xE263); @@ -99,7 +103,9 @@ public int[] getCode (Shape shape) case DYNAMICS_SFZ -> ints(0xE539); // case DYNAMICS_SFPP -> ints(0xE538); + case EIGHTH_NOTE_UP, METRO_EIGHTH -> ints(0xE1D7); case EIGHTH_REST -> ints(0xE4E6); + case EIGHTH_set, GRACE_NOTE -> ints(0xE562); case FERMATA -> ints(0xE4C0); case FERMATA_BELOW -> ints(0xE4C1); @@ -120,7 +126,6 @@ public int[] getCode (Shape shape) case F_CLEF_8VA -> ints(0xE065); case F_CLEF_8VB -> ints(0xE064); - case GRACE_NOTE -> ints(0xE562); case GRACE_NOTE_DOWN -> ints(0xE563); case GRACE_NOTE_SLASH -> ints(0xE560); case GRACE_NOTE_SLASH_DOWN -> ints(0xE561); @@ -130,9 +135,8 @@ public int[] getCode (Shape shape) case G_CLEF_8VB -> ints(0xE052); case HALF_NOTE_DOWN -> ints(0xE1D4); - case HALF_NOTE_UP -> ints(0xE1D3); - case HALF_REST -> ints(0xE4E4); - case HW_REST_set -> ints(0xE4E4); + case HALF_NOTE_UP, METRO_HALF -> ints(0xE1D3); + case HALF_REST, HW_REST_set -> ints(0xE4E4); case KEY_CANCEL -> ints(0xE261); @@ -163,8 +167,8 @@ public int[] getCode (Shape shape) case NOTEHEAD_CIRCLE_X_VOID -> ints(0xE0B2); case ONE_16TH_REST -> ints(0xE4E7); - case ONE_64TH_REST -> ints(0xE4E9); case ONE_32ND_REST -> ints(0xE4E8); + case ONE_64TH_REST -> ints(0xE4E9); case ONE_128TH_REST -> ints(0xE4EA); case OTTAVA -> ints(0xE510); @@ -177,7 +181,7 @@ public int[] getCode (Shape shape) case PLAYING_CLOSED -> ints(0xE7F5); case QUARTER_NOTE_DOWN -> ints(0xE1D6); - case QUARTER_NOTE_UP -> ints(0xE1D5); + case QUARTER_NOTE_UP, METRO_QUARTER -> ints(0xE1D5); case QUARTER_REST -> ints(0xE4E5); case QUINDICESIMA -> ints(0xE514); @@ -191,6 +195,7 @@ public int[] getCode (Shape shape) case SEGNO -> ints(0xE047); case SHARP -> ints(0xE262); + case SIXTEENTH_NOTE_UP, METRO_SIXTEENTH -> ints(0xE1D9); case STACCATISSIMO -> ints(0xE4A6); case STACCATO -> ints(0xE4A2); case STAFF_LINES -> ints(0xE01A); @@ -225,7 +230,7 @@ public int[] getCode (Shape shape) case VENTIDUESIMA -> ints(0xE517); - case WHOLE_NOTE -> ints(0xE0A2); + case WHOLE_NOTE, METRO_WHOLE -> ints(0xE0A2); case WHOLE_NOTE_CROSS -> ints(0xE0A7); case WHOLE_NOTE_DIAMOND -> ints(0xE0D8); case WHOLE_NOTE_TRIANGLE_DOWN -> ints(0xE0C4); diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/FinaleJazzSymbols.java b/app/src/main/java/org/audiveris/omr/ui/symbol/FinaleJazzSymbols.java index 68f537d0e..1817b78d5 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/FinaleJazzSymbols.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/FinaleJazzSymbols.java @@ -26,6 +26,7 @@ import org.audiveris.omr.math.PointUtil; import static org.audiveris.omr.ui.symbol.Alignment.BOTTOM_LEFT; import static org.audiveris.omr.ui.symbol.Alignment.TOP_LEFT; +import static org.audiveris.omr.ui.symbol.Symbols.ints; import java.awt.Graphics2D; import java.awt.font.TextLayout; @@ -80,6 +81,10 @@ public int[] getCode (Shape shape) ///case DA_CAPO -> ints(0xE046); case DIMINUENDO -> ints(0xE53F); case DOT_set -> ints(0xE044); + case DOTTED_HALF_NOTE_UP, METRO_DOTTED_HALF -> ints(0xE1D3, 0x0020, 0xE1E7); + case DOTTED_QUARTER_NOTE_UP, METRO_DOTTED_QUARTER -> ints(0xE1D5, 0x0020, 0xE1E7); + case DOTTED_EIGHTH_NOTE_UP, METRO_DOTTED_EIGHTH -> ints(0xE1D7, 0xE1E7); + case DOTTED_SIXTEENTH_NOTE_UP, METRO_DOTTED_SIXTEENTH -> ints(0xE1D9, 0xE1E7); //case DOUBLE_BARLINE -> ints(0xE031); case DOUBLE_FLAT -> ints(0xE264); case DOUBLE_SHARP -> ints(0xE263); @@ -107,7 +112,9 @@ public int[] getCode (Shape shape) case DYNAMICS_SFZ -> ints(0xE539); // case DYNAMICS_SFPP -> ints(0xE538); + case EIGHTH_NOTE_UP, METRO_EIGHTH -> ints(0xE1D7); case EIGHTH_REST -> ints(0xE4E6); + case EIGHTH_set, GRACE_NOTE -> ints(0xE562); case FERMATA -> ints(0xE4C0); case FERMATA_BELOW -> ints(0xE4C1); @@ -128,7 +135,6 @@ public int[] getCode (Shape shape) case F_CLEF_8VA -> ints(0xE065); case F_CLEF_8VB -> ints(0xE064); - case GRACE_NOTE -> ints(0xE562); case GRACE_NOTE_DOWN -> ints(0xE563); case GRACE_NOTE_SLASH -> ints(0xE560); case GRACE_NOTE_SLASH_DOWN -> ints(0xE561); @@ -138,7 +144,7 @@ public int[] getCode (Shape shape) case G_CLEF_8VB -> ints(0xE052); case HALF_NOTE_DOWN -> ints(0xE1D4); - case HALF_NOTE_UP -> ints(0xE1D3); + case HALF_NOTE_UP, METRO_HALF -> ints(0xE1D3); case HALF_REST -> ints(0xE4E4); case HW_REST_set -> ints(0xE4E4); @@ -185,7 +191,7 @@ public int[] getCode (Shape shape) case PLAYING_CLOSED -> ints(0xE5E5); // 0xE872 ? case QUARTER_NOTE_DOWN -> ints(0xE1D6); - case QUARTER_NOTE_UP -> ints(0xE1D5); + case QUARTER_NOTE_UP, METRO_QUARTER -> ints(0xE1D5); case QUARTER_REST -> ints(0xE4E5); case QUINDICESIMA -> ints(0xE514); @@ -199,6 +205,7 @@ public int[] getCode (Shape shape) case SEGNO -> ints(0xE047); case SHARP -> ints(0xE262); + case SIXTEENTH_NOTE_UP, METRO_SIXTEENTH -> ints(0xE1D9); case STACCATISSIMO -> ints(0xE4A6); case STACCATO -> ints(0xE4A2); case STAFF_LINES -> ints(0xE014); // 0xE01A in Bravura @@ -232,7 +239,8 @@ public int[] getCode (Shape shape) ///case TURN_UP -> ints(0xE56A); ///case VENTIDUESIMA -> ints(0xE517); - case WHOLE_NOTE -> ints(0xE0A2); + + case WHOLE_NOTE, METRO_WHOLE -> ints(0xE0A2); ///case WHOLE_NOTE_CROSS -> ints(0xE0A7); case WHOLE_NOTE_DIAMOND -> ints(0xE0DA); case WHOLE_NOTE_TRIANGLE_DOWN -> ints(0xE0C6); @@ -262,8 +270,8 @@ protected void populateSymbols () symbolMap.put(FLAG_3_DOWN, new FlagsDownSymbol(FLAG_3_DOWN, family(), 3)); symbolMap.put(FLAG_4_DOWN, new FlagsDownSymbol(FLAG_4_DOWN, family(), 4)); symbolMap.put(FLAG_5_DOWN, new FlagsDownSymbol(FLAG_5_DOWN, family(), 5)); - } + //~ Inner Classes ------------------------------------------------------------------------------ //-----------------// diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/KeySymbol.java b/app/src/main/java/org/audiveris/omr/ui/symbol/KeySymbol.java index bd976b9e7..85b304771 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/KeySymbol.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/KeySymbol.java @@ -158,10 +158,8 @@ protected void paint (Graphics2D g, Point2D loc = alignment.translatedPoint(AREA_CENTER, p.rect, location); // Set loc to (x=left side, y=staff mid line) - PointUtil.add( - loc, - -p.rect.getWidth() / 2, - -KeyInter.getStandardPosition(fifths) * p.stepDy); + PointUtil + .add(loc, -p.rect.getWidth() / 2, -KeyInter.getStandardPosition(fifths) * p.stepDy); if (fifths == 0) { int pitch = KeyInter.getItemPitch(1, null); diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/LelandSymbols.java b/app/src/main/java/org/audiveris/omr/ui/symbol/LelandSymbols.java new file mode 100644 index 000000000..55e9dce3a --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/LelandSymbols.java @@ -0,0 +1,243 @@ +//------------------------------------------------------------------------------------------------// +// // +// L e l a n d S y m b o l s // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.ui.symbol; + +import org.audiveris.omr.glyph.Shape; +import static org.audiveris.omr.glyph.Shape.*; + +/** + * Class LelandSymbols + * + * @author Hervé Bitteur + */ +public class LelandSymbols + extends Symbols +{ + //~ Methods ------------------------------------------------------------------------------------ + + @Override + protected MusicFamily family () + { + return MusicFamily.Leland; + } + + @Override + public int[] getCode (Shape shape) + { + return switch (shape) { + case ACCENT -> ints(0xE4A0); + // case ARPEGGIATO -> ints(0xE63C); + case AUGMENTATION_DOT -> ints(0xE044); + + // case BACK_TO_BACK_REPEAT_SIGN -> ints(0xE042); + case BRACE -> ints(0xE000); + case BRACKET -> ints(0xE002); + case BRACKET_LOWER_SERIF -> ints(0xE004); + case BRACKET_UPPER_SERIF -> ints(0xE003); + case BREATH_MARK -> ints(0xE4CE); + case BREVE -> ints(0xE0A0); + // case BREVE_CROSS -> ints(0xE0A6); + // case BREVE_DIAMOND -> ints(0xE0D7); + // case BREVE_TRIANGLE_DOWN -> ints(0xE0C3); + // case BREVE_CIRCLE_X -> ints(0xE0B0); + case BREVE_REST -> ints(0xE4E2); + + case CAESURA -> ints(0xE4D1); + case COMMON_TIME -> ints(0xE08A); + case CUT_TIME -> ints(0xE08B); + case C_CLEF -> ints(0xE05C); + case CODA -> ints(0xE048); + case CRESCENDO -> ints(0xE53E); + + // case DAL_SEGNO -> ints(0xE045); + // case DA_CAPO -> ints(0xE046); + case DIMINUENDO -> ints(0xE53F); + case DOT_set -> ints(0xE044); + case DOTTED_HALF_NOTE_UP, METRO_DOTTED_HALF -> ints(0xE1D3, 0x0020, 0xE1E7); + case DOTTED_QUARTER_NOTE_UP, METRO_DOTTED_QUARTER -> ints(0xE1D5, 0x0020, 0xE1E7); + case DOTTED_EIGHTH_NOTE_UP, METRO_DOTTED_EIGHTH -> ints(0xE1D7, 0xE1E7); + case DOTTED_SIXTEENTH_NOTE_UP, METRO_DOTTED_SIXTEENTH -> ints(0xE1D9, 0xE1E7); + // case DOUBLE_BARLINE -> ints(0xE031); + case DOUBLE_FLAT -> ints(0xE264); + case DOUBLE_SHARP -> ints(0xE263); + case DYNAMICS_F -> ints(0xE522); + case DYNAMICS_FF -> ints(0xE52F); + // case DYNAMICS_FFF -> ints(0xE530); + // case DYNAMICS_FFFF -> ints(0xE531); + // case DYNAMICS_FFFFF -> ints(0xE532); + // case DYNAMICS_FFFFFF -> ints(0xE533); + // case DYNAMICS_FZ -> ints(0xE535); + case DYNAMICS_FP -> ints(0xE534); + case DYNAMICS_MF -> ints(0xE52D); + case DYNAMICS_MP -> ints(0xE52C); + case DYNAMICS_P -> ints(0xE520); + case DYNAMICS_PP -> ints(0xE52B); + // case DYNAMICS_PPP -> ints(0xE52A); + // case DYNAMICS_PPPP -> ints(0xE529); + // case DYNAMICS_PPPPP -> ints(0xE528); + // case DYNAMICS_PPPPPP -> ints(0xE527); + // case DYNAMICS_RF -> ints(0xE53C); + // case DYNAMICS_RFZ -> ints(0xE53D); + case DYNAMICS_SF -> ints(0xE536); + // case DYNAMICS_SFFZ -> ints(0xE53B); + // case DYNAMICS_SFP -> ints(0xE537); + case DYNAMICS_SFZ -> ints(0xE539); + // case DYNAMICS_SFPP -> ints(0xE538); + + case EIGHTH_NOTE_UP, METRO_EIGHTH -> ints(0xE1D7); + case EIGHTH_REST -> ints(0xE4E6); + case EIGHTH_set, GRACE_NOTE -> ints(0xE562); + + case FERMATA -> ints(0xE4C0); + case FERMATA_BELOW -> ints(0xE4C1); + // case FINAL_BARLINE -> ints(0xE032); + case FLAG_1 -> ints(0xE240); + case FLAG_1_DOWN -> ints(0xE241); + case FLAG_2 -> ints(0xE242); + case FLAG_2_DOWN -> ints(0xE243); + case FLAG_3 -> ints(0xE244); + case FLAG_3_DOWN -> ints(0xE245); + case FLAG_4 -> ints(0xE246); + case FLAG_4_DOWN -> ints(0xE247); + case FLAG_5 -> ints(0xE248); + case FLAG_5_DOWN -> ints(0xE249); + case FLAT -> ints(0xE260); + case F_CLEF -> ints(0xE062); + case F_CLEF_SMALL -> ints(0xE07C); + case F_CLEF_8VA -> ints(0xE065); + case F_CLEF_8VB -> ints(0xE064); + + case GRACE_NOTE_DOWN -> ints(0xE563); + case GRACE_NOTE_SLASH -> ints(0xE560); + case GRACE_NOTE_SLASH_DOWN -> ints(0xE561); + case G_CLEF -> ints(0xE050); + case G_CLEF_SMALL -> ints(0xE07A); + case G_CLEF_8VA -> ints(0xE053); + case G_CLEF_8VB -> ints(0xE052); + + case HALF_NOTE_DOWN -> ints(0xE1D4); + case HALF_NOTE_UP, METRO_HALF -> ints(0xE1D3); + case HALF_REST, HW_REST_set -> ints(0xE4E4); + + case KEY_CANCEL -> ints(0xE261); + + // case LEDGER -> ints(0xE022); + // case LEFT_REPEAT_SIGN -> ints(0xE040); + case LONG_REST -> ints(0xE4E1); + + case MORDENT -> ints(0xE56C); + case MORDENT_INVERTED -> ints(0xE56D); // With bar + // case MULTIPLE_REST -> ints(0xE4EE); + // case MULTIPLE_REST_LEFT -> ints(0xE4EF); + // case MULTIPLE_REST_MIDDLE -> ints(0xE4F0); + // case MULTIPLE_REST_RIGHT -> ints(0xE4F1); + + case NATURAL -> ints(0xE261); + // case NON_DRAGGABLE -> ints(0xEA94, 0xEA93); + + case NOTEHEAD_BLACK -> ints(0xE0A4); + case NOTEHEAD_CROSS -> ints(0xE0A9); + case NOTEHEAD_DIAMOND_FILLED -> ints(0xE0DB); + // case NOTEHEAD_TRIANGLE_DOWN_FILLED -> ints(0xE0C7); + case NOTEHEAD_CIRCLE_X -> ints(0xE0B3); + + case NOTEHEAD_VOID -> ints(0xE0A3); + // case NOTEHEAD_CROSS_VOID -> ints(0xE0A8); + case NOTEHEAD_DIAMOND_VOID -> ints(0xE0D9); + // case NOTEHEAD_TRIANGLE_DOWN_VOID -> ints(0xE0C5); + // case NOTEHEAD_CIRCLE_X_VOID -> ints(0xE0B2); + + case ONE_16TH_REST -> ints(0xE4E7); + case ONE_32ND_REST -> ints(0xE4E8); + case ONE_64TH_REST -> ints(0xE4E9); + case ONE_128TH_REST -> ints(0xE4EA); + case OTTAVA -> ints(0xE510); + + case PEDAL_MARK -> ints(0xE650); + case PEDAL_UP_MARK -> ints(0xE655); + case PERCUSSION_CLEF -> ints(0xE069); + + // case PLAYING_OPEN -> ints(0xE7F8); + // case PLAYING_HALF_OPEN -> ints(0xE7F7); + // case PLAYING_CLOSED -> ints(0xE7F5); + + case QUARTER_NOTE_DOWN -> ints(0xE1D6); + case QUARTER_NOTE_UP, METRO_QUARTER -> ints(0xE1D5); + case QUARTER_REST -> ints(0xE4E5); + case QUINDICESIMA -> ints(0xE514); + + case REPEAT_DOT -> ints(0xE044); + case REPEAT_DOT_PAIR -> ints(0xE043); + case REPEAT_ONE_BAR -> ints(0xE500); + case REPEAT_TWO_BARS -> ints(0xE501); + case REPEAT_FOUR_BARS -> ints(0xE502); + // case REVERSE_FINAL_BARLINE -> ints(0xE033); + // case RIGHT_REPEAT_SIGN -> ints(0xE041); + + case SEGNO -> ints(0xE047); + case SHARP -> ints(0xE262); + case SIXTEENTH_NOTE_UP, METRO_SIXTEENTH -> ints(0xE1D9); + case STACCATISSIMO -> ints(0xE4A6); + case STACCATO -> ints(0xE4A2); + // case STAFF_LINES -> ints(0xE01A); + // case STEM -> ints(0xE210); + case STRONG_ACCENT -> ints(0xE4AC); + + case TENUTO -> ints(0xE4A4); + // case THICK_BARLINE -> ints(0xE034); + // case THIN_BARLINE -> ints(0xE030); + case TIME_ZERO -> ints(0xE080); + case TIME_ONE -> ints(0xE081); + case TIME_TWO -> ints(0xE082); + case TIME_THREE -> ints(0xE083); + case TIME_FOUR -> ints(0xE084); + case TIME_FIVE -> ints(0xE085); + case TIME_SIX -> ints(0xE086); + case TIME_SEVEN -> ints(0xE087); + case TIME_EIGHT -> ints(0xE088); + case TIME_NINE -> ints(0xE089); + case TIME_TWELVE -> ints(0xE081, 0xE082); + case TIME_SIXTEEN -> ints(0xE081, 0xE086); + case TR -> ints(0xE566); + case TREMOLO_1 -> ints(0xE220); + case TREMOLO_2 -> ints(0xE221); + case TREMOLO_3 -> ints(0xE222); + case TUPLET_SIX -> ints(0xE886); + case TUPLET_THREE -> ints(0xE883); + case TURN -> ints(0xE567); + case TURN_INVERTED -> ints(0xE568); + case TURN_SLASH -> ints(0xE569); + case TURN_UP -> ints(0xE56A); + + case VENTIDUESIMA -> ints(0xE517); + + case WHOLE_NOTE, METRO_WHOLE -> ints(0xE0A2); + // case WHOLE_NOTE_CROSS -> ints(0xE0A7); + case WHOLE_NOTE_DIAMOND -> ints(0xE0D8); + // case WHOLE_NOTE_TRIANGLE_DOWN -> ints(0xE0C4); + // case WHOLE_NOTE_CIRCLE_X -> ints(0xE0B1); + case WHOLE_REST -> ints(0xE4E3); + + default -> null; + }; + } +} diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/MetronomeSymbol.java b/app/src/main/java/org/audiveris/omr/ui/symbol/MetronomeSymbol.java new file mode 100644 index 000000000..f965731f6 --- /dev/null +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/MetronomeSymbol.java @@ -0,0 +1,242 @@ +//------------------------------------------------------------------------------------------------// +// // +// M e t r o n o m e S y m b o l // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.ui.symbol; + +import org.audiveris.omr.glyph.Shape; +import org.audiveris.omr.glyph.ShapeSet; +import org.audiveris.omr.sheet.SheetStub; +import org.audiveris.omr.sheet.ui.StubsController; +import org.audiveris.omr.sig.inter.BeatUnitInter.Note; +import org.audiveris.omr.sig.inter.MetronomeInter; +import static org.audiveris.omr.ui.symbol.Alignment.MIDDLE_LEFT; +import static org.audiveris.omr.ui.symbol.Alignment.MIDDLE_RIGHT; +import static org.audiveris.omr.ui.symbol.Alignment.TOP_LEFT; +import static org.audiveris.omr.ui.symbol.OmrFont.RATIO_METRO; +import static org.audiveris.omr.ui.symbol.OmrFont.RATIO_TINY; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Point; +import java.awt.font.TextLayout; +import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; + +/** + * Class MetronomeSymbol implements a metronome, composed of a beat unit, + * an equal sign, and a bpm text. + * + * @author Hervé Bitteur + */ +public class MetronomeSymbol + extends DecorableSymbol +{ + //~ Static fields/initializers ----------------------------------------------------------------- + + private static final Logger logger = LoggerFactory.getLogger(MetronomeSymbol.class); + + /** The label used for metronome button. */ + private static final String LABEL = "metronome"; + + /** The dummy bpm value. */ + public static final String DUMMY_BPM = "00"; + + //~ Instance fields ---------------------------------------------------------------------------- + + /** The note used as beat unit. */ + protected final Note note; + + /** The bpm textual specification. */ + protected final String bpmString; + + //~ Constructors ------------------------------------------------------------------------------- + + /** + * Create a MetronomeSymbol with the dummy bpm value. + * + * @param noteShape one of {@link ShapeSet#BeatUnits} + * @param musicFamily the music font family + */ + public MetronomeSymbol (Shape noteShape, + MusicFamily musicFamily) + { + this(noteShape, musicFamily, DUMMY_BPM); + } + + /** + * Create a MetronomeSymbol. + * + * @param noteShape one of {@link ShapeSet#BeatUnits} + * @param musicFamily the music font family + * @param bpmString the bpm textual specification + */ + public MetronomeSymbol (Shape noteShape, + MusicFamily musicFamily, + String bpmString) + { + super(Shape.METRONOME, musicFamily); + note = Note.noteOf(noteShape); + this.bpmString = bpmString; + } + + //~ Methods ------------------------------------------------------------------------------------ + + //----------// + // getModel // + //----------// + @Override + public MetronomeInter.Model getModel (MusicFont font, + Point location) + { + final MyParams p = getParams(font); + p.model.translate(p.vectorTo(location)); + + return p.model; + } + + //-----------// + // getParams // + //-----------// + @Override + protected MyParams getParams (MusicFont sheetMusicFont) + { + final MyParams p = new MyParams(); + + final StubsController controller = StubsController.getInstance(); + final SheetStub stub = controller.getSelectedStub(); + final TextFamily textFamily = (stub != null) ? stub.getTextFamily() : TextFamily.SansSerif; + + if (isDecorated && isTiny) { + // Use the metronome label + final int fontSize = (int) Math.rint(sheetMusicFont.getSize2D() * RATIO_TINY); + final TextFont textFont = new TextFont( + textFamily.getFontName(), + null, + Font.PLAIN, + fontSize); + p.layout = textFont.layout(LABEL); + p.rect = p.layout.getBounds(); + } else { + // Properly sized music and text fonts + final int fontSize = (int) Math.rint(sheetMusicFont.getSize2D() * RATIO_METRO); + final TextFont textFont = new TextFont( + textFamily.getFontName(), + null, + Font.PLAIN, + fontSize); + final MusicFont musicFont = sheetMusicFont.deriveFont((float) fontSize); + + final Symbols symbols = MusicFamily.Bravura.getSymbols(); + final int[] codes = symbols.getCode(note.toShape()); + final String str = new String(codes, 0, codes.length); + p.layout = musicFont.layout(str); + final Rectangle2D noteRect = p.layout.getBounds(); + final float noteAdvance = p.layout.getAdvance(); + double minY = noteRect.getMinY(); + double maxY = noteRect.getMaxY(); + + p.bpmLayout = textFont.layout(" = " + bpmString); + final Rectangle2D bpmRect = p.bpmLayout.getBounds(); + final float bpmAdvance = p.bpmLayout.getAdvance(); + minY = Math.min(minY, bpmRect.getMinY()); + maxY = Math.max(maxY, bpmRect.getMaxY()); + + p.rect = new Rectangle2D.Double(0, 0, noteAdvance + bpmAdvance, maxY - minY); + + // Offset from box center to note baseline center + p.offset = new Point2D.Double( + -p.rect.getWidth() / 2 + noteAdvance / 2, + -p.rect.getHeight() / 2 - noteRect.getY()); + + // Model + p.model = new MetronomeInter.Model(); + p.model.box = p.rect.getBounds2D(); + p.model.tempo = ""; + p.model.unit = note.toShape(); + p.model.bpmText = bpmString; + p.model.baseCenter = new Point2D.Double(noteRect.getWidth() / 2, -noteRect.getY()); + p.model.unitFontSize = musicFont.getSize(); + p.model.tempoFontSize = textFont.getSize(); + p.model.bpmFontSize = textFont.getSize(); + } + + return p; + } + + //-----------// + // internals // + //-----------// + @Override + protected String internals () + { + return new StringBuilder(super.internals()) // + .append(' ').append(note) // + .append(' ').append(bpmString) // + .toString(); + } + + //-------// + // paint // + //-------// + @Override + protected void paint (Graphics2D g, + Params params, + Point2D location, + Alignment alignment) + { + final MyParams p = (MyParams) params; + + if (isDecorated && isTiny) { + final Point2D loc = alignment.translatedPoint(TOP_LEFT, p.rect, location); + OmrFont.paint(g, p.layout, loc, TOP_LEFT); + } else { + // note on left side + final Point2D loc1 = alignment.translatedPoint(MIDDLE_LEFT, p.rect, location); + OmrFont.paint(g, p.layout, loc1, MIDDLE_LEFT); + + // = bpm on right side + final Point2D loc2 = alignment.translatedPoint(MIDDLE_RIGHT, p.rect, location); + OmrFont.paint(g, p.bpmLayout, loc2, MIDDLE_RIGHT); + } + } + + //~ Inner Classes ------------------------------------------------------------------------------ + + //----------// + // MyParams // + //----------// + protected static class MyParams + extends ShapeSymbol.Params + { + // offset: from area center to note baseline + // layout: note layout + // rect: global image rectangle + + // bpm layout + TextLayout bpmLayout; + + // model + MetronomeInter.Model model; + } +} diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFamily.java b/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFamily.java index 91c344694..a8ff868c7 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFamily.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFamily.java @@ -42,6 +42,9 @@ public enum MusicFamily null, // No backup needed for this comprehensive font new BravuraSymbols()), + /** Alternate family, some symbols missing. */ + Leland("Leland", "Leland.otf", Bravura, new LelandSymbols()), + /** Alternate family, some symbols missing. */ FinaleJazz("Finale Jazz", "FinaleJazz.otf", Bravura, new FinaleJazzSymbols()), @@ -121,6 +124,10 @@ public static MusicFamily valueOfName (String value) } } + if (value.equalsIgnoreCase("generic")) { + return MusicFamily.Bravura; + } + logger.warn("No music family for value: \"{}\"", value); return null; } diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFont.java b/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFont.java index e0b0bd3a3..6517ad7de 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFont.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/MusicFont.java @@ -26,6 +26,9 @@ import org.audiveris.omr.glyph.Shape; import static org.audiveris.omr.glyph.Shape.TIME_ZERO; import org.audiveris.omr.sheet.Scale; +import org.audiveris.omr.sheet.SheetStub; +import org.audiveris.omr.sheet.ui.StubsController; +import org.audiveris.omr.text.FontInfo; import org.audiveris.omr.ui.util.UIUtil; import org.audiveris.omr.util.param.ConstantBasedParam; import org.audiveris.omr.util.param.Param; @@ -72,7 +75,7 @@ * scaling. * * To get properly scaled instances, use the convenient methods {@link #getBaseFont(Family,int)} - * and {@link #getHeadFont(Family,Scale, int)}. + * and {@link #getHeadFont(Family,Scale,int)}. * * * @see
    SMuFL web site @@ -94,8 +97,9 @@ public class MusicFont public static final int TINY_INTERLINE = (int) Math.rint(DEFAULT_INTERLINE * RATIO_TINY); /** Default music font family. */ - public static final Param defaultMusicParam = - new ConstantBasedParam<>(constants.defaultMusicFamily, Param.GLOBAL_SCOPE); + public static final Param defaultMusicParam = new ConstantBasedParam<>( + constants.defaultMusicFamily, + Param.GLOBAL_SCOPE); //~ Instance fields ---------------------------------------------------------------------------- @@ -107,9 +111,6 @@ public class MusicFont */ protected final MusicFamily musicFamily; - /** The related font for text. */ - protected TextFont textFont; - /** Backup font, if any. */ protected MusicFont backupFont; @@ -131,13 +132,13 @@ private MusicFont (Font font) } /** - * Creates a new MusicFont object, based on chosen family and size. + * Creates a new MusicFont object, based on the provided family and size. * * @param family chosen music font family * @param size the point size of the Font */ - protected MusicFont (MusicFamily family, - int size) + public MusicFont (MusicFamily family, + int size) { super(family.getFontName(), family.getFileName(), Font.PLAIN, size); musicFamily = family; @@ -147,6 +148,16 @@ protected MusicFont (MusicFamily family, } } + /** + * Creates a new MusicFont object, based on the provided FontInfo. + * + * @param info the font info + */ + public MusicFont (FontInfo info) + { + this(MusicFamily.valueOfName(info.fontName), info.pointsize); + } + //~ Methods ------------------------------------------------------------------------------------ //------------// @@ -186,7 +197,7 @@ public Scale.MusicFontScale buildMusicFontScale (double width) } //------------------// - // computePointSize // + // computePointSize // TODO: Could we get rid of this method? //------------------// /** * Using this font family, compute the point size that best matches the provided size @@ -238,6 +249,15 @@ public MusicFont deriveFont (float size) return new MusicFont(super.deriveFont(size)); } + //------------// + // deriveFont // + //------------// + @Override + public MusicFont deriveFont (int style) + { + return new MusicFont(super.deriveFont(style)); + } + //--------// // equals // //--------// @@ -359,8 +379,8 @@ public TextLayout layoutNumberByCode (int number) } final int baseCode = zeroCode[0]; - final int[] numberCodes = - (number >= 100) ? new int[3] : (number >= 10) ? new int[2] : new int[1]; + final int[] numberCodes = (number >= 100) ? new int[3] + : (number >= 10) ? new int[2] : new int[1]; int index = 0; if (number >= 100) { @@ -541,6 +561,20 @@ public static MusicFont getBaseFontBySize (MusicFamily family, return getMusicFont(family, pointSize); } + //------------------// + // getCurrentFamily // + //------------------// + /** + * Report the music family used in the sheet currently displayed + * + * @return the current sheet music family, null if no sheet is displayed + */ + public static MusicFamily getCurrentFamily () + { + final SheetStub stub = StubsController.getInstance().getSelectedStub(); + return (stub != null) ? stub.getMusicFamily() : null; + } + //-----------------------// // getDefaultMusicFamily // //-----------------------// diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/MusicalSymbols.java b/app/src/main/java/org/audiveris/omr/ui/symbol/MusicalSymbols.java index ae1bf73ff..4e89fdb8f 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/MusicalSymbols.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/MusicalSymbols.java @@ -118,7 +118,7 @@ public int[] getCode (Shape shape) ///case F_CLEF_8VA -> ints(0xE065); ///case F_CLEF_8VB -> ints(0xE064); - case GRACE_NOTE -> ints(0xF03B); + case EIGHTH_set, GRACE_NOTE, METRO_EIGHTH -> ints(0xF03B); case GRACE_NOTE_DOWN -> ints(0xF03A); case GRACE_NOTE_SLASH -> ints(0xF0C9); ///case GRACE_NOTE_SLASH_DOWN -> ints(0xF0C9); // Use vertical mirror of GRACE_NOTE_SLASH? diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/OmrFont.java b/app/src/main/java/org/audiveris/omr/ui/symbol/OmrFont.java index de3e6b67f..7c612effa 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/OmrFont.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/OmrFont.java @@ -30,11 +30,15 @@ import org.slf4j.LoggerFactory; import java.awt.Color; +import java.awt.Dimension; import java.awt.Font; import java.awt.FontFormatException; import java.awt.Graphics2D; import java.awt.GraphicsEnvironment; +import java.awt.Point; +import java.awt.Rectangle; import java.awt.font.FontRenderContext; +import java.awt.font.GlyphVector; import java.awt.font.LineMetrics; import java.awt.font.TextLayout; import java.awt.geom.AffineTransform; @@ -47,6 +51,7 @@ import java.util.ConcurrentModificationException; import java.util.HashMap; import java.util.Map; +import java.util.Objects; /** * Class OmrFont is meant to simplify the use of rendering symbols when using a @@ -63,22 +68,29 @@ public abstract class OmrFont private static final Logger logger = LoggerFactory.getLogger(OmrFont.class); - /** Ratio to be applied for tiny symbols. */ + /** Ratio to be applied for tiny symbols (as used in shape buttons). */ public static final double RATIO_TINY = constants.tinyRatio.getValue(); /** Ratio to be applied for small shapes. */ public static final double RATIO_SMALL = constants.smallRatio.getValue(); - /** AffineTransform for tiny displays. */ - public static final AffineTransform TRANSFORM_TINY = AffineTransform.getScaleInstance( - RATIO_TINY, - RATIO_TINY); + /** Ratio to be applied for metronome shapes. */ + public static final double RATIO_METRO = constants.metroRatio.getValue(); + + // /** AffineTransform for tiny displays. */ + // public static final AffineTransform TRANSFORM_TINY = + // AffineTransform.getScaleInstance(RATIO_TINY, RATIO_TINY); /** AffineTransform for small shapes. */ public static final AffineTransform TRANSFORM_SMALL = AffineTransform.getScaleInstance( RATIO_SMALL, RATIO_SMALL); + /** AffineTransform for metronome shapes. */ + public static final AffineTransform TRANSFORM_METRO = AffineTransform.getScaleInstance( + RATIO_METRO, + RATIO_METRO); + /** Default color for images. */ public static final Color defaultImageColor = Color.BLACK; @@ -86,9 +98,9 @@ public abstract class OmrFont public static final FontRenderContext frc = new FontRenderContext(null, true, true); /** - * Cache for all created fonts (music and text), based on name and size. + * Cache for all created fonts (music and text), based on name and point size. *

    - * Only PLAIN style is cached. + * Only the PLAIN style is cached. * If a different style is desired, the caller must derive it from the cached plain one. */ private static final Map> fontCache = new HashMap<>(); @@ -118,6 +130,67 @@ protected OmrFont (String fontName, //~ Methods ------------------------------------------------------------------------------------ + //-------------// + // computeSize // + //-------------// + /** + * Compute the point size so that the content would fit the target dimension. + * + * @param content the provided content string + * @param dim the target dimension + * @return the best font size + */ + public int computeSize (String content, + Dimension dim) + { + Objects.requireNonNull(content, "OmrFont.computeSize. Content is null"); + Objects.requireNonNull(content, "OmrFont.computeSize. Dimension is null"); + + final GlyphVector glyphVector = createGlyphVector(frc, content); + final Rectangle2D rect = glyphVector.getVisualBounds(); + final float ratio = (dim.width >= dim.height) // + ? dim.width / (float) rect.getWidth() + : dim.height / (float) rect.getHeight(); + final float s2d = getSize2D(); + final int sz = (int) Math.rint(ratio * s2d); + logger.debug( + "OmrFont.computeSize {} f: {} dim: {} ratio: {} size: {} content: {}", + getFontName(), + s2d, + dim, + ratio, + sz, + content); + return sz; + } + + //-----------------// + // computeLocation // + //-----------------// + /** + * Compute the baseline location, based on content and bounds. + * + * @param content the provided content string + * @param bounds the underlying glyph bounding box + * @return the computed location + */ + public Point computeLocation (String content, + Rectangle bounds) + { + Objects.requireNonNull(content, "OmrFont.computeLocation. Content is null"); + Objects.requireNonNull(content, "OmrFont.computeLocation. Bounds are null"); + + final GlyphVector glyphVector = createGlyphVector(frc, content); + final Rectangle2D rect = glyphVector.getVisualBounds(); + final double rectDy = rect.getY() / rect.getHeight(); + final double ratio = (bounds.width >= bounds.height) // + ? bounds.width / rect.getWidth() + : bounds.height / rect.getHeight(); + final int y = bounds.y + (int) Math.rint(rectDy * ratio); + + return new Point(bounds.x, y); + } + //----------------// // getLineMetrics // //----------------// @@ -154,7 +227,7 @@ public TextLayout layout (String str) public TextLayout layout (String str, AffineTransform fat) { - Font font = (fat == null) ? this : this.deriveFont(fat); + final Font font = (fat == null) ? this : this.deriveFont(fat); return new TextLayout(str, font, frc); } @@ -190,7 +263,7 @@ protected static void cacheFont (Font font) * * @param fontName font name (e.g. "Finale Jazz") * @param fileName file name (e.g. "FinaleJazz.otf") - * @param size the desired size for this font + * @param size the desired point size for this font * @return the cached or created font */ private static Font createFont (String fontName, @@ -246,7 +319,7 @@ private static Font createFont (String fontName, * Try to retrieve the font defined by its name and size from the font cache. * * @param fontName font name (family name actually) - * @param size desired font size + * @param size desired font point size * @return the cached font or null */ private static Font getCachedFont (String fontName, @@ -312,12 +385,14 @@ protected static Font getFont (String fontName, // Try to derive from another size final Font any = getCachedFontAnySize(fontName); - if (any != null) + if (any != null) { font = any.deriveFont((float) size); + } - // We need to create it - if (font == null) + if (font == null) { + // We need to create it font = createFont(fontName, fileName, size); + } } return (style == Font.PLAIN) ? font : font.deriveFont(style); @@ -350,7 +425,7 @@ public static void paint (Graphics2D g, g, (float) (location.getX() + toTextOrigin.getX()), (float) (location.getY() + toTextOrigin.getY())); - } catch (ConcurrentModificationException ignored) { + } catch (ConcurrentModificationException ignored) { // } catch (Exception ex) { logger.warn("Cannot paint at " + location, ex); } @@ -364,6 +439,9 @@ public static void paint (Graphics2D g, private static class Constants extends ConstantSet { + private final Constant.Ratio metroRatio = new Constant.Ratio( + 0.5, + "Ratio applied to metronome note shapes"); private final Constant.Ratio smallRatio = new Constant.Ratio( 0.67, diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/ShapeSymbol.java b/app/src/main/java/org/audiveris/omr/ui/symbol/ShapeSymbol.java index 42b69fe82..7e765d362 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/ShapeSymbol.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/ShapeSymbol.java @@ -106,19 +106,20 @@ public class ShapeSymbol 0); // m12 /** A transformation to turn 1 quadrant clockwise. */ - protected static final AffineTransform quadrantRotateOne = - AffineTransform.getQuadrantRotateInstance(1); + protected static final AffineTransform quadrantRotateOne = AffineTransform + .getQuadrantRotateInstance(1); /** A transformation to turn 2 quadrants clockwise. */ - protected static final AffineTransform quadrantRotateTwo = - AffineTransform.getQuadrantRotateInstance(2); + protected static final AffineTransform quadrantRotateTwo = AffineTransform + .getQuadrantRotateInstance(2); /** The symbol meta data. */ public static final DataFlavor DATA_FLAVOR = new DataFlavor(ShapeSymbol.class, "shape-symbol"); /** Composite used for decoration. */ - protected static final AlphaComposite decoComposite = - AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.15f); + protected static final AlphaComposite decoComposite = AlphaComposite.getInstance( + AlphaComposite.SRC_OVER, + 0.15f); //~ Instance fields ---------------------------------------------------------------------------- @@ -199,8 +200,10 @@ public SymbolImage buildImage (MusicFont font, // Allocate image of proper size Rectangle intRect = p.rect.getBounds(); - SymbolImage img = - new SymbolImage(intRect.width, intRect.height, PointUtil.rounded(p.offset)); + SymbolImage img = new SymbolImage( + intRect.width, + intRect.height, + PointUtil.rounded(p.offset)); // Paint the image Graphics2D g = (Graphics2D) img.getGraphics(); @@ -572,8 +575,7 @@ public Object getTransferData (DataFlavor flavor) @Override public DataFlavor[] getTransferDataFlavors () { - return new DataFlavor[] - { DATA_FLAVOR }; + return new DataFlavor[] { DATA_FLAVOR }; } //----------// @@ -647,19 +649,21 @@ public boolean isDecorated () //-------// /** * Actual painting, to be redefined by subclasses if needed. + *

    + * This default implementation paints only the 'params.layout' item. * * @param g graphics context - * @param p the parameters fed by getParams() + * @param params the parameters fed by getParams() * @param location where to paint * @param alignment relative position of provided location WRT symbol */ protected void paint (Graphics2D g, - Params p, + Params params, Point2D location, Alignment alignment) { logger.trace("ShapeSymbol.paint {}", this); - OmrFont.paint(g, p.layout, location, alignment); + OmrFont.paint(g, params.layout, location, alignment); } //-----------// @@ -729,8 +733,8 @@ protected boolean supportsDecoration () @Override public String toString () { - return new StringBuilder(getClass().getSimpleName()).append("{").append(internals()) - .append("}").toString(); + return new StringBuilder(getClass().getSimpleName()).append("{").append(internals()).append( + "}").toString(); } //-------------// @@ -756,7 +760,7 @@ public void updateModel (Sheet sheet) * Tell the symbol that it can update its model with staff informations. *

    * This is useful when the dragged item enters a staff, since it can adapt itself to - * staff informations (such as the typical beam thickness for small staff). + * staff information (such as the typical beam thickness for small staff). * * @param staff underlying staff */ @@ -775,7 +779,6 @@ public void updateModel (Staff staff) */ protected static class Params { - /** * Specific offset, if any, for focus center off of area center. * Since user pointing location is by default taken as center of 'rect' bounds. diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/SymbolRipper.java b/app/src/main/java/org/audiveris/omr/ui/symbol/SymbolRipper.java index b9012c767..f4e8d83a5 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/SymbolRipper.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/SymbolRipper.java @@ -181,6 +181,9 @@ public void stateChanged (ChangeEvent e) // y symbol private final LDoubleField hSym = new LDoubleField(false, "hSym", "h symbol", f); + // Advance symbol + private final LDoubleField aSym = new LDoubleField(false, "advance", "symbol advance", f); + //~ Constructors ------------------------------------------------------------------------------- /** @@ -189,30 +192,55 @@ public void stateChanged (ChangeEvent e) public SymbolRipper () { // Actors - drawing=new Drawing(); + drawing = new Drawing(); - fontBase.setModel(new SpinnerListModel(new Integer[]{0,0xf000,0x1_d100}));SpinnerUtil.setRightAlignment(fontBase);SpinnerUtil.fixIntegerList(fontBase); + fontBase.setModel(new SpinnerListModel(new Integer[] { 0, 0xf000, 0x1d100 })); + SpinnerUtil.setRightAlignment(fontBase); + SpinnerUtil.fixIntegerList(fontBase); - fontName.setModel(new SpinnerListModel(GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames())); + fontName.setModel( + new SpinnerListModel( + GraphicsEnvironment.getLocalGraphicsEnvironment() + .getAvailableFontFamilyNames())); - pointCode.setModel(new SpinnerNumberModel(0x1_d100,0,0x1_d1ff,1)); + pointCode.setModel(new SpinnerNumberModel(0x1d100, 0, 0x1d1ff, 1)); // Initial values - if(true){fontName.getSpinner().setValue("Bravura");fontBase.setValue(0); // (for Bravura) - pointCode.setValue(0xE0A4); // Quarter note (in Bravura) - }else{fontName.getSpinner().setValue("MusicalSymbols");fontBase.setValue(fontBase.getModel().getNextValue()); // (for MusicalSymbols) - pointCode.setValue(113); // Quarter note (in MusicalSymbols) + if (true) { + fontName.getSpinner().setValue("Bravura"); + fontBase.setValue(0); // (for Bravura) + pointCode.setValue(0xE0A4); // Quarter note (in Bravura) + } else { + fontName.getSpinner().setValue("MusicalSymbols"); + fontBase.setValue(fontBase.getModel().getNextValue()); // (for MusicalSymbols) + pointCode.setValue(113); // Quarter note (in MusicalSymbols) } - fontSize.setValue(200);width.setValue(400);height.setValue(500);xOffset.setValue(200);yOffset.setValue(300); + fontSize.setValue(200); + width.setValue(400); + height.setValue(500); + xOffset.setValue(200); + yOffset.setValue(300); - changeCode();defineFont(); + changeCode(); + defineFont(); // Listeners - fontName.addChangeListener(paramListener);fontBase.addChangeListener(paramListener);fontSize.addChangeListener(paramListener);pointCode.addChangeListener(paramListener);hexaCode.addChangeListener(paramListener);xOffset.addChangeListener(paramListener);yOffset.addChangeListener(paramListener);width.addChangeListener(paramListener);height.addChangeListener(paramListener); + fontName.addChangeListener(paramListener); + fontBase.addChangeListener(paramListener); + fontSize.addChangeListener(paramListener); + pointCode.addChangeListener(paramListener); + hexaCode.addChangeListener(paramListener); + xOffset.addChangeListener(paramListener); + yOffset.addChangeListener(paramListener); + width.addChangeListener(paramListener); + height.addChangeListener(paramListener); // Global layout - if(!standAlone){frame=defineLayout(new JFrame("Symbol Ripper"));OmrGui.getApplication().show(frame);} + if (!standAlone) { + frame = defineLayout(new JFrame("Symbol Ripper")); + OmrGui.getApplication().show(frame); + } } //~ Methods ------------------------------------------------------------------------------------ @@ -243,6 +271,7 @@ private BufferedImage buildImage () ySym.setValue(rect.getY()); wSym.setValue(rect.getWidth()); hSym.setValue(rect.getHeight()); + aSym.setValue(layout.getAdvance()); return img; } @@ -321,7 +350,7 @@ public JFrame getFrame () //---------------// private JPanel getParamPanel () { - final FormLayout layout = Panel.makeFormLayout(13, 2, "right:", "35dlu", "45dlu"); + final FormLayout layout = Panel.makeFormLayout(14, 2, "right:", "35dlu", "45dlu"); FormBuilder builder = FormBuilder.create().layout(layout).panel(new Panel()); int r = 1; // -------------------------------- builder.addSeparator("Font").xyw(1, r, 7); @@ -364,6 +393,10 @@ private JPanel getParamPanel () r += 2; // -------------------------------- builder.addSeparator("Symbol").xyw(1, r, 7); + r += 2; // -------------------------------- + builder.addRaw(aSym.getLabel()).xy(5, r); + builder.addRaw(aSym.getField()).xy(7, r); + r += 2; // -------------------------------- builder.addRaw(xSym.getLabel()).xy(1, r); builder.addRaw(xSym.getField()).xy(3, r); @@ -466,13 +499,6 @@ public void paintComponent (Graphics g) yOffset.getValue()); g.setColor(Color.RED); g2.draw(rect); - - // Debug - TextLayout layout = new TextLayout(string, musicFont, frc); - logger.debug( - "getAdvance(): {} getVisibleAdvance(): {}", - layout.getAdvance(), - layout.getVisibleAdvance()); } } } diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/Symbols.java b/app/src/main/java/org/audiveris/omr/ui/symbol/Symbols.java index c3520c338..48b1154a1 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/Symbols.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/Symbols.java @@ -23,11 +23,13 @@ import org.audiveris.omr.glyph.Shape; import static org.audiveris.omr.glyph.Shape.*; +import static org.audiveris.omr.ui.symbol.OmrFont.TRANSFORM_METRO; import static org.audiveris.omr.ui.symbol.OmrFont.TRANSFORM_SMALL; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Arrays; import java.util.Collections; import java.util.EnumMap; import java.util.List; @@ -59,6 +61,9 @@ public abstract class Symbols public static final CodeRange PRIVATE_USE_AREA = new CodeRange(0xE000, 0xF8FF); + /** Code for a space character. */ + public static final int SPACE = 0x20; + //~ Instance fields ---------------------------------------------------------------------------- /** @@ -91,7 +96,7 @@ public abstract class Symbols * @param shape the provided music shape * @return code point or null if not supported */ - protected abstract int[] getCode (Shape shape); + public abstract int[] getCode (Shape shape); //---------------// // getCodeRanges // @@ -169,6 +174,15 @@ protected void mapFlatKey (Shape shape, symbolMap.put(shape, new KeyFlatSymbol(key, shape, family())); } + //----------// + // mapMetro // + //----------// + protected void mapMetro (Shape shape, + Shape root) + { + symbolMap.put(shape, new TransformedSymbol(shape, root, TRANSFORM_METRO, family())); + } + //-----------// // mapNumDen // //-----------// @@ -258,15 +272,25 @@ protected void populateSymbols () mapSmall(SMALL_FLAG, FLAG_1); mapSmall(SMALL_FLAG_DOWN, FLAG_1_DOWN); + // Metronome symbols + mapMetro(METRO_WHOLE, WHOLE_NOTE); + mapMetro(METRO_HALF, HALF_NOTE_UP); + mapMetro(METRO_DOTTED_HALF, DOTTED_HALF_NOTE_UP); + mapMetro(METRO_QUARTER, QUARTER_NOTE_UP); + mapMetro(METRO_DOTTED_QUARTER, DOTTED_QUARTER_NOTE_UP); + mapMetro(METRO_EIGHTH, EIGHTH_NOTE_UP); + mapMetro(METRO_DOTTED_EIGHTH, DOTTED_EIGHTH_NOTE_UP); + mapMetro(METRO_SIXTEENTH, SIXTEENTH_NOTE_UP); + mapMetro(METRO_DOTTED_SIXTEENTH, DOTTED_SIXTEENTH_NOTE_UP); + // Specific symbols symbolMap.put(BRACE, new BraceSymbol(family())); symbolMap.put(ENDING, new EndingSymbol(false, family())); symbolMap.put(ENDING_WRL, new EndingSymbol(true, family())); symbolMap.put(SMALL_FLAG_SLASH, new SlashedFlagSymbol(SMALL_FLAG_SLASH, family())); - symbolMap.put( - SMALL_FLAG_SLASH_DOWN, - new SlashedFlagSymbol(SMALL_FLAG_SLASH_DOWN, family())); + symbolMap + .put(SMALL_FLAG_SLASH_DOWN, new SlashedFlagSymbol(SMALL_FLAG_SLASH_DOWN, family())); symbolMap.put(FLAT, new FlatSymbol(FLAT, family())); symbolMap.put(DOUBLE_FLAT, new FlatSymbol(DOUBLE_FLAT, family())); @@ -276,6 +300,8 @@ protected void populateSymbols () symbolMap.put(QUARTER_NOTE_UP, new CompoundNoteSymbol(QUARTER_NOTE_UP, family())); symbolMap.put(QUARTER_NOTE_DOWN, new CompoundNoteSymbol(QUARTER_NOTE_DOWN, family())); + symbolMap.put(METRONOME, new MetronomeSymbol(METRO_QUARTER, family())); + symbolMap.put(NON_DRAGGABLE, new NonDraggableSymbol(family())); symbolMap.put(REPEAT_TWO_BARS, new RepeatBarSymbol(REPEAT_TWO_BARS, family())); @@ -364,11 +390,39 @@ protected void populateSymbols () * @param codes sequence of one int or more parameters * @return the int array */ - protected static int[] ints (int... codes) + public static int[] ints (int... codes) { return codes; } + //--------// + // shrink // + //--------// + /** + * Report an array where the space characters have been removed. + * + * @param codes the input array + * @return the purged array + */ + public static int[] shrink (int... codes) + { + final int[] output = new int[codes.length]; + + int j = 0; + for (int i = 0; i < codes.length; i++) { + final int code = codes[i]; + if (code != SPACE) { + output[j++] = code; + } + } + + if (j == codes.length) { + return codes; + } + + return Arrays.copyOf(output, j); + } + //~ Inner Classes ------------------------------------------------------------------------------ //-----------// @@ -394,8 +448,8 @@ public CodeRange (int start, @Override public String toString () { - return new StringBuilder().append('[').append(start).append("..").append(stop).append( - ']').toString(); + return new StringBuilder().append('[').append(start).append("..").append(stop) + .append(']').toString(); } } } diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/TextFamily.java b/app/src/main/java/org/audiveris/omr/ui/symbol/TextFamily.java index 71e126a4f..e48da7103 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/TextFamily.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/TextFamily.java @@ -35,10 +35,10 @@ */ public enum TextFamily { - /** Standard text family. */ + /** Standard text family, without serif. */ SansSerif("Sans Serif", null), - /** Standard text family. */ + /** Standard text family, with serif. */ Serif("Serif", null), /** Jazz text family. */ @@ -92,7 +92,7 @@ public static TextFamily valueOfName (String value) } } - logger.warn("No music family for value: \"{}\"", value); + logger.warn("No text family for value: \"{}\"", value); return null; } diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/TextFont.java b/app/src/main/java/org/audiveris/omr/ui/symbol/TextFont.java index f7c2b5a03..744d8b71c 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/TextFont.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/TextFont.java @@ -23,6 +23,8 @@ import org.audiveris.omr.constant.Constant; import org.audiveris.omr.constant.ConstantSet; +import org.audiveris.omr.sheet.SheetStub; +import org.audiveris.omr.sheet.ui.StubsController; import org.audiveris.omr.text.FontInfo; import org.audiveris.omr.util.param.ConstantBasedParam; import org.audiveris.omr.util.param.Param; @@ -30,10 +32,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.awt.Dimension; import java.awt.Font; -import java.awt.font.GlyphVector; -import java.awt.geom.Rectangle2D; /** * Class TextFont is meant to simplify the use of text font for pieces of text @@ -73,7 +72,7 @@ public TextFont (Font font) } /** - * Creates a font based on OCR font information. + * Creates a new TextFont based on OCR-based font information. * * @param info OCR-based font information */ @@ -87,7 +86,7 @@ public TextFont (FontInfo info) } /** - * Creates a new TextFont object of provided point size, with default font name + * Creates a new TextFont object of provided point size, with default font name * and plain style. * * @param size the point size of the Font @@ -98,7 +97,7 @@ public TextFont (int size) } /** - * Creates a new TextFont object. + * Creates a new TextFont object. * * @param fontName the font name. This can be a font face name or a font * family name, and may represent either a logical font or @@ -123,78 +122,11 @@ public TextFont (String fontName, @Override public TextFont deriveFont (float pointSize) { - final Font font = super.deriveFont(pointSize); - return new TextFont(font); + return new TextFont(super.deriveFont(pointSize)); } //~ Static Methods ----------------------------------------------------------------------------- - //-----------------// - // computeFontSize // - //-----------------// - /** - * Convenient method to compute a font size using a string content and dimension. - * - * @param content the string value - * @param fontInfo OCR-based font information - * @param dim string dimension in pixels - * @return the computed font size - */ - public static Float computeFontSize (String content, - FontInfo fontInfo, - Dimension dim) - { - if (content == null) { - return null; - } - - Font font = new TextFont(fontInfo); - float fontSize = font.getSize2D(); - GlyphVector glyphVector = font.createGlyphVector(frc, content); - Rectangle2D basicRect = glyphVector.getVisualBounds(); - - float ratio; - if (dim.width >= dim.height) { - ratio = dim.width / (float) basicRect.getWidth(); - } else { - ratio = dim.height / (float) basicRect.getHeight(); - } - - // To protect against crazy OCR bounds - final float maxRatio = constants.maxFontResizeRatio.getValue().floatValue(); - logger.debug("font resize ratio: {} {}", ratio, content); - ratio = Math.min(maxRatio, ratio); - - return fontSize * ratio; - } - - //-----------------// - // computeFontSize // - //-----------------// - /** - * Convenient method to compute a font size using a string content and width. - * - * @param content the string value - * @param fontInfo OCR-based font information - * @param width string width in pixels - * @return the computed font size - */ - public static Float computeFontSize (String content, - FontInfo fontInfo, - int width) - { - if (content == null) { - return null; - } - - Font font = new TextFont(fontInfo); - float fontSize = font.getSize2D(); - GlyphVector glyphVector = font.createGlyphVector(frc, content); - Rectangle2D basicRect = glyphVector.getVisualBounds(); - - return fontSize * (width / (float) basicRect.getWidth()); - } - //--------// // create // //--------// @@ -230,6 +162,20 @@ public static TextFont getBaseFontBySize (TextFamily family, return getTextFont(family, pointSize); } + //------------------// + // getCurrentFamily // + //------------------// + /** + * Report the text family used in the sheet currently displayed. + * + * @return the current sheet text family, null if no sheet is displayed + */ + public static TextFamily getCurrentFamily () + { + final SheetStub stub = StubsController.getInstance().getSelectedStub(); + return (stub != null) ? stub.getTextFamily() : null; + } + //-------------// // getTextFont // //-------------// @@ -254,7 +200,6 @@ public static TextFont getTextFont (TextFamily family, private static class Constants extends ConstantSet { - private final Constant.Enum defaultTextFamily = new Constant.Enum<>( TextFamily.class, TextFamily.SansSerif, @@ -268,9 +213,5 @@ private static class Constants "points", 10, "Default font point size for texts"); - - private final Constant.Ratio maxFontResizeRatio = new Constant.Ratio( - 1.3, - "Maximum font increase ratio when recomputed"); } } diff --git a/app/src/main/java/org/audiveris/omr/ui/symbol/TextSymbol.java b/app/src/main/java/org/audiveris/omr/ui/symbol/TextSymbol.java index 955699343..afd0561cc 100644 --- a/app/src/main/java/org/audiveris/omr/ui/symbol/TextSymbol.java +++ b/app/src/main/java/org/audiveris/omr/ui/symbol/TextSymbol.java @@ -23,8 +23,6 @@ import org.audiveris.omr.glyph.Shape; import org.audiveris.omr.math.PointUtil; -import org.audiveris.omr.sheet.SheetStub; -import org.audiveris.omr.sheet.ui.StubsController; import org.audiveris.omr.sig.inter.WordInter; import org.audiveris.omr.text.FontInfo; import static org.audiveris.omr.ui.symbol.Alignment.TOP_LEFT; @@ -49,6 +47,8 @@ public class TextSymbol extends ShapeSymbol { + //~ Static fields/initializers ----------------------------------------------------------------- + private static final Logger logger = LoggerFactory.getLogger(TextSymbol.class); //~ Instance fields ---------------------------------------------------------------------------- @@ -148,10 +148,9 @@ protected MyParams getParams (MusicFont font) TextFamily theTextFamily = textFamily; if (theTextFamily == null) { - // Workaround to retrieve sheet text family - final StubsController controller = StubsController.getInstance(); - final SheetStub stub = controller.getSelectedStub(); - theTextFamily = (stub != null) ? stub.getTextFamily() : TextFamily.SansSerif; + theTextFamily = TextFont.getCurrentFamily(); + if (theTextFamily == null) + theTextFamily = TextFamily.SansSerif; } final int fontSize = (int) Math.rint(font.getSize2D() * RATIO_TINY); @@ -199,16 +198,17 @@ public TextFamily getTextFamily () //~ Inner Classes ------------------------------------------------------------------------------ - //--------// - // Params // - //--------// + //----------// + // MyParams // + //----------// protected static class MyParams extends ShapeSymbol.Params { - // offset: not used + // layout: text layout // rect: global image + // model WordInter.Model model; } diff --git a/app/src/main/java/org/audiveris/omr/util/Jaxb.java b/app/src/main/java/org/audiveris/omr/util/Jaxb.java index 185ad1154..2bb1ae0d5 100644 --- a/app/src/main/java/org/audiveris/omr/util/Jaxb.java +++ b/app/src/main/java/org/audiveris/omr/util/Jaxb.java @@ -684,8 +684,8 @@ public Line2D getLine () @Override public String toString () { - return new StringBuilder("Line2DF{").append("p1:").append(p1).append(",p2:").append( - p2).append('}').toString(); + return new StringBuilder("Line2DF{").append("p1:").append(p1).append(",p2:") + .append(p2).append('}').toString(); } } } @@ -1144,9 +1144,9 @@ public Rectangle getRectangle () @Override public String toString () { - return new StringBuilder("RectangleF{").append("x:").append(x).append(",y:").append( - y).append(",w:").append(width).append(",h:").append(height).append('}') - .toString(); + return new StringBuilder("RectangleF{").append("x:").append(x).append(",y:") + .append(y).append(",w:").append(width).append(",h:").append(height) + .append('}').toString(); } } } diff --git a/app/src/main/java/org/audiveris/omr/util/RegexUtil.java b/app/src/main/java/org/audiveris/omr/util/RegexUtil.java index 1dcc532d4..282387320 100644 --- a/app/src/main/java/org/audiveris/omr/util/RegexUtil.java +++ b/app/src/main/java/org/audiveris/omr/util/RegexUtil.java @@ -71,8 +71,7 @@ public static String getGroup (Matcher matcher, try { result = matcher.group(name); - } catch (Exception ignored) { - } + } catch (Exception ignored) {} if (result != null) { return result; @@ -94,16 +93,6 @@ public static String getGroup (Matcher matcher, public static String group (String name, String content) { - StringBuilder sb = new StringBuilder(); - - sb.append("(?<"); - sb.append(name); - sb.append(">"); - - sb.append(content); - - sb.append(")"); - - return sb.toString(); + return "(?<" + name + ">" + content + ")"; } } diff --git a/app/src/main/java/org/audiveris/omr/util/StringUtil.java b/app/src/main/java/org/audiveris/omr/util/StringUtil.java index 0b0f3dd53..866483897 100644 --- a/app/src/main/java/org/audiveris/omr/util/StringUtil.java +++ b/app/src/main/java/org/audiveris/omr/util/StringUtil.java @@ -99,6 +99,11 @@ public static String codesOf (String s, return sb.toString(); } + public static String codesOf (String s) + { + return codesOf(s, false); + } + //---------// // compare // //---------// @@ -151,4 +156,32 @@ public static List parseStrings (String str) return strList; } + + //--------// + // shrink // + //--------// + /** + * Report a string where the space characters have been removed. + * + * @param input the input string + * @return the purged string + */ + public static String shrink (String input) + { + final char[] output = new char[input.length()]; + + int j = 0; + for (int i = 0; i < input.length(); i++) { + final char c = input.charAt(i); + if (c != ' ') { + output[j++] = c; + } + } + + if (j == input.length()) { + return input; + } + + return new String(output, 0, j); + } } diff --git a/app/src/test/java/org/audiveris/omr/sig/inter/MetronomeInterTest.java b/app/src/test/java/org/audiveris/omr/sig/inter/MetronomeInterTest.java new file mode 100644 index 000000000..5746b789e --- /dev/null +++ b/app/src/test/java/org/audiveris/omr/sig/inter/MetronomeInterTest.java @@ -0,0 +1,184 @@ +//------------------------------------------------------------------------------------------------// +// // +// M e t r o n o m e I n t e r T e s t // +// // +//------------------------------------------------------------------------------------------------// +// +// +// Copyright © Audiveris 2023. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify it under the terms of the +// GNU Affero General Public License as published by the Free Software Foundation, either version +// 3 of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License along with this +// program. If not, see . +//------------------------------------------------------------------------------------------------// +// +package org.audiveris.omr.sig.inter; + +import org.audiveris.omr.util.ClassUtil; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; + +/** + * Unitary tests for class MetronomeInterTest . + * + * @author Hervé Bitteur + */ +public class MetronomeInterTest +{ + /** Store output in dedicated file. */ + private static final PrintWriter out = getPrintWriter(new File("../data/metronome-tests.log")); + + @Test + public void test_01 () + { + t("J =116", true); + } + + @Test + public void test_02 () + { + t("J=116", true); + } + + @Test + public void test_03 () + { + t("Slowly J = 116", true); + } + + @Test + public void test_04 () + { + t("Slowly J=116 ", true); + } + + @Test + public void test_05 () + { + t("Slowly (J = 116)", true); + } + + @Test + public void test_06 () + { + t("Slowly (J = ca. 116)", true); + } + + @Test + public void test_07 () + { + t("Slowly ( J = 116 env.)", true); + } + + @Test + public void test_08 () + { + t("Slowly ( J = 116-140)", true); + } + + @Test + public void test_09 () + { + t("Slowly ( J = ca. 116 - 140)", true); + } + + @Test + public void test_10 () + { + t("Allegretto quasi andantino (J = 69 env.)", true); + } + + @Test + public void test_11 () + { + t("Allegretto quasi andantino (J = ca. 100-120 env.)", true); + } + + @Test + public void test_12 () + { + t("Allegretto quasi andantino J = 100-120 grosso modo", true); + } + + @Test + public void test_13 () + { + t("Allegretto quasi andantino (J = 100 env.) garbage", true); + } + + @Test + public void test_14 () + { + t("Adagio .h = 126", true); + } + + @Test + public void test_15 () + { + t("Presto (J: 160)", false); // '=' OCR'd as ':' + } + + //----------------// + // getPrintWriter // + //----------------// + private static PrintWriter getPrintWriter (File file) + { + try { + final BufferedWriter bw = new BufferedWriter( + new OutputStreamWriter(new FileOutputStream(file), "UTF8")); + + return new PrintWriter(bw); + } catch (Exception ex) { + System.err.println("Error creating " + file + ex); + + return null; + } + } + + //---// + // t // + //---// + private void t (String text, + boolean exp) + { + // Print method name + StackTraceElement elem = ClassUtil.getCallingFrame(); + + if (elem != null) { + System.out.println(); + System.out.println("method : " + elem.getMethodName()); + out.println(); + out.println("method : " + elem.getMethodName()); + out.flush(); + } + + System.out.println("input : \"" + text + "\""); + out.println("input : \"" + text + "\""); + out.flush(); + + System.out.println("expected : " + exp); + out.println("expected : " + exp); + out.flush(); + + boolean result = MetronomeInter.fullValidityCheck(text); + System.out.println("output : " + result); + out.println("output : " + result); + out.flush(); + + assertEquals(exp, result); + } +} diff --git a/app/src/test/java/org/audiveris/omr/ui/symbol/MusicFontTest.java b/app/src/test/java/org/audiveris/omr/ui/symbol/MusicFontTest.java index 6aef37146..8cf5b62f0 100644 --- a/app/src/test/java/org/audiveris/omr/ui/symbol/MusicFontTest.java +++ b/app/src/test/java/org/audiveris/omr/ui/symbol/MusicFontTest.java @@ -147,8 +147,12 @@ public void textPrintout () g.drawString(Integer.toHexString(i), x + 10, y + 30); // Draw info - String info = - String.format(frm, r.getX(), r.getY(), r.getWidth(), r.getHeight()); + String info = String.format( + frm, + r.getX(), + r.getY(), + r.getWidth(), + r.getHeight()); g.setFont(infoFont); g.setColor(Color.GRAY); g.drawString(info, x + 5, (y + cellHeight) - 5); diff --git a/gradle.properties b/gradle.properties index b981391eb..800b1671c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -26,7 +26,3 @@ netbeans.de-funfried-netbeans-plugins-externalcodeformatter.showNotifications=fa netbeans.de-funfried-netbeans-plugins-externalcodeformatter.enabledFormatter_2e_HTML=netbeans-formatter netbeans.de-funfried-netbeans-plugins-externalcodeformatter.useProjectSettings=false netbeans.de-funfried-netbeans-plugins-externalcodeformatter.enabledFormatter_2e_CSS=netbeans-formatter - -# Uncomment the two following lines to read run/debug arguments from data/args/default.txt file -#action.run.args=run --args=@data/args/default.txt -#action.debug.args=run --debug-jvm --args=@data/args/default.txt