package org.geogebra.web.geogebra3D.web.main; import org.geogebra.common.euclidian.EuclidianController; import org.geogebra.common.factories.AwtFactory; import org.geogebra.common.geogebra3D.kernel3D.GeoFactory3D; import org.geogebra.common.geogebra3D.kernel3D.Kernel3D; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.main.App; import org.geogebra.common.main.settings.EuclidianSettings; import org.geogebra.web.geogebra3D.web.euclidian3D.EuclidianController3DW; import org.geogebra.web.geogebra3D.web.euclidian3D.EuclidianView3DW; import org.geogebra.web.geogebra3D.web.euclidian3DnoWebGL.EuclidianController3DWnoWebGL; import org.geogebra.web.geogebra3D.web.euclidian3DnoWebGL.EuclidianView3DWnoWebGL; import org.geogebra.web.geogebra3D.web.euclidianFor3D.EuclidianControllerFor3DW; import org.geogebra.web.geogebra3D.web.euclidianFor3D.EuclidianViewFor3DW; import org.geogebra.web.geogebra3D.web.gui.GuiManager3DW; import org.geogebra.web.html5.Browser; import org.geogebra.web.html5.euclidian.EuclidianPanelWAbstract; import org.geogebra.web.html5.euclidian.EuclidianViewW; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.web.gui.GuiManagerW; import org.geogebra.web.web.main.GDevice; /** * @author mathieu * */ public class App3DW { /** * * @param this_app * @return new kernel */ static final protected Kernel newKernel(App this_app) { return new Kernel3D(this_app, new GeoFactory3D()); } /** * * @param this_app * @return new Gui manager */ static final protected GuiManagerW newGuiManager(AppW this_app, GDevice device) { return new GuiManager3DW(this_app, device); } /** * * @param evPanel * @param ec * @param id * @param settings * @return new euclidian view */ static final public EuclidianViewW newEuclidianView( EuclidianPanelWAbstract evPanel, EuclidianController ec, int id, EuclidianSettings settings) { return new EuclidianViewFor3DW(evPanel, ec, id, settings); } /** * * @param kernel * @return new euclidian controller */ static final public EuclidianController newEuclidianController(Kernel kernel) { return new EuclidianControllerFor3DW(kernel); } /** * * @param kernel * kernel * @return new controller for 3D view */ static final public EuclidianController3DW newEuclidianController3DW( Kernel kernel) { if (Browser.supportsWebGL()) { return new EuclidianController3DW(kernel); } return new EuclidianController3DWnoWebGL(kernel); } /** * * @param ec * controller for 3D view * @return new 3D view */ static final public EuclidianView3DW newEuclidianView3DW( EuclidianController3DW ec, EuclidianSettings settings) { if (Browser.supportsWebGL()) { return new EuclidianView3DW(ec, settings); } return new EuclidianView3DWnoWebGL(ec, settings); } /** * Resets the width of the Canvas converning the Width of its wrapper * (splitlayoutpanel center) * * @param app * application instance * * @param width * new width * * @param height * new height */ static final public void ggwGraphicsView3DDimChanged(AppW app, int width, int height) { app.getSettings().getEuclidian(3).setPreferredSize( AwtFactory.getPrototype().newDimension(width, height)); EuclidianView3DW view = (EuclidianView3DW) app.getEuclidianView3D(); view.setCoordinateSpaceSize(width, height); view.doRepaint2(); app.stopCollectingRepaints(); } }