- Add MarkerRendererFactory interface for custom MarkerRenderer

- Enhance MarkerLayer and ItemizedLayer constructors
- Allow setting level to RenderBucket
This commit is contained in:
Stephan Leuschner 2016-08-10 00:35:37 -04:00 committed by Emux
parent 67357fe2f0
commit 1fa9f133bd
4 changed files with 54 additions and 2 deletions

View File

@ -3,6 +3,7 @@
*
* Copyright 2013 Hannes Janetzek
* Copyright 2016 devemux86
* Copyright 2016 Stephan Leuschner
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
@ -57,6 +58,21 @@ public class ItemizedLayer<Item extends MarkerItem> extends MarkerLayer<Item>
populate();
}
public ItemizedLayer(Map map, MarkerRendererFactory markerRendererFactory) {
this(map, new ArrayList<Item>(), markerRendererFactory, null);
}
public ItemizedLayer(Map map, List<Item> list,
MarkerRendererFactory markerRendererFactory,
OnItemGestureListener<Item> listener) {
super(map, markerRendererFactory);
mItemList = list;
mOnItemGestureListener = listener;
populate();
}
public void setOnItemGestureListener(OnItemGestureListener<Item> listener) {
mOnItemGestureListener = listener;
}

View File

@ -5,6 +5,7 @@
* Copyright 2012 Fred Eisele
*
* Copyright 2013 Hannes Janetzek
* Copyright 2016 Stephan Leuschner
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
@ -56,6 +57,13 @@ public abstract class MarkerLayer<Item extends MarkerItem> extends Layer {
mRenderer = mMarkerRenderer;
}
public MarkerLayer(Map map, MarkerRendererFactory markerRendererFactory) {
super(map);
mMarkerRenderer = markerRendererFactory.create(this);
mRenderer = mMarkerRenderer;
}
/**
* Utility method to perform all processing on a new ItemizedOverlay.
* Subclasses provide Items through the createItem(int) method. The subclass

View File

@ -0,0 +1,23 @@
/*
* Copyright 2016 Stephan Leuschner
*
* 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.layers.marker;
public interface MarkerRendererFactory {
MarkerRenderer create(MarkerLayer markerLayer);
}

View File

@ -1,5 +1,6 @@
/*
* Copyright 2012, 2013 Hannes Janetzek
* Copyright 2016 Stephan Leuschner
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
@ -100,6 +101,10 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
return indiceOffset;
}
public void setLevel(int level) {
this.level = level;
}
public void setVertexOffset(int offset) {
this.vertexOffset = offset;
}
@ -111,7 +116,7 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
protected void compile(ShortBuffer vboData, ShortBuffer iboData) {
compileVertexItems(vboData);
if (iboData != null)
compileIndiceItems(iboData);
compileIndicesItems(iboData);
}
protected void compileVertexItems(ShortBuffer vboData) {
@ -120,7 +125,7 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
vertexItems.compile(vboData);
}
protected void compileIndiceItems(ShortBuffer iboData) {
protected void compileIndicesItems(ShortBuffer iboData) {
/* keep offset of layer data in vbo */
if (indiceItems == null || indiceItems.empty())
return;