package org.geogebra.web.geogebra3D.web.euclidian3DnoWebGL; import java.util.HashMap; import org.geogebra.common.awt.GBufferedImage; import org.geogebra.common.awt.GColor; import org.geogebra.common.geogebra3D.euclidian3D.EuclidianController3D; import org.geogebra.common.geogebra3D.euclidian3D.openGL.Renderer; import org.geogebra.common.main.settings.EuclidianSettings; import org.geogebra.common.util.debug.Log; import org.geogebra.web.geogebra3D.web.euclidian3D.EuclidianView3DW; import org.geogebra.web.html5.gawt.GBufferedImageW; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.html5.util.ImageLoadCallback; import org.geogebra.web.html5.util.ImageWrapper; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.ImageElement; import com.google.gwt.dom.client.Style.Unit; /** * (dummy) 3D view for browsers that don't support webGL * * @author mathieu * */ public class EuclidianView3DWnoWebGL extends EuclidianView3DW { private GBufferedImage thumb; /** * constructor * * @param ec * controller * @param settings * settings */ public EuclidianView3DWnoWebGL(EuclidianController3D ec, EuclidianSettings settings) { super(ec, settings); setCurrentFile(((AppW) ec.getApplication()).getCurrentFile()); } @Override protected Renderer createRenderer() { return new RendererWnoWebGL(this); } @Override public void repaintView() { // repaint will be done only when resized } @Override public void repaint() { if (thumb != null) { this.g2p.drawImage(thumb, 0, 0); } this.g2p.setColor(GColor.BLACK); if (!getApplication().isScreenshotGenerator()) { this.g2p.drawString( getApplication().getLocalization().getMenu("NoWebGL"), 10, 20); } } @Override public void setCurrentFile(HashMap<String, String> f) { Log.debug("No 3D:Set thumbnail"); HashMap<String, String> file = f; if (file != null && file.get("geogebra_thumbnail.png") != null) { ImageElement img = Document.get().createImageElement(); img.setSrc(file.get("geogebra_thumbnail.png")); thumb = new GBufferedImageW(img); ImageWrapper.nativeon(img, "load", new ImageLoadCallback() { @Override public void onLoad() { repaint(); } }); Log.debug("Set thumbnail done"); } repaint(); } /** * Update the image size */ public void onResize() { g2p.setCoordinateSpaceSize(this.getWidth(), this.getHeight()); g2p.getCanvas().getElement().getParentElement().getStyle() .setWidth(g2p.getCoordinateSpaceWidth(), Unit.PX); g2p.getCanvas().getElement().getParentElement().getStyle() .setHeight(g2p.getCoordinateSpaceHeight(), Unit.PX); } }