概要

Mirador 4の拡大・縮小・回転の挙動を変更する必要があり、その変更方法に関する備忘録です。

セットアップ

以下により、ローカルでMirador 4を起動します。

gcppidnntppmmmcilrisoatndaeorrthttps://github.com/projectmirador/mirador

ポート4444で起動します。

zoomIn時の処理のカスタマイズ

一例ですが、zoomInボタンをクリックした際の処理を以下のように変更してみます。

h a n }d lcu/}eop/)Zndzrxy;osazoo::ottootmeomavvI{Vm:tiini:ieeCwevowwliwvineeinpie:rrcdoew..korwevxy(wteri)I(r.edw.zw{,izoe11noor..udom.11pomr,,dwoaIttd1ae,2.tV,1ii{,oenwp+or5t,,viewer}=this.props;

結果、zoomInボタンを押した際に、中心が少しずれながら、拡大・回転が行われることがわかります。

https://youtu.be/wn1WxpTVpS4

これを応用することで、Mirador 3の拡大・縮小・回転等のカスタマイズを行うことができます。

immediateの設定

上記の例では、拡大や回転が完了するまで少し時間がかかっていました。これを即座に行いたい場合、以下のOpenSeadragonViewer.jsのcomponentDidUpdateをカスタマイズします。

viewerConfigオブジェクトのimmediatelyプロパティに基づき、拡大縮小や回転を即座に実施するかを設定できるようにします。

com}poc}cti}i)}}}noohffenvc=nii}tr{vctetecci}i}i}i}nsiass(fheiohlhlooffffttentt.pvvvvit!enisisnnvvvDwvhariiiisut!wssesessiiiii{eai{peveeee.rhtet..ttvevevevedrssiviwwwwanihrairiivwiwiwiwUCW.vRSeeeeed;si.cdfef{ieipepepeppoopietwrrrrd.scadfmweowowowodnrrefae..CCAi.lnA(rvmewrerereraflow.trvvoolnnovl!evieretrtrtrttidpeceCiinnlfosalisiedCr.C.C.C.eg,sru.oeeffIonesIshewioCpozosos(,;rvnwwiimRT(emETwpanoanonenep}rifppggaei)saqieotfnnfoftftreeioo..gsl;CgulrreifTimiRiFe=nwgrrdfepeheaeCtlgiogTgoglvte)ttelSodaSlPoy.g(.o.t.iPtr..gionIno(rn}x.vz(rafprh={pzrpusmgucof=yiovotl(oi=aoereaerapi=!eoitiivpsv=noe!csgdcnegv=!wmeaopis.i=Tms=eMeevrvi==ewtne,seoT=sad=sat&ie=r!ei(!wtwu(o!(tM(si&ewvC=rov=epaenv(=u!ca!(Weweivo=Cni=rrtrdiv=n(ht(cos!ereinoeCee;eeidv(ciar(trCwefvn!wvov;fweueiphsnl)h;opwiif=einSiewnfer(Evd;inopgei=reftnrediwepqa.sfro,wgCwiaeCrenevrusl.itrp.vopgtdoCferPeaeaog.tiozino.e)noidCrvlsys.c.mroefrf)fnnooP(Cediecmtowitl{ife&nprchrUmnee.mpg.i{gid&fsoaaspmtndz,o.gp,gi.pnn,deetiorre).&vgisvgadreaovtot;tz&i)n.aeptiSrtmi.tFroe)fnsdriapSeSegaluovw;ooWentrplpwetiemieRngeiryretip),ereTrP)lni)irRo(;w.silrygn;nCon)vevpld!o{Xggot,)irioe.vp.Y.nae.endcist.tfti{wvwsIae.ataiimeipemnwcfrargomreosaveaagrg,neCwr)garnlege(doptesCvsteti)ino.sIoae.t.m)afrs)dns;v.vmtitesfWavae{eg.t,iolaldl,sFgruluiyelp)leuea)ttir)de)t;rRpe;.)euo(vl{letvPa{y)airy);teoe;iwproessnr.)(Cc)voainn{efvwiaegsr.WCfoolrnilfpdi).g;c.adnevgarseIedss)););

そして、先のZoomControls.jsにおいて、immediately: trueを追加します。

h a n }d lcu/}eop/)Zndzrxyi;osazoo::mottootmmeomavveI{Vm:tiidni:ieeiCwevowwaliwvineetinpie:rrecdoew..lkorwevxyy(wteri:)I(r.edw.zwt{,izoe11rnoor..uudom.11epomr,,,dwoaIttd1ae,2.tV,1ii{,oenwp+or5t,,viewer}=this.props;

結果、以下のような挙動になります。

https://youtu.be/qfGo-WCQZoQ

以前の挙動に比べて、拡大や回転が即座に行われるようになりました。

拡大や回転を即座に行いたい理由

現在、複数のウインドウで拡大・縮小・回転処理を同期するプラグインを作成しています。

この開発において、拡大・縮小・回転処理を即座に行わないと、うまく同期ができないケースがありました。

今回の修正では十分に考慮できていない点があるかと思いますが、いずれプルリクエストなどできればと思います。

まとめ

Mirador 4のプラグイン開発にあたり、参考になりましたら幸いです。