Revision: 2386
http://sourceforge.net/p/swingme/code/2386
Author: yuranet
Date: 2020-04-18 18:44:04 +0000 (Sat, 18 Apr 2020)
Log Message:
-----------
density higher then 2 works correctly
Modified Paths:
--------------
me4se/src/javax/microedition/lcdui/Image.java
Modified: me4se/src/javax/microedition/lcdui/Image.java
===================================================================
--- me4se/src/javax/microedition/lcdui/Image.java 2020-04-17 23:53:56 UTC (rev 2385)
+++ me4se/src/javax/microedition/lcdui/Image.java 2020-04-18 18:44:04 UTC (rev 2386)
@@ -154,17 +154,30 @@
* @API MIDP-1.0
*/
public static Image createImage(String name) throws IOException {
- double density = ApplicationManager.getDisplayDensity();
- if (density >= 2 && name.startsWith("/")) {
+ double multiplier = ApplicationManager.getDisplayDensity();
+ BufferedImage img = null;
+
+ if (multiplier > 1.1 && name.startsWith("/")) {
try {
- String name2 = "/drawable-xhdpi"+name;
- return new Image(ApplicationManager.getInstance().getImage(name2), false, true, name2);
+ String name2 = "/drawable-xhdpi" + name;
+ // try and load an image that is double resolution
+ img = ApplicationManager.getInstance().getImage(name2);
+ if (multiplier == 2) {
+ return new Image(img, false, true, name2);
+ }
+ if (img != null) {
+ // we have found an image for double resolution, but the resulution is even more then double
+ name = name2;
+ multiplier = multiplier / 2;
+ }
}
catch (Throwable th) {}
}
- BufferedImage img = ApplicationManager.getInstance().getImage(name);
- if (density != 1) {
+ if (img == null) {
+ img = ApplicationManager.getInstance().getImage(name);
+ }
+ if (multiplier != 1) {
int type = img.getType();
// We can't create images of TYPE_CUSTOM
if (type == BufferedImage.TYPE_CUSTOM) {
@@ -171,7 +184,7 @@
type = BufferedImage.TYPE_INT_ARGB;
}
if (name.endsWith(".9.png")) {
- BufferedImage newImg = new BufferedImage((int)(density*(img.getWidth()-2))+2, (int)(density*(img.getHeight()-2))+2, type);
+ BufferedImage newImg = new BufferedImage((int)(multiplier*(img.getWidth()-2))+2, (int)(multiplier*(img.getHeight()-2))+2, type);
java.awt.Graphics g = newImg.getGraphics();
g.drawImage(img, 1, 1, newImg.getWidth()-1, newImg.getHeight()-1, 1, 1, img.getWidth()-1, img.getHeight()-1, null); // center
g.drawImage(img, 1, 0, newImg.getWidth()-1, 1, 1, 0, img.getWidth()-1, 1, null); // top
@@ -182,7 +195,7 @@
img=newImg;
}
else {
- BufferedImage newImg = new BufferedImage((int)(density*img.getWidth()), (int)(density*img.getHeight()), type);
+ BufferedImage newImg = new BufferedImage((int)(multiplier*img.getWidth()), (int)(multiplier*img.getHeight()), type);
java.awt.Graphics g = newImg.getGraphics();
g.drawImage(img, 0, 0, newImg.getWidth(), newImg.getHeight(), 0, 0, img.getWidth(), img.getHeight(), null);
g.dispose();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|