Skip to content
Snippets Groups Projects
Commit 62116f7c authored by Olivier Maury's avatar Olivier Maury
Browse files

Changer le chargement du logo pour permettre le téléchargement des cartes et...

Changer le chargement du logo pour permettre le téléchargement des cartes et graphiques sous Blink et WebKit. fixes #104
parent 7ada1440
No related branches found
No related tags found
1 merge request!121Impossible de télécharger la carte sous certains navigateurs
Pipeline #225481 passed
......@@ -7,9 +7,10 @@ import org.pepstock.charba.client.plugins.AbstractPlugin;
import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.ImageElement;
import fr.agrometinfo.www.client.util.ApplicationUtils;
/**
* Append RF+AgroMetInfo logo on the chart.
*
......@@ -33,18 +34,11 @@ public final class LogoPlugin extends AbstractPlugin {
*/
private static final double LOGO_SIZE_RATIO = 2.1087;
/**
* The application logo.
*/
private final ImageElement logoImg = Document.get().createImageElement();
/**
* Constructor.
*/
public LogoPlugin() {
super("Logo");
// Load the image once for all
logoImg.setSrc("app/img/logo_etat-agrometinfo.svg");
}
@Override
......@@ -56,6 +50,7 @@ public final class LogoPlugin extends AbstractPlugin {
// Charba Canvas only accept a canvas as image
// 1. create a GWT canvas with the logo
final Canvas logoCanvas = Canvas.createIfSupported();
final ImageElement logoImg = ApplicationUtils.getApplicationLogo();
logoCanvas.getContext2d().drawImage(logoImg, //
0d, //
0d, //
......
......@@ -7,11 +7,11 @@ import java.util.StringJoiner;
import com.google.gwt.canvas.dom.client.Context2d;
import com.google.gwt.canvas.dom.client.Context2d.TextAlign;
import com.google.gwt.canvas.dom.client.TextMetrics;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.i18n.client.NumberFormat;
import elemental2.dom.DomGlobal;
import fr.agrometinfo.www.client.util.ApplicationUtils;
import fr.agrometinfo.www.client.util.UiUtils;
import fr.agrometinfo.www.client.util.color.ColorInterval;
import ol.Map;
......@@ -82,11 +82,6 @@ public final class CanvasTitle extends CanvasWidget {
*/
private List<ColorInterval> colorIntervals;
/**
* The application logo.
*/
private final ImageElement logoImg = Document.get().createImageElement();
/**
* Constructor.
*
......@@ -94,8 +89,6 @@ public final class CanvasTitle extends CanvasWidget {
*/
public CanvasTitle(final Map map) {
super(map);
// Load the image once for all
logoImg.setSrc("app/img/logo_etat-agrometinfo.svg");
}
/**
......@@ -150,6 +143,7 @@ public final class CanvasTitle extends CanvasWidget {
*/
private void drawLogo() {
final Context2d ctx = getCanvas().getContext2d();
final ImageElement logoImg = ApplicationUtils.getApplicationLogo();
ctx.drawImage(logoImg, //
0d + BORDER_SIZE + PADDING, //
0d + BORDER_SIZE + PADDING, //
......
......@@ -5,15 +5,52 @@ import java.util.HashMap;
import java.util.Map;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.ImageElement;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.DOM;
import elemental2.dom.XMLHttpRequest;
/**
* Helper class.
*
* @author Olivier Maury
*/
public final class ApplicationUtils {
/**
* The application logo, retrieved once.
*/
private static final ImageElement LOGO_IMG = Document.get().createImageElement();
/**
* @param b string to encode
* @return base64-encoded string
*/
private static native String base64encode(String b) /*-{
return window.btoa(b);
}-*/;
/**
* Create and return a unique img element with SVG source, ready to export as
* image from map an chart.
*
* @return HTML img element with SVG source as data in src attribute.
*/
public static ImageElement getApplicationLogo() {
if (LOGO_IMG.getSrc() == null || LOGO_IMG.getSrc().isEmpty()) {
final XMLHttpRequest xhr = new XMLHttpRequest();
xhr.onload = e -> {
final String resp = xhr.responseText;
LOGO_IMG.setSrc("data:image/svg+xml;base64," + base64encode(resp));
};
xhr.open("GET", "app/img/logo_etat-agrometinfo.svg");
xhr.send();
}
return LOGO_IMG;
}
/**
* @return root path of application.
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment