aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2013-09-06 04:27:46 +0200
committerSven Gothel <[email protected]>2013-09-06 04:27:46 +0200
commit668ed1ab3ff3aad4366e00ede918b186d6e057a4 (patch)
tree2a61c0440079653da082f7f75ab9c75be7521034
parentb09cd25702e6ffd5197ec02cf3d34b4c2876b67b (diff)
TileRenderer*: TileRenderer adds setTileOffset(..), getParam(pname) shall always return last result, no overloading of attachToAutoDrawable(..); Fix comments
TileRenderer: - adds setTileOffset(..) A tile offset might be required, i.e. via a given rectangular clip bounds - getParam(pname) shall always return last result Even when finished tiling, the last value shall be returned, otherwise a post endTile() is unable to retrieve the value. - No overloading of attachToAutoDrawable(..) No reason to complicate usage by mutating semantics, call setTileSize(..) manually TileRendererBase: - Fix API doc: TR_CURRENT_TILE_X_POS, TR_CURRENT_TILE_Y_POS
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/RandomTileRenderer.java3
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java52
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/TileRendererBase.java4
-rw-r--r--src/test/com/jogamp/opengl/test/junit/jogl/tile/TestTiledRendering2GL2NEWT.java3
4 files changed, 25 insertions, 37 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/util/RandomTileRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/RandomTileRenderer.java
index be73ec4d5..4fcf0b6cc 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/RandomTileRenderer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/RandomTileRenderer.java
@@ -74,10 +74,9 @@ public class RandomTileRenderer extends TileRendererBase {
* @throws IllegalArgumentException is tile x/y are < 0 or tile size is <= 0x0
*/
public void setTileRect(int tX, int tY, int tWidth, int tHeight) throws IllegalStateException, IllegalArgumentException {
- /** FIXME
if( 0 > tX || 0 > tX ) {
throw new IllegalArgumentException("Tile pos must be >= 0/0");
- } */
+ }
if( 0 >= tWidth || 0 >= tHeight ) {
throw new IllegalArgumentException("Tile size must be > 0x0");
}
diff --git a/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java b/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java
index 3bb9dc169..93ac32281 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/TileRenderer.java
@@ -38,7 +38,6 @@ package com.jogamp.opengl.util;
import javax.media.nativewindow.util.Dimension;
import javax.media.opengl.GL2ES3;
-import javax.media.opengl.GLAutoDrawable;
import com.jogamp.opengl.util.GLPixelBuffer.GLPixelAttributes;
@@ -118,6 +117,8 @@ public class TileRenderer extends TileRendererBase {
private int currentTile = -1;
private int currentRow;
private int currentColumn;
+ private int offsetX;
+ private int offsetY;
/**
* Creates a new TileRenderer object
@@ -157,6 +158,15 @@ public class TileRenderer extends TileRendererBase {
setup();
}
+ /**
+ * Sets an xy offset for the resulting tile
+ * {@link TileRendererBase#TR_CURRENT_TILE_X_POS x-pos} and {@link TileRendererBase#TR_CURRENT_TILE_Y_POS y-pos}.
+ **/
+ public void setTileOffset(int xoff, int yoff) {
+ offsetX = xoff;
+ offsetY = yoff;
+ }
+
/**
* Sets up the number of rows and columns needed
*/
@@ -199,17 +209,9 @@ public class TileRenderer extends TileRendererBase {
case TR_COLUMNS:
return columns;
case TR_CURRENT_ROW:
- if( currentTile < 0 ) {
- return -1;
- } else {
- return currentRow;
- }
+ return currentRow;
case TR_CURRENT_COLUMN:
- if( currentTile < 0 ) {
- return -1;
- } else {
- return currentColumn;
- }
+ return currentColumn;
case TR_CURRENT_TILE_X_POS:
return currentTileXPos;
case TR_CURRENT_TILE_Y_POS:
@@ -226,11 +228,9 @@ public class TileRenderer extends TileRendererBase {
}
/**
- * Sets the order of row traversal
+ * Sets the order of row traversal, default is {@link #TR_BOTTOM_TO_TOP}.
*
- * @param order
- * The row traversal order, must be
- * eitherTR_TOP_TO_BOTTOM or TR_BOTTOM_TO_TOP
+ * @param order The row traversal order, must be either {@link #TR_TOP_TO_BOTTOM} or {@link #TR_BOTTOM_TO_TOP}.
*/
public final void setRowOrder(int order) {
if (order == TR_TOP_TO_BOTTOM || order == TR_BOTTOM_TO_TOP) {
@@ -280,8 +280,8 @@ public class TileRenderer extends TileRendererBase {
tW = imageSize.getWidth() - ( columns - 1 ) * ( tileSizeNB.getWidth() ) + 2 * border;
}
- currentTileXPos = currentColumn * tileSizeNB.getWidth();
- currentTileYPos = currentRow * tileSizeNB.getHeight();
+ currentTileXPos = currentColumn * tileSizeNB.getWidth() + offsetX;
+ currentTileYPos = currentRow * tileSizeNB.getHeight() + offsetY;
final int preTileWidth = currentTileWidth;
final int preTileHeight = currentTileHeight;
@@ -291,8 +291,9 @@ public class TileRenderer extends TileRendererBase {
currentTileHeight = tH;
if( DEBUG ) {
- System.err.println("Tile["+currentTile+"]: ["+preColumn+"]["+preRow+"] "+preTileWidth+"x"+preTileHeight+
- " -> ["+currentColumn+"]["+currentRow+"] "+currentTileXPos+"/"+currentTileYPos+", "+tW+"x"+tH+", image "+imageSize.getWidth()+"x"+imageSize.getHeight());
+ System.err.println("Tile["+currentTile+"]: off "+offsetX+"/"+offsetX+", ["+preColumn+"]["+preRow+"] "+preTileWidth+"x"+preTileHeight+
+ " -> ["+currentColumn+"]["+currentRow+"] "+currentTileXPos+"/"+currentTileYPos+", "+tW+"x"+tH+
+ ", image "+imageSize.getWidth()+"x"+imageSize.getHeight());
}
gl.glViewport( 0, 0, tW, tH );
@@ -377,17 +378,4 @@ public class TileRenderer extends TileRendererBase {
currentTile = -1; /* all done */
}
}
-
- /**
- * {@inheritDoc}
- * <p>
- * Sets the tile size of this renderer to the given {@link GLAutoDrawable} size
- * with zero tile border.
- * </p>
- */
- @Override
- public void attachToAutoDrawable(GLAutoDrawable glad) throws IllegalStateException {
- super.attachToAutoDrawable(glad);
- setTileSize(glad.getWidth(), glad.getHeight(), 0);
- }
} \ No newline at end of file
diff --git a/src/jogl/classes/com/jogamp/opengl/util/TileRendererBase.java b/src/jogl/classes/com/jogamp/opengl/util/TileRendererBase.java
index 1126f6dee..4127b16e5 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/TileRendererBase.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/TileRendererBase.java
@@ -79,11 +79,11 @@ public abstract class TileRendererBase {
*/
public static final int TR_IMAGE_HEIGHT = 2;
/**
- * The width of the current tile. See {@link #getParam(int)}.
+ * The x-pos of the current tile. See {@link #getParam(int)}.
*/
public static final int TR_CURRENT_TILE_X_POS = 3;
/**
- * The height of the current tile. See {@link #getParam(int)}.
+ * The y-pos of the current tile. See {@link #getParam(int)}.
*/
public static final int TR_CURRENT_TILE_Y_POS = 4;
/**
diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/tile/TestTiledRendering2GL2NEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/tile/TestTiledRendering2GL2NEWT.java
index fb26eeb24..28e1b21c4 100644
--- a/src/test/com/jogamp/opengl/test/junit/jogl/tile/TestTiledRendering2GL2NEWT.java
+++ b/src/test/com/jogamp/opengl/test/junit/jogl/tile/TestTiledRendering2GL2NEWT.java
@@ -96,8 +96,9 @@ public class TestTiledRendering2GL2NEWT extends UITestCase {
// Initialize the tile rendering library
final TileRenderer renderer = new TileRenderer();
- renderer.attachToAutoDrawable(glad);
renderer.setImageSize(imageWidth, imageHeight);
+ renderer.setTileSize(glad.getWidth(), glad.getHeight(), 0);
+ renderer.attachToAutoDrawable(glad);
final GLPixelBuffer.GLPixelBufferProvider pixelBufferProvider = GLPixelBuffer.defaultProviderWithRowStride;
final boolean[] flipVertically = { false };