From 05610158f292380006588a3a88439d9306c386d8 Mon Sep 17 00:00:00 2001 From: wyq Date: Thu, 25 Aug 2022 23:15:52 +0800 Subject: [PATCH] Add MapGLPlot class --- .../org/meteoinfo/chart/GLChartPanel.java | 4 +- .../org/meteoinfo/chart/jogl/MapGLPlot.java | 390 ++++++++++++++++++ meteoinfo-lab/milconfig.xml | 18 +- .../pylib/mipylib/plotlib/_axes3dgl$py.class | Bin 85325 -> 85287 bytes .../pylib/mipylib/plotlib/_axes3dgl.py | 6 +- .../pylib/mipylib/plotlib/miplot$py.class | Bin 105417 -> 105307 bytes meteoinfo-lab/pylib/mipylib/plotlib/miplot.py | 12 +- .../org/meteoinfo/lab/gui/FigureDockable.java | 25 +- 8 files changed, 422 insertions(+), 33 deletions(-) create mode 100644 meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/MapGLPlot.java diff --git a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/GLChartPanel.java b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/GLChartPanel.java index 6caebcb3..3114ac17 100644 --- a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/GLChartPanel.java +++ b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/GLChartPanel.java @@ -281,7 +281,7 @@ public class GLChartPanel extends GLJPanel implements IChartPanel{ } /** - * Get if using off screen image double buffering. + * Get if using off-screen image double buffering. * Using double buffering will be faster but lower view quality in * high dpi screen computer. * @@ -292,7 +292,7 @@ public class GLChartPanel extends GLJPanel implements IChartPanel{ } /** - * Set using off screen image double buffering or not. + * Set using off-screen image double buffering or not. * @param value Boolean */ public void setDoubleBuffer(boolean value) { diff --git a/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/MapGLPlot.java b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/MapGLPlot.java new file mode 100644 index 00000000..2363b270 --- /dev/null +++ b/meteoinfo-chart/src/main/java/org/meteoinfo/chart/jogl/MapGLPlot.java @@ -0,0 +1,390 @@ +package org.meteoinfo.chart.jogl; + +import com.jogamp.opengl.GL; +import com.jogamp.opengl.GL2; +import org.meteoinfo.chart.ChartText; +import org.meteoinfo.chart.graphic.GraphicProjectionUtil; +import org.meteoinfo.chart.plot.MapGridLine; +import org.meteoinfo.chart.plot.MapGridLine3D; +import org.meteoinfo.common.*; +import org.meteoinfo.geometry.graphic.Graphic; +import org.meteoinfo.projection.ProjectionInfo; + +import java.awt.geom.Rectangle2D; +import java.util.List; + +public class MapGLPlot extends GLPlot { + private ProjectionInfo projInfo; + + /** + * Constructor + */ + public MapGLPlot() { + this(ProjectionInfo.LONG_LAT); + } + + /** + * Constructor + * @param projInfo Projection info + */ + public MapGLPlot(ProjectionInfo projInfo) { + super(); + this.gridLine = new MapGridLine3D(); + this.projInfo = projInfo; + updateExtent(); + } + + /** + * Get projection info + * @return Projection info + */ + public ProjectionInfo getProjInfo() { + return this.projInfo; + } + + /** + * Set projection info + * @param value Projection info + */ + public void setProjInfo(ProjectionInfo value) { + this.projInfo = value; + if (!projInfo.isLonLat()) + ((MapGridLine3D) this.gridLine).setProjInfo(projInfo); + } + + /** + * Add a graphic + * + * @param graphic The graphic + * @param proj The graphic projection + */ + @Override + public void addGraphic(Graphic graphic, ProjectionInfo proj) { + if (proj.equals(this.projInfo)) { + super.addGraphic(graphic); + } else { + Graphic nGraphic = GraphicProjectionUtil.projectClipGraphic(graphic, proj, this.projInfo); + super.addGraphic(nGraphic); + } + } + + /** + * Add a graphic + * + * @param index The index + * @param graphic The graphic + * @param proj The graphic projection + */ + @Override + public void addGraphic(int index, Graphic graphic, ProjectionInfo proj) { + if (proj.equals(this.projInfo)) { + super.addGraphic(index, graphic); + } else { + Graphic nGraphic = GraphicProjectionUtil.projectClipGraphic(graphic, proj, this.projInfo); + super.addGraphic(index, nGraphic); + } + } + + /** + * Set draw extent + * + * @param value Extent + */ + @Override + public void setDrawExtent(Extent3D value) { + super.setDrawExtent(value); + + if (!this.projInfo.isLonLat()) { + ((MapGridLine3D) this.gridLine).setExtent(value); + } + } + + @Override + protected void updateExtent() { + super.updateExtent(); + if (!this.projInfo.isLonLat()) { + ((MapGridLine3D) this.gridLine).setExtent(this.drawExtent); + } + } + + @Override + protected void drawXYGridLine(GL2 gl) { + if (this.projInfo.isLonLat()) { + super.drawXYGridLine(gl); + } else { + MapGridLine mapGridLine = (MapGridLine3D) gridLine; + //Longitude + if (mapGridLine.isDrawXLine()) { + if (mapGridLine.getLongitudeLines() != null) { + this.drawGraphics(gl, mapGridLine.getLongitudeLines()); + } + } + //Latitude + if (mapGridLine.isDrawYLine()) { + if (mapGridLine.getLatitudeLines() != null) { + this.drawGraphics(gl, mapGridLine.getLatitudeLines()); + } + } + } + } + + @Override + protected void drawAxis(GL2 gl) { + if (this.projInfo.isLonLat()) { + super.drawAxis(gl); + } else { + float xMin, xMax, yMin, yMax, zMin, zMax; + xMin = this.transform.transform_x((float) axesExtent.minX); + xMax = this.transform.transform_x((float) axesExtent.maxX); + yMin = this.transform.transform_y((float) axesExtent.minY); + yMax = this.transform.transform_y((float) axesExtent.maxY); + zMin = this.transform.transform_z((float) axesExtent.minZ); + zMax = this.transform.transform_z((float) axesExtent.maxZ); + + gl.glDepthFunc(GL.GL_ALWAYS); + + //Draw axis + float[] rgba; + float x, y; + int skip; + XAlign xAlign; + YAlign yAlign; + Rectangle2D rect; + float strWidth, strHeight; + MapGridLine3D mapGridLine = (MapGridLine3D) gridLine; + if (this.displayXY) { + //Draw x/y axis lines + //x axis line + if (this.angleY >= 90 && this.angleY < 270) { + y = yMax; + } else { + y = yMin; + } + rgba = this.xAxis.getLineColor().getRGBComponents(null); + gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]); + gl.glLineWidth(this.xAxis.getLineWidth() * this.dpiScale); + gl.glBegin(GL2.GL_LINES); + gl.glVertex3f(xMin, y, zMin); + gl.glVertex3f(xMax, y, zMin); + gl.glEnd(); + + //Longitude axis ticks + float tickLen = this.xAxis.getTickLength() * this.lenScale; + float axisLen = this.toScreenLength(xMin, y, zMin, xMax, y, zMin); + float y1 = y > 0 ? y + tickLen : y - tickLen; + if (this.angleY < 90 || (this.angleY >= 180 && this.angleY < 270)) { + xAlign = XAlign.LEFT; + } else { + xAlign = XAlign.RIGHT; + } + if (this.angleX > -120) { + yAlign = YAlign.TOP; + } else { + yAlign = YAlign.BOTTOM; + } + strWidth = 0.0f; + strHeight = 0.0f; + List lonLabels = mapGridLine.getLongitudeLabels(); + for (int i = 0; i < lonLabels.size(); i++) { + GridLabel gridLabel = lonLabels.get(i); + PointD point = gridLabel.getCoord(); + x = (float) point.X; + if (x < axesExtent.minX || x > axesExtent.maxX) { + continue; + } + x = this.transform.transform_x(x); + + //Draw tick line + rgba = this.xAxis.getLineColor().getRGBComponents(null); + gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]); + gl.glLineWidth(this.xAxis.getLineWidth() * this.dpiScale); + gl.glBegin(GL2.GL_LINES); + gl.glVertex3f(x, y, zMin); + gl.glVertex3f(x, y1, zMin); + gl.glEnd(); + + //Draw tick label + rect = drawString(gl, gridLabel.getLabString(), this.xAxis.getTickLabelFont(), + this.xAxis.getTickLabelColor(), x, y1, zMin, xAlign, yAlign); + if (strWidth < rect.getWidth()) { + strWidth = (float) rect.getWidth(); + } + if (strHeight < rect.getHeight()) { + strHeight = (float) rect.getHeight(); + } + } + + //Draw x axis label + ChartText label = this.xAxis.getLabel(); + if (label != null) { + strWidth += this.tickSpace; + float angle = this.toScreenAngle(xMin, y, zMin, xMax, y, zMin); + angle = y < 0 ? 270 - angle : 90 - angle; + float yShift = Math.min(-strWidth, -strWidth); + if (this.angleX <= -120) { + yShift = -yShift; + } + drawString(gl, label, 0.0f, y1, zMin, XAlign.CENTER, yAlign, angle, 0, yShift); + } + + //////////////////////////////////////////// + //y axis line + if (this.angleY >= 180 && this.angleY < 360) { + x = xMax; + } else { + x = xMin; + } + rgba = this.yAxis.getLineColor().getRGBComponents(null); + gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]); + gl.glLineWidth(this.yAxis.getLineWidth() * this.dpiScale); + gl.glBegin(GL2.GL_LINES); + gl.glVertex3f(x, yMin, zMin); + gl.glVertex3f(x, yMax, zMin); + gl.glEnd(); + + //y axis ticks + axisLen = this.toScreenLength(x, yMin, zMin, x, yMax, zMin); + tickLen = this.yAxis.getTickLength() * this.lenScale; + float x1 = x > 0 ? x + tickLen : x - tickLen; + if (this.angleY < 90 || (this.angleY >= 180 && this.angleY < 270)) { + xAlign = XAlign.RIGHT; + } else { + xAlign = XAlign.LEFT; + } + if (this.angleX > -120) { + yAlign = YAlign.TOP; + } else { + yAlign = YAlign.BOTTOM; + } + strWidth = 0.0f; + strHeight = 0.0f; + List latLabels = mapGridLine.getLatitudeLabels(); + for (int i = 0; i < latLabels.size(); i++) { + GridLabel gridLabel = latLabels.get(i); + PointD point = gridLabel.getCoord(); + y = (float) point.Y; + if (y < axesExtent.minY || y > axesExtent.maxY) { + continue; + } + y = this.transform.transform_y(y); + + //Draw tick line + rgba = this.yAxis.getLineColor().getRGBComponents(null); + gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]); + gl.glLineWidth(this.yAxis.getLineWidth() * this.dpiScale); + gl.glBegin(GL2.GL_LINES); + gl.glVertex3f(x, y, zMin); + gl.glVertex3f(x1, y, zMin); + gl.glEnd(); + + //Draw tick label + rect = drawString(gl, gridLabel.getLabString(), this.yAxis.getTickLabelFont(), + this.yAxis.getTickLabelColor(), x1, y, zMin, xAlign, yAlign); + if (strWidth < rect.getWidth()) { + strWidth = (float) rect.getWidth(); + } + if (strHeight < rect.getHeight()) { + strHeight = (float) rect.getHeight(); + } + } + + //Draw y axis label + label = this.yAxis.getLabel(); + if (label != null) { + strWidth += this.tickSpace; + float angle = this.toScreenAngle(x, yMin, zMin, x, yMax, xMin); + angle = x > 0 ? 270 - angle : 90 - angle; + float yShift = Math.min(-strWidth, -strWidth); + if (this.angleX <= -120) { + yShift = -yShift; + } + drawString(gl, label, x1, 0.0f, zMin, XAlign.CENTER, yAlign, angle, 0, yShift); + } + } + + //Draw z axis + if (this.displayZ) { + //z axis line + if (this.angleY < 90) { + x = xMin; + y = yMax; + } else if (this.angleY < 180) { + x = xMax; + y = yMax; + } else if (this.angleY < 270) { + x = xMax; + y = yMin; + } else { + x = xMin; + y = yMin; + } + rgba = this.zAxis.getLineColor().getRGBComponents(null); + gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]); + gl.glLineWidth(this.zAxis.getLineWidth() * this.dpiScale); + gl.glBegin(GL2.GL_LINES); + gl.glVertex3f(x, y, zMin); + gl.glVertex3f(x, y, zMax); + gl.glEnd(); + + //z axis ticks + this.zAxis.updateTickLabels(); + List tlabs = this.zAxis.getTickLabels(); + float axisLen = this.toScreenLength(x, y, zMin, x, y, zMax); + skip = getLabelGap(this.zAxis.getTickLabelFont(), tlabs, axisLen); + float x1 = x; + float y1 = y; + float tickLen = this.zAxis.getTickLength() * this.lenScale; + if (x < 0) { + if (y > 0) { + y1 += tickLen; + } else { + x1 -= tickLen; + } + } else { + if (y > 0) { + x1 += tickLen; + } else { + y1 -= tickLen; + } + } + xAlign = XAlign.RIGHT; + yAlign = YAlign.CENTER; + strWidth = 0.0f; + float v; + for (int i = 0; i < this.zAxis.getTickValues().length; i += skip) { + v = (float) this.zAxis.getTickValues()[i]; + if (v < axesExtent.minZ || v > axesExtent.maxZ) { + continue; + } + v = this.transform.transform_z(v); + if (i == tlabs.size()) { + break; + } + + //Draw tick line + rgba = this.zAxis.getLineColor().getRGBComponents(null); + gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]); + gl.glLineWidth(this.zAxis.getLineWidth() * this.dpiScale); + gl.glBegin(GL2.GL_LINES); + gl.glVertex3f(x, y, v); + gl.glVertex3f(x1, y1, v); + gl.glEnd(); + + //Draw tick label + rect = drawString(gl, tlabs.get(i), x1, y1, v, xAlign, yAlign, -this.tickSpace, 0); + if (strWidth < rect.getWidth()) { + strWidth = (float) rect.getWidth(); + } + } + + //Draw z axis label + ChartText label = this.zAxis.getLabel(); + if (label != null) { + float yShift = strWidth + this.tickSpace * 3; + drawString(gl, label, x1, y1, 0.0f, XAlign.CENTER, YAlign.BOTTOM, 90.f, 0, yShift); + } + } + gl.glDepthFunc(GL2.GL_LEQUAL); + } + } +} diff --git a/meteoinfo-lab/milconfig.xml b/meteoinfo-lab/milconfig.xml index 8fb348e0..47f8a350 100644 --- a/meteoinfo-lab/milconfig.xml +++ b/meteoinfo-lab/milconfig.xml @@ -1,34 +1,34 @@ - - - + - - - + + + + + - + - + @@ -36,5 +36,5 @@
- + diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl$py.class b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl$py.class index b0eb6f3b47ee712222b0b83ad0721c8d66a54078..7284a3d5f652413ef9f23103c7f168bcfd3637d3 100644 GIT binary patch literal 85287 zcmeFa37lL-5%~YE*?kEE?Cu04oC7Y9u(=P2fIvtB1aiTKK!UK@WM`9wz1Slp5s+K) z;1oH$P=O%G4IzR;P(YMJMezniMeqVq!DB&w-|Bwd@6CI&n?&*d^Y{6yDQ4z%byszD zcXd^Dz20yA^S%ch$C;FS%XR$L`U$Rc%&0kCJuAj{ujyOa)j587S5ImDf;ETrGuXDip)=5UR2So89}uAViav$g9K(k!%fbXPmuy3TOEboKNd*3;GDI`11b zC*9%!CuAR0=&Kgd?9nGwD2wEfcWRxw;ZBWHaGg*(-L<^A-F3!SpgDLWBB1S@?L|QE z(!ELxD0D{BtLeSn$bR9P?o#ON09Wo8ry6<+K{2bNJ+~&^a6%gE04|#$!2##xSUQ_A`oxLG7N4`d+ zM!U|=nZ`ADy(^oA{|0I_%GapISl8KgkQ#P!jAvp+(;##vx=wBMV@6kdJA!HJ>I|L9 znQrMBc5>H>_RyK?I#q|ySSos(omH8I+q{T<6nJy2_g|I?a# zI_V+5mh-EdLF`w<1@)@s(g#XbP^qbTb*XnUqHd#Lx_n1Wry$Obw(d3UZOg{dYN@Af z`8d&pp@WL3o;P!PPfs&irHhtlwsl0mPDPZdN}z-`B;_vW2`&F?A%)7c$5t7$K) z6gq2>bVr*^z0(n|X^WKuAE9$5(x+P#{&e3x^Ri-siwR0XU z>s}r{Cv+~Th-(z-hgjCFXhk(MJ4-FDGp@q8Rnq&qg#+@=hn+G0q?y&w&rKhT$b;z%^X+?Y2vgUT$+;OM{@kQsRVRYtZ z#lOh3si}UF>uwxgjQ%HGEKY7Ip4Qg4ve?yK>O6c-vA4fl_P}u#Y5(qKw)|puS8toB z%KeL@_GxE&6}wuCt?gaSefx|qs&))QQFfcQ*0xehaoL*UKIZXz_bHyxUTW@-b^c{_R^}#&DfHt9VO90T0yh6(Y5AY5#_S3u6B{2c~{;NE1g0pW5XWv4JwYIJ3mu=z+C2VLLVLv4n z+xgD78IAT5+wyl=o}H!BM76Fc^{75oq7jv&Nx$cOe>j@r85(F>(dRn*X1ikT?Mf|K zW%onpN5aXE6^ET&ooh=yT{52jsL@OE&QG16N$Im@vb6P;I%KjuuWS9BDPY!i==_2W zzpG!_Fk2QilVXIottvI8Fn_~rTiDZ&uzttJb{L9{uYW*)su7Fy zPUyU<)I5trc-(o^kX?Jt`I9jJXN)~*Bt`IbT3WV3?fs$iSG|^^Uw?-KWe9}M0DYqJ zq0P%rS)tTI=)6V6R#Wk9U5+JKippJ=+DcD_F5Zk7_Q#6W3f&yN>1$hlN-Nfr>>Qz6 z4eInB6hY_?OBD8^@5nySh3;cMOwWb)?k0L_HYCif&eJROsRv%e+WBFT-uhyC>=5W|->k!T##$ zTNAqCq!{GTEn)t%|2CPWQ9spn7Fbpehf7nUEssk4_LTbidpa>Uj)|5wj@fh)LdTITE>Tnj>ve8a$DrG0FyK@zlKAt$D)kRa=9p zAG-Z$6yeh9i2D5qUs;Vm%-NQO`F=A`7Ge zjcEH4x;T?EGgM(DlTYQ{t2HN|(etTE(FomZqp7Wa)=y+#i5I&_MLo~561iwXJ}DPP z(qQ9XssDxU7xau!r4d8d=iSe1hStH5h(=Kg-7iMddTlS(eyM&UN^-94n+RvEa+Qjz zc-(MXRAIhocgSGI?0iX!U`eA;2;E!r?#-H&+oNf!X@~Be(M&eHph+7oL6Od2ylC<0 zYDxJF#?d`m28N@1^X}c6qc6je2*+@QcckpgW!6TlpNN89QpQzWSX4%4Qc9XL^;j5F zU)V}wo6}T@#q~hm{i^0>W2A{=0-=jjR3mH5+C%jd(a%R&hGfWWnSGiVt-%~piyOL+ zuyWga6ZX|N^6tZ$rEf;l#gYi!$Kgn1W*^m0L^&U8+mnH_W%2eE?XtE+#IqT^J(YK# z)U13bnk}}4(0!U1st6}(j@C~^DVJ{*$>IbY$tT_ z@YEJ-4AJ^YsO)mNEyuCxX)YR!1Y@!2%sxM3Fx=36k?F-K#Rl$6dG}YEwckXV+K>p{ z-$i?@c~U24_pli>e}~&EV{ny!!{u$R8s;ZODf1pCU%uC4@z|xqi|l*T0}_ z)J#z<7+W08_EKl_vi6c0v{G{?x)Pd+_*_&CPXkX+h|K$Yiob6>S(&rnYzd{S{Cn{2#fqb z+n#u4{q4;?mAGt-%1n#N0OFtxaxl|0M9=4PRwKT9F~X_Tw&}inR$y5u3?T+fA;PIl zVH!f#FbIXA1Y=1Uq>40{7tD;T$c6t>M_X_2ATeRvx?7O$ zbUoigm&i|bG%lg%>cVK=hMq6BWi;nPFQ*$elQ8s%`)nn$GmU%0^e#@vnhXJNs|d*w zAp|5&mmpa}1cUO@QcSE?>mb332^JzWGY+A*U5qv>8o|(e7u%(3%}71;M(T|~H5WhK zDewM8DM4?SNC_J46neYyq`9S~X|2Q~>L+0=K4Vqf^cK8|$VAJUK&z7~_;{?IuAY{* zPL`RRGxV)2*^0&xid5d3WWB|kUr&xAq^g({TF)N0l9Sd_Pf<#W5_~J0P7hs?2S|)^=hFJ-O-l(dBe{;3`4<{fb%6picm`L<;W~IQ7Dm@_Yjq%13 z;q@fww5++Oe$o^-xZcWfZu2ReQxqr9EK;Uo6e6P4V~T4qqgskUXJhj9w$$UUp+T-npW0C8r*iR3u|HHqCO-*(8OD`=hU{drKEO+$aI|DTQpCV_&9Cp zAqAjW9sVHCOdI;J%FGnHK0{87joi9PMv+6Q`8~`}6#&d08d>9B)ue^_-EtDu+&)Il zYgKI8lM!ugUS7(!QfgUI+R~P!PT3@0){dW&_9$dQ%>t8&(OE*0?d@^^Ra{n5bE}U7 zxVF~f(xsMxrAy`PZK*z#N}NhXqc5%4F+w_J9aaU>S?Q=^FFn`Vo0pZ^MclnAhlkp8 zq0*SKM48#WdTK{|+~}w|OsAG&E7P#KpOaKh zB$q3JszXN!T3SYBY)2^$qz}zKE68Bz?4wP>@hsq_OBGE<)D)HPp%@oQZD8YLFedsZ z3g{;$Yv^Hp=hPU69@^h;Y?=^yc*J7R3umG*LJ$A1y17@a`Ow3;$*GwgdW5!z$@GtY z64-W^g&tAu;cdNbDkp^ixHr9G64}E3?)Fl(H-pyta%|?kPn}44Cu(b9Mzc}^q1OZw8@rl6q1UXp`I!Xp=l82jxX@d!ckAeP zgjmvu(ZfbLH1byHrW*U!NblS9<}4F3s&k5dqRMrR4(%e(>gnm~iIBSFpo7B;62ZJv zsh~U1Sz67hTi)x{onQwWv78LCzS4|H#mZDAUB+AGIt#O5{p11F5Rv^#TcSOz+~}?5 zEW}#_PnxtL`F>`X?6~H5$vY$OP0*Y12bh7&ntMX;Z0Tqp9Cyehte-U1^>(w1MB?_M zB`8%ouvhXAnBEeEPfmaBEoL{vGHXRm>df+1R!Z3(S7xeIu9V#vmn7|*%9Z*>fs|1? zmP({GcFMw!Y$?jSPAjfr<0JX0IEwr))Ja>Zy(O#TR%O~-^l!CyTBg0@{;l>}N}U`y zEBR_A-lzsr?PXC}nKGY}98nXNi0ky)SrK|9NDc2@)4>_6SlFRQij=6a5}X72YSrYQ0i4NDmejO6Y2(K@eJR zd)so-rG`HA8@y|Smkgydyia9JozyVUfzegBhVL!_d2n^b;+qMnYKarA9UV%cXV?l^4vPvv|(zd9yHXpg|M_~K>Hh%66hDm7_`AoRWuko2_b6>OJ&`$cC}&O}dR_ zB^-;Pv_geBLhskikM1_IroES`*3;b5*3Vq|ZPmdaU;D!0w~k=r%=Pw_x_R~rD@6K@ zBBc7{nG3rXsCs|Qd*|w{l7L+>vl1jVRY+Vzw6b-jnJ^2~0j3hRFxYq402 z{G|W(jdiseG1;v}t>A|pU({nLNr&RVCd_{0_@}EZ-ei@v=_*S$S>+wx@io2VzW-M? zEzK8+A}u9W?cZ5GS{|V{z;|>7>E)sK7T?#X9)#Z8eAl%?-$jk+#nCAHUg-NMV9b-y zCmdM4I;!Fm3asMg21)Pti2_!4mI&0K!u_rIu?m-mvw+awI`6%q)}T+oFKSlP^lMp^ zWP$gt>^iM}5>C~*>xZMtG#S0W6MHJk{{MsHFi z=0fO?pj%z7ttg|=-=6QQ3DvgpeFwN*Mp_b*LCJ*vj_5BUQeDLP_(jGSdE4aDH6so3 zy{gDUl6OS>BEumn*t{kZ`o!Myi)PJOIRBWYInx)yV5@AOCka zNk{Tl7K=Ib=j8o@o@Vp(NXV=T{RQ+@G`=2<`bqTT@=eb&)SUXC#WcYo8N|(;ZP_+# z{K3d0_On92G4CIv`9D^AW?2sXDF0s61i`pfaSq%T@|prw@Y zTI8t>@Y#X2*$hhi62>Iyvr@3iCqjd7RLcABQ>LL$aE3(74i(4^eY};Rlb@mATruLL zTCetr&m8?PS+7Idwa#UJX}I6ww{ixfUPF|3mc~z)LF=vdSHfB=ky_Uoh0m$V)r*hD zeat+;Qua^wPZ{pF`BWm6Rrv~jCuaHbuFh3t9xg;*bhGj!#TNQK;IU`%YFg;`2|cB4 z2=EN=!`~&hU3_4FwFpVx6!6!IFxxuw{^?qnXNY;Jx4#c)+mv@OOS7XE&(8ZgInqDZ zXc&cDKY4=dzGjEA(i%02!A#lA6pt6l|CXqFcSjo>BB#if`;QoAo3TXg&_$6KJI+cU4{Th##j+`4@cyUBm8cR!{@-H0Z^?SZHLQ?{<+knLj{g0vOG>y=|7^^U9w^8e^ zOY{Cm^}HlpX3A7sp??L+Il^vLkLo8+a=qhh+m)s!`8Uc;j6IJ3>9PMV2lM~h42@<+ zWRXVa8Sy*`{j1n2&3ucd=QVl%N21YNw)?B!WI} zZ77Y!#*rwxoJsTgr}7nwQcWEI|JQ5MNn>Z4!}mdq+RYeHE1O7d;M!_u%oc?H=dcb% zEGv52a8U^rS4YAM{p;li={b~!J{i;!iIX#RW9@t~?_aA&>1OODX(aS-i5jS%JjHe2 zZ|Q8#;D~qg|BrF827}%TOt@3_wP-U?0Z;Y-vMy~}q!ng7nz%h?YDWvpB8C3#n5xUw z(X@XjKC~VJeQ$w(w|1%{mvdg|uV)$%I8c{Rg#HHoD?+}HUkrWp>nnNxHa+SOFzP}+ z^fzM6DCacdrhf8N*PU&7+3e9bg0VIKOLviXWOZgcYeNBY3|1~Z2N7%2Eq7MCU zurk|vyR7K*3U{SBefV1;H^f|=|B$FfbIlifm2!;MrxDoNVh5mQ=y}YY?&Ft1iZ6zXGPv`w_ z>WT7wPCwK{iP7sP@0a&~po@QKmTX)c`aiDPI6|KA@pCh7C0Z| zOt7<;Lw(l6FY^BLdJc0sI6R)5q0iA^o)IN;ti9A*Klwepu5M*Nlp?fs{-+1!Qk1gP z^aV0`ijoKR4$P5NoF=Q48(pz7mt6Rc{tlgFs#d)j3cKVoR9BJHP}T-n*<0F1b9?v7 z=B7cIQH7eNvQ@&3EE#5^hAMM3ctiVU8p^Ec1<^c4i>h3p3Jgt3>czor2VO4H&HG4garX-1vVZifhLy^#4(H@Rv=_xp^)<`DfL^ zznrZ82fmp-y!*iOj{#))wiCo2wlX?(?AfAlNz|F;OG47cT3OxJUXO zxhU)$7nW_#gKo{04UWOLW;@rnbj>Dvm*u7l+m(#orcUmQQ5sUtti(MGt>pVT-y}vO2TBYo8IIT{OnE? z45t`Y{S=aNcCj;Z zJ})p751%8KwAyE3u)mJdYLkYPo9!SoC(33!ro{0!caw1p9*}sm14YpqoYCIZTcW`p zl8u2{<_8O~ zA%mlt4ve(E%&30KWJJ}})Y7$_D=veD+%c-e2txc~gs7=7SVW)9g-Z2PrpTFpzg&G4 zEY?%VCL;wWdS9d!ZJU zddS-)T&^h{j4Oq~h56t^ny-(*SAu>Re2j(A&Wmf!ef3j0ySmo$BCkdjDOu6h*Wbb` zZM?Z63s?P+?7RwZ?0`)ms9onmnN4JlZ9)~5DgDWbSI48h4H^~NFoZX&iB26{68R7( zz*dMOP*K>4*N)^hJ=;4jGf(uajK$>J?GcMQHl zsoJ+R&TIw~mDeTW{Y|h*Qt@p35I;1tKw=w#X4=&b|>1I|CGDLV` za0_}&y^B5-)pVon9a^SW#Z__k)f~bqGcQL;_*K38B{$S^FYeN%C#(i-OmQ_xL|WDN zHR}6X^?fbhPh7gRn3SGYSvuEJh9t_nnOm8h+*_14!@_^(T{z^>$;@-ilwBO-dAoGlXpEacs9-b?qP5@g6bwOx38U?uwAmo zNF0+`ln>Si_sX8JAs^`Tt>C_V(5{956}Ht1yVhv-iQNXj*La~^dr}=dNUUX)x~(sG zXn3$O_!{HgTWW9Rt&}-K-8pzbK6p5Iglh$ZM~QzPsIO{1C=4E>Q@o8Vo1p7_cGT<& zrcxq#E;637Pi8M!QekT~cQPy952)031#+`1-qfph>3s05;BgV_6M4tg!h9+W9!3Pj zlUO_7Wm=!YUFP!rd$LH#YYBsA_$KeYgaOACIelqY@MBP;E2@H@B2#Xu34>>4W6{@L z1kV%lSsey1@UbQgen}g0>p>X2$b+?E@DfewH+2F+VpaMb_%Qe#!ZmNthru5}TCEOE zgID>wMt^;cuWR+!KcmCt1?8xv*C}aT-nH!HF!(E9c}rHll3G8ES2R_YG)$6R@3k)r zgSQ}M5+K6hZF$-o=3E#RhcV3gjBH!4dKE9s<>0zM%vJNTD$J2d@17Rswvubr*M_;R z<#SD#!-MxaSBJS;K9_ffxdLd*!`ya!w1v5M@pQ$CFgFs;bl!PxCmywexC@V#$<2*n z4x5>yU;XD2!rbosYU|~?S1wivbMJ;X)$iP%vUiEI!HYUHiMhO$q+gR8sgfyk7|UD9 zd6j+801q?5+*s9KmvRon9A>fG8s;X-!{{g_%wd-0lLs4NZYpTaVQxRDbI{Te=CC|?JJ6e5{XN`Ol9U111Ro~>nJ&F44$qyM!_eJYUYTt& zN0Qv(SMd_>!(@9qAftDaPH}cD>@I~0bv&5_tMRS$x3%0otG}Jj#jN_j!>7jccE{&oqs80v4AaeJWt z_Hl0R)89V9g?akhRoqvnzg@%CaQYj!Lq4m&eTJLQ^tWrddQ5-&JooSDZ`X0_jQ(~5 zue|GTH}b}w{&o}Z4e4)R;?)lQ?N(lr(BEz+|5|^$Gw+|Tzuir$qyDy@tTO#=1DQ+u z+kIrS=x^k;d`*9QfHQRcZ6n9!`rFqybkyG-=F~ucdz3(`{`MHIy#DqrJY@at3H&bo z?J0aj{p~yWar)cScy9XJ_wm&9w;y0{=x;y5>CxYQf|sMe{S3cGe|ruOLx1}@=Ar)f z3#=CXjYH9lf>^M|tdHv4uU)5DJ^?$rSt32-r!Sbjh(9mF;V?@qrxdo2>5Hb{sUrT| zg=E+rkRudy&eJ#k6lZJKifCs2(dgot`;VWy2IrYguw%SR=jRW>l)B`-o|&ap+715Hhup_JsI4@vdyW1}N@af&B(bKdbARML)C$_DI`^kkK@>r#&i%!_ zqL6q6p*r^lN?UXQ$rE$%%e1qjY$Y^6V;?V_6HSPI4{s#5dwEIv?>ZwHfIj3Eg;J(> zlGdw2FTMQjp#{N4$IZRuOmi@ef=3Yg4q_~+Phu$QlN+YxQ!ZatpWL#nKJoI^C$|Wz zPcH6NpWKtHKDnhXTbZ)hBm>s!wj=RG(aZsXn=PQhjp4qx$4J zMfJ(uh3b>51Jx(DXUV6>jZx~8%PQ0-Z`!I)-u9DEc^ylA@>-MnjQS&K^6EEf$?B8* zPxVQLq58xoSD&OosZX+8)FXVcJ^~s5ze994r`i$sF+)Di>7NS0h+Ne+BD(aIs ziu#P?DVD$bP4Gc|5^GSO5uf7YtKYb1>QnP~AQ~DS&1nA3AvEGt@wdL5;KhcTVe6f+ zZg}ujCqHkjU$;%;*amNdGlK7v_758Bwiy|$XKeXeGh7gNG>AK=5OgFpN(U#;2sPCmHOB@hRqaLrsm;-ZzZ8Jxyxw-#9i`cVOe#s=9+3$5z)Jl4@+4 zsT?)7zx|z4QaRB6u2R1bvcIdhg*Ych93hDF4B~A8*JkNmX1D zBkmxG?~_@)bY4T<`^L)ro!3w^QXVfekC&OpJIdo0^SH%4-dP^En#Zl?@h-dbY+;-(4QR z-%vjz)!rF#{XGQn0|xQz6yn)2Vm*lWJLfL0`l@sOV!!T#8=Q|dE)ME0R-d`LOXc%k z=L(p((lD_XRcQHqp0%%cJ~_6@Z)&Xj;MhBZc^iUbM3a2bG(Xne;CD3C=Drx$_@J$E zF*Qz!YFwPI@mQrAmr~=aQH@K>Yk2p#bMAEK-HsY`bARW*Jv(0LeAn4%i;p0T>DF2uM4-0J{Ra0YzYUU=N@k*b625Mc^@%E(WnyyWvQu zn!k=ih^(RRGYxgu(rYGXL(M4qb*FQ~y!)LS7dPDPd}-{RZe!hT2>D)j(Y%I&d%O|y z>MY`k1@{DlS@&3kSnHgZ#a!k_&9y*x449A48!N4w$zAJwC|jwc;I^6O3vQQf|B@_f zU%~B(QCC^itFowP6x=m2>IW<;5=jfU{-weT@1Q zi~6H1>O%$h!5H=H7WIWJ>bDB+qcQ3e7WL&U>URt7w`0`rS=3jvs6Q#VKZsF(W>MeB zqP|dYpN~<0X;I(GqW-qv{yIkey+L&`P116Gt>C^IqyE{VicJ!!r{5c86E8P!*Mj?o zt>zVNwP{0F+q>YsJFYg`Ry&kxqC4k}@b=l@jaSOBq3$b+aM0A)Q1^=ZnrmuI@Niba zn-n*8j&1D9OfS7Z7rgUh)YlEF=Vws;nu7N?i|W@|)U{dE`2~Nw81-n2dS4cGQNdpr zqZ<8G>ph%BJ+I(f1y%6RGOhZu8I>;z|H6VVTa8vz{zok8#4PH^3;snh>L)DfIa$Oc@0%`|534YCkY;^;I2A0o(*Ffs`$!oPYY90Ej(G?LbYjOs^C>qZJuuD zNeaFrP46cKb*!8R$26dQrP+DDnndfJpSTR>b5}dNH`IvQROM2(-g#kOL#Ufx=QK3b z$n;3|o(RoQyXfI8?4fHl`A#W z94|H0`jPojaNngRvvnkyhML8K5YO0xJ5u#Q)`jlFHl`0t1hZxvYF1u1jKc{jYCCCa zQpb+N`_cq=NfF%E5Ij*4Bpft2!IM%1chdx=jwRTXCb)ZwV2vTTR1stV1}E5@BKU4i zQ0iEM%hCk*OcAU#1eYsxLq@B1N!4 z6O=lZ;L0??u_=NDL$FN|EDS~PcM~dKN zMX+vXrhLI=(-qYr4HR59+6`mYyKI$@TUI*LtQ?qPWjn)4mtuvbIr!*yr&wW=6zWpP z5Q+U()es1pp=aV}QIQ;|80x~ za5!)TFdH}$I0~2p%muIto%z55K;rnv0FA&x;8@@|;CNs$umm^(cpq>ga1zi2ECrf@ zWx#Tv1tFd< zwA%6BbmrwosvuvT;^quEIukexI0t??caHcS%QxY7J1AVB7+%V>o~K$JdpiX>R#=5e z?l>1vl|#^|>fEU6M5=yFRh8h_as0YSSWWD9s13D#GtCaC3CH;ua1l*&@*Oq35T1OV zPNT6aRMQenlcqnBYFh6!B3QMG67yR#t|{PYIG=z5C+ZcL|FohYF*u>{nG}Wh56%3i zY5FrXeU@!H$^7-IX^GiM(>J7=*1OiGn74E+2`Whb9@Vsj2Bqossir@!w9BTLzXuBIp+Js81?Io1C`d$6C_Ip&z_<)GZN5s= z570D84;7eyL^XX~)byjNrWpxz=cbr{1PYHrfng2YFK!gE3)>ElF_ znb#1YWyEBub)GNdB64vCm*6&P0Y3}5=YZ#7grt)SQhZS{BGFf2NSHGRHyXjedOpTcbH5-o+)3VmxGfl24MJ|@(UW(k{f)sKr&}hIsx+UbwB{?chPGSfN zN!mb2tvgzg8(fw`Zl9PO0RkacF3g5BIUQyAiuKSmzqsU3vqw+Kna_CjlI|(&F zPVnQg8yJNt4?#Mb3n5YQ+?gKOc zV}P;1IAA=0$P_bW9=& zB7(a@;ciW5(rXrna1sbBGmRajBrZ`0EpZ!>6xwZqUhobT2a;eV?cVRrj843Gei+Y* z^YiTp`F5{2n>JKvVl0(a=qDPnqxAZb7W9xsfyZ?YMxfg+WRixWBBc>cz_8Zs087po zo|+6b1^%J5kC4lu{FLrS3VZREE9+0~r6T+`BOf{H)ESf zD$%yU*rqDJ3eB-i)qIm#H?}F1V(Hr0rW(rW$XXg4sVDk6=QPM(njp*k{Lhnx=H)_D zcJ_kDgcgb8?ih(*p+qB0C&Fpkt~uJ-=1q4pcFp?-oYn#7$hY069NtV@K%QN7?zL*? zeEvDko6ZfnT?U++2AspazdHxK=`7;$fOFy7gf(OAoWfP6&{K|>C&X7>VyiB(RhQVR zdm=zw)m;h@Q+1aE#8L?mIxewPmsqMxEY&5B>UIFcQC;GwMEM+-II2q=)g_MV5=V9W zfmOh1z-nL(uoiefa5``XK>X4@3pg7%2RIiv51>cx1;7V^4*?efQvajC$AF7~i-Ajl z%YiE}d3Z}jn>^cIMG|5)S&w%h_Un+W&Lxt0f4#^V%@QRT6gt-@^Vo*B=GEYbk=e4|yG*A6xGU)1&4P%|zDv&jRaQd6U;2_MlvDs+7+Y?) zn8KVbj19J175${mWfVNz$DO)O&{Rpm`#2(-H@0enca>_@-+`-p3_>j9n3wgYFqU!5!M&z1mT^pXgDDic>7o0wDb!PmY?Fl1eV-}h&^@Xd z58eHyP|cU}{?Hkw8ne87W=X#!zrysb zjjA3SHp+jR9$$6>QHf>a`%o4wG9W;UrTeukT8(WjmNN#jUDpv&*)}xMcrHJjMUyQ_ zqs7bSkt|x|g2P)p3f~Yk+4!=4f%j#^`-u zE%B!Wwc=Sg8~;(X_3bU@Oc+;L88zANn*!$c7*w@mg12O&nx6g)I!bo^kr z)pPNCTg;CprnpK<%DEnj&q!-p(kNC)WHWEs-e8)!?C?HjL4$OQwJ1fvj_i zp#4ZOw@3}+-QdOL6#h8D`Fd%jp>CYQM5B=GQb24<8A-xRywm(d)zWJZ1+qbB4$Bl( zR@Y!Vot3?~r$3W6WIhx;^vH%W1@8eS1WRPSM9mp!35h)mlF*+QVG0T++1KO*R2q3M z)5yc+jqD53^B|4z9>L{Hw1Sdc?|sv>E47mC{#@EEc<{oeDg7#V%wIJW!lAf0&IhrZ zjf?Yw;79vClT!(VElJm8mWja@8QFL!y!xR;RHco9k-3po+8WqDC;QlTW*>w1Ur58c z877%&##sJe7pp{gwf6SgygB0jN-8N&HmxzVWW~XMF~M=9$<%C2Cb4N5za*H+h5HP` z()&y@$D!7JIgR*35NrLH89(i7$L`{9(x^WMHDO8B>@e1NmcLD-{xpRe+2-`=cWKmT zQ>Z)IR@rY5(GHAkxri1s^{#QIa6CV9kg^>p+c8t7X6#My@CRu)@=2I@I0sv4pF}pN z$S08vDDp{UlZkv1*+{fc68SIUltliE@=9cUv{w@ODm8+kS6z+5*j{4{OZYIutq-%4 z?)*Bp8#Z56Y_3sDeSbZ%L>Nr&g2!YwS}q=jKV~b4gwhq_!FVlOLBy7>5D&?pGLqZo z|F-1x3@LcOL?TFjE0L@8+CIt46X}+HvUOVC2%A+`zJk)3x;xu>`MRLi>`aU0^U^3q z2?V^Ma5%hzDvMK;f>c1VQ6S*&X?nj=>);heTQ9_2EWLlIwsuj~(YY7V{6M<)@2EY( z`@IdB?P_bknMRfKy_yMj!S7}<-xADdSuit%XX!vg&93Udy9om-snX0+rQY9`T4i3Z zRFaN1)OxNIs#Y>y@5h|&-|~*mRp{s zGX|WQ1I}@8J9{T;7!Ubv=iJoO++Q8%ZPJL+{_$Vky_NI)r2)5n!08%r9utq5O!x)- z_d4Ku;09nFa3kaF9l)KyUBErSdf;AQ1Mp?wKHz@fE5KKQ z2Y?5Gjle^|*MP4B4+D*(X5qJrB8TbwGTi|!V?}0x6uL6GrUIYFF`~_fST;3sYMOyy= z27ot#w}7{KZ-Do+J#LWDUV3et_R_Z{FzywY3Hmi2nHTJ{<*RKlFWuWtFt^l8_fWFs z?N|2FJ>oI6E{hI}%i2yJYL>^CJo4DOK^|&_$K@7#B`@7W+oVl)>v(u9kJxKUdFdWX zLKns!q;)bpQ~>nXBsYW#o{h(HWzk8=JL08#EPPA$8m$+$)=M1eSkKriX3;8m>E7;H zw5@Dw){FD@5H#_62JzCpdV>% zrF)}IVFfSU+s71E^wPZsDNfC-3SPQ5#xxUmI-Z^=avDi{=^nm9Jl`sK>2k_Ky;e1? zA~RDAAyjzT_)f^8iIJqyte5Uh%%WBB(!EJpv`TY%au%(Em+no;qE+zHy?q5ujIs2_ z{oK{!rF;8Hd6}0kVT(J6O8jp2eafrIM-uymW7-w5BC} zi-=uLEJP!uymW6?jCZHt=`l=u>E7XrxkYLi?*@WQ z%Gc>2PPunn8u1@UHR)+vr`$VUafsPcNrkrL8<4}`UEVO>UViJ;qcyMrvH zx@BsD{}ZX1(?8NFyc57oW(NpvlpPQ?r$Q0l`%(<}^1@u20qcT#CzdgQg*7MxC#4t= z+=u~t^hdnOYf3X9>2qlYtV=8B*$D~kI0OUDDFy^LVjyZxO91&Xr`bYzznUF^@IwAS z;3TWS2oA4`K!_~(t^y3g7T+bnAUi5wi7%KC1nx0YUXDwx6ZbMQYbg_gOs|H5&+2(F zIRi?m{tH^v|7e2h{-e!O{U83H=)aJU`XBXEx-Uy!_rAQJbaJKemDo3Zd51B%%&d#= zwF&CrF20M4@12}(P7)alzP#?3^5DHwltkE#;#Z`w<;!1@Vo0pZ@3pH6$tm=oh)}5x zMk1^chWIWrjKnE3C=zEJp|XJmuS3a5oPC>Nfaf9hpbl|(T`2*1>5z&IJ$T)!EgX%E zTKkKN+8u+uPqp-PYkhkF$X-s&DYQ~EGaXm|WQ{4GFF;vWFJ$!P5 zhRUJ$`c&)qH#A59=4hJiPcbtp!OSWtD~pI2xkMFXUY^jrthTLX!X&piyZ)oc#4U=>^Wk*bkTnya(7HI1qR*a1d|^FdaA)mKKp=vU{&a6{vxEj5G&#aMH-+iH z3$>=rVh$8ypYyylp1c5U@#3Jz1%hYnjDVHI{(|bT`%5p}eNb?u3{@D%Vm_3nkbdJi zX68act)t6qyexkSV2b|I7M)tu(R(p^)qTX!EBL#EZLQsjlPs@Aq zAmKpxb>O4%2X!n@ru?F~y}fOFaUU)Ru{BT^vcPO?f9*2~rfb)3}0!vNcDM-qo3ABzZN} z%r(M-%D^;Ejv(1)^xXNRqSdMd@gDl2{kG^N$ebN!6N$#=%JOAGbBbv4Wo!bCq{n!l z5+X8#3yGmUKt@f5Ru3c7TBigaNQKWNxWe_{Ja1AI!)K+UEWLt%u(YqJM!V;=s!?r= zOjm_!{fg70ECqcg5an;L^Tb!UPO2pIj6VYj);f3FLx-)IdwOrZK8-p{P~DXlH4f_C zAgHph*1ZWE1^;kiMz74TFc6Z_Vs1=nhKY3vzGn+6*IJTzD9r0KKIwrz;?o9?$~vT< zJd~_Ml_Rav4jFr~m`xYmBWV4LX}*tw@1!vqN5pOtRFx8&4LdpSr>&dQoYts|xBeAY zE6GPCOs4waoCn=oGIVur=D#4KLFwv_V_3$Cnl{znyFDeujD;A-W$#cztYLK0Lev(b zSmeZR5Of|KYXwRLna6t7-kqYCvH9YV-94(UT2&pJ??jp>s#89zMK46F#>_=+I@&ZD z?_Q}>W(x{?CO=s%U0TM`ju_9_e|t-E=*~HHP<7sba~LOKmwD4T4jXWO!Q1}IIO728 zO0m40^^RCXX9MQ|q*{9C0T%!t1U>{@2z&(iDDW}hBH&`+65vwcGT?IHZbCx9z~ ztAMM4Yk*Gzp8`Gud=|JCxDL1;xB*xPd=a<_xEZ(wxE;6yxD&V=xCdAd+zV{Ldf|$3 zZN2a^e>E=*a)AJHc?h}aTiQfPea*_!KbrNdRj!?@gC(@cYeb1x;??`1-b0Z68f5Ja z0Nbq6Wb_1Flmf280GKE4SeFShBy#K@?M7$@t{i!L_{Bf2N zTU1uTa~E z#*vESQmHl&1bmX<4?KA*lb#;3(>Y5fuYNF~+rbLr{;#LR0^>w7i)I zsfjbsmsB-YL?Sa;leGDx?o7n?vfw3VKl3l13cry;WBn`ZGZkJE8~L|_qzb7U8>GKe z4D2PAmN`37Gb54VsDEE4t4(D*ikTW2{gSw6%-D6#Rgn2ZmY1?O9mps2Ua_nce4-e} zN-mSOjD1DEj)dlGTi%|`WNm%LhWeir>%-M7J5^YZk_G)Hw#|1=t5p%;9){iAVluHe64zNkAP*ZXIRQr1?%a@zR2w4o-xxd~3# z)uM>|_YZ}orx_c4x!m-7DN6sT1ei$NEG+#GDg%~E!H-SvO*sUzzq}wxVjmmK z{}gn)mbRuV4TD7N-v%=ou@~GZUK=&1G=q=XP{u&Th`lw#eYcDOv6ly7!1q!N2yVnc z)SPAj`>33ON)dZ&PfJWaA%Sg&U;wF>NkDKT2BPLP11OM0i(01LXdJ9L74c(x_gQRA zBf5a=dzMU)8tqT05JUV%ly)t&M%rJ{&`8?JQ2UO4qg6c`e7c3VQo?n`z(kC8-0t49(Q?#i4hdl2mxlxW29v2l4GiNe!fkiVTm(5e>K zhS<8ly{%(o>xC$`?!QZwNfQPC9HklUYx+@5rksA0@NFGi_jiygNtN~@>N&Zu*jH+O zPOccp5wu=$AQg8z4#C|{F?S}>QW}%q!kyI2aJREmNpP3(0`2>`{w}I@1V)28^6wMN zhhgPcsuc54Bmo#v?IvYtGbDeemXwGs;zcUPyy(ckU$m`dJim?3&Tl$@;z(8i+ zDNctn+N@jQqp!=TqoJ*b>CZBSgZR7>K1|h)D<5IXvOcd*EK%3X`n>*;rmTX`>mOwb zEBUjyu|Eh{>77XkrY}xUAcbcDHZs<{&9ko@p=8@6$5*{Q$DZ1 zB+E`Zc5agc2i0z1}Zvg z)}{7a%NS5`=gOX|5O8`ohuHE z{F74*2yVncnX7tAnt@A{VflL+)sgquO>Gy{$X~lmjIo+wItxkZ*n~CyZ(HaxT#QTaC zKaKq#@jKG~Ph6o_Rlp0w8`jeOPkF;)X-Cr4u8{J8wJW53U$_uS$G&guru8c^)qzk^ zOb(|;{wjrovl#nJQbDYCmYrUCs|6?FGGq>_V)tu}YOXLSNpZK~PghbDHn&QPsu4=HkJ@Kl&e(tphi4vl5z15#Gz&=}Fs z3#l0M5;-(y+14@+&4tc(n{;TLmm*)r>%%Colxg%%c_z*)a>uoQFmMPk9XJ%20n7wu z0eCJxsX+d0;7H&ofOH^#E-(+64=ezV1{#5dz_Gw0;5guTUFXV{{|_v zhTkBT|2jd+TK+dG2KJJD^_@8F@^8xWlCk`6wyX?p`G0B4`BEJp%<{i=%iF7D`QN5k z&szSKPP_cu70p&%;^Q^KdZB|86ih$MU}?#lR*k z|Mg`Ih*3Hi1NWvF5Zp?ZKWfo0D zqY7te%l|RKNiO~LQATX}e^WIl#(HIvV)=i|lFVBEkE=3axsv5CHDhZ#vizTrDhcj} zu>7A?t(RH;PpL&?3%DD& z2Uri>3v2+s4BQ9Y4}1l95ZDMj1bhwnI`9baDDW8YP2gL=9>Lq4U1ao z8i8&~T+^nv?Fj1c6)M|b*=-j7AJk)I_jnf~-1zh;d(mZ_`Q^WoAS}Zz1k<+gAy9o) z@DlT(%ohHm6b@wzucU?71j*RK@$~tVVqh$I=ilQ){-ZO~K90kJPx0GCLCR;)h3>?_f zb_Nk9O}(Xf9wuWUF~;&#DLpN1`kwz!MK_w0aTNY-d7PN`1(kYc=KV7bwSi+W%+>XS z=B5R%Vo2=ldFcc*OEK^ilDG;cIjkKjXkVtDs`@V_nDJJ8z}z=&L|rO-??eR=QMUmS zWhHA-=&r|j6fgv8a7q`Wm(atX(N(V`sErGa1FK*Jng?HPibV*sSK;i+1_kp0p<)f zsn1q&gWXEv1g%u&O)3RT-%G8Js_a=pP@}k}O=kR!dd8z`G1?``B*0##PkLq{Wn#(! zMjVfHg>zJes65KS39u4D&=QX7V4B%FH|aXM+|=1l5Y!fcJIG~>8Dr0$Bm~>5wv=TT zUDFt-G@depPS}$!Xo>G&$!E;BNzRBj-8wQ+P91QL+Wt*fF6~lDC~_~?O0MS`a3^}+ zt^;nBWTQMkdB8bQy^in$`KyBd&wyuv=YZ#dp93!dzW{y(ya@ancnKh;E%v-0C^ogIUWA%z#G8dfWHF+z+1pSfw%cvLk{2q9^eB!2(WsBY9IuL0mFf< zfIL86N3adBEl>m00(C$E7y)btY!8s%5$u3Hb(^uLwz*o{Q~B>Q>U$zW{U_CBTI?kP z9on99F9vUK!7JN8?G_k}k}|V>Dvey%qbA-gPS;0P)F|9d>GAs8wL}kDG~J`_Fpi`AXxh^7T;u3X6?V2$0?@F+JEsF zPBmqf?7v_?DNSsIY5OmjCJ2Mte|F5U|APG$YP8qJ%pIT}w<><>}hv!kUZA&C$&7=2uFNkwxwF`uIpbcK5h%^oVvCYpn{xNkG0P#Foa@mbcnnF)l7y_+Qn zDP17b2sZ33-0y~s!wegCj+x8_WkqmRaBze{u~RgGLiv$Wp4cTaIsNgrc9fv%ze%lA z>6237Z(;;KnY3GE_$9v6OK{6wv&Jj~%u`{=^%2rg+DL|1=XH2@1i{3Qe}+$`;Vu;2cxNui&O$Mp*<>W1^ursV7({kIOIe!Yab) zkeyn)Fi8u-CSjjPlZ&!+(+)^*oF!Z4fJCcLZ`8*R&4cQY{;Oo_m07q4o*?{bi5LN zl(|ey#b&dwbDp49dj)oxE!eo))Yt`_4$E$`wsfSkLT&a$Tl-*ex@_%&&#{BOpP=A> zIodD^{{8XR5sl5LGm*9y)X>=XfQ^Y{#zq{KT>7n{L0%T(&(#FIQdRjK=4Bz7 zL0ZbO;_Opcdx?nUt>AJGSZh?Jz}3q_@dWNy)qYR4cmiwHrC0VUOT6qIB3T}raC%OY zn%a%kd$VjT=4E)X5?8CH^`y8#aV$nu!Yh(Bn)q2&{xiyVmzU|Hc=tNz0-9Z$ZdRWK zl((&4i76+bUx_KF65X*a&Unm8^e(=ZL7d`aqwc}!s_S)Bs<_UTJ9dV`DM-WqS5@!T zortmXbEZPjYdmttK9Hyrxp2DNI80{=LUN;hQRSkEBGUf4&AJKBR&9+Kl1FGTgo?-X ziwt^poSUMTasTXV3&DA+t?i(vRE<~`=gT8sB#?eJLAQQ^C7*HsTAlhgohNYrE>wSd zQ8|HcySpS({>345Tz#dow=aT=eCrVY4_lf3s1I8FQT^A7P8?-+2- z;X-HpMc!anE~9&-{E_%zPhc-#Z(tNK8rTOI1B?a60po!Qz$9QYFa^Nf4E6)20s8|7 z00#o^1r7oZ1`YwH1BU`LfSJH7;4t6_;7H&oU=A=Bm)X1+Wrm15N?jfexS(=mJg!dVpS_59kM00jB}0fwjQtz!|`q zzz2Y{fU|*ffOCQKfb#+V>N`gU6<#d}E@P+*{=>{xaZ@k16T^Rqr4c&^${bb`d{eI$ z1eZbYa_D{2&QMcE)6m-Z|I5nTpYG*~OAJ zug#<89rOSbCe2I66}Zo`GPo;%xwNHxrQHL|7y0-Bd*hb27kdP;um6BzT^yr94+vsp zHp}uU_N3ZI#Y)oKXdENhsM-}*E4rD<7hDdax!?)zQD1Q1Dx;K)84DjnnNRDSk5l>U zh7Ehelmw=+5KIJIBK;353fk3>RZ&nedd+~|MjuJ=@E#_E$}uYVa-r1_JXlST2$(!- z7>dq6{BP5SUcq9#$HwS41W|kOS=;XlxPDCWq;0?N$^?zB7kcO4To$`8oe7V0>CCnJ{2|+A3Jd;hv8t+L#)XTL}i?K#~ zN)V%y1TDA3JHFbel`h0@cWVPynvSg2O7hS{Rrc;~983AOkWA{^^re)sGw~fk)pofF z@xx@w#uJYzwsN0VRpeR5#vA8s{ieGuHr~x|x{FMBU%g}c59co4G=0;Vt)BjLz}>-w z_tkAf!ROffKM#BXxDL1;xB*xP+z8wR+zfmPxCOWsxD6l`BDe#%6Sxbw8@LBp58Mlo z3K5VB5s(VOB65NUfCqt%z(c^-fro)dfJcFE0FMFR0v-pR0GoL78K+3Azv069f`P4HxjsI6Z8d91Nf++HGJe^$+`QA+TavY-@hq+rzd$h1(w zP#w#O7ZF=EOr&c^21iWQc_C3dURkeKtQ}b$s%bepUxB|f!Cp2Ktojf=p{q&_wK;Y^CiHLh1k15++6g8CkO`JHyt(Ki$3{_R zMGb0r=g=gTFtdht4)?thrk<8b!#h`-!c1-kIlO$`jF3p%)&%r&xY%WM5^h2ccQ~$` zyq$@9+nchiZJm3UDXU;x=hUgGNV8IAe{Q5y-CTRuuA|(JQZ2a){GK7yt06vs(8iHn zKDnLJm0n3yQtOE$8C}U**14UflF7W0<$$*FUyCj^+YQ0&A_xT^t@0oT&acxX(`JMJ zcbO==NmfJrQY9*dXIA0H)Z2OtU+ofC)EIhIl_O_{>db-+k<7#h?fFP?Y2B-zdI9z|O!fz-~Yh*d5pdcsH;ouopnsFh|HRN60YO0E_{~0^@)Qz(imY zFd3KvOa=A@_5-FlE*T*e!e+UnkWL{GgB)`$H^<6KP3M2bJj@*hy*bb;7<$8AbcQ=Q zvU8t?!ZJl~yNKR$p_fv&somTC617?cuT0rm>n>N4GIJzV#n3jCWs~qXCv#{P^Df#_ znP7S;Cxd9Y6)6;$`p#-=Z#~x&UqeUCtEc2*Tm!PA>Im4DMyKHS2RmZti2q? z?%?qqg1HVsDNjd{%}y+!I69c?%woxQqOf9eU0E!psHH8_J^I!yXfh6inJPU7!FD_D zb+0M2{f+7OnXuLTjtUWvfhCMN{Q8DNSw<%I1(sk~TTwy;~hBCF>}YL)W=Z zW{VjcpjC-fGl#OXM(!NunJF^>^Bo!@w4v-#-``_=RAXMm&S{ zK~W5_^6m31A(mSHGI0_iP>;jn+}VOxw*2G2e4jf<3eEagdOVx?kULk9A|)T6vggiI z4D6M(wX|&`UDDf-j%;XK%bwnft#v_`ZpPO7pe0*oYehS=-XcFVG!L>_Rp0>zE>sm; z(^ivgenUj%M9qI#u_cIw04r2>T(KSsK|McYX9VXX2^<6@IAU!?r5{zadBCg~C8aew zic}@dq^_Y5MUs3b7sZJRNCLnI&k?m2)3YcXwP$GTUSOsypm+bd)874>|Y|bnX)hrvOet z(hy~mNClZBdU9WxrZ*`?&;Ajx+*PVA{L&%lU7etZ*(mg+LQLRc z%N!!d(6X0G)J?;;rb9Yq*4V=`$44lbCTcz?pDCgiA&4Rh=8F_F1QZhSQHG=_O86ed z?6>wl=Y0Eq-{m&UG*ivM%%63?Z?C=2T6?dx&f1Uf9B?j}45ondz|X+>-~uoeTm&u# zmx9Z{<=_f14g3=P3S0@U0#}preWFPDf)_chtb!omZ7uqGdd;X$GVl^tZje5#FlT3G zEM0A1dq5X^FDlW~g-20nluQRZvuFZ$1zu-u7uw|A^ZLdr%cra%-Pa9>wA z-bSiV^FcsPNA4 zkZ~O*oPaA1l06`OM?KeZMjcC=mbJ3DSC85L?6GeL(tduI9#06j>nG7E7-ckBG$H zoL(s9m9f%O_Uy6q7zSaP9BG$(o!ypnE%=4?GB*U#reM4t>`BZ{gk~o~F9g3w;^Rw+ zNAZ`KavN88KqL;2p@+Sw=RAXTU8+7n)o+wlKbcpRx%WdNe(B}@%T3Cew%^c0H1w^a zq40d?PT}G8?)2@_ogNk8lzf)%T*9XscRH)E%NQ=1!F9cVM-NQ##b9z2pe_UnEH>_exS>Qlpe#y7L#=ju$6p8g+5C%~?g8 zNqha}7Z^3CWDUpWtlfNgDE=AfM*-VQ`Z=%;yb9h4f~1{+Ik^}ZUXfw9mm-eV>c_a6 zQQxKYeD^xsgTIU2YrT|W>!`&KLEohmw<`9ZW&LNFG~vCPs3JVx_Oo6tjpXk$7pFJj zt|bTcAFnGO>lZ&!BZ3L{?k+p z$+P2aPFW3FtAum&K}&9`PYFwfP(=d%Ljsmj%t6VA@~~C(@4m3Eu46sTvR0T)Qk(zX z=?+(w8Coug%ix}_t6g&;B9%nZXN0fn>WYbERUC<;JqA(}=uN@#q)n4H1@G8=>43-v zs4;=8qdf+ef@NSicpN+dR)Ce@Nw5k$1y+Nn!86$E*@dkJe&}6;h}F>hf(YD8=v`|S z-=~+*`(m|)Ee^eFkn{zx7QBeW)#v5Bc|g z$9mR4T+*?T?t2})0p0{}(H~Qb{$MGxQBpT`Lr0c`T+l^K`Xha3`lI=xv@y5*ItR+MdF z6o*Sy5}XnZk-ZW3*k@lNGg9t8LDTdNdK1A}|qI zHQB78v3l_DtVo3JZbgHnlEkk6gca4zEk*|FgYYEx3flLAb2f$d^7n^4k-q+6^fnMq z4A@CZ$itHe#DH5s!i+2-^d)3?gl>;Ra z$j=yxrMiG2rr*m^Iah2KFI|wSJ|MR$*)Gz)m{UIgJGBU`RXn{cUmSUj3pD9K=t@dc&a;ovsci}kh0O33Cfozk#tZ>6z=UJFP$`^{?xGYrX)ARoI)z=D-(R6|DfA3jD~r=pt$vBe zd8Cr9kb+azU9w=3-vfw_)+|Ogaxwg%@S+Ll#HG6DxYTJCqwz)71mO17YkNNHz<_II9 zqaMtHRgSs8$9#XS0DsDY=N((>vHh{8O)*N^d?E{8a?F{>yu7x}XR=^}W2<;ao3C)24dPw)sXDD#zUBF>g%LX3ymD=)aa8Z6aK_ zLA)6U{wH3Rm?(lYm?(j;4$v3UXd-doz9yz8q?z zS0LM&XoJ=Ltt`C4hUIjyr~4a8I{g1ZcNu+jmq8tDV!4yGn^+v7)IFAQ7-C`>hoMGe z`l7qs0Eh969O;6%l0~uWg7#_`#A%Y6Ze5_at-7BZ{&=7ae=N5}hJPr8;g`E3HZBIn z@DGD9{M$nq{v9C~kAWz%M1t zyF5>=%14z6S#-CnvaMI;kR%<@t&W!@SUbcWF+;=`D@3Oe5NGCM(!1~poy0WJNxGSs zvJV8EMnan1NT8Ewh)%+iI(^YeMgpB=Brs_i34ByWqOBN-GqY%s8;K#F)RSrytqP5z z=V$TuuF6oa%6UoJ_McW%jI5tijlmPuQ1l{5f2U#UG(=I+u;Mf%7>S0hg@%`B@g7dx z?L2WW{a+RL+AKcXi95^__v$1~x2Si;V(QFDdJr=b!zsZpDn8o6gGO z$DJ(0Jy~YS(h^@WX^FkaBC!{f7RfMa1wj@uaNKk^2)D`WA(-@ZNQ<*` zWRd8ONsI7AX%W6+)F}{5TCBd-r0>sEyOVl*PwIPnGwH>dn&PVL;8l4jNwY2L^xSuM zM<{}n$X%zXXpirTGMF?I1TpEQkg7?$zF(fH%bZ9%dLpgtO^el;TH&hf>}3lx>E3(qQ%3K72q8O>l%R}!O7n@xXZupc znR?#|xN}uN)znL0s!FEExGKANRp`pWo3#iD-8H6f`w7!W4CzX71S~=vp|7zTHaQIm za-s|tAeXYwhM|#YkD<{HJGkuFI@37@=qWsOICWXbG@|kdcM-3-%WWY($ z={0;*ZF)WfDJqLOIN&Za%Hut*Hsha|>3jyYo5wb>hAloQ(~DedAMw~uELFNV)AFHhL8T>5r9Hfc&)S?y&p9DJ>hadiN>OQ@WBZuLHo3M*dwq3breAf; zdwR?lV5I%K8L8ge`a5X@&W%@-GTAgL_jj8PVWj(EG#Ke;AQEq_>6GzV1C%MKN^|v{rWY>rSW0`}X!Gz=I>+ievLj3~{Dp`hxOW3Mn zr80bMWap@Deq%2eF192HIJX|G2mb(U>jW%11)Jc7gi?nU&5#w$kd@1j)yi-X*cJ=} zEMtW%U4@-scd#cI4fY0O!Dqnd!GT~r_$rtHjsVAi?6L2P&1g3xs zz(wFvFb!M&4Q>bX!9s8!STs-nX!bmP8aN%C0nP$H1?Pat;5=|X_&Jyg zE(X5hcVFSs8(2>t*b z29JP8!4j|(EC)}3mEcM66nGju3;qJ02W!CE*`hJy`yN|yw*{j=WB^q|IG%^7s0O`} zH;#tm-Jc)IiI}Y=Tl-+E9cgcEEPg`^4`^Z{So;5Dei}(Jv9r*L^|1 UtT}0-*L_j1*RRPRr|1p;0?A35Y5)KL literal 85325 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 diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py index 0bdae603..04b985a1 100644 --- a/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py +++ b/meteoinfo-lab/pylib/mipylib/plotlib/_axes3dgl.py @@ -13,7 +13,7 @@ from org.meteoinfo.geo.legend import LegendManage from org.meteoinfo.geo.layer import LayerTypes from org.meteoinfo.geometry.shape import ShapeTypes from org.meteoinfo.geometry.graphic import Graphic, GraphicCollection -from org.meteoinfo.chart.jogl import Plot3DGL, GLPlot, GLForm, JOGLUtil, EarthPlot3D, MapPlot3D +from org.meteoinfo.chart.jogl import GLPlot, GLForm, JOGLUtil, EarthGLPlot, MapGLPlot from org.meteoinfo.math.interpolate import InterpolationMethod from org.meteoinfo.image import ImageUtil from org.meteoinfo.common import Extent3D @@ -1465,7 +1465,7 @@ class MapAxes3D(Axes3DGL): :param plot: (*EarthPlot3D*) Plot. """ if plot is None: - self._axes = MapPlot3D() + self._axes = MapGLPlot() else: self._axes = plot @@ -1506,7 +1506,7 @@ class EarthAxes3D(Axes3DGL): :param plot: (*EarthPlot3D*) Plot. """ if plot is None: - self._axes = EarthPlot3D() + self._axes = EarthGLPlot() else: self._axes = plot diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/miplot$py.class b/meteoinfo-lab/pylib/mipylib/plotlib/miplot$py.class index 852a1be970f920a000fccb82e02a789b5d00e585..6a8b50047bc60e5f0852f019046bea9e635def5c 100644 GIT binary patch delta 27494 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 delta 27911 zcmc(H2YgjU_WzxC%ezS~kef&7At0fKB!nV_Dj}56AwXynUy_&PK^iGE(I>iMVHNd? zS3m`9U@uX?hN5f1f{F#ZtGg~Lmc_CP1o?kw&dqxlNV32Ef86!++x+It%;|IH%*?qD zKisM9+oeUn{M+MuBuVP;J^4_ynbD3(dUc>C&%Yv2t;@pKtnL}bG3OZa zDC%d{*%=D!FqTPCdH%ve2Ybh|w z-}Cfa1`{AXH&|FxqRT759lZ&GU~x%}F0Vqj+P^H2UFI)_u+>c3W_{mki1kM7K>T&E zK8^2`&0df%jFv1p1V+%XdU=pDS_AV_1C_Ao5)M@s7U}Y(OlleCmQxxCRO<3&hFnYf zTv3;iIna~%XE##b#L7UiE?;fP>j>!@>(5!q9W5qBR|U!{mIbDlRzS@ShI}2(+tz`s zehHi43Ys4mEUvAB<~JGgM#8woN*voJW}6{zrT%T!Ib#P+yc2FGipl=!n#ul^fht|z z!6Y*>IKIkXSrRPJ<-5tNqibs_#;&LdltY1g4fzgYcfa-Y*cA4V_3hZUp*pAuXO5{T zudd*0^(d2K(4Q4pQ8V3Nj)7fRd8`i~(B;Pr`9b3G1Y#q<)L*bfm!E=DYl1bUfuyqs z@U=j=i>@v|W5`bv`mOtmtQjE7YXxa z>%MWFV_q}lSE>Jc-Miy9vG@a6xza!pbbH&7-=wK`>n@#e6U%%bDppa9d}zq;(cH(- zut8XcA%9Avf5qrZQekjEL;jpb|5jHp@dDQIAC69|1cEMqX~S!e@&o&d2N|4|Jq=34K@>E z@fem_xPbSCNDS5+@;4;&H?FEcO&UCadF1FWbyrXIc+wT-@S#avksUsw@9oNu!GjIuEE?+u zL_SuQG`{XY*`S6)a2|oM9-vXs|cNR+I+Il7{pH4aHEfOjr6EN-|-jS|f7X z#-tlcKk5&#@^ahGfc!z!9|EIRR0Wm=s;UD?Lk1YiP#PbG@s;86frc`I#z$f$N(05n zCrLvF8Ok{{I@)?M_tv&q@JFQ|Nk$om7zn_E8hB}fbqiJ+NQU)AHSzSTO z*P(oVby5cWwv=$Ic*d%!3i!(^kuQ@nur4*2DPh}`S_rK!@YmD?s>+fw5FE>i1P4LO z2nj^M+Ep}les~JouON_=0h2GFsSCLyAfhZOy&nv|h(^~~Gv>#KE}_n!Ado!BkznOo z8ovz5%CVkLz|bpb;z}sr;1)guTmMWmSAi9|osYxZ^)!ABC>k8kXJGDiYze;`C^$J{ z$ZLE8=58R88$d$iO9Cq~18Z-jnT_zXa408$rJHH^Ccc-$F2!6r?7fBNw$x2uu*Eaw zRzulF1Gj_wG#uYKAPCe<@mJ~!4xH%af&4OmB}n0g9fWxo^eYZjh>%H7hZF9h@q4Y| zi{{2WVJHt%|0!$BqAsCl428}B1!sU>7N{-(GgwOpfP(z5SMy*>Plu(H>y?)vSghLs z3}aiWqN6LX7|P4U`!y!TIu54=PEUv3uhZlk*kBE-;d7?@!}J3*{gyQ&&!@jbop-I$ zyzZfosDs0yMWw$AsjoCpos`}mw$TBh;DBhktfI8GEFhvYy+2l%P6_32m@4xx35dPL zsj$d&J}5Xj#FUdI()+{iFGE8hXEtO(-R zR{jZa`n2q+vvdW=iBcNGp{(FA(Wg(FJa2OLRAA#g@m5xpt}L!7*A*NmUOqK`+EiV^ zS)!F9qm?50)B`3Rbp?lrS`-YF7V4@5MGCO(YOEpot>$|u{gcAg1to#9fUYY1j1JU{ z;{;Rvd_)7UW&YAyq<&S$EN%=rCH~65td*6R#hKC)iEOgSjhW!RL{|-KTYhWS(%PBd zjm26Y=V#VWFTANg$z} zp~mc~*)wL3&6_iN^6as?iu0t^_?e@#W{;jVHY;z;w8_(E>grjBa#*Z@nuN^hFD=#8 z9(Au3j9`g4KxFI|T}=iZ)X9ZUN&;1!JFHBxdIvhkq!}t5H)^^yGw>=KXeAbP>VCGN z4j`V0)fQ#`Y8>0RoF%0X=x3;Oh^WKr&MWG{2JkZjiq8yGg1fGs!=pb?lNA7gu4ZCY zs%sE`x|(IEbjqmXtjCJKOUVWzTsp2wxPKBHR_RB0%n1gT)4f-nVyF{HiD}l`CF|SH z#1a(+%Y)S=x;o2HXVBanYgI5UVIF){7$}|NuL}BcLx*__40SGHoNK)h%q0+IT7FoR(4>yDGSg+o540gM^BwAgpmRhxod$uW8E0D$1N@zU1 ztfH{CG%!+EtE`6?-yf<`Yx#06GbBdBkioUGKut*n0&x}Mp{TYTLUDzUF2sJS^4C;U zK{=kW!+l-72yR*~o&xH{pf90!fQqE8_^XP6zZRoQmJ@tAlNi<%37V}4>FS@+!qZoy zS*5E;!U`4&^Vb1dA)xDFR8bkMMY`2!Q|s!D&?vySo+Eb?cZ^6Fp>q$AZv7u1&3;!=bYQ&*8^^%C3=YQ*l@ zfncww3gXU=Y3ykAZYWaa2)-BEl~xq%>iw_)j2}b;k39^OGJn+)F7*+iPGyN-S9ij3 zF0DhmF@+-*PcxAe-{)M;wb@c`A zd+Z8Ky~HUn^)hcU^(t%(tU!7!#N>V`gqgXjRvt1PG~guVXq0-(MP z)anv{Va0M?eHZ&jkVU57<7WZi6u3L%fuerEz2Pqm*20L7FtX%poexUJ1)zz=LO!SIMgSZUp zDl&5v@0SJqd^M4sW2jpg6a)VRHJ=m7S^WXjWdS}#{hu(KU$LUHDkPLdwvM4`N9$j~ zol`sAW7wR_5e`^PXQUnspqSJ94eW(t)Yl{)Tex~7kLa3*WKpze3YKPhp{{AXt=2=D z4&3tPg(4`mXzq$?f(^ihfnpr}y4DiTE5MSrvFaYF+pul<=gd zodq?yup|tXS5-h`tp^9OMgV*9z`?yO53i!r1NX=4U-qv6tAPN5h<@#CG16bxhCnp-nl==6!o=!4ellpop*HX7+DIS@)6e08 z_?eCAOej}W&NH%>h55qDpstO>ShXk{XcORUTtmdWTAPURkZ_Z(O@@#nT%w6|s?!t6 zM4Qh2SAm0Bn~ALrhOm0~QEFF-z62xyfUED{hOD}fJ+K)M($cX%ljLl{)@BSP28F1w|Nb&M8W~%7^pgjUo9OSq>Xgk3?fUP2Y zz8m)V%Y$W(lOM+%ZZy`LRTE-MqS-cWuc1AuJ;kBttlrg$?0GA@dXE00_ENO=g0|1v zUY(`CqP>c2P6+?@u9(v6ZEm+kqG+K z@U$Z6GsDx4puZWO1cJUWJZS_SGCacw`pWQ}L(pNvGlrmV4bM1&zBfFR2s&bT<^T#o z@Q;RP9u59%coq`$i{U9C=&0c-BIvl`DI@5F;i)9(q~WO+ke3;rWdzBFXC*^^j-alF=L3Se8J;f)>K-yYKNHx~@Ejwkw;?M8B^z=SK`DmZlAtt0 zjwc8O<1PfDAUuGeK`2cVG#Eu`f>0mJA_#?Ra=&*3ip_j1w9PvTC1#o)jk+>HV^HcP zXe^4j1fhyuOHejyqy$YuHI$$!sCp7K4fRffW}s9_P!0-?1kFY*k)T{u52X+fJ?}h} z2WfBt3WEflYshaBl!vMxL4H*F2r58zkDvg`cmx%rxJFPAAOED;n!Es3Bts2>q@2?{*~U5bhh zL6@P5L(mnd+z2S-U58=~4PJ%v3_b&e9ze~4 zpodVVAgB&S34$I)HG-gBs5TJv80rfI@yY^0PZ>(c35KUpNua^KC?62?9LfX)J&&3I zK`-L@PtZO?d554^4CNz&Uc*D5px5!PC+JN);|Y2TuXcjo!RwKrSqJeHB=CJa{|NdJ z&pm=Z#`}$+Pw_4z=rg>+2>KgdTLgW9Clx`5nAE{asp%klyLvQllJR<$=pSZBrgDH6NJNX0h-e+x^LmEpPjFgPBt#!|2hoztuaGVO`+dv;4Vr{sC_a-Lv!&r5!U-JkNX{2TJ5zshsr5 z-&t)p^;C49;;}LTm_8-ODg)5jr?j?i+%$l76;A$aQyNRM%+2#zPwTu}TU!@x9?JTN zg?M9g8cP%0l@zPZO{u7saW^Ubtp(_0fEt~_)>d?e3xdDjl*UF0sQ1ljEK@+`H>W9c ze9BmB+sy;m0&DN(t*x(aPGyV4WXdgR%rBrSK!pO@1*lly9ls@&Ef&zoEvc+b%wD`D zja3T0Uj$SwW@EOdvSng++SW9-(h6aGz=hEE-2?Z2xB;()t3`tB@c zyiXlv&AdBXneJ03T3hb!spR_99P4EOi+t*Q>*u?BD8)Y2ZzbN-nH{eidCwLPJ689} zeI6CfXAe(jee01`x=U)kl#Rc^YNwOZEJ^d?)*>lh?@y{%vhY7iIwtk-9=FbYWB@y6 zUHeG?_QydMjRYh~6Y!TUG5)0C>B#!%k*8a5rl`2oOQTg#?Rc~&sNQ%qCz_AT63f6~ z%Fd1$%-%WD#VQ}u1z?5ukH~CWcaCLkIZdpj)Jp@^;m4(O>ZNk8_g`R8ziTjT7`Xcq z){&#M<~9K37ilyU?p80YCA0&NakS{iTeDb>hTCerG)g@#Wr0QN6UmsH|HKTJl(W^5 zn5>tU68W=Fa`IzOHiMGChofxT(+rB|8ICganU`F;LeMW#Ch7V-2}^jEqs@Ny!6wk| zBeX7m;b?RJlHQ0(8=vPUJ^y@F6D%r;#mpBuiz{Dzr4h@&CX~{B9Od?X&6s7p!cnqb znbU|OcfZONdG}R=wdQ_rA<6X;Ob$EtU$3QMzQ_KkMrcR9-VJjFuh%xB-3HR``!~4g zo^LjTQg?u(96k_WtlpaOwom3!Q~Wj`-12s()74r-d|!Wut9A07rsmTQ^7*`je$I67 zd&KnMdz@*j_nT2>^9LN|tq+<($@_?-*dH~sCM!STC=Y#NcpRrlq`A+%NbhU-!jB&W2$pq;)DyP5uWK z#;W|sCX>@*|DTW+@~O6v-SH6LNlT>qO`n{JMzwII_WYyc{}CIxZ~%>gR`t0k!it&qVS} z7SA(>zu{ri>f1H0watQ@&!Axf=5PNFYiGUv-3t-AvpL=N@1c3!>))Tt9GAeWL7pP$ zf56B*0;gH4j(pvj>(f^9oJ87FB3Tl~Nmd6SUi<^1-n##XrLdyQkH~O!!+#v%X~(Hd zZt}O>;zO_=1CRz2r7&t1TejRoem)}v6 zPf9x^HKH}d2*vwxVY7ctNf<@TIL=2~}uB~tHMJY$jK2(4D?DP}uy(sU9*~$~~Q44TM$%STjT6^mgt@}=- zrJlQ!J%{T+a$F}YpHI#cUA3X>7hSEPTVO^1mKz(uVBci#PFA;*9q`G;*3#cPv!Hd& zZ_`-7`s;7A*%IsQlX>mAWql>BUK+2SlrC|twsrr>_VC0@C$ke!=is^l^HKPg`)v)h zds6tVaziT1W>p(ju>KL7`R>}VizOtWKt+_wZp0+_*{7ggrls8H3bCYG5 z>XV(xwf2`DwgJp8lvxLMk-br71JHX-W{K=_`&*d>(92QSOf+{YtUIf>UsYIg=1*Sl zFZ}Z2S%D4O`J^=ej9oi$R9DX`Odgl!o|JmHrUj++Lj+br808Pc{`MY`sd@y53%-2_^rcvEESfJB@Yh!51r0@}87R zU2^eL1E@2Qv`Ry2w9~w-w-+@c?s_}V3k|L(4V0Ev`djTtft$Q+4ZFeath1a}oUhK4 z=04SfW5K>i2LqH31%n55Fxc!c=!m`C$^KerW7*AizbG~!vgo6*=yqik>zc5&Vbxh7 z#S3c<>w1e--)!F>#a?H(+80K%QBDqnV1C0II}{A|N3%f*cZ3-jPQdL4gW-a~cDqXq zJI~%4!=mgfV&KlFVh}<1#xRrJXYYw&$q{RosTr-o^4A#FJptuTibUxZ+$ebrZwAW= zg5|^ZP=k$$d4$K+PLJ0o@3i0aGM~NKU@Z{a2vugg7Jo07X^-y02HS}( z*^rC~pV{Cs2Y{GAIv zDDVpHqgp}x{SlJ6tyu4KBP4#H9kLh4v5D*}?)zT$$6#RaEs33t zU4bBr_OXP%sHGDFdvW@87 z?_(M4XZuSZn;i8E)}^mN9nqTgWk>DBt=Tjz1>QYFK;h6w#j{dST+oTNx7WwBv)Bo{ zUwhWq{v@6y;A$>OgQci?X)lhBT-VWobcFx$G&-_1ZayPUNmkNvX{#q5MrE{Nvr@1T z8?35yta=Mpy~wRnJdRZ_oo3Y=ZQNGHw`J3zV^Q1Ft?FWb*p?Y&TC(kH$C8+04{7JN z@3M9g`&zVzeHynfJ7U^<|6iu!u(vfv#E$qD=-KNBLYA|IOYelQ{MJJZfiLX+I6oo*lm$sf} zjomqcwU7A;_oaqK$xLAL65<*(XWvn%GUQ6NrO>>!y*q)Gd)r`Xd`dezr867PI@qw~6EA{)~1mOCLGkU+z@dG!wVvumDFTxlfL*%kr@AA#IfxyUD^2&biW%t9jN{BHvs7P z&LGgooW%l>H;6hI(?c+w>`d=H3u!UM{`f4`Kav*I;lLUJEPRHdRhH&qzarI3BjBsi zV$noeQTp3i-I%KYqK*b>CP)W40@inffWh`Xr(%r*)_7py%ZJeNU)@-iOG~_zRJ@e< zhb}RllXS{7&Ki6bVf^ctn0_#c+2?T&MoD;{RnhYdU6CtQoGL0#6*U)sb3uhKWsXtb zIVV&djPi>B7)zT{%@-z4`}s`m?i_@5#g|Tja$rznC%+r>^CCM9yKOa=Q$C3N;1XgnT z!YpX02-?{bq2j|1w>1;liv#N#s^*UhKy9t;5`flPd5i{Fh! zS5IP}p0@bw>m{mw*;SJvqv3jg_hhz(?WIdv)fCqC%+S9Lqh9BJZ@)67vCw~GDnj46 zy4&?r8$-dmbob&@J9ns^G95x+wP&Q@+I4g~>wTus{xg7%@9_eC(G2#}nJD=)fpWk> zxq4<}DA(lxM?&gXb7VX99#0{oP`ou2M&swkM9g?V1Q zNRA`gA31HPfp|MFi+JC3(f`~C{Q(y}F5wZ`+oep9zvUu7+6ejEF7o4o++IE(MU4}- zJs-EOllHUoS#Nx;vA>V z8%Vu0J1&nEuy}h}9vjDB=6RUuX#bGMmgBm*_&l5}ZS7mm6N7J^Ck7|^p^(>J?Pm$C z6S!==zlSQyZuUicC2yzvqkW$rSIWd2@>!eCJ(Eq{%guMxOBA}s4du(IcC%aLU&lvmwc-_N2!bX1bMd2pW1Dq!CxIJZ=U z{|RgWUbuJ`erOFp;4`1Ss1SF@zV<5Kq}n$WGWgT}wUBjd$N|Tt`Snt3eve8HpfrPD z)bQO4E~}lJ-9m6n65Iya!2lc5Ww3B7-vP<^r8}yJ`=%y)9%ZkkJP0ZVMtcLu;tki* zj{|IKAx9A+4xrqr58-QzA6z2x z#)vr*FXl2Lb7SqNi|}GNZvUf*b?rW(K@i)A5*7rpO0dcjf+o^-*T?a?TSt3*F`L+O zG6jt&vZ+(;Eyb+U>0|qfng8^$AtkKq>0`wutXHHYS8&QJmzU(y`gv;53>*ZXJzBzg z_ruSW9H&eK#NP_2!0U5_t~rjbx!h1u%2a1tOLw-(4p$O%+|YH@efV#j95$RGXEO+F z778}=9X983HgP$8Yj~cA$v$-<=T;iwwh-J<{o%ipa=5JqFTPT9!HwVU@fq0RRv@^& z25x+R^0g`y^99LxqEA3gry+al0gg%P2e?3yoW&zUN9{;2z+WN$0{E9Ix2q*2xbr~% zwNH{d_v*7tE$dUKE|p~*&{I&JP^)EGei#Fc$!4syTU}nKu2j8ZR`#jq=k!&4>IFG{ zRi7Hl>8ttFH94SS&&LiGWC{y$I>zbPj}2Vo?AR#xLzW-UJ6ce-^Wf8 zm|6tW(=yEGQ0!bW>vhex4bOfNnzvBZ+SMYXv>HfF4}1*u-U!DP2Zv z+-i?%PVE_{bUl$oxh%~TB%vluon}gR5KXj;W^8j}5>06*k;J%2Cd5X?MmJ`lB@7I0 z5Ek0P!i_n7W8t*TXkhitXka#skBuVhi|2wf z-526|@|BHy%#?m1_qB47EQ&Q^Tb$~?+qiA=FT#Cy2-~)E+qj+Fdv}p-u$O!99yIXY zeQ2V6>H}zE$fX8}#Xo5`O{SBsu`a=ZGj(lH)yL+UtP|;Kx=2c5qhn)E)z$5?hlH+m zVx=F2BG7eLPDm`oW9UNJC(uAyzB*8r;(dY1Qb@Zvm#B*7w97WxFw)NFBB{cHh7(hG zr-k5tTG2+-gCa;)lT0?5G-&N&SKGwCeM+p$)52EJ!z!`5x0x)Ln8dr7tk6S^@BSvZ z++ng3;?l;&<@`tnf)Pl#dmGI_aa&BblKj#(OdYE8T&SJt7I+29V}*qB_?mqsiES4q ztn;k-w{%BLb|cZXchUVROs71F^@qOC34L7xe>B-$MA*Sac-a{)e_jy2C^X%7y32nt z+2h2dql?LvE+&Z15X8SCxV+Xlm!l?og}8Kbak=WuZTY(3@+Rk^oD{meC6@mk3iX3% zkaFHfgP8ab4I=$x9{&jSPtiSfU;0?O$vz^%2`<6c$Hv9_PTgal3Bi98>VF{w9}M?bHd^|lYKAF*VxW34R3NKPE8i^2(1uM&`R@Zs?ZRUpbS_e{%ONgI>vSjnH~?> zo#^6vTWrhNSjTS7%eiV%oU0ZixVGS2wN{)fcRrYECK@o^g+}*jJ~UB2Egns@Piu=N z#;3LC@(mwDHsE$60AaVtqpf^eN1l|QH$AOMnJzA69`ZUnChloy5(l3`kp!^-;E^16 z*!1)us;(}o-I{aI3o1dN`a)bPe&1nw&L)bpTog|=+*N$IC3(h?ue-Sro>dy|4qQBZ zk|6uC-NiLH2mGC|4E0BbIS~sr1)21h%kh{B({~kuxx(ogS_W{#WO1M2- zxcD;Pus%HnZf~JWa@Z|CR&07MA}f0~5Qdi5d5*fS2%3u)>48T~idfq;zP4IAmIy-w z(BSyxJ%kZF$k%p|usUdZHjs>74KkM3$#TRHCBH>1QoraXZ7rn)EwH%;M_Q%!jsk)*juM!HBsq)Ws* za$i%PM>PFhG-D#}r#Q+GYjwUUJAst$LY~+-@&%@RKKZ?W7&%lYPZMtBUZfBe`^m>H zHD%|>8W6^=lV>)Lyxx?rrI;D$LZ00?@ z5yNp0@sQYS%3H{ovt1I)!V*1;Mcj?yxZ6zmQNkVU!mZH}5h3wz(8h{oxP;47FBS5} z3whbX%VSOXIierpqQ5e-T^l7wCLV9fPJYjD5yDdq`@9?0KRND2Q;8z}LtSX_Q3D!J zM{$2M6+FH8<7t=+3r-MN$#JinN)MVJ?wY?nJpZPtWYGMG$b3kCAR=ZG7xRj#j3u;@ z5j6Qp_n9X;oreFuAV22z9 zb~t{(4jF2lScoO2l0&+k<6`qdct2@^2@hbbBaxJu$~=-h+C}n80|~PCnKTuql1DU| zE}A!DweaT&xb|Y^#m34$X-i3Vlj5I4;gx!k;oh=sh zO|g_$naWK_b0LKD1Q-3u|0}(1Do;|H%#M&N_>amsd*+lwM!uNjV%FIeFzQtz!>kvPd9C0Eo?c%_n=2=D3jOgo}Av1xKdrq+r>xBbJK%|Bk6HCLiaz z2pg$&MADkiRIeb#=DJ80g_qqO{!SiBG1W~(GA}|BQvA))v@q3sh-Q9-Mk#EXB<`T8 zI{R{gi=wzGiV#BheN%mnge-KCEN+T~R}?Z#^%EjF*F_RJ{UhcBd6=nwPsod0$d!VB zt5Zs+&_O&(vawb~=4kw;mO>=?E|S&F zkpxT)ADsBbp}<8F5+se=?_+~aZ9LHwx@ayAi_xkhvFyZGuBpwXC=R$tE)A1J)+Bs5 z$D1K7NMedyG?zC`6Zf&Holg|SE{b){P<&`=R}n>ti{fgc2sK`(PBXPFL=$w;T-&r1 zA8Tc54-v^?7s>U_k&MFnKSwl6Tr_q#14dkiFdkuQ?+|jS3wcx10^*)BwGW7*%tdjt zn?h8NaQK9mq`=e;6HU2`W@}g_t+rv|ljHW8T0O0Jg$wtNFn?{i$c`(;6##U}aVJb~ zD@u`-L=oa2E|j~&BoT|l8ZpxwPZ}+CNx9E`Aw6Hnxj@K4M#WK$O9qbWHR7l~*~o>o z+VuA1s^k2xa&g@gu@jF0O4e|Fg6Yj5L#tiL&o!rYZ__)Lw61ZHM6Rlip&_^Lmzv(0 zL{sac+1H$y*`_y-NS3)s_BTxu_nGM}C5q*s2sz)5lsB6p`PB3}WzQ8ZA#XQL;bU!0 z?^=?w(nWGGQaaS|%)-4PgvU6p(C`8l4KObJfSn6}+;P)u5tmgiE}t|f7(X!BN+jpI zNIq+d1m};Btuej#5zT5B&EIi-3%^cq*MhdDP!?A?D7#B2i3EeKo<_;PQi6y1DC0s5Hf9wYK8`5JjS8O zMl>ko;6B2OlTm0;q}zd9G;uy{yRfIb z>3x>m5{hW3cGnuN*xFsfDfe)v@MjtnyiYi#PLN+>>M_C{rgV{uK2l=QK*_7eAO!$d%!-7G>#{{L<)Kdgy z$doQ|k&chN>7NkZKdmGHp{l9lQi;>ll>X$RoUVjl>!1W)l&Q~f@Gf=X%59|Q3J9+UHVJ68NB5b$gKht-w* zrwsTlthPsc+L`T&FVOgPkre*~+cwXqJ+n)DcBeMvFT1su`|Q^C6SpYsb?prYA3swQ zJiI=(ZMXI=F=X07{u4Xzv0d+8&N4l_I;~?JJfWT5FCS#|;|cr%x5YQo6(>Cd#jgeM zD*^tGrX@N2%aN1(8$5cy<4oxHW%nO*3;pgE{bwqKe)=ys^*>M{#FzLFR001XA@o1kC8HS?u>QZ}ZKfGPO~~Q#-^A4a zWG3{-Z9Nh8JpTSj6`c6{!&Kn+-#>2md%dCm^8Nnb1-H0={((6#^oQ<#{NwL`=b-=c v6Krf#?;pwIJ%Kl*$NPi#H?#>@qr-SSev|F}*83d?CVId39^pW>_lN%ndBoF% diff --git a/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py b/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py index 5eb4da81..2d0fcefe 100644 --- a/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py +++ b/meteoinfo-lab/pylib/mipylib/plotlib/miplot.py @@ -847,9 +847,9 @@ def axes3d_map(*args, **kwargs): g_axes = ax if not batchmode: - if g_figure is None or isinstance(g_figure, Figure): - glfigure(**kwargs) - g_figure.set_axes(ax) + if g_figure is None: + figure(**kwargs) + g_figure.add_axes(ax) draw_if_interactive() return ax @@ -866,9 +866,9 @@ def axes3d_earth(*args, **kwargs): g_axes = ax if not batchmode: - if g_figure is None or isinstance(g_figure, Figure): - glfigure(**kwargs) - g_figure.set_axes(ax) + if g_figure is None: + figure(**kwargs) + g_figure.add_axes(ax) draw_if_interactive() return ax diff --git a/meteoinfo-lab/src/main/java/org/meteoinfo/lab/gui/FigureDockable.java b/meteoinfo-lab/src/main/java/org/meteoinfo/lab/gui/FigureDockable.java index f4d2ab7c..610a6cce 100644 --- a/meteoinfo-lab/src/main/java/org/meteoinfo/lab/gui/FigureDockable.java +++ b/meteoinfo-lab/src/main/java/org/meteoinfo/lab/gui/FigureDockable.java @@ -21,10 +21,9 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import com.formdev.flatlaf.extras.FlatSVGIcon; -import org.meteoinfo.chart.ChartPanel; +import org.meteoinfo.chart.GLChartPanel; import org.meteoinfo.chart.IChartPanel; import org.meteoinfo.chart.MouseMode; -//import org.meteoinfo.chart.jogl.GLChartPanel; import org.meteoinfo.console.jython.PythonInteractiveInterpreter; import org.meteoinfo.ui.ButtonTabComponent; @@ -192,8 +191,8 @@ public class FigureDockable extends DefaultSingleCDockable { * @return Figure chart panel */ public final IChartPanel addNewFigure(String title, final JPanel cp) { - if (cp instanceof ChartPanel) { - ((ChartPanel)cp).setDoubleBuffer(this.doubleBuffer); + if (cp instanceof GLChartPanel) { + ((GLChartPanel)cp).setDoubleBuffer(this.doubleBuffer); } final JScrollPane sp = new JScrollPane(cp); this.tabbedPanel.add(sp, title); @@ -220,8 +219,8 @@ public class FigureDockable extends DefaultSingleCDockable { public final IChartPanel addFigure(final JPanel ncp) { ((IChartPanel) ncp).setLoading(true); - if (ncp instanceof ChartPanel) { - ((ChartPanel) ncp).setDoubleBuffer(this.doubleBuffer); + if (ncp instanceof GLChartPanel) { + ((GLChartPanel) ncp).setDoubleBuffer(this.doubleBuffer); } int idx = 1; if (this.tabbedPanel.getTabCount() > 0) { @@ -319,10 +318,10 @@ public class FigureDockable extends DefaultSingleCDockable { * @param idx Figure index * @return Figure */ - public ChartPanel getFigure(int idx) { + public GLChartPanel getFigure(int idx) { if (this.tabbedPanel.getTabCount() > idx) { JScrollPane sp = (JScrollPane) this.tabbedPanel.getComponentAt(idx); - return (ChartPanel) sp.getViewport().getView(); + return (GLChartPanel) sp.getViewport().getView(); } else { return null; } @@ -340,8 +339,8 @@ public class FigureDockable extends DefaultSingleCDockable { * Get figures * @return Figures */ - public List getFigures() { - List figures = new ArrayList<>(); + public List getFigures() { + List figures = new ArrayList<>(); for (int i = 0; i < this.tabbedPanel.getTabCount(); i++) { figures.add(this.getFigure(i)); } @@ -353,7 +352,7 @@ public class FigureDockable extends DefaultSingleCDockable { * * @param cp ChartPanel */ - public void setCurrentFigure(ChartPanel cp) { + public void setCurrentFigure(GLChartPanel cp) { if (this.tabbedPanel.getTabCount() > 0) { JScrollPane sp = new JScrollPane(cp); this.tabbedPanel.setComponentAt(this.tabbedPanel.getSelectedIndex(), sp); @@ -375,8 +374,8 @@ public class FigureDockable extends DefaultSingleCDockable { */ public void setDoubleBuffer(boolean doubleBuffer) { this.doubleBuffer = doubleBuffer; - List figures = this.getFigures(); - for (ChartPanel figure : figures) { + List figures = this.getFigures(); + for (GLChartPanel figure : figures) { figure.setDoubleBuffer(this.doubleBuffer); figure.repaintNew(); }