From 8887b9eb992c524ca7506651dea71a374dc3f63c Mon Sep 17 00:00:00 2001 From: Artem Pavlenko Date: Tue, 7 Aug 2007 15:09:41 +0000 Subject: [PATCH] Mapnik Viewer - initial import --- demo/viewer/about_dialog.cpp | 28 ++ demo/viewer/about_dialog.hpp | 38 +++ demo/viewer/forms/about.ui | 107 +++++++ demo/viewer/forms/info.ui | 83 ++++++ demo/viewer/images/about.png | Bin 0 -> 3410 bytes demo/viewer/images/canada_map.png | Bin 0 -> 178721 bytes demo/viewer/images/down.png | Bin 0 -> 3899 bytes demo/viewer/images/export.png | Bin 0 -> 1596 bytes demo/viewer/images/filter.png | Bin 0 -> 689 bytes demo/viewer/images/globe.png | Bin 0 -> 971 bytes demo/viewer/images/globe_bw.png | Bin 0 -> 931 bytes demo/viewer/images/help.png | Bin 0 -> 2671 bytes demo/viewer/images/home.png | Bin 0 -> 3719 bytes demo/viewer/images/info.png | Bin 0 -> 2328 bytes demo/viewer/images/left.png | Bin 0 -> 3862 bytes demo/viewer/images/mapnik.png | Bin 0 -> 4316 bytes demo/viewer/images/pan.png | Bin 0 -> 2536 bytes demo/viewer/images/print.png | Bin 0 -> 2504 bytes demo/viewer/images/right.png | Bin 0 -> 3919 bytes demo/viewer/images/style.png | Bin 0 -> 646 bytes demo/viewer/images/up.png | Bin 0 -> 3893 bytes demo/viewer/images/zoombox.png | Bin 0 -> 2901 bytes demo/viewer/images/zoomin.png | Bin 0 -> 2420 bytes demo/viewer/info_dialog.cpp | 40 +++ demo/viewer/info_dialog.hpp | 38 +++ demo/viewer/layerdelegate.cpp | 55 ++++ demo/viewer/layerdelegate.hpp | 44 +++ demo/viewer/layerlistmodel.cpp | 113 ++++++++ demo/viewer/layerlistmodel.hpp | 49 ++++ demo/viewer/layerwidget.cpp | 61 ++++ demo/viewer/layerwidget.hpp | 49 ++++ demo/viewer/main.cpp | 69 +++++ demo/viewer/mainwindow.cpp | 364 ++++++++++++++++++++++++ demo/viewer/mainwindow.hpp | 115 ++++++++ demo/viewer/mapnik_viewer.qrc | 20 ++ demo/viewer/mapwidget.cpp | 452 ++++++++++++++++++++++++++++++ demo/viewer/mapwidget.hpp | 91 ++++++ demo/viewer/styles_model.cpp | 268 ++++++++++++++++++ demo/viewer/styles_model.hpp | 46 +++ demo/viewer/viewer.pro | 42 +++ 40 files changed, 2172 insertions(+) create mode 100644 demo/viewer/about_dialog.cpp create mode 100644 demo/viewer/about_dialog.hpp create mode 100644 demo/viewer/forms/about.ui create mode 100644 demo/viewer/forms/info.ui create mode 100755 demo/viewer/images/about.png create mode 100644 demo/viewer/images/canada_map.png create mode 100755 demo/viewer/images/down.png create mode 100644 demo/viewer/images/export.png create mode 100644 demo/viewer/images/filter.png create mode 100644 demo/viewer/images/globe.png create mode 100644 demo/viewer/images/globe_bw.png create mode 100644 demo/viewer/images/help.png create mode 100755 demo/viewer/images/home.png create mode 100644 demo/viewer/images/info.png create mode 100644 demo/viewer/images/left.png create mode 100644 demo/viewer/images/mapnik.png create mode 100644 demo/viewer/images/pan.png create mode 100644 demo/viewer/images/print.png create mode 100755 demo/viewer/images/right.png create mode 100644 demo/viewer/images/style.png create mode 100755 demo/viewer/images/up.png create mode 100644 demo/viewer/images/zoombox.png create mode 100644 demo/viewer/images/zoomin.png create mode 100644 demo/viewer/info_dialog.cpp create mode 100644 demo/viewer/info_dialog.hpp create mode 100644 demo/viewer/layerdelegate.cpp create mode 100644 demo/viewer/layerdelegate.hpp create mode 100644 demo/viewer/layerlistmodel.cpp create mode 100644 demo/viewer/layerlistmodel.hpp create mode 100644 demo/viewer/layerwidget.cpp create mode 100644 demo/viewer/layerwidget.hpp create mode 100644 demo/viewer/main.cpp create mode 100644 demo/viewer/mainwindow.cpp create mode 100644 demo/viewer/mainwindow.hpp create mode 100644 demo/viewer/mapnik_viewer.qrc create mode 100644 demo/viewer/mapwidget.cpp create mode 100644 demo/viewer/mapwidget.hpp create mode 100644 demo/viewer/styles_model.cpp create mode 100644 demo/viewer/styles_model.hpp create mode 100644 demo/viewer/viewer.pro diff --git a/demo/viewer/about_dialog.cpp b/demo/viewer/about_dialog.cpp new file mode 100644 index 000000000..3594c63e1 --- /dev/null +++ b/demo/viewer/about_dialog.cpp @@ -0,0 +1,28 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#include "about_dialog.hpp" + + +about_dialog::about_dialog(QWidget *parent) + : QDialog(parent) +{ + ui.setupUi(this); +} diff --git a/demo/viewer/about_dialog.hpp b/demo/viewer/about_dialog.hpp new file mode 100644 index 000000000..13d71dda2 --- /dev/null +++ b/demo/viewer/about_dialog.hpp @@ -0,0 +1,38 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + + +#if !defined ABOUT_DIALOG_HPP +#define ABOUT_DIALOG_HPP + +#include "ui_about.h" +#include + +class about_dialog : public QDialog +{ + Q_OBJECT +public: + about_dialog(QWidget * parent = 0); +private: + Ui::Dialog ui; +}; + + +#endif //ABOUT_DIALOG_HPP diff --git a/demo/viewer/forms/about.ui b/demo/viewer/forms/about.ui new file mode 100644 index 000000000..57a2b4e87 --- /dev/null +++ b/demo/viewer/forms/about.ui @@ -0,0 +1,107 @@ + + + + + Dialog + + + + 0 + 0 + 484 + 558 + + + + + 484 + 558 + + + + + 484 + 585 + + + + About + + + + + 10 + 20 + 461 + 351 + + + + + + + Qt::RichText + + + :/images/canada_map.png + + + + + + 190 + 500 + 87 + 32 + + + + OK + + + + + + 20 + 380 + 441 + 128 + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Bitstream Vera Sans; font-size:11pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This is a simple viewer for testing new features and fixing bugs. For more information visit http://mapnik.org</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Copyright © 2006 Artem Pavlenko</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> </p></body></html> + + + Qt::RichText + + + Qt::AlignCenter + + + true + + + + + + + + + + okButton + clicked() + Dialog + accept() + + + 278 + 253 + + + 96 + 254 + + + + + diff --git a/demo/viewer/forms/info.ui b/demo/viewer/forms/info.ui new file mode 100644 index 000000000..a3068b5af --- /dev/null +++ b/demo/viewer/forms/info.ui @@ -0,0 +1,83 @@ + + InfoDialog + + + + 0 + 0 + 277 + 249 + + + + Feature Info + + + + + 10 + 10 + 258 + 226 + + + + + + + + + + Qt::Horizontal + + + + 61 + 20 + + + + + + + + OK + + + + + + + Qt::Horizontal + + + + 71 + 20 + + + + + + + + + + + pushButton + clicked() + InfoDialog + close() + + + 216 + 408 + + + 195 + 220 + + + + + diff --git a/demo/viewer/images/about.png b/demo/viewer/images/about.png new file mode 100755 index 0000000000000000000000000000000000000000..61c96a2b934143248b21499421f3eb395708de91 GIT binary patch literal 3410 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 literal 0 HcmV?d00001 diff --git a/demo/viewer/images/canada_map.png b/demo/viewer/images/canada_map.png new file mode 100644 index 0000000000000000000000000000000000000000..dc87c9d4a79daa1d91c7519093aba226504868f2 GIT binary patch literal 178721 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%0DwaV1Zda^ybGE2SsG0eDF8{c&h$ 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

f{7`L@bjO`>Y7jrBm)|a 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

&%xf0K zH|Lz#?t60vd?OniR}J-fBhc^6bpV$h=vH2xmjN7iBtyzjy1=MSJ;2jv<;8r{u%E99 zGgV*=uSK@CyZITD&iE4#^F=S`l(8`Zo9=xNt}^2lirWz@{R=Z=wBXK6dvWnUyK<3v z3NWNVn{<}I=gFm|g2+4*2Um)Hd%uwm)}@;?)zfjcEc1k(glF0jB`0e5maWuWy?q9D zL<0pSo23Rb4=qyK1t>fTsn;e@%o$GQ6dfu5Mq%M<>v^EsueP)=?=+IksD1=fw=WMT z&?4}?d@&r0ODjieHKV|VoRM>3DW8Be_*=8=rSaR}%q+k5(1&I+Y3(N#yIvWNroCOs zqlTcQpz1hs`XNTb?cr@gj#ibIsdwX(rt`Gr!|!kReg0-WXq)lGn>+bLH+}RMDOULy zH}2Ds{4*tLa?sSIdU4?i@)JoMtIO3DjeG80VcI)FZUq zH5%bozPgkaqwQ_zJIFF|iPT6A*frLq4^`L|7GGCQQ%V2!6Bebqt-eLd)!|W6f!WZE zKK0rKXePIo!L;FGgKj^o9~W3YDvOw&zUII-;~Swa~iarp2yu!j7vE#>=ZjQ1&( zpzrk?k=r8jJ8lSm^Q$~9islK#s}cK{OxJF= zmt5mGDh8doxKgI^scTIC3COoBEq&$G8EC&KR3rEywU+7wjozW5ugJg05LudbcwX`X z+6xD6DdlV-8xm)$!CU~xUfckpiz;?vE?!}l7w(6s)M8HSfawh9wN^7T+xWs|hKxuX(=dGiULG1Fp{#i z-fecvuGBs?x3%3LO5*`g=w;xA>G_HxwQSj(`}(2%KjS?r1RV3Agyeieo)sCZ|~bb)Lp4Ek|ofm#Yqzl@Rye# zxchgTTF5l;WX^^>F~h1!bAQw8+oi>R=i?PEl7f7lr!Qi64P(@^;P@2NUAICz6g5kR zk}Ago%VPz_KWjs&i_xj<#L*jb+Z8RBlveBR4uq6__$m=A=EU2vjw_*nE%}k!`ZglGJ!-f+$@@j;t z%H)ttjk;lmzw-1D1|N^)7w(|%o?*9Vu)T9hJ+iaOR6RXCTwL6Qjt6`+q`*9?s8V`* zD`!o%k<#AYAA)5Bmb-9~Nsa1onY}SpHl`rGZ+J_J_^hajT#^62RNdh^YvCqE(ealRb}EF z@+sQdI51JJ9eg;8yj@RBR7HM*4t)_Wayd`Qyu)rtR>r4HV|qvKQU0)bUX=1$2}b^t zP-%>I`0=u_1H7yrZ{_8|19IDY2LjWpqxmO+B=+P`ps8T^E^T3H>8~2rJ4qLBZ|+#L zR~)Co1eq zs+%C0OujQ9=8N9l{6p$)o&QyC&~gdDY8#*q_n#~2-kuGfv@;p7$)1|MBS%pgN5A;j z4xG_CfZ^54SYhY&ec%uIl8I>-xPCa=+P+m(OcU{wsZ$kC)<#C`lx4xYh6R#9kocHY z7_FT9Il`r}K#kW)~72dkyWM|vKzreuq!A-V6j`~KnCMK-VWa5|6e zq42Y;1rLyqDxG2+vg7DOSzLu;3ZJ$t~oPv8}V-|L?;y zckY`F^bLU*%brH#Vuew=FSosJ+7IJautE6w0VFO5JB0!k=}&Yr+q!3YAI>)A zrjI$u`355Lg7XuGn8rS;7#Lvk*(>a7d;L<8-ldlk$9u066in1F-x1(Ht25i1ILsrE zT17GcqyUQ*f_nBeQ+mKL6RyBmH%h#MTd;QNTEU1oz+Eu&lQeFa5CH=9?GmQmuTO5d zjqHM0Np;QyzjK%%g)$;)J)9B3biyF15Kf|mktHk2&zNBmuN;pu0HtT&m;;?)=p#&x zR>!~(0TP4FeP&5TfD)=#?Hcy_Xefb?1SP1v;6Ok?z!(a4$~yDNtPY4zF^P@>0^PY# z#6d)e2C@PuDKRcqoIR%l324|N$uJj&=6=}SVbr#gbjM=@mlVsH3!R$CCio}1)jY<8 zPpc_G<5Ssm+}qF&<a)P_ZO?jCHk0asg!_LARwA;u8>dpOd)gw_?iWUg`g-zF7$zseS`$< zu0<#GO6h>#jC0deXJ&pcuB$7&%U91QK93l0nuaVjJLxY>s>r)iwWyp;9FI8fJY4dP zIdRD6!eiEd)^O%*e*5m7bR3+iAJPK{^3Hdax1h8+lEs%vg^DEoU%3nT&6c5|MJg%| zN1keaq9SC^sA8mn$cGbn_dhf!Ws5A^)GydIfZQMOr~gZEnw@oZbRzTqr14k+ANqfQ zLjF}RR1&p*YU-V|s=1DZj+vt3AvmgBTwUc7!4fnSU9 zb<}5NqSe$wkHV?kW$g~mLW#mtq}o%pQLrlQCql&b%zJsNMt5!Vj;qAt%~%c= zJ_dAnA7&H<6WA*J!@FRgnAzEnrlv3UXWn{zyeO_&ve&q|dAgi}O)m7V<3yn2CWcmSvQSaj z^CYL&E++Khb?5s_!1*np)zixW#SKL9kT&oN1#N^dR+!|d&YZHB>-(4r<^Io2O_Bd z{Ps|TJ6m>&N=un*=kGxse-zF)XwHoQf%)xhP__CEnCr+;>&+rJ%(yDrKlbP%Fo{R;mK&Cig6P$Y|K5fYJ@`r(TkZExFFlpi06<_w;Eew*~M zisW`<_49omtG(}mMEQU-;`?LI8fqlBtf`7rdVd%HhE#U7H+s6dGn2|}#0EkWoi*@6 z#+sAIyJO`v?yog96L$QdVF)S-K3zR>w_ET+5O3-C`pS>hTz zh-2`OSeTg+gB;W_d^q5xOf`1(x(+KgRkluMf=_e9^K~8E*SmK$LI1~wG0OdYJ`PgQ zPhsWbV1-_I<#WRibx*C~rbIS3iLzC*g%qVU&yj{I@yb(f`D{hif$$svs)uE85R8|b zm4ORcH!+WeXPd`MB#=afW_{#%F!;E7fWfL|<){$<=ns_Y(``{JA{yE)IgWH^%XVp5=cSDp3$V->1aWop1SM zikdsPCF1kg^)t!xacu1RB9i>;3kM9Q%C-+)gjdUtxeL82e`fyRph4BH*sr;m_-=q4 zVY~}vx&jKst@l{3CyY~KX!)%xMPoV~qp3OpIzFT&A9EC9KfCU5SiEPZMf0TK6^`f$ zMKL214{mQbp7hlkKi!EFY99|MBuPw9@hziVMO}*8dd!Fy+B!PU8#})#677SJk<1@t7tS`wuHT{jJ zALta%rD=3SWwpbUHBTmAG(*Zmif|VBz=CP#wz!Xs_-AY&<2i7HMPIn&J+B{uP7qG*cf^*R{T%c(7zay!gee7 z10(=BD=Szk6rjV3b}5J(ta__K@S;So9)dEscNq$bimE_<@Sp7rXnDQUphI2X9!}ro z#s99VOn_adTLI!r;EgEYxWY>`B#7ml0lq~M*JsDSuUN}UN*B00Rag4PTN3MIw`swf zpNy#M;h5Q!FI~(5KmL4YGyq&UFQ)J-tqq)>Nu?^=a@}53l`z5)EpsN8Djp&1TedX32 zEvdh72c^sG)z_DL506xi^>8}5y1v&64jjRIsE_ ztQI--&y3GQ*cI6v0^@@_cg%Y|p2lxWWL4%zSBOv6k-FIniYLF2Q^boO@e7> zmC2rB*X_!$9|W#6acGoZo%Vp{q&x721$wKC-N~J)67_j>!i6Mt(A^o_+%)%_Jq6!F zCuEm`Z35eo@var#n3Zq`8b)NXPR=2)Kh~S}Mgd(G@G*Q?!w#s{X7$dGdwt6oc=9Lc ziT8uYM2u;;m=^hL7qyphz5#)C*kFyti*eE%y@VZq-BujP6GaUra6!xf(JVVr zL`lHF8816t_txcfz)hn*E=FF`Y()ljZG3~lVOlFyk>C!01&vWtL&XOd_bIK2;ajsDA`Omk1#t)gru5r)3@ z!7jFWh|AtUL*(VlFY4f9_bw+TG#x$5R;y~;dA#2|7($Tl>5@y>ufN{5R}iN3P*kjH zMh)LWdMYREJzTq`$AB1!AM=UF`&+e{ci3E&in!|UQ<~FDVUD!!$d%$34l^bd_U|+; zG{waoZt7SQTmO-!q?nf3IuT=pZxd8G@Lu?T$zv3#_tXgq+IjjS+VU$y)6$QKoTfH1 z#f!a%*r+~2?zB&2g#E)&eVn{(z3ye>iirh_xOl2^*eK(91M; zvOZqLvN8`YjQw+0gWRW-?>r5=IN!w!lTHn@#nyZpc}qv>C_ltK2*9`pd}$c^Uj~QU zSr9*&e36bD(W$-U!COPde8*XEdodfp=YQW52A;S6_xSho8+~y+7`S&ie2RC=$NpDC zJfp3^yZYtJmslS+K*meyUo8aO#aGoD?}DRfxbV*ZPAc!4OjUtj0$yyaaya5JU~|Or zZzteUR`d{raw)WtwEY@onhyt-qLU_1@)a$2HU(R3Ng%OAa~mMUueSx9e-vzr`vacQ zcO&rkwe#-BE1B8Zj@)TfQ_cJ&`^GWkh@vex4@bg(&ph^a_w=MC)27~OBpfoe1%GdK zuAQ0xyF5y-6caYJOG^@pS$UG}uJ3Sxyo23RD>TDve?DV?I#GQlmsJ>)7YLqhg?ITk zG}k88=-xaWyYxjzy6b^wxmNKmWfV_wto^i?7uGifvK+?a`tas%X;<+TiLlUX5W!6E zmxzy-wr=lwozoi+{-}?MxFts9QQ^tVIGVEz46tsaJYxJ)->cUO8i0YRkfIk)?xHP6 za27jwjh?(@B-P@gGLcxl_V(DUb%fv1s)YVFy=g$2(bA>CWJ+|D6$|zh-tvWTT+p{Bm0NRbq0%_hw{5#YqZBL8kHG4ei$9KiE-^ImZ08Qx6h^J}Iai z4fQB|5h{4Y=ZK0lUh}71tO~_!BQT6XL!%xWE??za4joO^$F^Mfb7#6KGPBK z52S?icKkXimZMq2oC=`s4+Lsz>guAP79;r)3s?h=r179YfhJ%45kukr3X>n~5G4-K zYJQ16{KYOS8wIm)+4{}A)YK;D+r#j}wu>1(@P#_wdl29M=MaZN>HGVG(0__lHk}$N z96?2O78c9GuU{*`LHavaQf`?K6ADzh1IrY+$-CbEEdj;1f25)&T_F1FT5|$T2@MT= z#2iMcEZqiHY7zhQ6t;00x}a{S(nabMuOqVMkH ztMzg6#<+!?u04gL@;a{9nctu1ticDh@X1hiIAFL%O1|-0yRpS2_jf^hLca-u zsH0_z`W^`-=JuYc;l%5IckdQ+rI6VeCpSd@kkwFlVE4^4M{Q1aJhh@; z;M?2OZ=s%loJ<8A6Liw%U(ToLq!DkUcx?4VjgHr&Lbiyxm}p}fFje6 z>vE|2m#_ZAb)EHRR@(?E8lBxsir`L9!?{*BOaH8VJ8mSa5>ejdLf~R2rl^i5N8lC3 zhX8pR+Bi5!!)RG}!Yr&_i>XcGNv}KCbmKBe1q=OY^Czn}whp1wjetTe6yJPF3SM&$ zoVOzg&s9YlPoQy1M25swF%VQj#9*}995Ae#Ni{nnrFgvPwb06xW`0bn9?swbo#h=Y z5Ne94Dy+6>naiElB^gmj;3oYjKtmmd<`9%~f0^20n|&M`n^TJaL=}OG$b>i?aUJy*^(EYN?T^U+2|x3O_*+wKgS&UF5+8j-ak;F*OO&Nu_9y)!2bM z8@1uvx6=?bYg2vL!s==uE?LM5Kx*jyHQKn#UBYnwCn3-?BDhgGF1R|82_3 zmve|*OQm&%M8sf6RCSR{V3aszLawc$B_y~wGVe=j=E>_ey}tHadOV@?IbZR~&KdH$ z*;J7>-@PZ&=sg1g1KzI}{hg<_)AR;e13mjbLm>=)}?8_ zPw}1t&2=8aS>R0#R#>i7p~dn4YXM4gZfX42fxl2gPtT@1wmg@ev~_dQZ71H7PWkf!C;r>m+)EY@_ySI2VY#Fp0JJfU#I61my{H~l#7E8e;wp^cosJwQ z)S-PHB1|_Uu_V4FlWD_2Qf1RhlNf!@ulIq>uzT!$dt{;2jUhDFT0K@5Q`X}scVVG+ zdnhZ{2N{X|_ZgC;39*Egv6IHO;0^or;oK|9pndvvng$qRamMw)_!tQ*39!UuKL1vw zQ-mrTK(&79A{YxcV{0boU=k!~sxCYqeNKrfwv_pN*$sjMjlf)lrxXdl6cG>No99%^ zTkUa&CVvHq*75NZUiiwCYQ(u{1St*=N_Uy8pLt9@hK$)IhGVOm;cU9S3|LcBmA40y zBkE%JzdFqd@(N?fmL(VYP~JBer|^11m$T`f2XtlK-&vRrl>daoXxME zOC#7H1{L(&36p(~m|LKrm7^iUB3x>qL_=)UNrN%?JhaaDz?M~+Kd``&^)d`~5NPF| zhWsf16nZC9Jh%R-v@}d`o)Qm@<_uO`()=q5w6>6Q3a#B5Nk%d|a>Ce$D73?9GM6*7 z^v=1@Y6aO7(;QkH*Xg0a++8nM3;X%zx1;b(KFOu}Mw7vYW$;QCFiueZ4yHyEhebzD zj9Yia!FD)29eJP1ev(kddulVP{(ZU&5n5hBg}&!cr^3muI1dnO6v)fF$dvp?SowIK zfWmlUAK?sd#0F6~4N?%UU^p&OkeMoBRH1c+z5k4Hr)q^dG6FBjSJf8ar|F8ZGf2wilMasg$BbY<>yd;4w(LY>&fenzwIp6`IY=aSEA z?MFXvT-9E@xpU^q?AG-I4o{zPoRM)WGwlC!uvc$+cd6Fq-8GSYxl(N1W*bb)xw#ef z>h{QbZho7GNL%%HzN4L%-)yb_rvWVnr5I8+B8=*Ggq9Dz&F0R;u|Nle!SE1NJ-Br= z+ZZ=She^)xM=aj8N&n&Y;;_#C(NVn$%W^->aa0&y`EbSIkKz#U=4$OR6oNQCM#`&f z{nAJD9WWy_ljHixq6yBB5Q4>}W=n&Ofoz>bh?kCwOC0a|U~$l1FJt@=69m96ABX6- zeY`P1BPzpKcMA!N+|&5-hAjwcnPHme=>0;U95 zRH(AFQF&5997D=6NsmG7a-<`(LBQ@U|>IrWRN!CVgVf`n;l-QXT49TYhc+ z)ZR4=f(Uq`sfx3fFc7Aug!Q_wm{Fj3TK2)Sio*1kt0|&*y%2TVXXkq@dowadF6r@$ zqSQ=WKj!XKI1RcTR+?Q`gHocnzqvGj_c7W?IcymiEcEt86o=s8JcF9Tw+h%kWaWdv-FeXJcMhH+5Sn({-mO0I)RHIkO+MmSX7c(gnE${w zWdXa;#Ml&E$s>?jN+-o!r~P>5*Vgv$?5kyrv&`||DRF~CQ6083JA&exfwZ!wIx#JK z!fic=?w~@);DTN7FNL6JQT=Mpm-s(_YCh-txw+6(;G;_+@3kn?kg@p*|D;e`tZS(olw&d#c=z8Fdq?5VR`F8KJ^dp!!OKKa`V^(Ef7b#VUJuhdm z*bjN;d|Td8Qg46Fh$l@G2tbLETq=I$$VN>zc1^1)Qk_9s@hxg@ zA0fS*?xZ=H^m9l`=nPWf~gEcoEV77 z+UH-(+9%(N{JTGYV&q?vnnP5%%B845J%uOT;(KvB6eUIGSXS{?e)QLYo_4Xg#y?&d z5(`HaBS%%BN=y^kQ^*P)wRBS{TpcRp5K<~q;2j1-mdyS6bK7>-@!DWk_PxQ8=sJD4 z1l0MuNfd1|lkq+1;wZc!U;h2y~f5{`$?msS13*`RbLcY`yvyA>zX8Zr4wma7Phg&k@EYA z*1n_2AO4x<)cUfAU%GJW+Mu4o3E~7`}^7&g&OIu zDz(rYvwyhX6V(M_Ea+aX$!igKLZw?KNAnEy79g$uki1Lb@H+5uu>yj9Px8tJ6FSBy zZanys?eYM+TJ5AIXEjCRN2-2fZ8a6Vz`IXa_RbS1aaQi6S5s=RBIdc^AAanThwzzDqGZ(A|!HgjEa}UzbGU&qH%X)UMdU*Qy3GQ&LO~~zsOjnC6(EK&{B+KlK(Ow=3Z$PRboLn{=7_z0Mak{@tuEc)NTcN^SC$OR zY@FPUx->@T?Ktry;P8^V4@ryzNYwM|7?*+$$eb9_F~<0GU+33)IWwptj5$G)Fjs5D zw_-8z&~*`WR5$g#vdmgTQuPxMi`)R$Y#>vmNA2p3CIpr+Y3ZqVk9TE_paJ7CN|8~( zr?Fd?GK;?jirAoq(d(4a117~6^!;NBma|mm>uPGO-wS=?49;N;e-bEF^an`p0a$%H zwGyNM;}eD1z)os&92-UmH9Y=Q1s_tWKk-m;G1>m1)wYp{?pjk@<2~xItic!szX}<^ zByA+GbWzG;#3U`fz7JB=a~}e@j!uz+*)Ol02WGeJ$+;0FRpAoe${4H>F6z;7?}_Db z(9aSV7M|o`@akZ>N?<2(-3(iw^~gEznKxatf9;l*sxsARPf zUbV1mQswKo=8W`cU~hX~8#2hkM#;j&*yl_*RI(V6b!KXTC4W%&u5WKItwJ~~ZL9aD z>7V|?xRzUj>O7(IJ9M<6$NhY|((mS*V-(DrbQf1GHV+BHe!zMMbScUy z@Bgj-yK^(Jw+BK?NB{G5PiWfk4fLn=nq1x+8X5wnB=`G)>=l0& zU9V6=3(&3w4L{Mg2iXMdjY;>{SVGjg2x2+pQ++>F{@m8@V=4|~V#c`t{0tnt^P67T zQgJQMPTS_cZCuLEl)`>z==Xc!MQ?-0<@9vR3*5T}gA2lsSSb)hSoOQVfA{p%Sr8fL zfWBF_PoIhiEnGSzsD7TvvSrjbr#)aLVMNZYwtd--9~eRQBTCZ{&qrcw@kl1|v*4o2 zJ?3mM;Tf0iI==J|=M3~_;h+y7Y|g@&9Xp7LuI1(R zvVJzI&?uc0@M?wAmN)zQY!HZznwy2l0Ye7Wn2`h{9GEw6pL$|Z2$|RGMnxmL1xHAm z(YuHA7m5RE4XDT~DJcQeB`1-)pzbpJ?C&4FNOJ0*`q!MMrl*0?DwS@C;gNfbDqgLn zGSBv-iZi83_pE_c*x(>GBiVPMT{O0`NdL6qe&{*j z`WSbR`gyF5X=17$M@g__4n)LDvI=cb-VyEQDXzcr*h^2rSTnq!0@@4y6-i~baSyE; zo()wzMWq@r;iwYj((rUreZ10@di`|bV<{BuqRbZN?2#-OItFqNle9v)oc@0))7s^} zu6v8Owz33xlzFEkys(<6!*(J5j+_9gK*rK}`@*=946x*-3 zA`?iDqxQWoocHd0g8s34dU|?1TTxN*HfZtC@SABb&`|+jbutWO*-u2LyG8q1`j2zh zXt=BXclH=X;D?&Jy53+|Tg%Ar0!*pm(kn#B3CXq^9#4FIE8wuCZD@!EMLc}~^Qt@+ zLyRo{L(^GCMcH;ycz~fnKnED5yOmVB2kB5ix{)sF?vM@vX#}aETT1FB1nH6%kdiKG z_-=lD?=RN7mMFvX-1j;A?0p?J?~|BUX4(+QYIu5Fu$FY`d`;yMR>zNvlfLP!yL6_M;M%>-#}BXgh60hn@!mN?p`vtXo+M`< z;8c-Ke(s%tNy>u68Ge@(9Er2aUN$wJ#DcUMT{(^9{>q%VDexRmJH^h)i)TEKEmSMC zKq~L_YgZmB&FQ58v{M$O>W2Cg+g_P96YFMjb$Me4*;}2F;hTlL(@r_N4sM!tx7!Nu zHhw@qEe)&o+j&v`T0Q(G{Dr@ihKX&gKT*^$fZi#ST9XDxJarOEn4I#=+rL znxafTk))D_StKOAuz~j#m5A5mw#yxGjxGnF+(t!VoQ(GMg2Z%(FS zmzMZle|E1WreUkPuZ9%uOh=&_?1_4 z&*OAI{V61QF<6t=VPWp#@dwxuRcZ}eX5VvHaXd17A0|Q~99{ffmZI!&UrdU^zI@Fj zZ~6BzbQBrFZ_I~Hvx{7r{saQ98@59Q!MITbZnyCo__MyQ=vwt;Nb?}tS^>gaCkUd*z-7L zi0u8n(GqxUL3Z}TY)uacDtZHd3td7#@YMSQa|_s^5LLrYCFEucj5F0k6u!Qi>pjP zUW0$D=%1z<(IT(!FS4YA`_KOE@+jR}m0phZg*+*8#Q&$y?@&`5BzAyo8wISQ-^?}E zZaKcB^Kpjfe;BJqVpPCdmQ4jxTr5=OY#LSep7*u2iYm_?4dQh&{UY;dU~=SUUm1^s z{#fGYGH;xO=U-@p(>g@Exu-iKYn;`G}MixeW;BDD1{goETQ zeHU7>rn>sgDrq}h)aL?BAi-RyNGYQizJ-E@DSGmg2gC@Ln_Wu_OY~`2OwGZ41w$Y< zeX=)Qmr&Xil#5OZ0A(I5vIfp*+JycHB0BIgpg_R?4<$7K2F@)oyb_2d1K;{}PMP8N zQ!YrXA*f)wLUDa@js;>*ylw|mUo5x#`^(9JSmfIxW&O7ILp*FbepqL$5ft(%V8JK?Q3%NN^=;?8rT*NQ2^B2?g`OtK}vc!sAW6mq2pZ6}A z;a9eFyHaALqxxuO(c9PSO^szz^|{CKGavj}MjO}{2y`C35J3+pJ_cPBsWprHy1iw( zrgJS|Ya{CPNm*SGx-D)J>FPZRngdXI^Z{;5_b)6z z7CSKhK2DfqB=G;jRkgQE@p>rc@2*~;$x{XoDsIl{FvjX%D&R)Q7{Sy-tEV? zOm;%9j>_qY1mZd6mCAw z@j4Rg)s&r4QNoX4+HUu#colBjkK9!HNuZzo>8 zQ>#Eb!etQ5QtXgkuoFnW(>C3-MznXLZ)&9mi^&P1XNfguNMORsE9s%I=_Z0sk3p4; z6Y;ppOnCo_P&(MwCI5$Fht=$Hv^rhFlg?d@%F z3O(5EepQ<~J3Bj(AE>ju(>Md4EC}BL=Sp;C)_59lkNN}G!0^97G)(SIlF{4mz_8eP zcZ<2-=8g@a=HcNH5NN9UExufL8jOh>926w22I8(*kX%5l00Um1KMCOuzVafSPLldk zLgo1au~Q^`(2lo^Di@yT-w$3Tk7N!oG7JzbAKY8*R5xFR{YdIf_^gSs>{}A}#&gDrelQ z9PdT8Lwh?sg#Y?!Et7Utc=Kp0Q&5gjV=YZCH2+i7wHn0d`tjK)m_wETVrgyKHRNLY z1G}=1B2`3C;9II{;NxescofomzZTO!!N~y?j{i|E^Yo5XMRnHohU4CBI+?9mMzRhk zJ@*93=p_g5%f>+*Jc%myBkbySfr~F=1#g>o<`aN_7Mw@8K}PtVlIRC6rq8rsS6v1YjrIz(1ZE}*nQd89k@c^ zVM=hZY;)ln`drbmnID!K3uO6IS>o|y4B|03A0AFnY$#E%f{oSdkLqj)3JO7|xEA5-;i zFgi}WWNFc9H>r=!e51e1EV4EwKB;VH7*7)ZC0nZ$0 zUe5VruR)~q#_t{=9=6WB+JV8@YNBwl0WIjbm0INRcN;L9XlR`6w;bG^CaIVaPdw5C zbtS;d(nqe68v1a7Y(8{dz~Gzz$|~^EVxXgQ02icCyF0$7Kk96)e8iYCfMEoBV3cc_#*h|Pi zD{>74>qJ1ZZLt2s`oQou1|Hmz=U(xZ5p>FU%)7N7pTg=7m)Z=z3=F}j1b6;Zd{jGy z;3;%$u=G4absPDPR1&k#;_^Kn3ex{?$#5ZPAwDJ6m>HFYD1k!aadd9oNh-9WbbZ|O zS=q?Dw+Fl#Xbbi)nT8?T4Tx&_qios1)AiYCTLGjo^!bCTCn9GQrxPa~b2 zoU{z@zB}s6nVgvc5!cMj-Ld@FgEhZ)DB0-gFWyfTz$Ns*>kT+91fZm)%U)luDzJ1G z1PZ>AHp}5ypSi!F{Fcp&f%3p6V^VJQUeva*QaIO|p3H=&+iiF({d#qzm)vcFpJzz{ zG1_cOF^LK%HrI^TR$GCl5u2-NmV4P4I3{{D^nWfzg|v!l6}9+fw|-S`xEjpxEf~7v z(ReP`bT_sdwDsdDP4_j_&HRtG`=x+^n#Qd47k`CBxe+$EHuJ5~FV)r61j2_MNh<6@ z&TjKShXBn4MgaTZUvT$7INcAs2}+Uasj256aH*2<5+5?k_sZz-cPFs=N0D%NZKPSi zdzY7%mc}px%F4<>;1@_Zu6uL!m-(-&qeJd27T!ho2W0T*EaKIm)^nk7h$r*GJ2f;b0!OMg$Cl*;Y1ln>6X(C|DgWzU7Jv4U1jrI0oh^l}eRsS6E$ z-sy%-u!~j%5(z>MoUEc)ndwP00sNsc=`{{ssUIBz%kbwpc zt%5PDui#^9Zhj^a529?Mmy-a)UOBx{URGvnX?X!+W!YYTOMrdWh`(v~ zW05eW%GGu_*V{d4bMNT>^Z0}>FS>MT`@8%7it&h^a7fbeP9x+e`|Gu`j7 zRr;``XHISO$ILQ#l)@Je)@+E~5jrFnUV@6y_>?hKA)7Y}Od!#xE)WTDpxtlf$9-_F zJa`ZO?eg;SP>Ec8609&#%i%%-0un!c`nt_BD$qhLd;#(}a&o@v>w=f=9v;jiQ6(iM zAV~$R<%h0!dKxL-33FjYux?;}Kr*9_pyodQy5CJ8md<4wMlT^aWFJ%G#sepU{vhMx z6=XG8Q^CY|?|J+o^vLuwIGoJ?SDpFBX^Zzb1yRd+W5+iUKKwpMcp_a_<@IshHV{J0 zxt=!9#bE{A?ik)@gJp-z5`tN=<~K5Q>;EE9LtgSWxKc=&us&N5oxmF zzWOv^C>6CxK}k72s+yCO#ADnQl9@@~IDgwqb`MfgG@MvHvM@SoxF#_o1)*j{0}=en zrjB@0A8Z6K76(bS$7<0F-?sZUHa1?g-z1KsJCeWkIT~;EqsVhBgh(xaFCh#;g+QR5 z!b|PpuwKcgvA$gTMj_eA$SJQcL_nO-rRmiw0h>x04BC20al7W3=+ z%WvZ{BPFcw;%E8!86;Iq%Bbr-FG&b+Q6LhkxL9G)%}@oNfP5HML$B6VmRPiyl_bn?ysfV-7?5Jt-}DPZ+b{U~UU`<;MGFLshF<$@Xz9|0eKffY^47vbD;hTH zi^W{z@eV7zZTj%~vV@fsM=B}|Q6Z#LiOR`BWR4uc`zV}AY2fGE+Z$q7@o0D?$C5W) zU89q$-(;HT!gX#J`K%>R5*m0SOhs(}-Tc3Jn+9(hEF9hmMuprlOWtP=RiTUa?%*>M z51>R~m$#LauyAvaZ=U?9vE_XRGBj`BBre*=O<8lWu*fM!ySKDymQJmI=;SPOm6eq> zfg6rIlF1*leF-$a5j4#AxIyZgnjm1x8Q0g%so2;5!*^~@A3&S3vVf02IVp)j?t_(; zHVDVs*px1BzQR;pO#G0ps~>~~HHfI!Mu8Np$6(}3XcTNkh(jRqs>}ZEM_Xg2pveT* z;nWv~et_vD3LNwT&KtY4wVU9xz5>^5P;js!V{P}+T#?Efi#tdG?#1e0CCIn70%5mY z_uhH?%@5EGpi6k1O}#rgIRSZr7@#!TEwy?cEVV%bXr#ja>+KZs9BS$jJ4gBCc5#1y6?hP=77C#fdaWKr zi1_P${mCTa)bX@oQo{=%e&%?rVxtBl0;e#cp`oF6b9JCXEodsy#vNTg#W=ifJXm;Q zTb{%HG1%DgnAh#1*u3|&r96-#!9K$HC^%e%_02>PmBjBz_Wz`p;}`Ok8bMI%=V@I< zg>m9baJd(m_Qe!g1(&uhlGq`L{#*YiGzZ6%GM0_SYu|4S&9wWklTH+U(u`m#kBT`` z97%54LPI=$u=z|^7#o`_$M5PWf$nvK-FzV{cYskYNVq5@{@Opboo^^_ZS6AS9?BAW z_58VJA~2)=Ytq{XIRbFq%&&h)8`=oQBmi%|aysuekaYbo2Ms|v1oVO08jR@vA(5Js zp%N=h6bRwd7z`z8yj$unR`G;SG?p7b(}YLBFU9vPkS#b-(l&6i5PxTIV8FKFvnMXe zF^-I1hj);1NE<+UgZED+d;Lq`2_rJ2UJcYI%!s zHzwhoZaEz`azcK8Odf~60KcHgFZ?JHRY+?!GfEk*J$<>~*zyFth5pkM-W3J!4xb*y z4s^*h)^}3qZ9cO4fQh1BIkTOZ`1ly#>r_!KncAQlLsQTO^J`RhI1U_R7-k$Ehd!Jp zfY8Z;4ceqEkP`BZHF#R=xx(aXiNZ zFWNi(`LGV__$k>$Eniciu$4S!3Gv9dCVb3f1C`b1Q~_0Pq&77WNC#lmNJsB36g{iEpSgi1glWtycOmwb7IrBegW(f@P+^n|{?Hzj4dL;UT?Bl5nc z#r>_VEiep6qGk;Baz@YWOhE(7!Jpv)4u(B)V&bW}ImXBu5*Ad5Ryl^ozP)}J6kV^} zzQD4%xFx6o|2rN)|9Rm63?t!7J||RJ-K;g_Pl*!J(n?t6O-$ZMNUQ+iFD`Fup~;yFEMI^X ztm(@o(#tJ@Lmkjr07?reR+j)~0r(Cjl2NS9?t3>QLI<}yS?){N`1nFDRh)D0-gyMfIF^6Og^Dy!!xhZo(r>OiV96i?yd75CjpzbiqjvUKmL!sRKhV z!x{8PLE?%ogv!9RB?XLoHS~^=?5;Rc5yE7IMh108ewR}NwLSG|Pq#V(ol0)|k@BzB z9VSE3lkBO+f6>R1$Hcn`L%IB9RBTX$;oWj@iI#nKB3QUl@mtlWK`YlOq5*lb3JNxF z67jpSvBc@kbD34_+9>*tY9b52hHzp99j+Bc1i${(x-vyGMjt38E@|{@M4mI+@+)*M zfSif9;hS6{RGdcc7<4coWMN&8MA8lhb<{G;lmUtukgP5*O|5NgYHMppG6eut;AE$= zkL=kq5_YZJ%URG@CnY5vG;L;s44VM>fS8%F`i|=A>Z+=$3VWN0oGj|M)hjg1t`(sj z!HdL#7Zad;Yb-9_0;SL3%cK@_jFxR}}fq6!FL!_UaQYl}gu-xXguvQRtaW6T|Xrt>p1xvh=b z{kab-T?IxqeDQyB+=*bxLYx-jn_u;xqG=hP6A2ogWL65L`KF2+%}97@8?=9KU8(MV zffET)1O*!!J}wn$qb@(S|aSlQ6N1`6T zxV<+fmG7P>bym6Wv8jljsYmdA-h_MiTpD*{cn@Qw7CX>+r3 zXE5c^)NG*tK}_73$PiA=EIc{+Yd4U(e{+)%`d)k3jN5vQN&9zjFlvtXzC+fJDxE6j z77hdNv*g%t4pk;)c#+!?o@^qg-_0+lwZ3M({i>=6_a)DFQIy34r3k#sS zYH6i(@c69#>CbV^z+ptyb?VanFVi>)LRC;csZ@cU-G@Z4jm_RXOzvZqf`=(a#?RUo#_`*@K! zc?zgIF7+*M-n@N$(pQ!GBHzl2%6?gZf%dq6sm;F88`K4Y`5#ZbErXlBe_tue@ylbj z2JY=S7v?bkixsAa*sABTnWy&bajJn%+tu1rp2EKWr1jf$v{h9{mzJ{A(*>Qnppn!1 zEaiok`bygR$0dd+N|%&c8REd6yK8 z&j_J6TSwhRBfTS8FKJlTQ_(Qn@2o}os?*RgK-Cdtejun1TBB$+#<#Ckk0rA#WOYVC zY`NB`6E#13?wgZ>q$Am*A`b1V!O@NPo ze0f7Y*ek7lphxs9%viUszGU6&&PT*~+afjsDN6bKTDm1#KGuoIS1ZxhcDX#TkwgGpJHeQ=wZo>sU@7jq9`_W5%3 z3tbGc_vZV3nH4f0`L3zPi^xXh$-*p$r@YP^yii1`wT@h(s+k%adN1f8xvL7l|0tO7 z6wVI$6`v6r;1qOsH|Q`vF#)L9vmklZ4uZHw-zYbFRr9`orvbCEi^CPrbw4C(z@s;z zBF3RW+szr3$_@hch5(6BF^RZ8a-5E2q%U|26my|Xyk$N_6MZ6F;3$!s%~ zhB>LJ?sqqr;Bm|p^-a&k1J(MEp&=kqSj)=x16H=6`MU?QC9na3Hj{&5bFcB;#vil! zynH?;s}CQJ!IY}b^JJs4{Z5cpYkBk!Nd7se1wTp3zrovdzA%DgV{==+3V2WcO;|WE z7r}5Qh{^+Z!R!7{S{o4v#6=t&9PrJLL1ua%%w2%m0*J40VP;H;QP8>X%{R8_RTLI7 zmezas)6mhO={+HEuxnFZX2L?KncM7+BY(w0D<(r5p!P7G~YnE4*lu(WgT9h3rD=ZqPF_YzV?`>eAen?v$a4KtbF;5i4|{|NIaYdOdKr% z#sD66z2N2>;0hFI{U^H`8i*DxdnV<~T;{)1?+mBzT$}WIdU}2{zAWh*yn2caA++VY zk)Y|aKfLlm$0T^3IoQd`EEtE5iMW$U+?q#i8@8O%3F-X&sKA?u%0%Esk;w1w?#EFh zORe`NCIg8K1la=4?*X7uFw4F>jB3gMJ{TA-7F*1)RW-1JjG*R-S+iz8tLLeD1CPX# zMLlHXvd#^ud_N_Oy(_+i7t@+N3ke-ocYRv@L7X-y4~q~zminv)hmc%ezNWuMa)KTK zI)1K9NiNhdBI4p2c6rp9G{fm9(AczSC{zL~NPP4RHZx2Dm3RPZfe($K@8|&tqhmUA zN4PM!V<5!8ThY&~mI21l zpx^a2Ga%5z#LR5@Ujz|wK6J~T^Np*wI9VDs7DQs^wdfUFpz*re$6j#- zga$4i9e-?h{6exk?Wjq-SX(|2K(a{kkC@8obQn%tX z($ze9$OxhZz>Tk5{$`VFEM6GF|#8bqB)F9D&&h6Yh{pj11zl1*6#P6MRD*yl5~GY(!iq2lpO1sp1Yf`Y=u#g!iPap=8*vhx1+9V+B7=$FYkAvBN{$@1Hs zz-I@rh!;(4*O@_7S}4L$ zx{o?(G|LNywta4n+QEwYHJwe1Y)={QFKs*L{DN_3p5)-S?7jEjV({lUdNJy!}|fCRqs!X zU;&T6DIXEz4xm5*(zcl8Xs$($Z_4IVco1hM!2TTqtyWrs8Y{1&K~vWN6aN|g$DmFl z&Ws`DA|6rEyFWjYfYeaJ{t+b3nqN>Pa{(I(?8+3bp9!DwS)e}h!2>^DIg$;$N=X7Cmi6KTX5>YXOvgl6IxwL7RLO4&D)pyt1EU*_^&ciZR`rn>`Z2nEr>In3Qqe-ES}Rm;tilx_-uh zR9c%XhE^52eesew_Yr`6g9GC9vUU4obr3bsqh1fL)asO@qoXrNN`Vk56$f(rEDI z2cu!5(zDn<{dZV`bPpSh9PtAp@X*TK`>< zkv=!@0u$A;k)vJ194bI|@$$L?Nmt;0Z?u|Vgmlap`ul<+0g!(6TRohB8w8XJ5KeCQ zE5-I@G5W15lwwXhDKhorVS00aU;VEuFFed+dhncjtBvpH`?mbWxV++=m4lGb z=6C%yZ*&hPKWlTU<41jqA!e6<<8%~?NMl%>L&sip@l(_r*fN&F{Lrekyfyx~$evNK zbRwaFxvpWUWMUh+lgXtPsQ*q2j|pTdpFDnC10Yrqaljwc(3k?#F<|r>TmM<_a~3-U zP#|~ir9F~2Ua0A!4>L68NWm;%mM6sObv$+$5orY1>eGp$2|)^|L>|2r)#E;=Skp6j zg|;pvV5h5sqO5SH5<`N}Pwa^W?!N68=3~%4&wuv?K7$EY!L0W?C7Nu%pC)$Xb#Y9& zD%T2#e=bcyRnL@M<;Iag1*ep)tE}*oqlSH{adt0ce4Gb!)JyC52 zl_UY6JOa(?hmue zm?|_ii_V`I!(myki5aZLW$x#xPQn9YV+YV7pIR#94v-KR)n+_D##>{>MSkl)uDEI% zfjGG}HK5(#UDxTQ9k~R*TqAfzNr{}YG6n<;+t2_LrN!$^kVsH5to>$S?SUo$4qU7N zLATv+K+6Dpp6t{g;M}vsCQM>fij0UDr7eO4fROGX(3XL*$x2*YTuBKmR0njJD?pS6 z)<8VSH#^@V3}_%-*H71&=RqAeWq92Y$Os+EyPOY~TAG%Y)HN{v02?rX1gp+nkJ1DdO<%&woPj4qPGqV+}1*{m{ z0kR4B3?5K@k4Pi)iW9#oX8dgkSv0PW=gIpha+CxGtI7t#S}aiSn+eDs8omygd% z({Xd-^6wP#G&*|N7$`#E-GBA|CtSxt(C_BkjCVKBh$S`sO0xnqC>QiQzE|5tPnx3_ zu+te=O@pk-<}A}IN}PXH6l{T+p6-D-SLWKcVl1A%k9+p9##0S19n8Mo0l(7&lGVwH ztDCc_sp<0a5{5XAb^wg;b^vk!xG$hPK_G{hK9RI4pE)~s&X6+(00GZD5Q6=1T(sm{ zjsG`B_TA9Gv+y#=3u#{<;xdiP(wdB zJ)NC-Ak?g^4;oo0I{Nn0Z6xyQHu~=g((M||it2$q1+e*1A@9MI)6qy-Hv?>p==?Qh z-7=Mz1d#QdgC7!%HUoVA+i;a4EIsrkb$t6~7o=e0dku~h@nm&)n`45lRqwbhoDLP|foOSkoUnm@xgri7_Z$9J0PX*P7o$nDA!udp0=qPua(C7%0S4F1PW7S;Gin zN*__Fo=|wqpL9BbnPye z;5v5L6Gx=n9rcpspPUR14uZhPjw3&4?;39E1bEqZJ29y;MZ6mtp2(}HfLGuLIJtn6 z$H0Fr=A@?wT)q0|*FZB`zgj{hfCtXY3iMxi-B3)-gN3FE57VcT=T!N~_wV0>jm%^{ z`ZD`E%Lqa(^^k&!?=jP3>+dp>9!t_-AxoTTnTMTxq%9#zU^^6Za$`QzJ4>&>4<)e1@b9{0Jf1{->DZNI~3?E-TSd&p1hh2m8zv*Ncl-HLc3oycy zBG%sGlRxptfgvP=qTPyernlKjDH2u+g^V*3%nQDcl@wz|=0&nEG!YxR+y(WirKG=| zEpJ<(OioWPL#q0kk|DK?D4}p`pJ2wu`_hw4SdX0OI`p z?>yCvq$DN5O|Gh=Bgn~Qx;R(){mP4C@B^rpw}JddM@MI-?Faszy!`H;D1Fju9^h*_ zT9C8dTW-(UIO%cn0oNPw7(_(?G6o{!T~v25@@g_kMJ7DFRCyCPExuoFkfoRlz1DPS zC6+^tisXDZC5VsVtCWQn1c@dj?+Xo2-?Dl1+9p>`Z9!D#_(EFSDFh>f5VG*RX|9t# zd}rm6ps!qfi*v18a2_+6|3YLHVqzSJGlv$9x+T{A`_5Vk2kF7z9IjRec}1HHo7q=A zHRIm9r+W1#diAxsYnRrWmy|J}BVR9P8qj?keEnKKzsOkoC0`TDYh)=hzI;A7l|B6h zHhI}VabGF(hmk8H^4DjAU3)9hC?M5+;}^Dx;NW)K8M)S7IlIF1B9;iChNNP0W!w{@ zEM=ixo$pj)G9B|2ewgd>YJ#Ca$c19P+ctK~et!BxeYtvvWUt9aqCz6_ ziYK-KcR8Of$f2S2xK&HvrpPjjITD6~sT~6?P-G*i;Ld(0D$5rRyy-# z<%_?%?;m%m(#M5X>Bex8m}Q;Bl=YCXUbnrnf%`^&4n7Fst7f9 zM&#R1wbMUx31Rk4A|e2XDt2qZG(;S$a#vrpPCd|1u-S_t69Z2bYt2i(bR3z|9LeI2 zS|aIw%%Kt+m2bKBY~Mj!%_hsXHpAxZu$*$qw(13345UbMhJXA> z<8;c4Ej-_yO-jzX9UrXB7VvgcRmKc0U|k|KOz|ynXuG`nhV7ms?8z-4Fl*mP1-##& zsU(S7uV~rV0m`ht`=SP@?UQd&Ah}CgRT*=Q2OWWE;0OVJD*>0S(XU_WhnJ&R(|RqI zHcaqk^5^&PvAMN=dO^f3tE#6~NTFxb~w@0Cv~T zGw@(K1?enrMdKa#&aBy6Y*La?o(sVA74Q1xr^bEH5PBf*;)al3_|%4ziTc>(=$tN6D2 zSwEU;*bgo|Uvz&OO8fEVo6g%9+nepxwkVRS8GB+Z2!&kP)lF*XiI4FYbnKTNL+W_BOIcjQ%$YZ;RuN+Y?Q>e8LGkiE zzm6=#f(5F=oLbt9+sXlI5U%TJ>fA!zHSC5FMq_9G@zGaeMBC)=kGSJ%7v(+)79+&h zSv?cAvFFWf^RDJ_04&SH|4yP31pED;8w^z#X!)^_W z>jVUR_xt^JulULBXe4kTxl@nAq4(H%KJHk&eA=s?RqX-Hf-3JV%pXx?<}c3LYYH2# zJx4m_l%9DsRd_#XDeF=ZyPiSEC8ZQ~iCF&@PU**A;GpB{Yx?8JH5lV-+x^mfL$PW> z0YGiTl&>4>cc0L1lmJTvDGAB+^t29p3W4ZFhb8aT?azmKiSMrq2OTV;q@3x%4DwQ_JY%yMG?bZPO7C$kFs$z6`MN(`ju0NZmx*|FAALsCh z;1A71SQ4s=b!XPDxN_r4<=LE&(^sEPO2B{_+9N`lGnL1)C z{YF{=#rqlTBRDD=1Q^oV&LMJoc$|lksE?@V#>cN*3Kgl{!pSK?$3D~NeJc#9qVC7* zenU?}TYkjNBZ6ODh-(b-Wrc-y(-v7EV6STY zPzd2&AA+z=+#KdF`a!3<)q;|T2I(&sQm@9x&%!3ukD963<4h9rk=Wz1S-|>e%paA8!@De_0-P=3wdK{-O<$@@{#tv!QJszWMw=Jz zhz0p=sd0}ROH*sHyyoUTgfi1u*G?RnH#seY5;9P;>*n1J)W47HuEFS`MscMhT|m!$XV(9TN!g?gPok@IxYg|FXr24LN}T9cALrp3NnQ`7 zfb}Fi#XQCOU0w0~luO zwJ*N=?RLHlmbm@n?4@{@IU4_ap6Z_kCXK*_b%E z5LKU4g6#0vPhrYw!Yr)ZdTc!BUah3hHJTSi)#6ueHDQ4;Z5XtoVR-lhYTtzw4w`s{ zgQGZS7q?%!G+&S!BEd{9UfLk#KYKqkgj%W1u0gwaBDAmCn5GwE`r@eqA@nKU*Y0fu zp*k$Yz};GeCgP22d2pU(iZNaHkbk7kYR;p`E`gLM3<&gi_Ca2yx)z_IasxofKe?0& zjv<*SpVn;bd#kSAYO(x+I2DKHU`%%PLLa*?DcHt~#1aJ(t6A{w;)F4pVt)TUbL8n2 zye<2NqEiI)^gHDI634BCmW6a(LvG=(izWmzmmpG@#&Devp$peh{3hShlS5ZwL933h z?cTVXmLr@0^^e^ukZ=l8@cW~P`0!q2Yfl6R2mdp$)OY?WD#A*=DkJtjx5tF@bK_od zOk7e>aPr;l*ZjUY;?VxB)BtMENFvLq;AR&D4zKgtiAEb`kP#jeA#{&K6`}gG@9=dT z1+bStMtsk$;w(38?%;_T+DpV!NQA+PTb`)oy{~H)@q_i~QHIg0DoJAWV7(zFd|&@L zS|)SS^%fTo=jqFv=g#AAcr9C5FJbLz^p&OAMtp@5doe4({}5ZatL)M8Vf}oR`Bxm zM8KzUd#O^^U%uwDWN_j8Y&qUVCyUxl)tO(EuOe!oKKy^*jn0J$Ea0d z_VrtHi}Y+Rn?N;_^<|SN=Xe z#1K(gL}I`o5G~E(vT9v+6w%5Tf~@f!_xCOhOV3t}Q#8Z-Hc1x^zAvsLR8hM*<^DWb zleBO6_c2jjP0h3VPh{J+wY==vYC{`CX`ZhTYUE6lFYC6?u1Yn^ zv8!p^m2prYmhP8(%9RF{VBJ81F@=>~L%;aYLPd#tuLSwoj-0IKCrqjiw4dhY=0MLE zS91YA6VSNkby({;Kihq@neFSnF>Hd0I@#>yG2*wDnf8RwnnuZ=xocrCzfR>1D#U2- zN+eFSW9#g1P}A;TK8sb;?)>t=5UiIu{Cr>rK6mk^qp!^I_7;sM*`Gi~59 z@(P2L{ywum(`tcj1?-x63H-F_f-N|z+9_ouSHt;$f`WLBF+C|Hn`mk4_Bt#LPX8KIG;MBP-}@icXRc&S$R~~5goFftFP$!q0BbO8HtIf-$wkJ+ zeRSno-9(=%P!gqDK8lc`jyJ}Ir@%fxu}MS+YoO}qMR=9Iz<+y6{AqKVmVxfyd6d}^ zl>aLfak+Q-Gbb~0u=)3yK1Oh?@r`d1U5iL(S)j~2a~`D~P*#}QNxV-QUOA12E&e_H zYnf+b(Vk;t>y+`6Q7(}cslyW4g$+upC^=FW%(-Eb+NBlS$!&c6p?&`O^2Z4X-OWH14Hb2MUIc^UJ^rqKw_eJ+X?r&7cMq263VDK-XH?F? z=~qLJ#oV6BZa)PrYYQ%Hc{?Zi-^#HIo(&-ef; z2jBTmGrwPT&fl?IR79Js<{RjWlzlH&!gaJMWa96y+o^KEPOE(pXVvHsB6ZV?klzNB ztn>w&{Li_^tvR=Zm_mu_qzVxU#M(i|(xvGW9yRr7G*~qVozjOi%k;~-0^Q){7k4+I zYYuJ{KHBXCub-)q2(;kDk)T5E<~E5+T(1+5r}E3c$MTOs2Id8y$D`DLiEq!YbD0wE z)25kzc`VYZX}B&22B$sstJSu%3EzFhO)IQ^4FkVP+wm{&22{O8QoY%3_jEf*h$pA_ zOC4g8KSW z89;_E^Jv{oKJM)$0eLOTxC~>hHiH*fLD@2it5OGMc2k5@WCPrI67l#-i&>h_q}5nU zEl)3`VF-cVgL59N$i`py5!R>v*k3vs+jCa<4N?%bax*(~UMnWEeL24CCAU__R|Gs) zr1a=hOKx__#2zEbG_E)OX*1KB_|QOx|H3YAqm^I3n-TE6TUwuO3EJ%GC3z+Hn0(Ns zqC9>k+<=*;@u0@%$TjClc-!zxZb4)hVaUp#+7VHlJzAqR}S_ zLbIrvt6RS|gYY~pI=M%puDDal$x^27f!f(_wM(r{gAbXaVKF(!^k(;v&vh2cHp zWuGRYW&4{NTHkmpxKBur@ggS?=9(Y8{zk53Mpx8}o&fTzE%oO!&fE#T2}t8y@)GSC zAs!ubST1~FzI)s26&5%)uNYsi!Vf)s5}{L*^`5QnUwv7yx>D?fcqX#awiB6y4qmDG zzIFCX@;ju$9Kb~lT;s<snAln zxWpABTq(B-h$7oC$RcL2#?2mV_`ntN)m2fI$C8he=JRY7mU;(GDmWLV0 z4FSf*Z+`pP8gpP)m6lsOPD4{B7vct)mWn+hBI5#!sE3(ebaeFL;USpPSL!u=SZWnu zb#7J3`x$ovq;ylTGZ@r)534pVoWwPN)9BBKrb6W`FOYY?dHByKh&tuDely@6XH!jB z^8vM~c>Zew5n!unK4{LsBpONtlc}=E_H_g6NrD~J|6o8mIAK&z^fYWRDI)VIwqTSL zWXYr!(fbop9;c2<`=iF)SM(vK@S3*bri#7uh|F^+j?{>fydqvxV9I~%AE-pVE|x;c zg96@KaK^o|T@8u0$E0-&|D56_g&UbrM-=pXU_d^_9Lz77$w@tAcGX-QecfQy2=q%I zJ)p+Rsl~qRT{)FOK>z)X9)BwI;R&w$ZbYQz&p~1sy6v1~nxbzw-hTGQkv~2_H3>2Z zU`tWM!srnUs{Ahm9QSh_;|4cfJi5ArpN2WNh+vfs)Bu4t4qK8?OHDm|LU;MMOH&q> zKc8@J%b8cTfbqiOE5i3|k*k&`y}dfXp7TGN&N?dU?hE%{LLHD6q`Mm=q`SMjySuxj z8w8}J8<9prq@|G#ffwlpDUrIz-@TVLf9O(R*36l6_SyS+J`WWoj6w!EECuC|>p3D_ z0i_lk`8Shq|72;92-L@pt!|sGhOLPqp^FtL5Vt`EMSt7~tL^UY)s%iEB{+ywFt<@k zXRz{Tg_y*;!??T{6A{yg<_(jG`^0lR+m9d9a7ut9UfiU6c=*ry3zWXX9;uF*B(ep| zVH`=`px+8VmN@7|GfD9@eySgR)t>z#rZiW!d>c_y6JIlSnKOW>f*q64qNUNYhx+#~ zP3G&d{Uvdz5kCv zCmAWv=NBRviZg&{13^vA&0RpK=AA(FT%(+-Pd?-49gtls=JDY`XTa$7&+-i9Y+Bfs zV3xSL-2KVluAY;f-6XaMoEpGgRiqx?0CFa;`1XNZ;^}v0H?Wc|7Zno_5CEra3m};o z$(ysG#3b&?kRum{V@nPvjjif-bgTPZ1~~T?fBE7YsBUJ8=k_;(REhKFuy%lcfk-~q zK7XKzzq>{MXL1BCax6(zuVY>|vo=;98CRbFjL{Bu#)qZ-sQ7z9f5jv34mlE2&YBN! zr6`jG!c4PzOe$(>0#3f{K7zp$yyo%uXJLHtZg^ohy3a8XLqN|H&oj`Yy~%g0H@=qw9oANpx%lJvJGsWb#==8x6r#yM zabTXlY%#mRgGtV;nv4iVU^Ff{fbr?%aDu#SG(y3xN#zd<0v^9v7ZiBO6iRh#NJIju zeWo=$U51Ok&4>n>{K&(ZGQ!E2z%NRE$kiY^^ReNWATsnEzwE^zO*GNM{DEer2B#v| z+g8cFdP@6?*{v)#+BU%+lW6Tq4cGJe-)YiirTK?HY?HO0ZD*aRYfGvEVL}6-(;hHc z`GQjOR}V!d;r!h8YeV#t{*4jp)+JSUG7H;&RCS3z>k+kZ3Hd`ytg{-u=a@j9atJ>DVt(;1CIZue2Nx$}W`3yect2xRv8kTt-_0y>X&V=!k^pYp) zgNzQTbWzG!H#(*c0j9pGqVLWt^+`LEHF$a?1BiEzwV8989mmW;^405N_72aU`MNj0 zIsM)sis57B=MY$|Us^=`$%G7}WoSM9Z`pEFv#v8%<8v7z(vL(h@v2V!Gss*TWmnhM z2y~s@h;YqrSN*Sfh!TNJ1f-+DLmqsqB{8pX&R02h;~B2LwX|@HV*F1D9U@oCz{nVm z@z0Due+>(+>@lHZVoDDWJ*ugR&Mp}c@OjYQjXOcNE{Sn^diU$sFW|oO^6;q8sB-># zYXvlDsdN={3@DVKpTD%YNCy*>l$DCci()Fqnes1(?m zbUbS}t$y#a@CZM2`b|fi>weg$9Z|0Su#?g!q5C|irD`ydWX8X=k}2G&e>q*wAEdVf zU|t>IVt{fU3izH;whJUbfUSTU{)(F}_UcYrnwy`V5umt6K!nL`=-&Bxu&E zPLVhVyjH1SdU77}NlL8ErPd{-Ud)S>vc-1I1dvJMyp&x<5DL~W#b#8N1g+KSo#vs{ zz*IKy+tM@YVg(l9 zG?0N_mkU40X82_;pCq=6s9Okeu?Kl*Z({qGTNex(CmDM8wuhVHO3tssg@+WnC~4U6 zrblW?>}#kQ zuJ}>G1)7XuB{l@l;mH#>oAlmKPJ(Qn?A}X0K0FM9!#Y8}_9p41PKkWm38QugnJq@b z9sOlKJgM=9jfl3doo){=Br(rhD!8QqzZSFX>)|JvR1-W3JPY7ph7UDyi2s_zNf1j_ z!_HTpgCqH$#~pLoqtx_cH$;vIIoR5=2nU&H%@=B@PqvzXyBNO?Z%uDXZgRR%fSHn; z+Al-eIuY2WS;8Z9_&WkK1oLI}vj0>PW-a{(szeUX`6mKIDtRFH2143EATi7jetZ_% z9TV0tdN6bOjU2%pQwj_59B?gG99m$Egpf?id*G%wT5%?NXDU)LbH4C%ncearUOehL z_-mo#ZK_u687>YEKwM0iuz^5jEb?dMx4_{E5-*ST_Q+tr(v*dGy+7?907k|`K^~)G zL^4I306);Xt6~GydN^<XKZvO)KOnXiW%rh&HvQ!2 zuhKTXyUuKCG8iRgc)b;)$1DZ|@L8)yENgX=zxe(qV%5xA)3&OC2tn7KruarO(*Iuz zFc%xs>i>d~kN7o=u7I%s5jdFtr7U{bzH~Ev0!#_urw5y%9f;;6BSJI&;#SH}z7F(l z;B0Vrb0YzoO)!d+7W(H30_`@yf?5V_7$AP4fI=pBH`~sHpKd2n3AsCOPC9O%`9l8z zsx+r;D$tN1iq?RmWqag3NGFX?NN8R;2BKZ?k~1?h$}1}id!K-y)-`aZw6`sR&|~md zps03oIssO(v8gsUTC+TTQ56|B+u<4=MYev*kVc0^5^E}#nomD!=j_5nxd&?;9WSKt zixEW;A#IMVff97YaASu*eoiN**?Yd<)f0H>_r;0$x*fH)crfjQD_B?xaI0@g%2aP zee3I&R;HId_5=2NL#eqR92?!2?|&LcKJ0c6pu7iyBVY{z75Mo0 zc*-Qm{gf&eqP6}8wl3C)DPYcumooQ1v~BjogCIDUd!Jhn1?&x6E?{rN2~XY)1KRSf zi%DT)ZSBn5TuuP3o1Rt!RcGsp^;njwo*pt3O*bzQiOK7vrIn#o?daezHlff(c#*BZ z`5SIGCOp%AysW<;+dlq-s%rBUTC?8xyDwXaub^l$m}mA2$sG_qkungJn_u~~ne3yvBG@xYW%ueQB%z#TVLy`ctVaA14` zCMWSixDT!moQyGE>YlaYbqn0w{%WZ~etK7==pR2iy8p4aW6-x7&DbU8tn$|uw>kfi zG>hhlx{USf_L(~mtmjkLcuwny9#8Of?LM3^HXrfK#>)+=rGD}Nl^_Z9E0#w^0mAPS z6OTaqvjA|cK);w>wmbQ;HDHNC^%6jdfHod3ge>Cyap(+f9=h=3=>2^dXl>sGd<7)t zq9RQQ%6}<%F*XBqVBqjMPVhoBW6F?xi3?vs7mM}k)j!jsq^K!(dag~6tHbha%nSK5 zR6^Do9p24S;d}D_23c8I#jCj=KcsTTTR<@D)!{;vSRqIyx9^KY1siWlibr7ERRIXV z#HJqD{9QTw7kH5V1*BDL)gGWz3xKU_3d`wZn`2DlpS!hp(x(J4%l*D#1)aF_J8!LX zfm8H9LkSx+@i-8q%@Do0T{2Wm%FPsf-Wy8dJhW5GPYmLrH_Y_;wX~FmmY!45-W26e zJ(H~KyMOCSym)-w-rmk$EG<2eTQmm({!VX(hK8iQ*zizRHR~udIJuaKhg^XbIq_2n z8Oe~VZYtTq;^&}M|I@%r;in7Xf2VqtW_9~)IRqiNH~fR)3G?yksZz;qaq-pa)n4B{ z#4-U%uqmKVST*|I{{fO^g=hsmT7@i^z(52KzC5Nl9#N?#7r$|*uapJdREBDwxx0t) z-vq5^lO#J(Mxn;NS;Brsy_8Ty*W7g5#FsFMOD2m&PIVrd=YRe4W4EBzg1qnK?N0m! z@r_arw>&nr=zo^FNbh>-Wiw>X{?bN~$z3IY)L;!xs|Rv{B_ZLJ>G{HiLmh61H&wwE z{5lw=f1kgVoWTx#ROU4$kM#bd6HErS;^z-TR#v2%>RkfgMDuyUfoh1yX4ii<7C&3N z;+<1uzdNx52kEy|cM{WI?EJi-#NS+ETc4datR@Sn-7IJ59ip z*2+Tf$bx{Og2%;gt5$wialsUWNnp@eck2RttmIC!J-)`{0hZRntW~QryZE|=T?}&T z>}2vygLDiyMYbRuBoZzb-s`lOv6^{vFkVJc_CyXTnaXw{|H1KCDXbtZO&vVoQjcAw zesklz?SGG4RFs+%?7USiW&L-wy6$AXySt=BB855vLsSjOC=X6nJJ3mmP#}O20Ssxv z?6)%iiM3Z`eb=sjCoh|0Q?KK7x~$1Fn{bBzI?fV&qR-E@A`377+MrObtSqOdrU5EJ zW?r6SvmOYWXZM*BiPcIV=D!A?esFvbr4-G+<+QM{Xft5JQRFks2gM91I6%pw2$WcY zf?Yta3R-aJ0xA)k77J`P?`hm>01oIfh0lv0#I3=rAE_$&r*p8L=;@RFow_Z9 z^yVL8dgc>&Y*`%zJ>?g;FgZTd;Gt4MkX5%`RmB}v)?qVmct+z2KVyaA?*^}ipbQTysgp0g8cxe%o zVySB7jQnTHAAKaXf0e@!`R@UtLA>7P;aPd94(!)p6Nt7qz27@cBzgKTym^38rx9~3 zSIS}W&v?3Q8j@VO7Kdp@^N@74joN`D+VW-r26(CCr5->;u(AJf^AL$Y3VEsU;dpcr z9VDU>;nZ9FC}+$Jy{*8t$vvU1`<4~I_eESGb21n9oN;$zGY!jsEtUlRXR|i-Fg;_2 za`ApnK7AM&NLfN^{}E)@e9->9b)e?>{jSUp+j^%4z9Nhuz-R+Hy#`R(}2QdvTKF*D@M!BV$C7TU&?4vxzmPj788mGaX5%=gv6> za#bqX!Tx@-2nX&J@Xe^t!&jYx!96G6cjrTYe}7h1*8hbYe>Y)^xF_jYb!ygYby)fh zmL~^FT1G|-FtW~7YmXL%Y%ZLJp48Wnk}SYuUMxR@g({xv3VBSHwlt-lw&8Q^z`|7Y z^_ONB|2y83iMPYItRBHz^s#@iN8~IN;0d_+YJYsEpK}rQdQeZ1uXbb`&8|6nz6A|O z@loR_VHMMI3Q>$G!Xq$^pM$yO^frY|PIJytFAr^qJrw;$H9lC{1sH#lEpHR64N++E zn&CuzK=Inr(gL18h#3gM=HBW!3~1NK+=+;kTKJE=>|dP*%&`GBvNYb6nX4?VacfIilM&G}k;-GQ0+r+{teXBU#zjl&VayJ%gGvipMOPCB`U8qlX=V^s&) zMOBTSB{L;nUl34=!N9wOX5i<*Ghw$QAGrqiK~56LR4Iku4Mp}zfS63R|2*~4t=%8Lxmumst1(DB8TfX1URWd%1hrdW5GMb9& zU{X^qoncoTCy6Z+BsO5{A6O~!|H&p(et6=KR#xTWA0`;t z3T6L1kw$fI>FI3&sR>jZlBytfI^mxO@c(J>Ggyt$$PF5;P)8fUwL1_rNF_qWWuC)U z!F?L^l%I!-s-{!RXH0SCrKDgY`_R3o0YAKYPHL8%a!74zRiH{GB?*#*cvdyZfN@3! z&EpSRI=Ak4|5?fhJVXo%2vU<+a?fYOgD7mrC@kr^47|w2MxDCLGM`cR4@Wk zlL>t*V;1cD`wmG`m7!|cgO6D)BI3`=!Hrz%&)I`gI!(HMyJou#OZ8KRK+V)GZfWVP zG}PyLbP=15ftHb?FfP9tz#NZ@jfI5)9BE};owcsl(6u8-IfgJI@Wf)708$%I+1%izTfRA&}%gVUpJF`9_boN&a&03^-&c&4bhts3zxrl1&+S7k& zv?SLD9yW()?aiw~*4HR`T8xY~3%A!-Lpi>c?nVkGXV#mq%F#Rfp0M59XYIR9PW71v z2j{ukH5h2dB3~W-xIA8efE9*QulsiHlIq|OvbpRd*9Vpdo%i~(3nyoNsVWoXV*Wsd zl-iFY+g9u=2{ZhvXUGwBNGLzj-*dCM(1 z6oRBX$khC_d^3bQw%x!15UjVh4JGNa^5b&yidxn9*+n+lR(P6ExGXU8sL@mOGfu_f z)GV8~p26Gyad~RoR-TO?K-jf3^qT!SG07A$@VIE8nI%L|ZCE|vsrPQM8@@oXhr~)( zlMPW`?rRR0eTGzRD8|_aH10uwA^939_3IkCnnlX47>1Z$=>QuM9PlTvlTO)jaVm&)tVQ0X#0aj7k-BmVpjhVv1RV zK^NQUQ0J|bgxg#DmBuIi9Klg=)21w8mUx$(Mr(7{Z=3v4k%aS zpmdia0M!c-jwK$a%^BFq_4V|yu&{uYQX(`{BL4^8Pp6xAFLCK&N5;pw@Gdu!KmNc2 zTK5umT3YGqIWUrDW+&%fwy3GAtE;RW9vf@YGbdmT$jyGbu${4H)@wWa5fulFWR}g; zraVT5hJt23G29w@Mzh9s|ynSa?yS`IX?GG<1t zlKlChcQHw7Ac=(tFsrxMNoebI6>kqKtgTD0DwaEOeAGDt_oB1%hIi2`E9_n)ZvP}A;TDx{%_oVI=lQ|aPpJJ<0fZNZUtBRE#1$t|;4Pmc)*Gu+_$>{vds z-7@~wx}E)C=)nIu{06tRNUc>HTMk%?U(6~uX~{=_r_o-X>qpHrTN}q{&2YODkeaJP z5Yx+1p>$Z-UWRwvC#DyXvWHJ=k$b=pq@sdy7BU#U&in<#xt*xA% z&R*7IjUc1!Gcd^Qw$l`XpqYLI=0@0@D(C5pKj$1BuD_E zPI>7rEBLQOr@?gjMzvU~*5FI3`9tdWO&;D(7dpv*SOfqAU}Rzv04YpOwlm=7hJa`y zf#(U_;Z(9lZ7zkMKB1XhULUV?yq%w&mB9B~j_3owhhJg&d~%?A&LrJXt_ z+2&4-19XdjfYFKyU4-c(NB}=u2OZfS6QD%>{o4(t&kyCl{~Fx+Ho?B#E2Pm&*t)!mhQ1n{pn$;B$Z z?JYdB=TPq}mV&u*KZCwq{MV;EckUXV$x5t5NzF~d$30}?Bm^%M<@SAq;(VD|Qz zZ)WcPkPlseo<){GkDy01BD8nb)37;v8&@?Je^eUxTw406qK!Rb%3}7QS6sd1eAs&~4#MV~)b*sg$5K^YcLQpyW^*aKem1oea+3>FGD{LdpgKKSAUK z=%R8vE=$aKsHp`|4GUmhzr!%YLnB9oN%T%2N}A(EVwg2G$c=MzH6sZ)v)f28#`oNj+No?hY(*^aQ{ny$dvv+Mf(e@c?u(=zB6bC`#j# zPVZkxrWYfGegpJrYFRm1+1o#xNq{xM5Nif_Hh@_NrX@zc+waH5#!e8vPfosoT!^%_ zv}j_@)YQ~$_f6v@{dbPu-4}LoeBsUgDk9VGN;ISr(1|Y={gx9;ldCW)c-~w&wO>7T z%=1bqPf1&SS4N3*ot?_(d>TjBi71(x91Pp2cE^VgmYX~z0?HH#YYWX#J=WDU*f2^) zMuy`u-~FI$`*K4TL6B{LC>zyhpw>(5R_|+6G2Zt0UJyk7;6_M6i5;7?Gg1tbHOS!{H0p&L_H&uLz}Icc$Nkqow*x zKC7hL1i5|=AxIDPwHWlepM~CeG3mWdThtwn%ic`tLm#(XpPuM+2CA$1p)q`mj{t=N% zmTFlsRAg}jxk4kp59ha!_&N7x(pbViI#{@|IKJI?tA9Q%NsxV0&c1v+m|GWo{PR5` zf)4uD<~q!i_�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 literal 0 HcmV?d00001 diff --git a/demo/viewer/images/down.png b/demo/viewer/images/down.png new file mode 100755 index 0000000000000000000000000000000000000000..119a099109b66a21bcda8b95a95114a7c55c5377 GIT binary patch literal 3899 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 JPDHLkV1j1ZT!sJu literal 0 HcmV?d00001 diff --git a/demo/viewer/images/export.png b/demo/viewer/images/export.png new file mode 100644 index 0000000000000000000000000000000000000000..9e278996530c07ab249b315a5274d1a8d195ff57 GIT binary patch literal 1596 zcmV-C2E+M@P)i%!U}S*Oj6gX!pMil9sE!dBwtxTr zVR-o9F#{Ku2*cgGcXZp@%Ef@v4#;)_1Q3b?q@@*I?d%+Y8rXprePvM7P+?$WV`cdB zA7mH<)FBLDJ~;k>HZlV-6B7h8GeN{a@d|PbF#H(4eEz`j^XGpCO-(HZ9UT*6^e6xb zAQT6%vae?aqD|DrnpAb?O3AtNIr11wW80Zn8AngsSC6f?ruP~U?1py&YOzfk%g zk{A&G0lHLMTbIGe$OM#rFtQv#0HK5c6Ubx+NIWwGZD0o42DS{G+91vaSqe;tkoX2g z$6rW@{D&rh|4a~ZkVF45FoMnG=H>#L#|qYq4gdlOivu7D3*-P~AODA1$oLNu!G9SM z;rAEnYhYSrU;_CZB>x}cP-dX!zaRxb&CH;9K?48*#DYBv7@>}VIGF_!FklD$g*po4 zV@6mc{)brj7wR~Mf3QTz0QShAKmWnzGGYk=fB?b>0dNri{||O8vIZ7VqJp~=8VdiQ zzJ`kZfhJB^$ovO80Osp|NFj^>00D&I07N3hqL>Nl2$)ZqAW`xM6dJIQfJO<#BcRY? zf;$FV2mk~S)-(Vr?LaOEGF91v!X`8R9ZnsGfTM#6(*Xbhgpmti@%8G}XNEU#zCeSIfdN)+ zL+Jm|wDKQ{5ONTVP!Ecrzkk0&6F6qN0tg_ixd7zb4R&XN#Z>jBGIYilD0H8o{mF#ZMm1Qh2W$6x~-9Bd57 zk6!>*K39NMI~z2l5LG!dGiDk92q3I!;2%<*@%Jx8^XJcB!43i?Dh>{IEFl4@h(H$d z^6~rzkwDrFsxd&73jM&3=t6l40d)FK=EG~ zhJhRl!dzUOKu2;wE1&;R4`B}hfB-^q05dZa)bfAOc>M=Vgnxi_`5%T)pFT6Ze*K!^ z>(}pKF%U)v|G^EHe+-sO=akR8#U#Eg{3bRd&B9j{ppJQGfXeNud zxD{Mef=cTQbi$m(uYFMb)^On0ohwc$s7WWu7|!wAp|$trS8jX9l%T1U!JmBHE3f}_ zXE@j`tu_~##HGcgaw;+jiuiGNtm1&fp(952VE-YVW6d1E_IQ2^ zkv1!mH^TDB{w#>?lK}QalWo~@g0Lhu^=wPk7W!v^)uDgcp%Sm|u%uYp6j@d4A{c|H zG0JKHR(_qd2@ta-lkq#%G`fg^UUw}w35)o7e`3QHjQXjVXZ;r(z^Jixih)($$c>O` zdB4c23U9d*RA3^0n(KNT{jXRxeS&J7_zqy00|2+ZOLo_zIir61pJHzLaL-*`;I`MJ z1eMmVa!VqRvW;9OtndXlLZs*5EZt)z~zwh`-{10{H z!-J0>7)}ex8|`{nE~VeUFC`PMryizj*%Kr7L&6n&pV< zjx9E;bx|{$qTXnUhTRrdf6aQQPJeNM;9mW|b$miS`qG8VcNa=xy=02qYDFwAl|*)R zQ=}ROlaJp!@n%?;$Smh56f2asEZVMz z5e?&c0;lECY`M6u&!N%X`>)SSp{)ngQ;ItD+Q7uv*u{NAMqnwMrD{RVmT7wuheih2 z+^VuuvoI|iEuiB#9zsB&)H*!Bx^qz(PQ83O5{k!4OEe~d_2BNmMi zjfBy3oo2I*)ABGahkD&p7FH_Ts;Y&a>F+jJ%5LEJVPsjRyjjO=I3(gB5CYqA0S{k5 zsaz$!P(arVhW89UryMzU>dX^kBVA8U97MEDZl`lpO_%8#%gkpAbS8pyCu2B{OT%_4 zmMwn#F1Y` z5%l!#B44a{vM^P_I&E@=9cQGiLnE3VCPH(3{S4V_oJWNMCOu`5eP!zUnb#HrZ_ME*w`57RTe|9i8e!HDW zbk0PLj`6*NyStO|sFaL_h($vLRE4JFvc8sEDQ2eLujVJu10I0%kTLbt#L1`kj~;$j tRg@v$7qa8nrNxEWYxmPrQ$Y3K^51T$s}9MlKMeo?002ovPDHLkV1f+j#bW>f literal 0 HcmV?d00001 diff --git a/demo/viewer/images/globe_bw.png b/demo/viewer/images/globe_bw.png new file mode 100644 index 0000000000000000000000000000000000000000..367cbc506f6d82efd65f2e7adbf209cd9e276e5e GIT binary patch literal 931 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 GkpCaur}P*A literal 0 HcmV?d00001 diff --git a/demo/viewer/images/home.png b/demo/viewer/images/home.png new file mode 100755 index 0000000000000000000000000000000000000000..d08e6ab000abab8a73a65e57471dcdec05dae523 GIT binary patch literal 3719 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 literal 0 HcmV?d00001 diff --git a/demo/viewer/images/info.png b/demo/viewer/images/info.png new file mode 100644 index 0000000000000000000000000000000000000000..d8197d61a38f508651d3ce759bcd60d620226bbb GIT binary patch literal 2328 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 Y|JNVtrAoD7O#lD@07*qoM6N<$f|fitN&o-= literal 0 HcmV?d00001 diff --git a/demo/viewer/images/mapnik.png b/demo/viewer/images/mapnik.png new file mode 100644 index 0000000000000000000000000000000000000000..2f96f9f8131b04f69f4f4e22eba3fc8aa472b690 GIT binary patch literal 4316 zcmV<25F_u2P)W@KGvdRS+KOlYK3X^m!ScUEhfY;9}*E-h+raZYo%Rdlm!bBJ$qfpB$w zb#`=AdcXfXJ!yEBS9-?(K16nXg?N3AeSdxbNK9XY$zz1RT!q+agTen#O=X7D|58xz$(jgFU&kd14S=5CbLh>)ael;Qtk zVQrM?XPE1VldXJ}$#0hHkd&i!m*9t&w{e>2keIA|o7b3{mw%hy{%>$~p6q*_=8m1b zlbx}Dq3VR7#>dP4va-R+-oMJ_z0K~z z&FRR^+`G^9#?tNn!Nb$l(#_TC$JY4I*X`2U;>_Ie|H{eK+UnEV@Y>wj(A@Xd;_%?% z-`wEv+T!{B*Vp0V?AGS`+UE4+=Hubz_1^0F<>~q9>*(d~_Ur8S|LX1P^Zftq@A2~d z^7Qfc^Z4=h`Tz0q{rC3u`~Cj;_xk+!`2GL=`~Uv`{I!c&fdBvi0b)x>L;#2d9Y_EG z010qNS#tmY3ljhU3ljkVnw%H_000McNliru)d?6BEgztlW{Us-01k9TSad^gZEa<4 zbO3E(aBgX9-rL}w000e3Nkl(`WT0jsKLPAEha4x~ z=!v7^7u=14oFkrKy$s~kUC7~zxGP<_?!}MQz@oQnG_^&DE<~d*%dQaM%=TEijJYl? z?G-Gg&?%q|N#@?%FzYyQAA|4kd3U!M1QpEvtq)2!-p*(?MWEDM$e%YtRW zvS3*VELavS3zh}Tf@Q(75LmD*SQab`mIcd#Wg)nbuv!{w_w3sK_4Zv=`x{#mghpHCV9P z$tuZ<0v8v>L|iCOq|;J53H+fDOHm=x>&9Hz_Hz^0i9_ER)stW~#A7@Fn-WP;5aTH^ znGn+n5M~)J5Fkm?=O%D$O;^QrXopdI^=)M^iRNW73pBvL6c1^)q-XPBrE0~{}k zB49!^O_4qq#O2g-9d+egJdN8Oh*Y;EL!-=DZ4jt{}zpm&8IqS%7qyD3Be*W65S#v)Ax49#$laEV{F_vDr z^7;7-AARJ74Y4>JgvlhNRaIa4!HO3aFJAl%Tq2Us-F5S@VPhvhjbWI}+o=1}7NZWq z&7(UX8#k_C(w{2Y5hfs}QvEelpf+pgS!_0MTWy`=rH`+*7L_4@5Ue$ce~k-HVed3)>Lj}XXsx<&h|O+8P5&*YCira6QtKuedk*CkEX9PiV0RlG$mjd5(@u7? z^vu|JVDqE>9O&9Z=|Ezyz{HS-V-Zw+I0#|bP~fyf?bvi_IrINmNZ_@aJk@SIxO!24 zoB7ia*Ek)50%7U<%$$|&S+n!tp1d7$PQrTNf${BXURJkTQ`O3K!=3iFv(-=k`VIPg zD8jYk8&{&oZilKvFm;}z3o+~qMV*KqnL6YoE4!_)AuV;S?PP+__N*=aVdGq=XgLXM z{DcY9UV3+qDX$6R+jsA3+OgF`bP#!C?s;X!)LsUyUN4AJGM{|Y%*VLfm}*Zk)lbqh4@K>bu_uLmpYYM6BO;cv$oL+xTW zSq6nwBdr@`Dr-tSDe%$A4T!p)_1;rLhb zBs91NZptaQ3)UB>-Y&cxa^3{z8cOnhk zm0(L_X)*c6VATJG-&DGdXI(QdMi6FV#AmI_dR0F4Mnh+wr4K@T-cD7?RagtmZbDYq zn!%3O*EBR7K3r3KKmav$Z$F9v410@Z1(+W;pxMw~ToR?>>M->5708(G#IQA{vYcx> zxP{e;XKm4cqVJ*$sjIFitCMblcI;rSRNGLqzvgh|ircQqvl;gXocYhNK+4oeA6$w~ z(?!u#Fi3@#jz;~RZdb8tDr>cNCS|pH*1iHA)-A`hT!ht;mVTrx?RZ^fWlE}RY})yo zOKgs|!1OC1O6iRBA@VGTn<-^jnhcWHnXquY=$N4_r@afxLY`%tsDH6twnNKdWu2y5 zpdFVaDOJ9|Zqa2ZzYjnTe-)idb7IXWt;!0QMi>tn@S*9@0f%9$vTSEomg!lxS1&Ri z{rS=E25W-pS!%kxIwQvKGlpNU+aG>%EK2c91d#^S=4@#9lyRlBn<8D;nXqtIt7qA} z>{-rZD4E&T<}R!Sr|nuY<%b*7j~IFyx4N1k?lovQr^jL-m3e&tg5~45Csc^o9Uf=g$Z@X9b!By|Gv$B~`^H%0^nE+c`3S-@ z*`Z&2`;|}J^F-`r1j`u?hdF^MCMF{Ww-T6p|5+%@%vq{-Vh1|j@Vz;$EVZ+)DF)uV z-Z<;|B3bNq`$p&t9D0rX<`dIx*hGS50!wie;PYo-L{alOc$O?1D@do^d4D&I4)Ziw zDF-DZjRoJxm41)M^LvyXobXG(bsNpojK-5CA>Z<`XxHdM-1Vt;_MWBa_epO=H_g^} z$JtQR_5)CWklZ}?$*1nfw>iukeU4u9-!!Ac8!O&>bIIHh4kKXn`2&vORqDBT7OeFs zY!&S5hRRaqrUd`6!N%cq4!p$fuoc|V%Q&CD(@S1AL#ZQg*i{4jn%j34;+VHdJA2PE z3_zWVCe+7r3YK~r&uXtMSxS`Tx7`qR*z=ze-yU=Mz!B4zczsWq(Lukf>_ks1_nBOX zVffdwb`G9}Iy0i~=zhx56s<89d)U!-7u|mAi<}tWToMWTeV(}k>_4i}4;5krP8`(E z!L!g+Q&%C6pZHxaDQovEqu%YHQ`&b*WuoNvR$BREJ#Jr7kfy^F#RQ+b96fr&RRj9K zx?=1MD62vj_LZ#P8okLVGmf9wX>bG(s_eetr;oIxs}feQ4&485oXXE{q_G8Vre`7k`)p&`Uuy z^^~Ud8{6J@ARD_>Ij219G+p+cN@c$gkA3skNACIE>+c8sBwg$yBXqEc^abXkU}dM6 zA~^OSD;&oNjM$ZRW6_Uy&?=Id@yR>!m79sbq?$qMVpuL1=j~8KOv^-&gFP zi#*H0MWbwxaN&3%hP%AYT6eDh5f+qIW4cjdLUdeY$lywfhHF7O5(<*$Y-l4%nu+*a zICLz`Tc!P!VZmY1a-gOL0FX>Z$zqxbmzGf!^%fH`7t(g0oA7vxJkZ-co}}`VhNa4I zg*F>2JP5hF(Ud>#*h zVZ=MNie|wwrt{-cf@hcrNC7I~^990TI4Le$wru(GM}!@OhzSxr(Z^o>1rM{f4rlwMbl9l%=^603#RW^>`t%<$m{z zF05#ms;U;Ows8m-ZL)GK6DwoN%4oVQE^tgJ;3@Wc2+v1*dcp`ipUN`VA&{2{7%CK? zm?#U~EBNWI20dL^usU9VtH&BMscm0=`c*O|9c*stK_66b-apqtQ8Yz`qY?#HMNu`? zg4K!5%jo?{iiUW}TFT0000< KMNUMnLSTY9aBzkI literal 0 HcmV?d00001 diff --git a/demo/viewer/images/pan.png b/demo/viewer/images/pan.png new file mode 100644 index 0000000000000000000000000000000000000000..4b0e37a11c8f0d1de4f1eba383cd6895014f4c48 GIT binary patch literal 2536 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 literal 0 HcmV?d00001 diff --git a/demo/viewer/images/style.png b/demo/viewer/images/style.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9c050a54efe928e9ffcd3571ce0a64faf8ce58 GIT binary patch literal 646 zcmV;10(t$3P)5Za9vtfYcPiAhU4t@B8lG&7l*9v9k> z#30ySIGc0N_npIiFe1Wc7Wc2sB~2PP9d=+t0@Go=S}t%x(*ut;B+zrxgTbL&o^R>h zdx~Y@)PD&~haFmwqw#bmjwhr2fnw1+WIBvBsulhK%>a@_tV7R9-Gbmd^K|S=7yuUJ zZFoP~)pGpU#Jp{XWg_;&?Y3rp-oo2vmov@`8&M)QKQ-N{eV$4BzNdGI=}ZFol`S=$ z7$ZpjJR%_leV3kDiCFg4_K13x6M0%J6uq~DlFq$;cT${A?f(k~03rrGC!xJ<)@V(n zCqhB(0sye}caUFgI;ZM^;k)vJ!cD zxs{fH*Xeuo#(nvK^BT(|5Hv64_0YXI$swyx`xBvhE07*qoM6N<$f}39zp8x;= literal 0 HcmV?d00001 diff --git a/demo/viewer/images/up.png b/demo/viewer/images/up.png new file mode 100755 index 0000000000000000000000000000000000000000..5231986509cb5a7289e1a4f3b056db502cb68eb7 GIT binary patch literal 3893 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 DkHT-< literal 0 HcmV?d00001 diff --git a/demo/viewer/images/zoombox.png b/demo/viewer/images/zoombox.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb5a19d4552fa2b90b48f033cee4a321e84d959 GIT binary patch literal 2901 zcmXArd0diN7snq&z~xCX48bL6ENey+l*$Daa2Z?Gsb+MVQZyCwH8r!`1)|W((wbDv z4C|einVb=GTAWl+R7}mK%rrH{Txv|kEkKdywcbC@J)ir}{hagt-QT_Ee1M9*B!fObShi02twM zVG+b#$3s~W`y)cbQ%*dOa038?iCx}|gUN5hG!R6S(sejM7|bLyGcz7$V`IY?vmr;( z!-r?0LWxr?t*tDQom~u(C@Ggn6higjGbQP!N80I+uUi8*dt_=vR`;i;%R|Jt+H`fj zVr4mrKO|;jBGj^60v^!GMilEd!*X(Ro`3gUOVy5^@g;+~1Ujn1Ast#IM5zdTh|SK{ zYSl-SV-EtmP{vm5^ttY$d~s&RN8RWQuV_6$7j3=8AkS;KLr6PQot~bN=@G2|xF-@+ zhKL*vS1WVnFMPk}cMJ(|TFtUd(x$k?U4(p*_*(?<+T6yEo5Wg#iV5A`o? z&+acLUVwAV&owqQ^hEx)>Fu7D`;KKE4HCt)8I4zD@5Fn!%^FT~+H#p=E_NilrM!^D zf2#N8KYQ~RMbJuP1{6kw3S5uYO?qV+A%GvP;C$i_Mt~j>8D{Rju$*KSxzqnV zCPO(rIAUmK-&Q6iA)X+clToJjqzu#s>qdq_|{X<3mLbw-}vv+U1(dQl{4R;n7%N_|s zo57nplCm3z7+8oqTpp0cX)N8=YeM(s-ag#dog<&a*dPrLSYw$z`;h860=a9X{{Ph} z=4YwLet$r5gIXFT&5aF;Wl}?e2+pkaZ3@WBfG&;hEagRPEW&B^C&{9d@s3-*{ni<_ zRlac)-~c*Qy7$2by0`aPxs-%O#`-a@X&6DeO=5HbJImFe?}V5eSpoaCk{D1fx@H$( zY{9#I=EkatbeAkq<)bQg2v-BV_~XE7PG`HhW&# zK?+^Z)M^bKt?nVL&C{G!+?a7di?pq+GAqEHhs@XejX(~;RTjM-&l^MPg~z(?P+8$z1qwBJYC0T-wjpfM?p!d+2or4^^~oSWc%3g+MmL z$XR3uh9%I_S57z_#)K9x$=|JH6>9zanUi?i1!*>72}1vJWEmbk&JYNw2CU@bk*rExL}+&W@RN- z`IB&_n-KVEcc?vnZa9-q%C&d+5d9yA4}v0!8#S5i`>|zRS0D&J<8Fu_+1w2iml~a0 z0lewxR(vv4L9VVnQNqanNRVd5g>bju$MPz!I7mAtI`GLeGZ88e)~t-R9M=TrrCIMl zZG=xD^@uxnj3(=E4aIqFeG&7r_uNy#Bm5~`V))-UKe5Ymi9t@d{b_q-=4oav=y<+@)$-7kIWx}e%{)>wSPxMd7yf3f+7Nz)|6F3j&4gTJxgUCdPx?)vbY9m zYYj(QV7!nUunhi5Wvrv~82{6&l?9Kk*v5ntuf2_PjcM(ac(?v`NxkwiPJ zNugz`L5#0Mj876k2fkeV0SFg#HpNH9C~)yh3VW)QuZNqV%*Y5RbU18G=ShJWQn%-c zC^xxldg&{w8Edbrv1`4q9CG2^zfTtSFBgORX^_Je?i+l69w-HU7fG@3)YX7-AFC08lAzUI-kmAPd@sZ2HnHf=QfR3KO)D-5_cD%&UtkF%&<&GrG1E zG2J{4`}$qp!3vcgos1mygq_WHFpBeop*d$1Bi z*tJl*utq8s#h(;gIC4@rKF}1aC~H( z$y(95V`gL1^yk_e&?A}_hHQo!cvLMJVl7SIi&{kP=fhi%?{LQ>AH4R{q47T3u@khX zOal^)zbZB7JPC!crf&p0o`Q0|L2XAdsWT+r&FUSzwo}LWi%)teWY__k1;xUvVwVa0 zRniW=Z`@4>P1I?6ORJD9?=!R4}(dsN+5rl$ogDH;)xdmDG3D zWo~;V-#=$FU74w>rH^k)Sf3Le;}dFh(gd@#+f3P1wo+1XQq?pl=5Yr5Ns{YnwxYYJ fb$dYoh6FxH8w9nk0{hju7}(|G=lz!_^UVJMVf;@E literal 0 HcmV?d00001 diff --git a/demo/viewer/images/zoomin.png b/demo/viewer/images/zoomin.png new file mode 100644 index 0000000000000000000000000000000000000000..3343827e4cca148635d8b9968cb3644b0f753e4f GIT binary patch literal 2420 zcmV-)35)iLP)9Zch&B<>C?th$1TCKmMQsIrP{dMg z7O^1`LX=9VNPrLsv{I8cPzeO6L`hV&M6}RE#-&Yc65@3d$8Yb$JCA$#usiG7@yxEB zM+sLty0hcmJOAH3=iYPg9TPL-|GB7FvawVm(+yw+fF1xn%-jQji6{$T1V9$R*9}##0aA&~eayViVm>`u$p2!rkk0}LIxK+t04e|lfB+y`0)eicNc4_?qJ#y} zlgV^^|5X7Y3V}r5`pqZXu3J&4 zh$qLRq-`DHa8FMpx`}|t_UzsL%S#4GB{GjO^Vi0Tg)e7wvm*e)bpS#Dg1`OQ<3H@` z+U40^K0kntp2+cAHs6231;7pf3xFBX0xj=rZM$0#J+o);?&tk9`sRUDBJ)XRPK*}v zyUyivV-BsNB4v1tWx>D9sleAuxy~5p-&G^P5ypOtbK1Pkr_y) z<43&O6kaz|iOh}6{F|JiKYA{oyWk_*52S7(5(;X^hh3|1%~A!^m>Hg(c||fGNF_3> z7X^??WCG0mvM#M33{Fk{-Swb)y>Hiz2%G?J@y@|50EmgX;@RjRScvo!#zL`DO!?P4*1#7Ddrh+jz6mrqa};{AlX#aAK5iiNib z*p^CUlqvv#k1;SfUMx;w-nD*0>v=_M1OSkLf7sOYHfom_5`Zk2#)QRu0l-FJeksu> zncs1VRR4D9S9fQJ-g>mLsQID=+9iB4yry;HfIypF#H3YP&)+YD)48VR8i36+G(RcHfBNg!m07DVf zf$~vh72vO`5I-hB<@qeBbS_^r-MM_tUr^r6hf&@a+qK(*0D^=4N4o3vXnXhSsSj@4 zF$iGJWkpBrb!`AJ1d&upd>Fv1s0c+e9X}1=Tvt=`I$JzkTRW7~zH{NVVAFwey02fD zEdaWQ8IIa%rt^APbL0a6&Lq?Ekt#r?9Eb*kw|fZp6Yng}HA@5iYyv3Nf$%dEfDsJ_ zHv%|lw^s!qqJv>oyUjze-!>1Z-Eb@p0G=K&d_Fq?bO2^RD4U7scMAZL>G*L1CYMKA zY%lnQidWd!Y2IuE0G2j@+Y3&i?#~7QqqjA-1;E8*I(}jS000ot*E_=Do#ee%cW?8Y zVPlJLcs$PKG2jpG3-r2gB-8PJ0)Eoh7JERHH{kVzJH^{Q)&QXDfyH=1*M#63T3f#d;JIWv-ro=a z0Ep<@st_mp+G3xE|5ndSd_xaZ260`{PP-}A@st1!?%BKhyI#$C0wmLMCZhYBR4ulu zrS;A_!rkHw_~FVs z5}ECi`B}rV^lWbS^%=c12Jg)5H&&d>glf-sH8rp5YHEH!A!;L{$CK&!%Zt@?Des9@ zW`2l))SPLapDxXv8ZQ=yOqMzt5B4fRKv9(LrsfUNK=31~5H}Ig9soa0rsIv5BbNi< z0Esa37a8~*0e9$@H8iX1XXY$(T(_*rqG?PTQsz)zfN4#d76~d!B&4bx5iPJz6=EF& zuM47=0Q@?cj^{2#$7TPoL3IHXJ>$QkC#OdUwvG4z0000uWU2` literal 0 HcmV?d00001 diff --git a/demo/viewer/info_dialog.cpp b/demo/viewer/info_dialog.cpp new file mode 100644 index 000000000..89652c33e --- /dev/null +++ b/demo/viewer/info_dialog.cpp @@ -0,0 +1,40 @@ + /* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#include "info_dialog.hpp" + + +info_dialog::info_dialog(QVector > const& info, QWidget *parent) + : QDialog(parent) +{ + ui.setupUi(this); + ui.tableWidget->setHorizontalHeaderItem(0,new QTableWidgetItem("Name")); + ui.tableWidget->setHorizontalHeaderItem(1,new QTableWidgetItem("Value")); + + ui.tableWidget->setRowCount(info.size()); + ui.tableWidget->setColumnCount(2); + for (int i=0;isetItem(i,0,keyItem); + ui.tableWidget->setItem(i,1,valueItem); + } +} diff --git a/demo/viewer/info_dialog.hpp b/demo/viewer/info_dialog.hpp new file mode 100644 index 000000000..f9fda8b03 --- /dev/null +++ b/demo/viewer/info_dialog.hpp @@ -0,0 +1,38 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + + +#ifndef INFO_DIALOG_HPP +#define INFO_DIALOG_HPP + +#include "ui_info.h" +#include + +class info_dialog : public QDialog +{ + Q_OBJECT + public: + info_dialog(QVector > const& info,QWidget * parent = 0); + private: + Ui::InfoDialog ui; +}; + + +#endif //INFO_DIALOG_HPP diff --git a/demo/viewer/layerdelegate.cpp b/demo/viewer/layerdelegate.cpp new file mode 100644 index 000000000..b06a129ef --- /dev/null +++ b/demo/viewer/layerdelegate.cpp @@ -0,0 +1,55 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#include +#include "layerdelegate.hpp" + +LayerDelegate::LayerDelegate(QObject *parent) + : QAbstractItemDelegate(parent) +{ +} + +void LayerDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + painter->setRenderHint(QPainter::Antialiasing); + painter->setPen(QPen(QColor(255,0,0),1)); + + if (option.state & QStyle::State_Selected) + painter->setBrush(QBrush(QColor(0, 0, 255, 64))); + else + painter->setBrush(QBrush(QColor(255, 0, 0, 64))); + + + painter->drawRoundRect(option.rect,4,4); + + if (option.state & QStyle::State_Selected) + painter->setBrush(option.palette.highlightedText()); + else + painter->setBrush(QBrush(QColor(255, 120, 0, 127))); + +} + +QSize LayerDelegate::sizeHint(const QStyleOptionViewItem & /* option */, + const QModelIndex & /* index */) const +{ + return QSize(120,24); +} + diff --git a/demo/viewer/layerdelegate.hpp b/demo/viewer/layerdelegate.hpp new file mode 100644 index 000000000..f6ccc391a --- /dev/null +++ b/demo/viewer/layerdelegate.hpp @@ -0,0 +1,44 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ +#ifndef LAYER_DELEGATE_HPP +#define LAYER_DELEGATE_HPP + +#include +#include +#include +#include + +class QAbstractItemModel; +class QObject; +class QPainter; + +class LayerDelegate : public QAbstractItemDelegate +{ + Q_OBJECT + +public: + LayerDelegate(QObject *parent = 0); + void paint(QPainter *painter, const QStyleOptionViewItem &option, + const QModelIndex &index) const; + QSize sizeHint(const QStyleOptionViewItem &option, + const QModelIndex &index ) const; +}; + +#endif //LAYER_DELEGATE_HPP diff --git a/demo/viewer/layerlistmodel.cpp b/demo/viewer/layerlistmodel.cpp new file mode 100644 index 000000000..b021652b8 --- /dev/null +++ b/demo/viewer/layerlistmodel.cpp @@ -0,0 +1,113 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + + +#include "layerlistmodel.hpp" +#include + +#include +#include + +using mapnik::Map; + +LayerListModel::LayerListModel(boost::shared_ptr map,QObject *parent) + : QAbstractListModel(parent), + map_(map) {} + +int LayerListModel::rowCount(QModelIndex const&) const +{ + if (map_) return map_->layers().size(); + return 0; +} + +QVariant LayerListModel::data(QModelIndex const& index,int role) const +{ + if (!index.isValid() || !map_) + return QVariant(); + if (index.row() < 0 || index.row() >= map_->layers().size()) + return QVariant(); + if (role == Qt::DisplayRole) + return QString(map_->layers().at(index.row()).name().c_str()); + else if (role == Qt::DecorationRole) + { + double scale = map_->scale(); + if (map_->layers().at(index.row()).isVisible(scale)) + { + return QIcon(":/images/globe.png"); + } + else + { + return QIcon(":/images/globe_bw.png"); + } + } + else if (role == Qt::CheckStateRole) + { + if (map_->layers().at(index.row()).isActive()) + return QVariant(Qt::Checked); + else + return QVariant(Qt::Unchecked); + } + else + { + return QVariant(); + } +} + +QVariant LayerListModel::headerData(int section, Qt::Orientation orientation, + int role) const +{ + if (role != Qt::DisplayRole) + return QVariant(); + + if (orientation == Qt::Horizontal) + return QString("TODO Column %1").arg(section); + else + return QString("TODO Row %1").arg(section); +} + +bool LayerListModel::setData(const QModelIndex &index, + const QVariant &value, int role) +{ + if (!map_) return false; + + if (index.isValid() && role == Qt::CheckStateRole) + { + int status = value.toInt(); + std::vector & layers = const_cast& >(map_->layers()); + layers.at(index.row()).setActive(status); + emit dataChanged(index, index); + return true; + } + return false; +} + +Qt::ItemFlags LayerListModel::flags(QModelIndex const& index) const +{ + Qt::ItemFlags flags = QAbstractItemModel::flags(index); + + if (index.isValid()) + flags |= Qt::ItemIsUserCheckable; + return flags; +} + + + + + diff --git a/demo/viewer/layerlistmodel.hpp b/demo/viewer/layerlistmodel.hpp new file mode 100644 index 000000000..8a66f19bc --- /dev/null +++ b/demo/viewer/layerlistmodel.hpp @@ -0,0 +1,49 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + + +#ifndef LAYER_LIST_MODEL_HPP +#define LAYER_LIST_MODEL_HPP + +#include +#include +#include +#include + +//using namespace mapnik; + +class LayerListModel : public QAbstractListModel +{ + Q_OBJECT + public: + LayerListModel(boost::shared_ptr map, QObject * parent = 0); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role) const; + QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const; + bool setData(const QModelIndex &index, const QVariant &value, + int role = Qt::EditRole); + Qt::ItemFlags flags(QModelIndex const& index) const; + + private: + boost::shared_ptr map_; +}; + +#endif //LAYER_LIST_MODEL_HPP diff --git a/demo/viewer/layerwidget.cpp b/demo/viewer/layerwidget.cpp new file mode 100644 index 000000000..7f711d3ec --- /dev/null +++ b/demo/viewer/layerwidget.cpp @@ -0,0 +1,61 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#include "layerwidget.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +LayerTab::LayerTab(QWidget* parent) + : QListView(parent) {} + + +void LayerTab::paintEvent(QPaintEvent *e) +{ + QListView::paintEvent(e); +} + +void LayerTab::dataChanged(const QModelIndex &topLeft, + const QModelIndex &bottomRight) +{ + QListView::dataChanged(topLeft, bottomRight); + qDebug("FIXME : update map view!"); + emit update_mapwidget(); +} + +StyleTab::StyleTab(QWidget*) +{ + +} + +void StyleTab::contextMenuEvent(QContextMenuEvent * event ) +{ + qDebug("test"); +} diff --git a/demo/viewer/layerwidget.hpp b/demo/viewer/layerwidget.hpp new file mode 100644 index 000000000..afe407dac --- /dev/null +++ b/demo/viewer/layerwidget.hpp @@ -0,0 +1,49 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2006 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#ifndef LAYERWIDGET_HPP +#define LAYERWIDGET_HPP + +#include +#include +#include + +class LayerTab : public QListView +{ + Q_OBJECT + public: + LayerTab(QWidget* parent=0); + void paintEvent(QPaintEvent *e); + signals: + void update_mapwidget(); + protected slots: + void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); +}; + +class StyleTab : public QTreeView +{ + Q_OBJECT +public: + StyleTab(QWidget* parent=0); +protected: + void contextMenuEvent(QContextMenuEvent * event ); +}; + +#endif diff --git a/demo/viewer/main.cpp b/demo/viewer/main.cpp new file mode 100644 index 000000000..e3d4a79e6 --- /dev/null +++ b/demo/viewer/main.cpp @@ -0,0 +1,69 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2006 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + + +#include +#include +#include +#include +#include "mainwindow.hpp" + +int main( int argc, char **argv ) +{ + using mapnik::datasource_cache; + using mapnik::freetype_engine; + + datasource_cache::instance()->register_datasources("/usr/local/lib/mapnik/input"); + + freetype_engine::instance()->register_font("/usr/local/lib/mapnik/fonts/DejaVuSans.ttf"); + freetype_engine::instance()->register_font("/usr/local/lib/mapnik/fonts/DejaVuSans-Bold.ttf"); + freetype_engine::instance()->register_font("/usr/local/lib/mapnik/fonts/DejaVuSansMono.ttf"); + + + QApplication app( argc, argv ); + MainWindow window; + window.show(); + if (argc == 3) + { + QStringList list = QString(argv[2]).split(","); + if (list.size()==4) + { + bool ok; + double x0 = list[0].toDouble(&ok); + double y0 = list[1].toDouble(&ok); + double x1 = list[2].toDouble(&ok); + double y1 = list[3].toDouble(&ok); + if (ok) + { + try + { + mapnik::projection prj("+proj=merc +datum=WGS84"); + prj.forward(x0,y0); + prj.forward(x1,y1); + window.set_default_extent(x0,y0,x1,y1); + } + catch (...) {} + } + } + } + + if (argc > 1) window.open(argv[1]); + return app.exec(); +} diff --git a/demo/viewer/mainwindow.cpp b/demo/viewer/mainwindow.cpp new file mode 100644 index 000000000..d43430e80 --- /dev/null +++ b/demo/viewer/mainwindow.cpp @@ -0,0 +1,364 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2006 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +// stl +#include + +// qt +#include +#include +#include +#include +#include +#include +#include +#include + +// mapnik +#include + +#include "mainwindow.hpp" +#include "layerlistmodel.hpp" +#include "styles_model.hpp" +#include "layerwidget.hpp" +#include "layerdelegate.hpp" +#include "about_dialog.hpp" + +MainWindow::MainWindow() + : filename_(), + default_extent_(-20037508.3428,-20037508.3428,20037508.3428,20037508.3428) +{ + mapWidget_ = new MapWidget(this); + QSplitter *splitter = new QSplitter(this); + QTabWidget *tabWidget=new QTabWidget; + layerTab_ = new LayerTab; + layerTab_->setFocusPolicy(Qt::NoFocus); + layerTab_->setIconSize(QSize(16,16)); + + //LayerDelegate *delegate = new LayerDelegate(this); + //layerTab_->setItemDelegate(delegate); + //layerTab_->setItemDelegate(new QItemDelegate(this)); + //layerTab_->setViewMode(QListView::IconMode); + + layerTab_->setFlow(QListView::TopToBottom); + tabWidget->addTab(layerTab_,tr("Layers")); + + // Styles tab + styleTab_ = new StyleTab; + tabWidget->addTab(styleTab_,tr("Styles")); + splitter->addWidget(tabWidget); + splitter->addWidget(mapWidget_); + QList list; + list.push_back(200); + list.push_back(600); + splitter->setSizes(list); + + mapWidget_->setFocusPolicy(Qt::StrongFocus); + mapWidget_->setFocus(); + + //setCentralWidget(mapWidget_); + setCentralWidget(splitter); + createActions(); + createMenus(); + createToolBars(); + createContextMenu(); + + setWindowTitle(tr("Mapnik Viewer")); + status=new QStatusBar(this); + status->showMessage(tr("")); + setStatusBar(status); + resize(800,600); + + //connect mapview to layerlist + connect(mapWidget_, SIGNAL(mapViewChanged()),layerTab_, SLOT(update())); + // slider + connect(slider_,SIGNAL(valueChanged(int)),mapWidget_,SLOT(zoomToLevel(int))); + // + connect(layerTab_,SIGNAL(update_mapwidget()),mapWidget_,SLOT(updateMap())); +} + + +MainWindow::~MainWindow() +{ + delete mapWidget_; +} + +void MainWindow::closeEvent(QCloseEvent* event) +{ + event->accept(); +} + +void MainWindow::createContextMenu() +{ + layerTab_->setContextMenuPolicy(Qt::ActionsContextMenu); + layerTab_->addAction(openAct); +} + +void MainWindow::open(QString const& path) +{ + if (path.isNull()) + { + filename_ = QFileDialog::getOpenFileName(this,tr("Open Mapnik file"), + currentPath,"*.xml"); + } + else + { + filename_ = path; + } + + if (!filename_.isEmpty()) + { + load_map_file(filename_); + //zoom_all(); + setWindowTitle(tr("%1 - Mapnik Viewer").arg(filename_)); + } + +} + +void MainWindow::reload() +{ + if (!filename_.isEmpty()) + { + mapnik::Envelope bbox = mapWidget_->getMap()->getCurrentExtent(); + load_map_file(filename_); + mapWidget_->zoomToBox(bbox); + setWindowTitle(tr("%1 - *Reloaded*").arg(filename_)); + } +} + +void MainWindow::save() +{ + QString initialPath = QDir::currentPath() + "/untitled.xml"; + QString filename = QFileDialog::getSaveFileName(this, tr("Save"), + initialPath, + tr("%1 Files (*.xml)") + .arg(QString("Mapnik definition"))); + if (!filename.isEmpty()) + { + std::cout<<"saving "<< filename.toStdString() << std::endl; + } +} + +void MainWindow::load_map_file(QString const& filename) +{ + std::cout<<"loading "<< filename.toStdString() << std::endl; + try + { + unsigned width = mapWidget_->width(); + unsigned height = mapWidget_->height(); + boost::shared_ptr map(new mapnik::Map(width,height)); + mapnik::load_map(*map,filename.toStdString()); + mapWidget_->setMap(map); + mapWidget_->zoomToBox(default_extent_); + layerTab_->setModel(new LayerListModel(map,this)); + styleTab_->setModel(new StyleModel(map,this)); + } + catch (...) + { + std::cout << "Unexpected Exception\n"; + } +} + +void MainWindow::zoom_all() +{ + mapWidget_->defaultView(); +} + +void MainWindow::zoom_to_box() +{ + mapWidget_->setTool(MapWidget::ZoomToBox); +} + +void MainWindow::pan() +{ + mapWidget_->setTool(MapWidget::Pan); +} + +void MainWindow::info() +{ + mapWidget_->setTool(MapWidget::Info); +} + +void MainWindow::pan_left() +{ + mapWidget_->panLeft(); +} + +void MainWindow::pan_right() +{ + mapWidget_->panRight(); +} + +void MainWindow::pan_up() +{ + mapWidget_->panUp(); +} + +void MainWindow::pan_down() +{ + mapWidget_->panDown(); +} + +void MainWindow::about() +{ + about_dialog dlg; + dlg.exec(); +} + +void MainWindow::export_as() +{ + QAction *action = qobject_cast(sender()); + QByteArray fileFormat = action->data().toByteArray(); + QString initialPath = QDir::currentPath() + "/map." + fileFormat; + + QString fileName = QFileDialog::getSaveFileName(this, tr("Export As"), + initialPath, + tr("%1 Files (*.%2);;All Files (*)") + .arg(QString(fileFormat.toUpper())) + .arg(QString(fileFormat))); + if (!fileName.isEmpty()) + { + QPixmap const& pix = mapWidget_->pixmap(); + pix.save(fileName); + } +} + +void MainWindow::print() +{ + + //Q_ASSERT(mapWidget_->pixmap()); + //QPrintDialog dialog(&printer, this); + //if (dialog.exec()) { + // QPainter painter(&printer); + // QRect rect = painter.viewport(); + // QSize size = mapWidget_->pixmap()->size(); + // size.scale(rect.size(), Qt::KeepAspectRatio); + // painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); + // painter.setWindow(mapWidget_->pixmap()->rect()); + // painter.drawPixmap(0, 0, *mapWidget_->pixmap()); + //} +} + +void MainWindow::createActions() +{ + //exportAct = new QAction(tr("&Export as ..."),this); + //exportAct->setShortcut(tr("Ctrl+E")); + //connect(exportAct, SIGNAL(triggered()), this, SLOT(export_as())); + zoomAllAct = new QAction(QIcon(":/images/home.png"),tr("Zoom All"),this); + connect(zoomAllAct, SIGNAL(triggered()), this, SLOT(zoom_all())); + + zoomBoxAct = new QAction(QIcon(":/images/zoombox.png"),tr("Zoom To Box"),this); + zoomBoxAct->setCheckable(true); + connect(zoomBoxAct, SIGNAL(triggered()), this, SLOT(zoom_to_box())); + + panAct = new QAction(QIcon(":/images/pan.png"),tr("Pan"),this); + panAct->setCheckable(true); + connect(panAct, SIGNAL(triggered()), this, SLOT(pan())); + + infoAct = new QAction(QIcon(":/images/info.png"),tr("Info"),this); + infoAct->setCheckable(true); + connect(infoAct, SIGNAL(triggered()), this, SLOT(info())); + + toolsGroup=new QActionGroup(this); + toolsGroup->addAction(zoomBoxAct); + toolsGroup->addAction(panAct); + toolsGroup->addAction(infoAct); + zoomBoxAct->setChecked(true); + + openAct=new QAction(tr("Open Map definition"),this); + connect(openAct,SIGNAL(triggered()),this,SLOT(open())); + saveAct=new QAction(tr("Save Map definition"),this); + connect(saveAct,SIGNAL(triggered()),this,SLOT(save())); + + panLeftAct = new QAction(QIcon(":/images/left.png"),tr("&Pan Left"),this); + connect(panLeftAct, SIGNAL(triggered()), this, SLOT(pan_left())); + panRightAct = new QAction(QIcon(":/images/right.png"),tr("&Pan Right"),this); + connect(panRightAct, SIGNAL(triggered()), this, SLOT(pan_right())); + panUpAct = new QAction(QIcon(":/images/up.png"),tr("&Pan Up"),this); + connect(panUpAct, SIGNAL(triggered()), this, SLOT(pan_up())); + panDownAct = new QAction(QIcon(":/images/down.png"),tr("&Pan Down"),this); + connect(panDownAct, SIGNAL(triggered()), this, SLOT(pan_down())); + + reloadAct = new QAction(QIcon(":/images/reload.png"),tr("Reload"),this); + connect(reloadAct, SIGNAL(triggered()), this, SLOT(reload())); + + foreach (QByteArray format, QImageWriter::supportedImageFormats()) + { + QString text = tr("%1...").arg(QString(format).toUpper()); + + QAction *action = new QAction(text, this); + action->setData(format); + connect(action, SIGNAL(triggered()), this, SLOT(export_as())); + exportAsActs.append(action); + } + + printAct = new QAction(QIcon(":/images/print.png"),tr("&Print ..."),this); + printAct->setShortcut(tr("Ctrl+E")); + connect(printAct, SIGNAL(triggered()), this, SLOT(print())); + + exitAct = new QAction(tr("E&xit"), this); + exitAct->setShortcut(tr("Ctrl+Q")); + connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); + + aboutAct = new QAction(QIcon(":/images/about.png"),tr("&About"), this); + connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); +} + +void MainWindow::createMenus() +{ + exportMenu = new QMenu(tr("&Export As"), this); + foreach (QAction *action, exportAsActs) + exportMenu->addAction(action); + + fileMenu = new QMenu(tr("&File"),this); + fileMenu->addAction(openAct); + fileMenu->addAction(saveAct); + fileMenu->addMenu(exportMenu); + fileMenu->addAction(printAct); + fileMenu->addSeparator(); + fileMenu->addAction(exitAct); + menuBar()->addMenu(fileMenu); + + helpMenu = new QMenu(tr("&Help"), this); + helpMenu->addAction(aboutAct); + menuBar()->addMenu(helpMenu); +} + +void MainWindow::createToolBars() +{ + fileToolBar = addToolBar(tr("Actions")); + fileToolBar->addAction(zoomAllAct); + fileToolBar->addAction(zoomBoxAct); + fileToolBar->addAction(panAct); + fileToolBar->addAction(panLeftAct); + fileToolBar->addAction(panRightAct); + fileToolBar->addAction(panUpAct); + fileToolBar->addAction(panDownAct); + fileToolBar->addAction(infoAct); + fileToolBar->addAction(reloadAct); + fileToolBar->addAction(printAct); + slider_ = new QSlider(Qt::Horizontal,fileToolBar); + slider_->setRange(1,18); + slider_->setTickPosition(QSlider::TicksBelow); + slider_->setTickInterval(1); + slider_->setTracking(false); + fileToolBar->addWidget(slider_); + fileToolBar->addAction(aboutAct); +} diff --git a/demo/viewer/mainwindow.hpp b/demo/viewer/mainwindow.hpp new file mode 100644 index 000000000..078f35e4f --- /dev/null +++ b/demo/viewer/mainwindow.hpp @@ -0,0 +1,115 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2006 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#ifndef MAINWINDOW_HPP +#define MAINWINDOW_HPP + +#include +#include +#include +#include +#include +#include + +#include "mapwidget.hpp" + +//using namespace mapnik; + +class LayerTab; +class StyleTab; +class QSlider; + +class MainWindow : public QMainWindow +{ + Q_OBJECT + public: + MainWindow(); + virtual ~MainWindow(); + inline void set_default_extent(double x0,double y0,double x1, double y1) + { + default_extent_=mapnik::Envelope(x0,y0,x1,y1); + } + + protected: + void closeEvent(QCloseEvent* event); +public slots: + void zoom_all(); + void zoom_to_box(); + void pan(); + void info(); + void export_as(); + void open(QString const& path = QString()); + void reload(); + void save(); + void print(); + void about(); + void pan_left(); + void pan_right(); + void pan_up(); + void pan_down(); + private: + void createActions(); + void createMenus(); + void createToolBars(); + void createContextMenu(); + void load_map_file(QString const& filename); + + + QString currentPath; + QString filename_; + QAbstractItemModel *model; + LayerTab *layerTab_; + StyleTab * styleTab_; + MapWidget * mapWidget_; + QPrinter printer; + //actions + QList exportAsActs; + QActionGroup *toolsGroup; + + QAction *zoomAllAct; + QAction *zoomBoxAct; + QAction *panAct; + QAction *infoAct; + QAction *openAct; + QAction *saveAct; + QAction *printAct; + QAction *exitAct; + QAction *aboutAct; + QAction *panLeftAct; + QAction *panRightAct; + QAction *panUpAct; + QAction *panDownAct; + QAction *reloadAct; + //toolbars + QToolBar *fileToolBar; + QToolBar *editToolBar; + //menus + QMenu *exportMenu; + QMenu *fileMenu; + QMenu *helpMenu; + //status bar + QStatusBar *status; + QSlider * slider_; + + mapnik::Envelope default_extent_; +}; + + +#endif //MAINWINDOW_HPP diff --git a/demo/viewer/mapnik_viewer.qrc b/demo/viewer/mapnik_viewer.qrc new file mode 100644 index 000000000..1ed968ca7 --- /dev/null +++ b/demo/viewer/mapnik_viewer.qrc @@ -0,0 +1,20 @@ + + + images/about.png + images/canada_map.png + images/down.png + images/globe.png + images/globe_bw.png + images/help.png + images/home.png + images/info.png + images/left.png + images/pan.png + images/print.png + images/right.png + images/up.png + images/zoombox.png + images/style.png + images/filter.png + + diff --git a/demo/viewer/mapwidget.cpp b/demo/viewer/mapwidget.cpp new file mode 100644 index 000000000..73fc1ce6f --- /dev/null +++ b/demo/viewer/mapwidget.cpp @@ -0,0 +1,452 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2006 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#include + +#include + +#include +#include +#include +#include +#include +#include "mapwidget.hpp" +#include "info_dialog.hpp" + +using mapnik::Image32; +using mapnik::Map; +using mapnik::Layer; +using mapnik::Envelope; +using mapnik::coord2d; +using mapnik::feature_ptr; +using mapnik::geometry_ptr; +using mapnik::CoordTransform; +using mapnik::projection; + +double scales [] = {279541132.014, + 139770566.007, + 69885283.0036, + 34942641.5018, + 17471320.7509, + 8735660.37545, + 4367830.18772, + 2183915.09386, + 1091957.54693, + 545978.773466, + 272989.386733, + 136494.693366, + 68247.3466832, + 34123.6733416, + 17061.8366708, + 8530.9183354, + 4265.4591677, + 2132.72958385, + 1066.36479192, + 533.182395962}; + +MapWidget::MapWidget(QWidget *parent) + :QWidget(parent), + map_(), + selected_(1), + extent_(), + cur_tool_(ZoomToBox), + start_x_(0), + start_y_(0), + end_x_(0), + end_y_(0), + drag_(false), + first_(true), + pen_(QColor(0,0,255,96)) +{ + pen_.setWidth(3); + pen_.setCapStyle(Qt::RoundCap); + pen_.setJoinStyle(Qt::RoundJoin); +} + +void MapWidget::setTool(eTool tool) +{ + cur_tool_=tool; +} + +void MapWidget::paintEvent(QPaintEvent*) +{ + QPainter painter(this); + + if (drag_) + { + if (cur_tool_ == ZoomToBox) + { + unsigned width = end_x_-start_x_; + unsigned height = end_y_-start_y_; + painter.drawPixmap(QPoint(0, 0),pix_); + painter.setPen(pen_); + painter.drawRect(start_x_,start_y_,width,height); + } + else if (cur_tool_ == Pan) + { + int dx = end_x_-start_x_; + int dy = end_y_-start_y_; + painter.setBrush(QColor(200,200,255,128)); + painter.drawRect(0,0,width(),height()); + painter.drawPixmap(QPoint(dx,dy),pix_); + } + } + else + { + painter.drawPixmap(QPoint(0, 0),pix_); + } + painter.end(); +} + +void MapWidget::resizeEvent(QResizeEvent * ev) +{ + if (map_) + { + map_->resize(ev->size().width(),ev->size().height()); + updateMap(); + } +} + +void MapWidget::mousePressEvent(QMouseEvent* e) +{ + if (e->button()==Qt::LeftButton) + { + if (cur_tool_ == ZoomToBox || cur_tool_==Pan) + { + start_x_ = e->x(); + start_y_ = e->y(); + drag_=true; + } + else if (cur_tool_==Info) + { + if (map_) + { + QVector > info; + + projection proj(map_->srs()); // map projection + double scale_denom = scale_denominator(*map_,proj.is_geographic()); + + for (unsigned index = 0; index < map_->layerCount();++index) + { + Layer & layer = map_->layers()[index]; + if (!layer.isVisible(scale_denom)) continue; + std::string name = layer.name(); + double x = e->x(); + double y = e->y(); + std::cout << "query at " << x << "," << y << "\n"; + + std::auto_ptr data(new mapnik::memory_datasource); + mapnik::featureset_ptr fs = map_->query_map_point(index,x,y); + + if (fs) + { + feature_ptr feat = fs->next(); + if (feat) + { + std::map const& props = feat->props(); + std::map::const_iterator itr=props.begin(); + for (; itr!=props.end();++itr) + { + if (itr->second.to_string().length() > 0) + { + info.push_back(QPair(QString(itr->first.c_str()), + itr->second.to_string().c_str())); + } + } + + geometry_ptr geom = feat->get_geometry(); + if (geom) + { + (*feat)["mapnik:geometry"] = geom->type(); + data->push(feat); + } + } + } + + if (data->size()) + { + mapnik::Layer annotations("*annotations*"); + annotations.set_srs(map_->layers()[index].srs()); + annotations.add_style("mapnik:selection"); + annotations.set_datasource(mapnik::datasource_ptr(data.release())); + map_->addLayer(annotations); + updateMap(); + info_dialog info_dlg(info,this); + info_dlg.exec(); + break; + } + } + + // remove annotation layer + map_->layers().erase(remove_if(map_->layers().begin(), + map_->layers().end(), + bind(&Layer::name,_1) == "*annotations*") + , map_->layers().end()); + } + } + } + else if (e->button()==Qt::RightButton) + { + //updateMap(); + } +} + +void MapWidget::mouseMoveEvent(QMouseEvent* e) +{ + if (cur_tool_ == ZoomToBox || cur_tool_==Pan) + { + end_x_ = e->x(); + end_y_ = e->y(); + update(); + } +} + +void MapWidget::mouseReleaseEvent(QMouseEvent* e) +{ + if (e->button()==Qt::LeftButton) + { + end_x_ = e->x(); + end_y_ = e->y(); + if (cur_tool_ == ZoomToBox) + { + drag_=false; + if (map_) + { + CoordTransform t(map_->getWidth(),map_->getHeight(),map_->getCurrentExtent()); + Envelope box = t.backward(Envelope(start_x_,start_y_,end_x_,end_y_)); + map_->zoomToBox(box); + updateMap(); + } + } + else if (cur_tool_==Pan) + { + drag_=false; + if (map_) + { + int cx = int(0.5 * map_->getWidth()); + int cy = int(0.5 * map_->getHeight()); + int dx = end_x_ - start_x_; + int dy = end_y_ - start_y_; + map_->pan(cx - dx ,cy - dy); + updateMap(); + } + } + } +} + + +void MapWidget::keyPressEvent(QKeyEvent *e) +{ + std::cout << "key pressed:"<key()<<"\n"; + switch (e->key()) { + case Qt::Key_Minus: + zoomOut(); + break; + case Qt::Key_Plus: + case 61: + zoomIn(); + break; + case 65: + defaultView(); + break; + case Qt::Key_Up: + panUp(); + break; + case Qt::Key_Down: + panDown(); + break; + case Qt::Key_Left: + panLeft(); + break; + case Qt::Key_Right: + panRight(); + break; + case 49: + zoomToLevel(10); + break; + case 50: + zoomToLevel(11); + break; + case 51: + zoomToLevel(12); + break; + case 52: + zoomToLevel(13); + break; + case 53: + zoomToLevel(14); + break; + case 54: + zoomToLevel(15); + break; + case 55: + zoomToLevel(16); + break; + case 56: + zoomToLevel(17); + break; + case 57: + zoomToLevel(18); + break; + } + QWidget::keyPressEvent(e); +} + +void MapWidget::zoomToBox(mapnik::Envelope const& bbox) +{ + if (map_) + { + map_->zoomToBox(bbox); + updateMap(); + } +} + +void MapWidget::defaultView() +{ + if (map_) + { + map_->resize(width(),height()); + map_->zoom_all(); + updateMap(); + } +} + +void MapWidget::zoomIn() +{ + if (map_) + { + map_->zoom(0.5); + updateMap(); + } +} + +void MapWidget::zoomOut() +{ + if (map_) + { + map_->zoom(2.0); + updateMap(); + } +} + +void MapWidget::panUp() +{ + if (map_) + { + double cx = 0.5*map_->getWidth(); + double cy = 0.5*map_->getHeight(); + map_->pan(int(cx),int(cy - cy*0.25)); + updateMap(); + } +} + +void MapWidget::panDown() +{ + if (map_) + { + double cx = 0.5*map_->getWidth(); + double cy = 0.5*map_->getHeight(); + map_->pan(int(cx),int(cy + cy*0.25)); + updateMap(); + } +} + +void MapWidget::panLeft() +{ + if (map_) + { + double cx = 0.5*map_->getWidth(); + double cy = 0.5*map_->getHeight(); + map_->pan(int(cx - cx * 0.25),int(cy)); + updateMap(); + } +} + +void MapWidget::panRight() +{ + if (map_) + { + double cx = 0.5*map_->getWidth(); + double cy = 0.5*map_->getHeight(); + map_->pan(int(cx + cx * 0.25),int(cy)); + updateMap(); + } +} + + +void MapWidget::zoomToLevel(int level) +{ + if ( map_ && level >= 0 && level < 19 ) + { + double scale_denom = scales[level]; + std::cerr << "scale denominator = " << scale_denom << "\n"; + mapnik::Envelope ext = map_->getCurrentExtent(); + double width = static_cast(map_->getWidth()); + double height= static_cast(map_->getHeight()); + mapnik::coord2d pt = ext.center(); + + double res = scale_denom * 0.00028; + + mapnik::Envelope box(pt.x - 0.5 * width * res, + pt.y - 0.5 * height*res, + pt.x + 0.5 * width * res, + pt.y + 0.5 * height*res); + map_->zoomToBox(box); + updateMap(); + } +} + +void MapWidget::export_to_file(unsigned ,unsigned ,std::string const&,std::string const&) +{ + //Image32 image(width,height); + //agg_renderer renderer(map,image); + //renderer.apply(); + //image.saveToFile(filename,type); +} + +void MapWidget::updateMap() +{ + if (map_) + { + unsigned width=map_->getWidth(); + unsigned height=map_->getHeight(); + + Image32 buf(width,height); + mapnik::agg_renderer ren(*map_,buf); + ren.apply(); + + QImage image((uchar*)buf.raw_data(),width,height,QImage::Format_ARGB32); + pix_=QPixmap::fromImage(image.rgbSwapped()); + update(); + // emit signal to interested widgets + emit mapViewChanged(); + std::cout << map_->getCurrentExtent() << "\n"; + } +} + +boost::shared_ptr MapWidget::getMap() +{ + return map_; +} + +void MapWidget::setMap(boost::shared_ptr map) +{ + map_ = map; +} diff --git a/demo/viewer/mapwidget.hpp b/demo/viewer/mapwidget.hpp new file mode 100644 index 000000000..e30ecdc0a --- /dev/null +++ b/demo/viewer/mapwidget.hpp @@ -0,0 +1,91 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#ifndef MAP_WIDGET_HPP +#define MAP_WIDGET_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class MapWidget : public QWidget +{ + Q_OBJECT + + public: + enum eTool + { + ZoomToBox = 1, + Pan, + Info, + }; + + private: + boost::shared_ptr map_; + int selected_; + QPixmap pix_; + mapnik::Envelope extent_; + eTool cur_tool_; + int start_x_; + int start_y_; + int end_x_; + int end_y_; + bool drag_; + bool first_; + QPen pen_; + public: + MapWidget(QWidget *parent=0); + void setTool(eTool tool); + boost::shared_ptr getMap(); + inline QPixmap const& pixmap() const { return pix_;} + void setMap(boost::shared_ptr map); + void defaultView(); + void zoomToBox(mapnik::Envelope const& box); + void zoomIn(); + void zoomOut(); + void panLeft(); + void panRight(); + void panUp(); + void panDown(); + public slots: + void zoomToLevel(int level); + void updateMap(); + signals: + void mapViewChanged(); + protected: + void paintEvent(QPaintEvent* ev); + void resizeEvent(QResizeEvent* ev); + void mousePressEvent(QMouseEvent* e); + void mouseMoveEvent(QMouseEvent* e); + void mouseReleaseEvent(QMouseEvent* e); + void keyPressEvent(QKeyEvent *e); + void export_to_file(unsigned width, + unsigned height, + std::string const& filename, + std::string const& type); +}; + +#endif // MAP_WIDGET_HPP diff --git a/demo/viewer/styles_model.cpp b/demo/viewer/styles_model.cpp new file mode 100644 index 000000000..d37fa37b8 --- /dev/null +++ b/demo/viewer/styles_model.cpp @@ -0,0 +1,268 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#include "styles_model.hpp" +#include +#include +#include +#include + +class node : private boost::noncopyable +{ + struct node_base + { + virtual QString name() const=0; + virtual QIcon icon() const=0; + virtual ~node_base() {} + }; + + template + struct wrap : public node_base + { + wrap(T const& obj) + : obj_(obj) {} + + ~wrap() {} + + QString name () const + { + return obj_.name(); + } + + QIcon icon() const + { + return obj_.icon(); + } + + T obj_; + }; + + public: + template + node ( T const& obj, node * parent=0) + : impl_(new wrap(obj)), + parent_(parent) + {} + + QString name() const + { + return impl_->name(); + } + + QIcon icon() const + { + return impl_->icon(); + } + + unsigned num_children() const + { + return children_.count(); + } + + node * child(unsigned row) const + { + return children_.value(row); + } + + node * parent() const + { + return parent_; + } + + node * add_child(node * child) + { + children_.push_back(child); + return child; + } + int row () const + { + if (parent_) + return parent_->children_.indexOf(const_cast(this)); + else + return 0; + } + + ~node() + { + qDeleteAll(children_); + } + + private: + boost::scoped_ptr impl_; + QList children_; + node * parent_; +}; + +class rule_node +{ + public: + rule_node(QString name,mapnik::rule_type const & r) + : name_(name), + rule_(r) {} + ~rule_node() {} + QString name() const + { + mapnik::filter_ptr filter = rule_.get_filter(); + + return QString(filter->to_string().c_str()); + } + + QIcon icon() const + { + return QIcon(":/images/filter.png"); + } + + private: + QString name_; + mapnik::rule_type const& rule_; +}; + +class style_node +{ + public: + style_node(QString name, mapnik::feature_type_style const& style) + : name_(name), + style_(style) {} + + ~style_node() {} + + QString name() const + { + return name_; + } + + QIcon icon() const + { + return QIcon(":/images/style.png"); + } + + private: + QString name_; + mapnik::feature_type_style const& style_; +}; + +class map_node +{ + public: + explicit map_node(boost::shared_ptr map) + : map_(map) {} + ~map_node() {} + + QString name() const + { + return QString("Map"); + } + + QIcon icon() const + { + return QIcon(":/images/map.png"); + } + + private: + boost::shared_ptr map_; +}; + +StyleModel::StyleModel(boost::shared_ptr map, QObject * parent) + : QAbstractItemModel(parent), + root_(new node(map_node(map))) +{ + typedef std::map style_type; + style_type const & styles = map->styles(); + style_type::const_iterator itr = styles.begin(); + style_type::const_iterator end = styles.end(); + for (; itr != end; ++itr) + { + node * style = root_->add_child(new node(style_node(QString(itr->first.c_str()),itr->second),root_.get())); + mapnik::rules const& rules = itr->second.get_rules(); + mapnik::rules::const_iterator itr2 = rules.begin(); + for ( ; itr2 != rules.end();++itr2) + { + style->add_child(new node(rule_node(QString("Rule"),*itr2),style)); + } + } +} + +StyleModel::~StyleModel() {} + +// interface +QModelIndex StyleModel::index (int row, int col, QModelIndex const& parent) const +{ + qDebug("index() row=%d col=%d parent::internalId() = %lld", row,col,parent.internalId()); + node * parent_node; + + if (!parent.isValid()) + parent_node = root_.get(); + else + parent_node = static_cast(parent.internalPointer()); + + node * child_node = parent_node->child(row); + if (child_node) + return createIndex(row,col,child_node); + else + return QModelIndex(); +} + +QModelIndex StyleModel::parent (QModelIndex const& index) const +{ + node * child_node = static_cast(index.internalPointer()); + node * parent_node = child_node->parent(); + if (parent_node == root_.get()) + return QModelIndex(); + + return createIndex(parent_node->row(),0,parent_node); +} + +int StyleModel::rowCount(QModelIndex const& parent) const +{ + qDebug("rowCount"); + node * parent_node; + if (parent.column() > 0) return 0; + if (!parent.isValid()) + parent_node = root_.get(); + else + parent_node = static_cast(parent.internalPointer()); + return parent_node->num_children(); +} + +int StyleModel::columnCount( QModelIndex const&) const +{ + return 1; +} + +QVariant StyleModel::data(const QModelIndex & index, int role) const +{ + qDebug("data index::internalId() = %lld", index.internalId()); + if (!index.isValid()) + return QVariant(); + node * cur_node = static_cast(index.internalPointer()); + if (cur_node) + { + if (role == Qt::DisplayRole) + { + + return QVariant(cur_node->name()); + } + else if ( role == Qt::DecorationRole) + { + return cur_node->icon(); + } + } + return QVariant(); +} diff --git a/demo/viewer/styles_model.hpp b/demo/viewer/styles_model.hpp new file mode 100644 index 000000000..621a3fd33 --- /dev/null +++ b/demo/viewer/styles_model.hpp @@ -0,0 +1,46 @@ +/* This file is part of Mapnik (c++ mapping toolkit) + * Copyright (C) 2007 Artem Pavlenko + * + * Mapnik is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +//$Id$ + +#ifndef STYLE_MODEL_HPP +#define STYLE_MODEL_HPP + +#include +#include +#include + +class node; +class StyleModel : public QAbstractItemModel +{ + Q_OBJECT + public: + StyleModel(boost::shared_ptr map, QObject * parent=0); + ~StyleModel(); + // interface + QModelIndex index (int row, int col, QModelIndex const& parent = QModelIndex()) const; + QModelIndex parent (QModelIndex const& child) const; + int rowCount( QModelIndex const& parent = QModelIndex()) const; + int columnCount( QModelIndex const& parent = QModelIndex()) const; + QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const; + private: + //boost::shared_ptr map_; + boost::scoped_ptr root_; +}; + +#endif // STYLE_MODEL_HPP diff --git a/demo/viewer/viewer.pro b/demo/viewer/viewer.pro new file mode 100644 index 000000000..170960589 --- /dev/null +++ b/demo/viewer/viewer.pro @@ -0,0 +1,42 @@ +###################################################################### +# Mapnik viewer - Copyright (C) 2007 Artem Pavlenko +###################################################################### +CC = g++ +TEMPLATE = app + +INCLUDEPATH += /usr/local/include +INCLUDEPATH += /opt/boost_1_35/include/boost-1_35 +INCLUDEPATH += /usr/local/include/freetype2 + +INCLUDEPATH += . + + +unix:LIBS = -L/usr/local/lib -lmapnik -lfreetype + +# Input + +CONFIG += qt debug_and_release +FORMS += forms/about.ui forms/info.ui + +HEADERS += mainwindow.hpp \ + mapwidget.hpp \ + layerwidget.hpp \ + layerlistmodel.hpp \ + layerdelegate.hpp \ + styles_model.hpp + +HEADERS += about_dialog.hpp \ + info_dialog.hpp + +SOURCES += main.cpp \ + mainwindow.cpp \ + mapwidget.cpp \ + layerwidget.cpp \ + layerlistmodel.cpp \ + layerdelegate.cpp \ + styles_model.cpp + +SOURCES += about_dialog.cpp \ + info_dialog.cpp + +RESOURCES += mapnik_viewer.qrc