package org.geogebra.desktop.kernel.geos;
import java.awt.Image;
import org.geogebra.common.awt.MyImage;
import org.geogebra.common.kernel.geos.GeoElementGraphicsAdapter;
import org.geogebra.common.main.App;
import org.geogebra.common.util.debug.Log;
import org.geogebra.desktop.gui.MyImageD;
import org.geogebra.desktop.main.AppD;
import org.geogebra.desktop.util.GuiResourcesD;
import org.geogebra.desktop.util.ImageManagerD;
import org.geogebra.desktop.util.ImageResourceD;
public class GeoElementGraphicsAdapterD extends GeoElementGraphicsAdapter {
/** application */
protected App app;
/**
* @param appl
* application
*/
public GeoElementGraphicsAdapterD(App appl) {
app = appl;
}
@Override
public MyImage getFillImage() {
if (image != null) {
return image;
}
if ("".equals(imageFileName)) {
return null;
}
if (imageFileName.startsWith("/geogebra")) {
Image im = ((AppD) app).getImageManager().getImageResource(
findFillImage());
if (im == null) {
Log.error(imageFileName + " does not exist");
return null;
}
image = new MyImageD(ImageManagerD.toBufferedImage(im));
} else {
/*
* java.awt.image.BufferedImage extimg = app
* .getExternalImage(imageFileName); if (extimg == null) image =
* null; else image = new BufferedImage(extimg);
*/
image = app.getExternalImageAdapter(imageFileName, 0, 0);
}
return image;
}
private ImageResourceD findFillImage() {
ImageResourceD res = null;
if (imageFileName.startsWith("/geogebra")) {
String fn = imageFileName.replace("/geogebra/", "")
.replace("gui/images/", "");
if ("go-down.png".equals(fn)) {
res = GuiResourcesD.GO_DOWN;
} else if ("go-up.png".equals(fn)) {
res = GuiResourcesD.GO_UP;
} else if ("go-previous.png".equals(fn)) {
res = GuiResourcesD.GO_PREVIOUS;
} else if ("go-next.png".equals(fn)) {
res = GuiResourcesD.GO_NEXT;
} else if ("nav_rewind.png".equals(fn)) {
res = GuiResourcesD.NAV_REWIND;
} else if ("nav_fastforward.png".equals(fn)) {
res = GuiResourcesD.NAV_FASTFORWARD;
} else if ("nav_skipback.png".equals(fn)) {
res = GuiResourcesD.NAV_SKIPBACK;
} else if ("nav_skipforward.png".equals(fn)) {
res = GuiResourcesD.NAV_SKIPFORWARD;
} else if ("exit.png".equals(fn)) {
res = GuiResourcesD.EXIT;
} else if ("main/nav_play.png".equals(fn)) {
res = GuiResourcesD.NAV_PLAY;
} else if ("main/nav_pause.png".equals(fn)) {
res = GuiResourcesD.NAV_PAUSE;
}
}
return res;
}
@Override
public void setImageFileName(String fileName) {
if (fileName.equals(this.imageFileName)) {
return;
}
setImageFileNameOnly(fileName);
if (fileName.startsWith("/geogebra")) { // internal image
Image im = ((ImageManagerD) app.getImageManager())
.getImageResource(findFillImage());
image = new MyImageD(ImageManagerD.toBufferedImage(im));
} else {
image = app.getExternalImageAdapter(fileName, 0, 0);
}
}
@Override
public void convertToSaveableFormat() {
// all openable formats are saveable in Desktop
}
}