- 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 2013 Hannes Janetzek
* Copyright 2016 devemux86 * Copyright 2016 devemux86
* Copyright 2016 Stephan Leuschner
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * 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(); 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) { public void setOnItemGestureListener(OnItemGestureListener<Item> listener) {
mOnItemGestureListener = listener; mOnItemGestureListener = listener;
} }

View File

@ -5,6 +5,7 @@
* Copyright 2012 Fred Eisele * Copyright 2012 Fred Eisele
* *
* Copyright 2013 Hannes Janetzek * Copyright 2013 Hannes Janetzek
* Copyright 2016 Stephan Leuschner
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * 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; 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. * Utility method to perform all processing on a new ItemizedOverlay.
* Subclasses provide Items through the createItem(int) method. The subclass * 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 2012, 2013 Hannes Janetzek
* Copyright 2016 Stephan Leuschner
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * 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; return indiceOffset;
} }
public void setLevel(int level) {
this.level = level;
}
public void setVertexOffset(int offset) { public void setVertexOffset(int offset) {
this.vertexOffset = offset; this.vertexOffset = offset;
} }
@ -111,7 +116,7 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
protected void compile(ShortBuffer vboData, ShortBuffer iboData) { protected void compile(ShortBuffer vboData, ShortBuffer iboData) {
compileVertexItems(vboData); compileVertexItems(vboData);
if (iboData != null) if (iboData != null)
compileIndiceItems(iboData); compileIndicesItems(iboData);
} }
protected void compileVertexItems(ShortBuffer vboData) { protected void compileVertexItems(ShortBuffer vboData) {
@ -120,7 +125,7 @@ public abstract class RenderBucket extends Inlist<RenderBucket> {
vertexItems.compile(vboData); vertexItems.compile(vboData);
} }
protected void compileIndiceItems(ShortBuffer iboData) { protected void compileIndicesItems(ShortBuffer iboData) {
/* keep offset of layer data in vbo */ /* keep offset of layer data in vbo */
if (indiceItems == null || indiceItems.empty()) if (indiceItems == null || indiceItems.empty())
return; return;