- the name I was looking for for a long time :) also less confusion with map layers - move renderer.elements -> renderer.bucket - rename RenderBuckets functions - rename BucketRenderer.layers -> buckets
105 lines
2.5 KiB
Java
105 lines
2.5 KiB
Java
/*
|
|
* 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.test;
|
|
|
|
import org.oscim.backend.CanvasAdapter;
|
|
import org.oscim.backend.canvas.Canvas;
|
|
import org.oscim.renderer.atlas.TextureAtlas;
|
|
import org.oscim.renderer.atlas.TextureAtlas.Rect;
|
|
import org.oscim.renderer.bucket.TextureItem;
|
|
import org.oscim.renderer.bucket.TextureItem.TexturePool;
|
|
import org.oscim.utils.pool.Inlist;
|
|
|
|
/**
|
|
* UNUSED
|
|
* */
|
|
public abstract class SpriteManager<T> {
|
|
TexturePool pool;
|
|
|
|
public class Sprite extends Inlist<Sprite> {
|
|
|
|
public Sprite(T i, TextureAtlas a, Rect r) {
|
|
atlas = a;
|
|
rect = r;
|
|
item = i;
|
|
}
|
|
|
|
T item;
|
|
TextureAtlas atlas;
|
|
Rect rect;
|
|
}
|
|
|
|
TextureAtlas mAtlas;
|
|
TextureAtlas curAtlas;
|
|
|
|
Sprite items;
|
|
|
|
protected final Canvas mCanvas = CanvasAdapter.newCanvas();
|
|
protected TextureItem mTexture;
|
|
|
|
public SpriteManager() {
|
|
//mTexture = pool.get();
|
|
|
|
//mTexture.ownBitmap = true;
|
|
|
|
//mAtlas = new TextureAtlas(mTexture.bitmap);
|
|
|
|
//mCanvas.setBitmap(mTexture.bitmap);
|
|
}
|
|
|
|
public Sprite getRegion(T item) {
|
|
//return items.get(item);
|
|
for (Sprite t = items; t != null; t = t.next)
|
|
if (t.item == item)
|
|
return t;
|
|
|
|
return null;
|
|
}
|
|
|
|
public void clear() {
|
|
for (TextureItem t = mTexture; t != null; t = t.dispose());
|
|
mAtlas.clear();
|
|
items = null;
|
|
|
|
//mTexture.bitmap.eraseColor(Color.TRANSPARENT);
|
|
mTexture = pool.get();
|
|
mCanvas.setBitmap(mTexture.bitmap);
|
|
}
|
|
|
|
public TextureItem getTextures() {
|
|
return mTexture;
|
|
}
|
|
|
|
public Sprite addItem(T item, int width, int height) {
|
|
Rect r = mAtlas.getRegion(width, height);
|
|
if (r == null) {
|
|
//create new atlas
|
|
return null;
|
|
}
|
|
Sprite sprite = new Sprite(item, mAtlas, r);
|
|
|
|
items = Inlist.appendItem(items, sprite);
|
|
|
|
draw(item, r);
|
|
|
|
return sprite;
|
|
}
|
|
|
|
abstract void draw(T item, Rect r);
|
|
|
|
}
|