public class RenderController extends java.lang.Object implements RenderControllerInterface
Modifier and Type | Class and Description |
---|---|
static class |
RenderController.ImageFormat
Enumerated values for image types.
|
static interface |
RenderController.TaskManager
We don't want to deal with threads and such down here, so
the controller one level up gives us an addTask method
to hand over the runnables.
|
RenderControllerInterface.ContextInfo, RenderControllerInterface.TextureSettings, RenderControllerInterface.ThreadMode
Modifier and Type | Field and Description |
---|---|
protected BillboardManager |
billboardManager |
protected ComponentManager |
componentManager |
javax.microedition.khronos.egl.EGLConfig |
config |
javax.microedition.khronos.egl.EGLContext |
context |
com.mousebird.maply.CoordSystemDisplayAdapter |
coordAdapter |
javax.microedition.khronos.egl.EGLDisplay |
display |
boolean |
disposeAfterRemoval
If set, we'll explicitly call dispose on any objects that were
being kept around for selection.
|
static long |
EmptyIdentity |
static int |
FeatureDrawPriorityBase |
protected GeometryManager |
geomManager |
static int |
ImageLayerDrawPriorityDefault |
static java.lang.String |
kToolkitDefaultTriangleNoLightingProgram |
static int |
LabelDrawPriorityDefault |
protected com.mousebird.maply.LabelManager |
labelManager |
protected com.mousebird.maply.LayoutLayer |
layoutLayer |
protected com.mousebird.maply.LayoutManager |
layoutManager |
protected com.mousebird.maply.LoftedPolyManager |
loftManager |
static int |
MarkerDrawPriorityDefault |
protected com.mousebird.maply.MarkerManager |
markerManager |
protected boolean |
offlineMode |
static int |
ParticleDrawPriorityDefault |
protected ParticleSystemManager |
particleSystemManager |
Scene |
scene |
protected com.mousebird.maply.SelectionManager |
selectionManager |
protected ShapeManager |
shapeManager |
protected StickerManager |
stickerManager |
protected com.mousebird.maply.VectorManager |
vecManager |
protected WideVectorManager |
wideVecManager |
Constructor and Description |
---|
RenderController(int width,
int height)
This constructor sets up its own render target.
|
RenderController(RenderController baseControl,
int width,
int height) |
Modifier and Type | Method and Description |
---|---|
boolean |
activeObjectsHaveChanges()
Check if any of the active objects have changes for the next frame.
|
void |
addActiveObject(ActiveObject activeObject)
Add an active object that will be called right before the render (on the render thread).
|
void |
addActiveObjectAtStart(ActiveObject activeObject)
Add an active object to the beginning of the list.
|
ComponentObject |
addBillboards(java.util.List<Billboard> bills,
BillboardInfo info,
RenderControllerInterface.ThreadMode threadMode)
Billboards are rectangles pointed toward the viewer.
|
void |
addLight(com.mousebird.maply.DirectionalLight light) |
void |
addLight(Light light)
Add the given light to the list of active lights.
|
ComponentObject |
addLoftedPolys(java.util.List<VectorObject> vecs,
LoftedPolyInfo loftInfo,
RenderControllerInterface.ThreadMode mode)
Add Lofted Polygons to the MaplyController to display.
|
ComponentObject |
addMarkers(java.util.List<Marker> markers,
MarkerInfo markerInfo,
RenderControllerInterface.ThreadMode mode)
Add screen markers to the visual display.
|
ComponentObject |
addPoints(java.util.List<Points> ptList,
GeometryInfo geomInfo,
RenderControllerInterface.ThreadMode mode)
Add the geometry points.
|
protected void |
addPreBuiltShader(Shader shader)
In the render controller setup, we stand up the full set of default
shaders used by the system.
|
void |
addRenderTarget(RenderTarget renderTarget)
Add a render target to the system
Sets up a render target and will start rendering to it on the next frame. |
ComponentObject |
addScreenLabels(java.util.List<ScreenLabel> labels,
LabelInfo labelInfo,
RenderControllerInterface.ThreadMode mode)
Add screen labels to the display.
|
ComponentObject |
addScreenMarkers(java.util.List<ScreenMarker> markers,
MarkerInfo markerInfo,
RenderControllerInterface.ThreadMode mode)
Add screen markers to the visual display.
|
ComponentObject |
addScreenMovingLabels(java.util.List<ScreenMovingLabel> labels,
LabelInfo labelInfo,
RenderControllerInterface.ThreadMode mode)
Add screen labels to the display.
|
ComponentObject |
addScreenMovingMarkers(java.util.List<ScreenMovingMarker> markers,
MarkerInfo markerInfo,
RenderControllerInterface.ThreadMode mode)
Add moving screen markers to the visual display.
|
void |
addShaderProgram(Shader shader)
Associate a shader with the given scene name.
|
ComponentObject |
addShapes(java.util.List<Shape> shapes,
ShapeInfo shapeInfo,
RenderControllerInterface.ThreadMode mode)
This method will add the given MaplyShape derived objects to the current scene.
|
ComponentObject |
addStickers(java.util.List<Sticker> stickers,
StickerInfo stickerInfo,
RenderControllerInterface.ThreadMode mode)
Add stickers on top of the globe or map.
|
MaplyTexture |
addTexture(android.graphics.Bitmap image,
RenderControllerInterface.TextureSettings settings,
RenderControllerInterface.ThreadMode mode)
Add texture to the system with the given settings.
|
MaplyTexture |
addTexture(com.mousebird.maply.Texture rawTex,
RenderControllerInterface.TextureSettings settings,
RenderControllerInterface.ThreadMode mode)
Add texture to the system with the given settings.
|
ComponentObject |
addVectors(java.util.List<VectorObject> vecs,
VectorInfo vecInfo,
RenderControllerInterface.ThreadMode mode)
Add vectors to the MaplyController to display.
|
ComponentObject |
addWideVectors(java.util.List<VectorObject> vecs,
WideVectorInfo wideVecInfo,
RenderControllerInterface.ThreadMode mode)
Add wide vectors to the MaplyController to display.
|
void |
changeRenderTarget(RenderTarget renderTarget,
MaplyTexture tex)
Point the render target at a different texture.
|
ComponentObject |
changeSticker(ComponentObject stickerObj,
StickerInfo stickerInfo,
RenderControllerInterface.ThreadMode mode)
Change the visual representation for the given sticker.
|
void |
changeVector(ComponentObject vecObj,
VectorInfo vecInfo,
RenderControllerInterface.ThreadMode mode)
Change the visual representation of the given vectors.
|
void |
clearContext()
In offline render mode, clear the context
Only do this if you're working in offline mode
|
void |
clearLights()
Clear all the currently active lights.
|
void |
clearRenderTarget(RenderTarget renderTarget,
RenderControllerInterface.ThreadMode mode)
Ask the render target to clear itself.
|
void |
clearTempContext(RenderControllerInterface.ContextInfo cInfo) |
MaplyTexture |
createTexture(int width,
int height,
RenderControllerInterface.TextureSettings settings,
RenderControllerInterface.ThreadMode mode)
Create an empty texture of the given size.
|
double |
currentMapScale() |
double |
currentMapZoom(Point2d geoCoord) |
void |
disableObjects(java.util.List<ComponentObject> compObjs,
RenderControllerInterface.ThreadMode mode)
Disable the given objects.
|
void |
doRender() |
void |
enableObjects(ComponentObject[] compObjs,
RenderControllerInterface.ThreadMode mode)
Enable the display for the given objects.
|
void |
enableObjects(java.util.List<ComponentObject> compObjs,
RenderControllerInterface.ThreadMode mode)
Enable the display for the given objects.
|
void |
finalize() |
CoordSystem |
getCoordSystem()
Return the current coordinate system.
|
static RenderControllerInterface.ContextInfo |
getEGLContext() |
int[] |
getFrameBufferSize()
Returns the framebuffer size as ints.
|
boolean |
getOfflineMode()
If true, the renderer was set up as offline.
|
Scene |
getScene()
Return the current scene.
|
Shader |
getShader(java.lang.String name)
Find a shader by name
|
protected boolean |
hasChanges() |
double |
heightForMapScale(double scale) |
void |
Init(Scene inScene,
com.mousebird.maply.CoordSystemDisplayAdapter inCoordAdapter,
RenderController.TaskManager inTaskMan) |
ComponentObject |
instanceVectors(ComponentObject vecObj,
VectorInfo vecInfo,
RenderControllerInterface.ThreadMode mode)
Instance an existing set of vectors and modify various parameters for reuse.
|
ComponentObject |
instanceWideVectors(ComponentObject inCompObj,
WideVectorInfo wideVecInfo,
RenderControllerInterface.ThreadMode mode)
Instance an existing set of wide vectors but change their parameters.
|
void |
processChangeSet(ChangeSet changes) |
void |
removeActiveObject(ActiveObject activeObject)
Remove an active object added earlier.
|
void |
removeLight(Light light)
Remove the given light (assuming it's active) from the list of lights.
|
void |
removeObject(ComponentObject compObj,
RenderControllerInterface.ThreadMode mode)
Remove a simple object from the display.
|
void |
removeObjects(ComponentObject[] compObjs,
RenderControllerInterface.ThreadMode mode)
Remove the given component objects from the display.
|
void |
removeObjects(java.util.List<ComponentObject> compObjs,
RenderControllerInterface.ThreadMode mode)
Remove the given component objects from the display.
|
void |
removeRenderTarget(RenderTarget renderTarget)
Remove the given render target from the system.
|
void |
removeShader(Shader shader)
Remove the given shader from active use.
|
void |
removeTexture(MaplyTexture tex,
RenderControllerInterface.ThreadMode mode) |
void |
removeTextures(java.util.List<MaplyTexture> texs,
RenderControllerInterface.ThreadMode mode)
Remove a texture from the scene.
|
void |
removeTexturesByID(java.util.List<java.lang.Long> texIDs,
RenderControllerInterface.ThreadMode mode)
This version of removeTexture takes texture IDs.
|
protected void |
render() |
android.graphics.Bitmap |
renderToBitmap()
Render to and return a Bitmap
You should have already set the context at this point
|
protected void |
renderToBitmapNative(android.graphics.Bitmap outBitmap) |
void |
replaceLights(com.mousebird.maply.DirectionalLight[] lights) |
void |
requestRender() |
void |
resetLights()
Reset the lighting back to its default state at startup.
|
protected boolean |
resize(int width,
int height) |
void |
setClearColor(float r,
float g,
float b,
float a) |
void |
setClearColor(int color)
Set the color for the OpenGL ES background.
|
void |
setConfig(RenderController otherControl,
javax.microedition.khronos.egl.EGLConfig inConfig) |
boolean |
setEGLContext(RenderControllerInterface.ContextInfo cInfo) |
void |
setPerfInterval(int perfInterval) |
void |
setScene(Scene scene) |
void |
setupShadersNative() |
RenderControllerInterface.ContextInfo |
setupTempContext(RenderControllerInterface.ThreadMode threadMode) |
void |
setView(View inView) |
void |
setViewNative(View view) |
void |
shutdown() |
boolean |
surfaceChanged(int width,
int height) |
protected boolean |
teardown() |
public static final java.lang.String kToolkitDefaultTriangleNoLightingProgram
public static final int ImageLayerDrawPriorityDefault
public static final int FeatureDrawPriorityBase
public static final int MarkerDrawPriorityDefault
public static final int LabelDrawPriorityDefault
public static final int ParticleDrawPriorityDefault
public static long EmptyIdentity
public boolean disposeAfterRemoval
public Scene scene
public com.mousebird.maply.CoordSystemDisplayAdapter coordAdapter
protected boolean offlineMode
public javax.microedition.khronos.egl.EGLDisplay display
public javax.microedition.khronos.egl.EGLConfig config
public javax.microedition.khronos.egl.EGLContext context
protected com.mousebird.maply.VectorManager vecManager
protected com.mousebird.maply.LoftedPolyManager loftManager
protected WideVectorManager wideVecManager
protected com.mousebird.maply.MarkerManager markerManager
protected StickerManager stickerManager
protected com.mousebird.maply.LabelManager labelManager
protected com.mousebird.maply.SelectionManager selectionManager
protected ComponentManager componentManager
protected com.mousebird.maply.LayoutManager layoutManager
protected ParticleSystemManager particleSystemManager
protected com.mousebird.maply.LayoutLayer layoutLayer
protected ShapeManager shapeManager
protected BillboardManager billboardManager
protected GeometryManager geomManager
public RenderController(RenderController baseControl, int width, int height)
public RenderController(int width, int height)
public Scene getScene()
getScene
in interface RenderControllerInterface
public CoordSystem getCoordSystem()
getCoordSystem
in interface RenderControllerInterface
public boolean getOfflineMode()
getOfflineMode
in interface RenderControllerInterface
public void Init(Scene inScene, com.mousebird.maply.CoordSystemDisplayAdapter inCoordAdapter, RenderController.TaskManager inTaskMan)
public void setView(View inView)
public void addActiveObject(ActiveObject activeObject)
public void addActiveObjectAtStart(ActiveObject activeObject)
public void removeActiveObject(ActiveObject activeObject)
public boolean activeObjectsHaveChanges()
public boolean surfaceChanged(int width, int height)
public void doRender()
public void setConfig(RenderController otherControl, javax.microedition.khronos.egl.EGLConfig inConfig)
public void shutdown()
public void addLight(Light light)
addLight
in interface RenderControllerInterface
light
- Light to add.public void removeLight(Light light)
removeLight
in interface RenderControllerInterface
light
- Light to remove.public void clearLights()
clearLights
in interface RenderControllerInterface
public void resetLights()
resetLights
in interface RenderControllerInterface
public ComponentObject addScreenMarkers(java.util.List<ScreenMarker> markers, MarkerInfo markerInfo, RenderControllerInterface.ThreadMode mode)
addScreenMarkers
in interface RenderControllerInterface
markers
- The markers to add to the displaymarkerInfo
- How the markers should look.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addScreenMovingMarkers(java.util.List<ScreenMovingMarker> markers, MarkerInfo markerInfo, RenderControllerInterface.ThreadMode mode)
addScreenMovingMarkers
in interface RenderControllerInterface
public ComponentObject addMarkers(java.util.List<Marker> markers, MarkerInfo markerInfo, RenderControllerInterface.ThreadMode mode)
addMarkers
in interface RenderControllerInterface
markers
- The markers to add to the displaymarkerInfo
- How the markers should look.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addScreenLabels(java.util.List<ScreenLabel> labels, LabelInfo labelInfo, RenderControllerInterface.ThreadMode mode)
addScreenLabels
in interface RenderControllerInterface
labels
- Labels to add to the display.labelInfo
- The visual appearance of the labels.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addScreenMovingLabels(java.util.List<ScreenMovingLabel> labels, LabelInfo labelInfo, RenderControllerInterface.ThreadMode mode)
addScreenMovingLabels
in interface RenderControllerInterface
labels
- Labels to add to the display.labelInfo
- The visual appearance of the labels.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addVectors(java.util.List<VectorObject> vecs, VectorInfo vecInfo, RenderControllerInterface.ThreadMode mode)
addVectors
in interface RenderControllerInterface
vecs
- A list of VectorObject's created by the user or read in from various sources.vecInfo
- A description of how the vectors should look.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addLoftedPolys(java.util.List<VectorObject> vecs, LoftedPolyInfo loftInfo, RenderControllerInterface.ThreadMode mode)
addLoftedPolys
in interface RenderControllerInterface
vecs
- A list of VectorObject's created by the user or read in from various sources.loftInfo
- A description of how the lofted polygons should look.mode
- Where to execute the add. Choose ThreadAny by default.public void changeVector(ComponentObject vecObj, VectorInfo vecInfo, RenderControllerInterface.ThreadMode mode)
changeVector
in interface RenderControllerInterface
vecObj
- The component object returned by the original addVectors() call.vecInfo
- Visual representation to use for the changes.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject instanceVectors(ComponentObject vecObj, VectorInfo vecInfo, RenderControllerInterface.ThreadMode mode)
instanceVectors
in interface RenderControllerInterface
public ComponentObject addWideVectors(java.util.List<VectorObject> vecs, WideVectorInfo wideVecInfo, RenderControllerInterface.ThreadMode mode)
addWideVectors
in interface RenderControllerInterface
vecs
- A list of VectorObject's created by the user or read in from various sources.wideVecInfo
- A description of how the vectors should look.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject instanceWideVectors(ComponentObject inCompObj, WideVectorInfo wideVecInfo, RenderControllerInterface.ThreadMode mode)
instanceWideVectors
in interface RenderControllerInterface
inCompObj
- The Component Object returned by an addWideVectors call.wideVecInfo
- How we want the vectors to look.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addShapes(java.util.List<Shape> shapes, ShapeInfo shapeInfo, RenderControllerInterface.ThreadMode mode)
addShapes
in interface RenderControllerInterface
shapes
- An array of Shape derived objectsshapeInfo
- Info controlling how the shapes lookmode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addStickers(java.util.List<Sticker> stickers, StickerInfo stickerInfo, RenderControllerInterface.ThreadMode mode)
addStickers
in interface RenderControllerInterface
stickers
- The list of stickers to apply.stickerInfo
- Parameters that cover all the stickers in question.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject changeSticker(ComponentObject stickerObj, StickerInfo stickerInfo, RenderControllerInterface.ThreadMode mode)
changeSticker
in interface RenderControllerInterface
stickerObj
- The sticker to change.stickerInfo
- Parameters to change.mode
- Where to execute the add. Choose ThreadAny by default.public ComponentObject addBillboards(java.util.List<Billboard> bills, BillboardInfo info, RenderControllerInterface.ThreadMode threadMode)
addBillboards
in interface RenderControllerInterface
public ComponentObject addPoints(java.util.List<Points> ptList, GeometryInfo geomInfo, RenderControllerInterface.ThreadMode mode)
addPoints
in interface RenderControllerInterface
ptList
- The points to add.geomInfo
- Parameters to set things up with.mode
- Where to execute the add. Choose ThreadAny by default.public MaplyTexture addTexture(android.graphics.Bitmap image, RenderControllerInterface.TextureSettings settings, RenderControllerInterface.ThreadMode mode)
addTexture
in interface RenderControllerInterface
image
- Image to add.settings
- Settings to use.mode
- Add on the current thread or elsewhere.public MaplyTexture addTexture(com.mousebird.maply.Texture rawTex, RenderControllerInterface.TextureSettings settings, RenderControllerInterface.ThreadMode mode)
addTexture
in interface RenderControllerInterface
rawTex
- Texture to add.settings
- Settings to use.mode
- Add on the current thread or elsewhere.public MaplyTexture createTexture(int width, int height, RenderControllerInterface.TextureSettings settings, RenderControllerInterface.ThreadMode mode)
createTexture
in interface RenderControllerInterface
width
- Width of the resulting textureheight
- Height of the resulting texturesettings
- Other texture related settingsmode
- Which thread to do the work onpublic void removeTextures(java.util.List<MaplyTexture> texs, RenderControllerInterface.ThreadMode mode)
removeTextures
in interface RenderControllerInterface
texs
- Textures to remove.mode
- Remove immediately (current thread) or elsewhere.public void removeTexture(MaplyTexture tex, RenderControllerInterface.ThreadMode mode)
removeTexture
in interface RenderControllerInterface
public void removeTexturesByID(java.util.List<java.lang.Long> texIDs, RenderControllerInterface.ThreadMode mode)
removeTexturesByID
in interface RenderControllerInterface
texIDs
- Textures to removemode
- Remove immediately (current thread) or elsewhere.public void addRenderTarget(RenderTarget renderTarget)
addRenderTarget
in interface RenderControllerInterface
public void changeRenderTarget(RenderTarget renderTarget, MaplyTexture tex)
changeRenderTarget
in interface RenderControllerInterface
public void removeRenderTarget(RenderTarget renderTarget)
removeRenderTarget
in interface RenderControllerInterface
public void clearRenderTarget(RenderTarget renderTarget, RenderControllerInterface.ThreadMode mode)
public void disableObjects(java.util.List<ComponentObject> compObjs, RenderControllerInterface.ThreadMode mode)
disableObjects
in interface RenderControllerInterface
compObjs
- Objects to disable in the display.mode
- Where to execute the add. Choose ThreadAny by default.public void enableObjects(java.util.List<ComponentObject> compObjs, RenderControllerInterface.ThreadMode mode)
enableObjects
in interface RenderControllerInterface
compObjs
- Objects to enable disable.mode
- Where to execute the enable. Choose ThreadAny by default.public void enableObjects(ComponentObject[] compObjs, RenderControllerInterface.ThreadMode mode)
compObjs
- Objects to enable disable.mode
- Where to execute the enable. Choose ThreadAny by default.public void removeObjects(java.util.List<ComponentObject> compObjs, RenderControllerInterface.ThreadMode mode)
removeObjects
in interface RenderControllerInterface
compObjs
- Component Objects to remove.mode
- Where to execute the remove. Choose ThreadAny by default.public void removeObjects(ComponentObject[] compObjs, RenderControllerInterface.ThreadMode mode)
compObjs
- Component Objects to remove.mode
- Where to execute the remove. Choose ThreadAny by default.public void removeObject(ComponentObject compObj, RenderControllerInterface.ThreadMode mode)
removeObject
in interface RenderControllerInterface
compObj
- Component Object to remove.mode
- Where to execute the remove. Choose ThreadAny by default.public void addShaderProgram(Shader shader)
addShaderProgram
in interface RenderControllerInterface
shader
- The shader to add.protected void addPreBuiltShader(Shader shader)
public Shader getShader(java.lang.String name)
getShader
in interface RenderControllerInterface
name
- Name of the shader to returnpublic void removeShader(Shader shader)
removeShader
in interface RenderControllerInterface
public void setClearColor(int color)
setClearColor
in interface RenderControllerInterface
public double heightForMapScale(double scale)
heightForMapScale
in interface RenderControllerInterface
public double currentMapZoom(Point2d geoCoord)
currentMapZoom
in interface RenderControllerInterface
public double currentMapScale()
currentMapScale
in interface RenderControllerInterface
public int[] getFrameBufferSize()
getFrameBufferSize
in interface RenderControllerInterface
public void requestRender()
requestRender
in interface RenderControllerInterface
public boolean setEGLContext(RenderControllerInterface.ContextInfo cInfo)
setEGLContext
in interface RenderControllerInterface
public static RenderControllerInterface.ContextInfo getEGLContext()
public void processChangeSet(ChangeSet changes)
processChangeSet
in interface RenderControllerInterface
public RenderControllerInterface.ContextInfo setupTempContext(RenderControllerInterface.ThreadMode threadMode)
setupTempContext
in interface RenderControllerInterface
public void clearTempContext(RenderControllerInterface.ContextInfo cInfo)
clearTempContext
in interface RenderControllerInterface
public void clearContext()
public android.graphics.Bitmap renderToBitmap()
public void setScene(Scene scene)
public void setupShadersNative()
public void setViewNative(View view)
public void setClearColor(float r, float g, float b, float a)
protected boolean teardown()
protected boolean resize(int width, int height)
protected void render()
protected boolean hasChanges()
public void setPerfInterval(int perfInterval)
public void addLight(com.mousebird.maply.DirectionalLight light)
public void replaceLights(com.mousebird.maply.DirectionalLight[] lights)
protected void renderToBitmapNative(android.graphics.Bitmap outBitmap)
public void finalize()
finalize
in class java.lang.Object