mirror of
https://github.com/webbukkit/dynmap.git
synced 2024-11-28 13:15:30 +01:00
Fix issue with white blank tiles at edge of JPG rendered maps
This commit is contained in:
parent
b872aa039e
commit
cd067adfdc
@ -388,6 +388,7 @@ public class DynmapWorld {
|
|||||||
int width = 128, height = 128;
|
int width = 128, height = 128;
|
||||||
BufferedImage zIm = null;
|
BufferedImage zIm = null;
|
||||||
DynmapBufferedImage kzIm = null;
|
DynmapBufferedImage kzIm = null;
|
||||||
|
boolean blank = true;
|
||||||
int[] argb = new int[width*height];
|
int[] argb = new int[width*height];
|
||||||
int step = pd.stepsize << pd.zoomlevel;
|
int step = pd.stepsize << pd.zoomlevel;
|
||||||
int ztx = tx;
|
int ztx = tx;
|
||||||
@ -415,6 +416,7 @@ public class DynmapWorld {
|
|||||||
if(im != null) {
|
if(im != null) {
|
||||||
im.getRGB(0, 0, width, height, argb, 0, width); /* Read data */
|
im.getRGB(0, 0, width, height, argb, 0, width); /* Read data */
|
||||||
im.flush();
|
im.flush();
|
||||||
|
blank = false;
|
||||||
/* Do binlinear scale to 64x64 */
|
/* Do binlinear scale to 64x64 */
|
||||||
int off = 0;
|
int off = 0;
|
||||||
for(int y = 0; y < height; y += 2) {
|
for(int y = 0; y < height; y += 2) {
|
||||||
@ -434,18 +436,16 @@ public class DynmapWorld {
|
|||||||
/* blit scaled rendered tile onto zoom-out tile */
|
/* blit scaled rendered tile onto zoom-out tile */
|
||||||
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
||||||
}
|
}
|
||||||
else if((pd.background != 0) && (pd.fmt != ImageFormat.FORMAT_PNG)) {
|
else {
|
||||||
Arrays.fill(argb, pd.background);
|
Arrays.fill(argb, pd.background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Arrays.fill(argb, pd.background);
|
||||||
|
}
|
||||||
/* blit scaled rendered tile onto zoom-out tile */
|
/* blit scaled rendered tile onto zoom-out tile */
|
||||||
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else if((pd.background != 0) && (pd.fmt != ImageFormat.FORMAT_PNG)) {
|
|
||||||
Arrays.fill(argb, pd.background);
|
|
||||||
/* blit scaled rendered tile onto zoom-out tile */
|
|
||||||
zIm.setRGB(((i>>1) != 0)?0:width/2, (i & 1) * height/2, width/2, height/2, argb, 0, width);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
FileLockManager.getWriteLock(zf);
|
FileLockManager.getWriteLock(zf);
|
||||||
try {
|
try {
|
||||||
MapManager mm = MapManager.mapman;
|
MapManager mm = MapManager.mapman;
|
||||||
@ -456,7 +456,15 @@ public class DynmapWorld {
|
|||||||
int tilex = ztx/step/2;
|
int tilex = ztx/step/2;
|
||||||
int tiley = zty/step/2;
|
int tiley = zty/step/2;
|
||||||
String key = world.getName()+".z"+pd.zoomprefix+pd.baseprefix;
|
String key = world.getName()+".z"+pd.zoomprefix+pd.baseprefix;
|
||||||
if((!zf.exists()) || (crc != mm.hashman.getImageHashCode(key, null, tilex, tiley))) {
|
if(blank) {
|
||||||
|
if(zf.exists()) {
|
||||||
|
zf.delete();
|
||||||
|
hashman.updateHashCode(key, null, tilex, tiley, -1);
|
||||||
|
MapManager.mapman.pushUpdate(this.world, new Client.Tile(zfname));
|
||||||
|
enqueueZoomOutUpdate(zf, pd.zoomlevel+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if((!zf.exists()) || (crc != mm.hashman.getImageHashCode(key, null, tilex, tiley))) {
|
||||||
try {
|
try {
|
||||||
if(!zf.getParentFile().exists())
|
if(!zf.getParentFile().exists())
|
||||||
zf.getParentFile().mkdirs();
|
zf.getParentFile().mkdirs();
|
||||||
|
@ -122,6 +122,10 @@ public class HDMap extends MapType {
|
|||||||
if(c != null) {
|
if(c != null) {
|
||||||
bgcolornight = parseColor(c);
|
bgcolornight = parseColor(c);
|
||||||
}
|
}
|
||||||
|
if(imgformat != ImageFormat.FORMAT_PNG) { /* If JPG, set background color opacity */
|
||||||
|
bgcolorday |= 0xFF000000;
|
||||||
|
bgcolornight |= 0xFF000000;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public HDShader getShader() { return shader; }
|
public HDShader getShader() { return shader; }
|
||||||
|
Loading…
Reference in New Issue
Block a user