start Line and Area builders

This commit is contained in:
Hannes Janetzek 2014-03-15 05:22:09 +01:00
parent 14e5e28998
commit ff7c74bc70
3 changed files with 143 additions and 46 deletions

View File

@ -26,27 +26,74 @@ import org.oscim.theme.IRenderTheme.Callback;
*/ */
public final class Area extends RenderStyle { public final class Area extends RenderStyle {
public Area(int fill) { public static class AreaBuilder {
this(0, fill); public int level;
public String style;
public Line outline;
public int color;
public int fade;
public int blendColor;
public int blend;
public TextureItem texture;
public AreaBuilder set(Area area) {
this.level = area.level;
this.style = area.style;
this.fade = area.fade;
this.blendColor = area.blendColor;
this.blend = area.blend;
this.color = area.color;
this.texture = area.texture;
this.outline = area.outline;
return this;
}
public AreaBuilder setColor(int color) {
this.color = color;
return this;
}
public AreaBuilder setColor(String color) {
this.color = Color.parseColor(color);
return this;
}
public AreaBuilder setBlendColor(int color) {
this.blendColor = color;
return this;
}
public AreaBuilder setBlendColor(String color) {
this.blendColor = Color.parseColor(color);
return this;
}
public Area build() {
return new Area(this);
}
} }
public Area(int level, int fill) { public Area(int color) {
this(0, color);
}
public Area(int level, int color) {
this.level = level; this.level = level;
this.style = ""; this.style = "";
this.fade = -1; this.fade = -1;
this.blendColor = 0; this.blendColor = 0;
this.blend = -1; this.blend = -1;
this.color = fill; this.color = color;
this.texture = null; this.texture = null;
this.outline = null; this.outline = null;
} }
public Area(String style, int fill, int stroke, float strokeWidth, public Area(String style, int color, int stroke, float strokeWidth,
int fade, int level, int blend, int blendFill, TextureItem texture) { int fade, int level, int blend, int blendColor, TextureItem texture) {
this.style = style; this.style = style;
this.color = fill; this.color = color;
this.blendColor = blendFill; this.blendColor = blendColor;
this.blend = blend; this.blend = blend;
this.fade = fade; this.fade = fade;
this.level = level; this.level = level;
@ -60,6 +107,17 @@ public final class Area extends RenderStyle {
this.outline = new Line(level + 1, stroke, strokeWidth); this.outline = new Line(level + 1, stroke, strokeWidth);
} }
public Area(AreaBuilder areaBuilder) {
this.level = areaBuilder.level;
this.style = areaBuilder.style;
this.fade = areaBuilder.fade;
this.blendColor = areaBuilder.blendColor;
this.blend = areaBuilder.blend;
this.color = areaBuilder.color;
this.texture = areaBuilder.texture;
this.outline = areaBuilder.outline;
}
@Override @Override
public void renderWay(Callback renderCallback) { public void renderWay(Callback renderCallback) {
renderCallback.renderArea(this, level); renderCallback.renderArea(this, level);
@ -69,11 +127,18 @@ public final class Area extends RenderStyle {
} }
private final int level; private final int level;
public String style; public final String style;
public final Line outline; public final Line outline;
public final int color; public final int color;
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; public final TextureItem texture;
public void update() {
super.update();
if (outline != null)
outline.update();
}
} }

View File

@ -1,36 +0,0 @@
/*
* Copyright 2013 Hannes Janetzek
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
* 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
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.oscim.theme.styles;
import org.oscim.theme.IRenderTheme.Callback;
public class AreaLevel extends RenderStyle {
private final Area area;
private final int level;
public AreaLevel(Area area, int level) {
this.area = area;
this.level = level;
}
@Override
public void renderWay(Callback renderCallback) {
renderCallback.renderArea(this.area, level);
if (this.area.outline != null)
renderCallback.renderWay(this.area.outline, level + 1);
}
}

View File

@ -17,6 +17,7 @@
*/ */
package org.oscim.theme.styles; package org.oscim.theme.styles;
import org.oscim.backend.canvas.Color;
import org.oscim.backend.canvas.Paint.Cap; import org.oscim.backend.canvas.Paint.Cap;
import org.oscim.theme.IRenderTheme.Callback; import org.oscim.theme.IRenderTheme.Callback;
@ -25,7 +26,59 @@ import org.oscim.theme.IRenderTheme.Callback;
*/ */
public final class Line extends RenderStyle { public final class Line extends RenderStyle {
private final int level; public final static class LineBuilder {
public int level;
public String style;
public float width;
public int color;
public Cap cap;
public boolean outline;
public boolean fixed;
public int fade;
public float blur;
public int stipple;
public int stippleColor;
public float stippleWidth;
public LineBuilder set(Line line) {
this.level = line.level;
this.style = line.style;
this.width = line.width;
this.color = line.color;
this.cap = line.cap;
this.outline = line.outline;
this.fixed = line.fixed;
this.fade = line.fade;
this.blur = line.blur;
this.stipple = line.stipple;
this.stippleColor = line.stippleColor;
this.stippleWidth = line.stippleWidth;
return this;
}
public LineBuilder setColor(int color) {
this.color = color;
return this;
}
public LineBuilder setStippleColor(int color) {
this.stippleColor = color;
return this;
}
public LineBuilder setColor(String color) {
this.color = Color.parseColor(color);
return this;
}
public Line build() {
return new Line(this);
}
}
final int level;
public final String style; public final String style;
public final float width; public final float width;
@ -40,6 +93,21 @@ public final class Line extends RenderStyle {
public final int stippleColor; public final int stippleColor;
public final float stippleWidth; public final float stippleWidth;
private Line(LineBuilder builer) {
this.level = builer.level;
this.style = builer.style;
this.width = builer.width;
this.color = builer.color;
this.cap = builer.cap;
this.outline = builer.outline;
this.fixed = builer.fixed;
this.fade = builer.fade;
this.blur = builer.blur;
this.stipple = builer.stipple;
this.stippleColor = builer.stippleColor;
this.stippleWidth = builer.stippleWidth;
}
public Line(int level, String style, int color, float width, public Line(int level, String style, int color, float width,
Cap cap, boolean fixed, Cap cap, boolean fixed,
int stipple, int stippleColor, float stippleWidth, int stipple, int stippleColor, float stippleWidth,