From ff7c74bc705ad29393f640f2d74a035f0f588c32 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Sat, 15 Mar 2014 05:22:09 +0100 Subject: [PATCH] start Line and Area builders --- vtm/src/org/oscim/theme/styles/Area.java | 83 +++++++++++++++++-- vtm/src/org/oscim/theme/styles/AreaLevel.java | 36 -------- vtm/src/org/oscim/theme/styles/Line.java | 70 +++++++++++++++- 3 files changed, 143 insertions(+), 46 deletions(-) delete mode 100644 vtm/src/org/oscim/theme/styles/AreaLevel.java diff --git a/vtm/src/org/oscim/theme/styles/Area.java b/vtm/src/org/oscim/theme/styles/Area.java index aaaa704c..6f487f23 100644 --- a/vtm/src/org/oscim/theme/styles/Area.java +++ b/vtm/src/org/oscim/theme/styles/Area.java @@ -26,27 +26,74 @@ import org.oscim.theme.IRenderTheme.Callback; */ public final class Area extends RenderStyle { - public Area(int fill) { - this(0, fill); + public static class AreaBuilder { + 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.style = ""; this.fade = -1; this.blendColor = 0; this.blend = -1; - this.color = fill; + this.color = color; this.texture = null; this.outline = null; } - public Area(String style, int fill, int stroke, float strokeWidth, - int fade, int level, int blend, int blendFill, TextureItem texture) { + public Area(String style, int color, int stroke, float strokeWidth, + int fade, int level, int blend, int blendColor, TextureItem texture) { this.style = style; - this.color = fill; - this.blendColor = blendFill; + this.color = color; + this.blendColor = blendColor; this.blend = blend; this.fade = fade; this.level = level; @@ -60,6 +107,17 @@ public final class Area extends RenderStyle { 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 public void renderWay(Callback renderCallback) { renderCallback.renderArea(this, level); @@ -69,11 +127,18 @@ public final class Area extends RenderStyle { } private final int level; - public String style; + public final String style; public final Line outline; public final int color; public final int fade; public final int blendColor; public final int blend; public final TextureItem texture; + + public void update() { + super.update(); + + if (outline != null) + outline.update(); + } } diff --git a/vtm/src/org/oscim/theme/styles/AreaLevel.java b/vtm/src/org/oscim/theme/styles/AreaLevel.java deleted file mode 100644 index 31ab5809..00000000 --- a/vtm/src/org/oscim/theme/styles/AreaLevel.java +++ /dev/null @@ -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 . - */ -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); - } -} diff --git a/vtm/src/org/oscim/theme/styles/Line.java b/vtm/src/org/oscim/theme/styles/Line.java index 15160302..e405b0dd 100644 --- a/vtm/src/org/oscim/theme/styles/Line.java +++ b/vtm/src/org/oscim/theme/styles/Line.java @@ -17,6 +17,7 @@ */ package org.oscim.theme.styles; +import org.oscim.backend.canvas.Color; import org.oscim.backend.canvas.Paint.Cap; import org.oscim.theme.IRenderTheme.Callback; @@ -25,7 +26,59 @@ import org.oscim.theme.IRenderTheme.Callback; */ 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 float width; @@ -40,6 +93,21 @@ public final class Line extends RenderStyle { public final int stippleColor; 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, Cap cap, boolean fixed, int stipple, int stippleColor, float stippleWidth,