themeable area textures
This commit is contained in:
@@ -22,7 +22,7 @@
|
|||||||
<!-- fade out at z=7, blend over to 'blend-fill' in z=11 -->
|
<!-- fade out at z=7, blend over to 'blend-fill' in z=11 -->
|
||||||
<!-- <style-area name="forest|wood" fill="#ebefe5" fade="7" blend="11" blend-fill="#cee0bc"/>
|
<!-- <style-area name="forest|wood" fill="#ebefe5" fade="7" blend="11" blend-fill="#cee0bc"/>
|
||||||
d3dec8 -->
|
d3dec8 -->
|
||||||
<style-area name="wood" fill="#d1dbc7" fade="7" blend="10" blend-fill="#9ac56e" />
|
<style-area name="wood" fill="#d1dbc7" fade="7" blend="10" blend-fill="#9ac56e" src="grass3.png"/>
|
||||||
<style-line name="wood" fix="true" cap="butt" width="1.0" stroke="#9ac56e" />
|
<style-line name="wood" fix="true" cap="butt" width="1.0" stroke="#9ac56e" />
|
||||||
|
|
||||||
<!-- grass|meadow|garden|grassland|scrub -->
|
<!-- grass|meadow|garden|grassland|scrub -->
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<style-area name="greens2" fill="#deecb9" fade="12" />
|
<style-area name="greens2" fill="#deecb9" fade="12" />
|
||||||
|
|
||||||
<!-- park|common|green|cemetery|golf_course|dog_park -->
|
<!-- park|common|green|cemetery|golf_course|dog_park -->
|
||||||
<style-area name="park" fill="#a3ca7b" fade="11" />
|
<style-area name="park" fill="#a3ca7b" fade="11" src="grass2.png"/>
|
||||||
<style-line name="park" stroke="#a3ca7b" width="1.0" fix="true" cap="butt" fade="11" />
|
<style-line name="park" stroke="#a3ca7b" width="1.0" fix="true" cap="butt" fade="11" />
|
||||||
|
|
||||||
<!-- de:Kleingartengebiet -->
|
<!-- de:Kleingartengebiet -->
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<style-line name="water" stroke="#a4bbcc" width="1.0" cap="butt" />
|
<style-line name="water" stroke="#a4bbcc" width="1.0" cap="butt" />
|
||||||
|
|
||||||
<!--<style-area name="water" fill="#97b7e5" /> -->
|
<!--<style-area name="water" fill="#97b7e5" /> -->
|
||||||
<style-area name="water" fill="#afc5e3" />
|
<style-area name="water" fill="#afc5e3" src="water2.png"/>
|
||||||
|
|
||||||
<!-- no-go area boundary -->
|
<!-- no-go area boundary -->
|
||||||
<style-line name="fence" stroke="#444444" width="1.2" fix="true" cap="butt" />
|
<style-line name="fence" stroke="#444444" width="1.2" fix="true" cap="butt" />
|
||||||
|
|||||||
@@ -18,11 +18,9 @@ import java.nio.ByteBuffer;
|
|||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
|
|
||||||
import org.oscim.backend.CanvasAdapter;
|
|
||||||
import org.oscim.backend.GL20;
|
import org.oscim.backend.GL20;
|
||||||
import org.oscim.backend.GLAdapter;
|
import org.oscim.backend.GLAdapter;
|
||||||
import org.oscim.backend.Log;
|
import org.oscim.backend.Log;
|
||||||
import org.oscim.backend.canvas.Bitmap;
|
|
||||||
import org.oscim.core.MapPosition;
|
import org.oscim.core.MapPosition;
|
||||||
import org.oscim.renderer.GLRenderer;
|
import org.oscim.renderer.GLRenderer;
|
||||||
import org.oscim.renderer.GLRenderer.Matrices;
|
import org.oscim.renderer.GLRenderer.Matrices;
|
||||||
@@ -59,10 +57,10 @@ public final class PolygonRenderer {
|
|||||||
private static int[] hPolygonColor = new int[numShaders];
|
private static int[] hPolygonColor = new int[numShaders];
|
||||||
private static int[] hPolygonScale = new int[numShaders];
|
private static int[] hPolygonScale = new int[numShaders];
|
||||||
|
|
||||||
private static boolean enableTexture = true;
|
//private static boolean enableTexture = true;
|
||||||
private static int mTexWater;
|
//private static int mTexWater;
|
||||||
private static int mTexWood;
|
//private static int mTexWood;
|
||||||
private static int mTexGrass;
|
//private static int mTexGrass;
|
||||||
|
|
||||||
static boolean init() {
|
static boolean init() {
|
||||||
GL = GLAdapter.get();
|
GL = GLAdapter.get();
|
||||||
@@ -95,34 +93,10 @@ public final class PolygonRenderer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mFillPolys = new PolygonLayer[STENCIL_BITS];
|
mFillPolys = new PolygonLayer[STENCIL_BITS];
|
||||||
if (enableTexture) {
|
|
||||||
mTexWood = loadSprite("grass3.png");
|
|
||||||
mTexWater = loadSprite("water2.png");
|
|
||||||
mTexGrass = loadSprite("grass2.png");
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int loadSprite(String name) {
|
|
||||||
int[] textures;
|
|
||||||
|
|
||||||
//Bitmap b = BitmapUtils.createBitmap(name);
|
|
||||||
Bitmap b = CanvasAdapter.g.loadBitmapAsset(name);
|
|
||||||
if (b == null) {
|
|
||||||
Log.d(TAG, "missing asset: " + name);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
textures = GlUtils.glGenTextures(1);
|
|
||||||
GL.glBindTexture(GL20.GL_TEXTURE_2D, textures[0]);
|
|
||||||
|
|
||||||
GlUtils.setTextureParameter(GL20.GL_LINEAR, GL20.GL_LINEAR,
|
|
||||||
GL20.GL_REPEAT, GL20.GL_REPEAT);
|
|
||||||
|
|
||||||
b.uploadToTexture(false);
|
|
||||||
|
|
||||||
return textures[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void fillPolygons(Matrices m, int start, int end, int zoom, float scale,
|
private static void fillPolygons(Matrices m, int start, int end, int zoom, float scale,
|
||||||
float div) {
|
float div) {
|
||||||
|
|
||||||
@@ -135,19 +109,14 @@ public final class PolygonRenderer {
|
|||||||
|
|
||||||
for (int c = start; c < end; c++) {
|
for (int c = start; c < end; c++) {
|
||||||
Area a = mFillPolys[c].area;
|
Area a = mFillPolys[c].area;
|
||||||
if (enableTexture && (a.color == 0xFFAFC5E3
|
|
||||||
|| a.color == 0xffd1dbc7
|
if (a.texture != null){
|
||||||
|| a.color == 0xffa3ca7b)) {
|
|
||||||
shader = texShader;
|
shader = texShader;
|
||||||
setShader(texShader, m);
|
setShader(texShader, m);
|
||||||
|
|
||||||
GL.glUniform2f(hPolygonScale[1], FastMath.clamp(scale - 1, 0, 1), div);
|
GL.glUniform2f(hPolygonScale[1], FastMath.clamp(scale - 1, 0, 1), div);
|
||||||
if (a.color == 0xFFAFC5E3)
|
|
||||||
GL.glBindTexture(GL20.GL_TEXTURE_2D, mTexWater);
|
a.texture.bind();
|
||||||
else if (a.color == 0xffd1dbc7)
|
|
||||||
GL.glBindTexture(GL20.GL_TEXTURE_2D, mTexWood);
|
|
||||||
else
|
|
||||||
GL.glBindTexture(GL20.GL_TEXTURE_2D, mTexGrass);
|
|
||||||
} else if (a.fade >= zoom) {
|
} else if (a.fade >= zoom) {
|
||||||
float f = 1.0f;
|
float f = 1.0f;
|
||||||
/* fade in/out */
|
/* fade in/out */
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
|
|
||||||
public int width;
|
public int width;
|
||||||
public int height;
|
public int height;
|
||||||
|
public boolean repeat;
|
||||||
|
|
||||||
// vertex offset from which this texture is referenced
|
// vertex offset from which this texture is referenced
|
||||||
public short offset;
|
public short offset;
|
||||||
@@ -53,6 +54,9 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
// released.
|
// released.
|
||||||
private boolean isClone;
|
private boolean isClone;
|
||||||
|
|
||||||
|
// texture data is ready
|
||||||
|
private boolean isReady;
|
||||||
|
|
||||||
private TextureItem(int id) {
|
private TextureItem(int id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
@@ -74,6 +78,23 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
this.height = bitmap.getHeight();
|
this.height = bitmap.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TextureItem(Bitmap bitmap, boolean repeat) {
|
||||||
|
this.bitmap = bitmap;
|
||||||
|
this.id = -1;
|
||||||
|
this.ownBitmap = true;
|
||||||
|
this.width = bitmap.getWidth();
|
||||||
|
this.height = bitmap.getHeight();
|
||||||
|
this.repeat = repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void bind() {
|
||||||
|
if (!isReady) {
|
||||||
|
TextureItem.uploadTexture(this);
|
||||||
|
isReady = true;
|
||||||
|
}
|
||||||
|
GL.glBindTexture(GL20.GL_TEXTURE_2D, id);
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized static void releaseAll(TextureItem ti) {
|
public synchronized static void releaseAll(TextureItem ti) {
|
||||||
pool.releaseAll(ti);
|
pool.releaseAll(ti);
|
||||||
}
|
}
|
||||||
@@ -98,14 +119,16 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(int num) {
|
public void init(int num) {
|
||||||
int[] textureIds = GlUtils.glGenTextures(num);
|
//int[] textureIds = GlUtils.glGenTextures(num);
|
||||||
|
//
|
||||||
|
//for (int i = 0; i < num; i++) {
|
||||||
|
// initTexture(textureIds[i]);
|
||||||
|
// TextureItem to = new TextureItem(textureIds[i]);
|
||||||
|
// pool = Inlist.push(pool, to);
|
||||||
|
//}
|
||||||
|
//fill = num;
|
||||||
|
|
||||||
for (int i = 0; i < num; i++) {
|
fill = 0;
|
||||||
initTexture(textureIds[i]);
|
|
||||||
TextureItem to = new TextureItem(textureIds[i]);
|
|
||||||
pool = Inlist.push(pool, to);
|
|
||||||
}
|
|
||||||
fill = num;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextureItem get(int width, int height) {
|
public TextureItem get(int width, int height) {
|
||||||
@@ -117,12 +140,14 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
return new TextureItem(-1);
|
return new TextureItem(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** called when item is added back to pool */
|
||||||
@Override
|
@Override
|
||||||
protected boolean clearItem(TextureItem it) {
|
protected boolean clearItem(TextureItem it) {
|
||||||
// Log.d(TAG, it.ownBitmap + " " + (it.bitmap == null));
|
|
||||||
if (it.ownBitmap) {
|
if (it.ownBitmap) {
|
||||||
it.bitmap = null;
|
it.bitmap = null;
|
||||||
it.ownBitmap = false;
|
it.ownBitmap = false;
|
||||||
|
releaseTexture(it);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,7 +204,7 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
*/
|
*/
|
||||||
public static void uploadTexture(TextureItem to) {
|
public static void uploadTexture(TextureItem to) {
|
||||||
|
|
||||||
// free unused textures, find a better place for this TODO
|
// free unused textures -> TODO find a better place for this
|
||||||
synchronized (mTextures) {
|
synchronized (mTextures) {
|
||||||
int size = mTextures.size();
|
int size = mTextures.size();
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
@@ -198,14 +223,15 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
mTexCnt++;
|
mTexCnt++;
|
||||||
int[] textureIds = GlUtils.glGenTextures(1);
|
int[] textureIds = GlUtils.glGenTextures(1);
|
||||||
to.id = textureIds[0];
|
to.id = textureIds[0];
|
||||||
initTexture(to.id);
|
initTexture(to);
|
||||||
// if (TextureRenderer.debug)
|
if (TextureRenderer.debug)
|
||||||
Log.d(TAG, "poolFill:" + pool.getFill()
|
Log.d(TAG, "poolFill:" + pool.getFill()
|
||||||
+ " texCnt:" + mTexCnt
|
+ " texCnt:" + mTexCnt
|
||||||
+ " new texture " + to.id);
|
+ " new texture " + to.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
uploadTexture(to, to.bitmap, mBitmapFormat, mBitmapType,
|
uploadTexture(to, to.bitmap,
|
||||||
|
mBitmapFormat, mBitmapType,
|
||||||
TEXTURE_WIDTH, TEXTURE_HEIGHT);
|
TEXTURE_WIDTH, TEXTURE_HEIGHT);
|
||||||
|
|
||||||
if (!to.ownBitmap)
|
if (!to.ownBitmap)
|
||||||
@@ -225,20 +251,13 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GL.glBindTexture(GL20.GL_TEXTURE_2D, to.id);
|
GL.glBindTexture(GL20.GL_TEXTURE_2D, to.id);
|
||||||
//Log.d(TAG, "upload " + to.id);
|
|
||||||
if (to.ownBitmap) {
|
if (to.ownBitmap) {
|
||||||
bitmap.uploadToTexture(false);
|
bitmap.uploadToTexture(false);
|
||||||
// GLUtils.texImage2D(GL20.GL_TEXTURE_2D, 0, bitmap, 0);
|
|
||||||
|
|
||||||
} else if (to.width == w && to.height == h) {
|
} else if (to.width == w && to.height == h) {
|
||||||
bitmap.uploadToTexture(true);
|
bitmap.uploadToTexture(true);
|
||||||
// GLUtils.texSubImage2D(GL20.GL_TEXTURE_2D, 0, 0, 0, bitmap,
|
|
||||||
// format, type);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
bitmap.uploadToTexture(false);
|
bitmap.uploadToTexture(false);
|
||||||
// GLUtils.texImage2D(GL20.GL_TEXTURE_2D, 0, format, bitmap, type,
|
|
||||||
// 0);
|
|
||||||
to.width = w;
|
to.width = w;
|
||||||
to.height = h;
|
to.height = h;
|
||||||
}
|
}
|
||||||
@@ -247,17 +266,25 @@ public class TextureItem extends Inlist<TextureItem> {
|
|||||||
GlUtils.checkGlError(TAG);
|
GlUtils.checkGlError(TAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void initTexture(int id) {
|
static void initTexture(TextureItem it) {
|
||||||
GL.glBindTexture(GL20.GL_TEXTURE_2D, id);
|
GL.glBindTexture(GL20.GL_TEXTURE_2D, it.id);
|
||||||
|
|
||||||
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_MIN_FILTER,
|
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_MIN_FILTER,
|
||||||
GL20.GL_LINEAR);
|
GL20.GL_LINEAR);
|
||||||
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_MAG_FILTER,
|
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_MAG_FILTER,
|
||||||
GL20.GL_LINEAR);
|
GL20.GL_LINEAR);
|
||||||
|
|
||||||
|
if (it.repeat) {
|
||||||
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_S,
|
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_S,
|
||||||
GL20.GL_CLAMP_TO_EDGE); // Set U Wrapping
|
GL20.GL_REPEAT);
|
||||||
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_T,
|
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_T,
|
||||||
GL20.GL_CLAMP_TO_EDGE); // Set V Wrapping
|
GL20.GL_REPEAT);
|
||||||
|
} else {
|
||||||
|
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_S,
|
||||||
|
GL20.GL_CLAMP_TO_EDGE);
|
||||||
|
GL.glTexParameterf(GL20.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_T,
|
||||||
|
GL20.GL_CLAMP_TO_EDGE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void init(int num) {
|
static void init(int num) {
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import java.util.Stack;
|
|||||||
|
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
|
||||||
import org.oscim.backend.BitmapUtils;
|
|
||||||
import org.oscim.backend.CanvasAdapter;
|
import org.oscim.backend.CanvasAdapter;
|
||||||
import org.oscim.backend.Log;
|
import org.oscim.backend.Log;
|
||||||
import org.oscim.backend.XMLReaderAdapter;
|
import org.oscim.backend.XMLReaderAdapter;
|
||||||
@@ -34,6 +33,7 @@ import org.oscim.backend.canvas.Paint.FontFamily;
|
|||||||
import org.oscim.backend.canvas.Paint.FontStyle;
|
import org.oscim.backend.canvas.Paint.FontStyle;
|
||||||
import org.oscim.renderer.atlas.TextureAtlas;
|
import org.oscim.renderer.atlas.TextureAtlas;
|
||||||
import org.oscim.renderer.atlas.TextureAtlas.Rect;
|
import org.oscim.renderer.atlas.TextureAtlas.Rect;
|
||||||
|
import org.oscim.renderer.sublayers.TextureItem;
|
||||||
import org.oscim.theme.renderinstruction.Area;
|
import org.oscim.theme.renderinstruction.Area;
|
||||||
import org.oscim.theme.renderinstruction.AreaLevel;
|
import org.oscim.theme.renderinstruction.AreaLevel;
|
||||||
import org.oscim.theme.renderinstruction.Circle;
|
import org.oscim.theme.renderinstruction.Circle;
|
||||||
@@ -72,6 +72,8 @@ public class RenderThemeHandler extends DefaultHandler {
|
|||||||
private static final String ELEMENT_NAME_USE_STYLE_OUTLINE = "use-outline";
|
private static final String ELEMENT_NAME_USE_STYLE_OUTLINE = "use-outline";
|
||||||
private static final String UNEXPECTED_ELEMENT = "unexpected element: ";
|
private static final String UNEXPECTED_ELEMENT = "unexpected element: ";
|
||||||
|
|
||||||
|
private static final String IMG_PATH = "styles/";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param inputStream
|
* @param inputStream
|
||||||
* an input stream containing valid render theme XML data.
|
* an input stream containing valid render theme XML data.
|
||||||
@@ -364,7 +366,7 @@ public class RenderThemeHandler extends DefaultHandler {
|
|||||||
"missing attribute 'img' for element: "
|
"missing attribute 'img' for element: "
|
||||||
+ elementName);
|
+ elementName);
|
||||||
|
|
||||||
Bitmap bitmap = CanvasAdapter.g.loadBitmapAsset("styles/" + img);
|
Bitmap bitmap = CanvasAdapter.g.loadBitmapAsset(IMG_PATH + img);
|
||||||
mTextureAtlas = new TextureAtlas(bitmap);
|
mTextureAtlas = new TextureAtlas(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -691,6 +693,8 @@ public class RenderThemeHandler extends DefaultHandler {
|
|||||||
int blendFill = Color.BLACK;
|
int blendFill = Color.BLACK;
|
||||||
String style = null;
|
String style = null;
|
||||||
|
|
||||||
|
TextureItem texture = null;
|
||||||
|
|
||||||
for (int i = 0; i < attributes.getLength(); ++i) {
|
for (int i = 0; i < attributes.getLength(); ++i) {
|
||||||
String name = attributes.getLocalName(i);
|
String name = attributes.getLocalName(i);
|
||||||
String value = attributes.getValue(i);
|
String value = attributes.getValue(i);
|
||||||
@@ -715,9 +719,17 @@ public class RenderThemeHandler extends DefaultHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
validateArea(strokeWidth);
|
validateArea(strokeWidth);
|
||||||
return new Area(style, src, fill, stroke, strokeWidth, fade, level, blend,
|
|
||||||
blendFill);
|
if (src != null){
|
||||||
|
Bitmap b = CanvasAdapter.g.loadBitmapAsset(src);
|
||||||
|
if (b != null)
|
||||||
|
texture = new TextureItem(b, true);
|
||||||
|
|
||||||
|
}
|
||||||
|
return new Area(style, fill, stroke, strokeWidth, fade, level, blend,
|
||||||
|
blendFill, texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void validateArea(float strokeWidth) {
|
private static void validateArea(float strokeWidth) {
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.oscim.theme.renderinstruction;
|
package org.oscim.theme.renderinstruction;
|
||||||
|
|
||||||
|
import org.oscim.renderer.sublayers.TextureItem;
|
||||||
import org.oscim.theme.IRenderCallback;
|
import org.oscim.theme.IRenderCallback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,11 +36,12 @@ public final class Area extends RenderInstruction {
|
|||||||
strokeWidth = 0;
|
strokeWidth = 0;
|
||||||
|
|
||||||
color = fill;
|
color = fill;
|
||||||
|
texture = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Area(String style, String src, int fill, int stroke, float strokeWidth,
|
public Area(String style, int fill, int stroke, float strokeWidth,
|
||||||
int fade, int level, int blend, int blendFill) {
|
int fade, int level, int blend, int blendFill, TextureItem texture) {
|
||||||
|
|
||||||
this.style = style;
|
this.style = style;
|
||||||
|
|
||||||
@@ -59,6 +61,7 @@ public final class Area extends RenderInstruction {
|
|||||||
this.strokeWidth = strokeWidth;
|
this.strokeWidth = strokeWidth;
|
||||||
this.fade = fade;
|
this.fade = fade;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
|
this.texture = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -73,4 +76,6 @@ public final class Area extends RenderInstruction {
|
|||||||
public final int fade;
|
public final int fade;
|
||||||
public final int blendColor;
|
public final int blendColor;
|
||||||
public final int blend;
|
public final int blend;
|
||||||
|
|
||||||
|
public final TextureItem texture;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010, 2011, 2012 mapsforge.org
|
* Copyright 2013 Hannes Janetzek
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it under the
|
* This program is free software: you can redistribute it and/or modify it under the
|
||||||
* terms of the GNU Lesser General Public License as published by the Free Software
|
* terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
|||||||
Reference in New Issue
Block a user