Android Open Source - droidengine2d Texture Region






From Project

Back to project page droidengine2d.

License

The source code is released under:

Apache License

If you think the Android project droidengine2d listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*   Copyright 2013-2014 Miguel Vicente Linares
 */*from   w  w  w.j a v  a  2 s . com*/
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package com.miviclin.droidengine2d.graphics.texture;

/**
 * TextureRegion is a region of a texture.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class TextureRegion {

  private final Texture texture;
  private float u1;
  private float v1;
  private float u2;
  private float v2;
  private float x;
  private float y;
  private float width;
  private float height;
  private boolean flippedHorizontally;
  private boolean flippedVertically;

  /**
   * Creates a new TextureRegion.
   * 
   * @param texture Texture this TextureRegion belongs to.
   * @param x Position of this region in the X axis in pixels. Relative to the top-left corner of the texture.
   * @param y Position of this region in the Y axis in pixels. Relative to the top-left corner of the texture.
   * @param width Width of this region.
   * @param height Height of this region.
   */
  public TextureRegion(Texture texture, float x, float y, float width, float height) {
    if (texture == null) {
      throw new IllegalArgumentException("texture can not be null");
    }
    this.texture = texture;
    setWidth(width);
    setHeight(height);
    setX(x);
    setY(y);
    this.flippedHorizontally = false;
    this.flippedVertically = false;
  }

  /**
   * Creates a new TextureRegion, copying from the specified TextureRegion.
   * 
   * @param textureRegion TextureRegion.
   */
  public TextureRegion(TextureRegion textureRegion) {
    this.texture = textureRegion.texture;
    this.u1 = textureRegion.u1;
    this.v1 = textureRegion.v1;
    this.u2 = textureRegion.u2;
    this.v2 = textureRegion.v2;
    this.x = textureRegion.x;
    this.y = textureRegion.y;
    this.width = textureRegion.width;
    this.height = textureRegion.height;
    this.flippedHorizontally = textureRegion.flippedHorizontally;
    this.flippedVertically = textureRegion.flippedVertically;
  }

  /**
   * Returns the Texture this TextureRegion belongs to.
   * 
   * @return Texture
   */
  public final Texture getTexture() {
    return texture;
  }

  /**
   * Returns the U1 coordinate of this TextureRegion.
   * 
   * @return U1 (value between 0.0f and 1.0f).
   */
  public final float getU1() {
    return u1;
  }

  /**
   * Returns the V1 coordinate of this TextureRegion.
   * 
   * @return V1 (value between 0.0f and 1.0f).
   */
  public final float getV1() {
    return v1;
  }

  /**
   * Returns the U2 coordinate of this TextureRegion.
   * 
   * @return U2 (value between 0.0f and 1.0f).
   */
  public final float getU2() {
    return u2;
  }

  /**
   * Returns the V2 coordinate of this TextureRegion.
   * 
   * @return V2 (value between 0.0f and 1.0f).
   */
  public final float getV2() {
    return v2;
  }

  /**
   * Returns the position of this region in the X axis in pixels. Relative to the top-left corner of the texture.
   * 
   * @return x
   */
  public final float getX() {
    return x;
  }

  /**
   * Sets the position of this region in the X axis in pixels. Relative to the top-left corner of the texture.
   * 
   * @param x New value.
   */
  public final void setX(float x) {
    if (x < 0) {
      throw new IllegalArgumentException("x must be equal or greater than 0");
    }
    if ((x + width) > texture.getWidth()) {
      throw new IllegalArgumentException("The TextureRegion must be fully contained inside the texture");
    }
    this.u1 = x / texture.getWidth();
    this.u2 = (x + width) / texture.getWidth();
    this.x = x;
  }

  /**
   * Returns the position of this region in the Y axis in pixels. Relative to the top-left corner of the texture.
   * 
   * @return y
   */
  public final float getY() {
    return y;
  }

  /**
   * Sets the position of this region in the Y axis in pixels. Relative to the top-left corner of the texture.
   * 
   * @param y New value.
   */
  public final void setY(float y) {
    if (y < 0) {
      throw new IllegalArgumentException("y must be equal or greater than 0");
    }
    if ((y + height) > texture.getHeight()) {
      throw new IllegalArgumentException("The TextureRegion must be fully contained inside the texture");
    }
    this.v1 = y / texture.getHeight();
    this.v2 = (y + height) / texture.getHeight();
    this.y = y;
  }

  /**
   * Returns the width of this TextureRegion, in pixels.
   * 
   * @return the width of this TextureRegion
   */
  public final float getWidth() {
    return width;
  }

  /**
   * Sets the width of this TextureRegion, in pixels.
   * 
   * @param width New value.
   */
  public final void setWidth(float width) {
    if (width <= 0) {
      throw new IllegalArgumentException("width must be greater than 0");
    }
    this.width = width;
  }

  /**
   * Returns the height of this TextureRegion, in pixels.
   * 
   * @return the height of this TextureRegion
   */
  public final float getHeight() {
    return height;
  }

  /**
   * Sets the height of this TextureRegion, in pixels.
   * 
   * @param height New value.
   */
  public final void setHeight(float height) {
    if (height <= 0) {
      throw new IllegalArgumentException("height must be greater than 0");
    }
    this.height = height;
  }

  /**
   * Returns true if this TextureRegion is flipped horizontally.
   * 
   * @return true if this TextureRegion is flipped horizontally, false otherwise
   */
  public final boolean isFlippedHorizontally() {
    return flippedHorizontally;
  }

  /**
   * Flips this TextureRegion horizontally.
   */
  public final void flipHorizontally() {
    float previousU1 = u1;
    u1 = u2;
    u2 = previousU1;
    flippedHorizontally = !flippedHorizontally;
  }

  /**
   * Returns true if this TextureRegion is flipped vertically.
   * 
   * @return true if this TextureRegion is flipped vertically, false otherwise
   */
  public final boolean isFlippedVertically() {
    return flippedVertically;
  }

  /**
   * Flips this TextureRegion vertically.
   */
  public final void flipVertically() {
    float previousV1 = v1;
    v1 = v2;
    v2 = previousV1;
    flippedVertically = !flippedVertically;
  }

}




Java Source Code List

com.miviclin.droidengine2d.AbstractGame.java
com.miviclin.droidengine2d.EngineActivity.java
com.miviclin.droidengine2d.EngineLock.java
com.miviclin.droidengine2d.Engine.java
com.miviclin.droidengine2d.GameThread.java
com.miviclin.droidengine2d.Game.java
com.miviclin.droidengine2d.audio.MusicPlayer.java
com.miviclin.droidengine2d.audio.SoundManager.java
com.miviclin.droidengine2d.gamestate.GameStateAdapter.java
com.miviclin.droidengine2d.gamestate.GameStateManager.java
com.miviclin.droidengine2d.gamestate.GameStateNotRegisteredException.java
com.miviclin.droidengine2d.gamestate.GameState.java
com.miviclin.droidengine2d.gamestate.OnGameStateChangeListener.java
com.miviclin.droidengine2d.graphics.Color.java
com.miviclin.droidengine2d.graphics.DefaultRenderer.java
com.miviclin.droidengine2d.graphics.EngineRenderer.java
com.miviclin.droidengine2d.graphics.GLDebugger.java
com.miviclin.droidengine2d.graphics.GLRenderer.java
com.miviclin.droidengine2d.graphics.GLView.java
com.miviclin.droidengine2d.graphics.Graphics.java
com.miviclin.droidengine2d.graphics.animation.AnimationFrame.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateAdapter.java
com.miviclin.droidengine2d.graphics.animation.AnimationStateListener.java
com.miviclin.droidengine2d.graphics.animation.Animation.java
com.miviclin.droidengine2d.graphics.cameras.Camera.java
com.miviclin.droidengine2d.graphics.cameras.OrthographicCamera.java
com.miviclin.droidengine2d.graphics.material.BlendingOptions.java
com.miviclin.droidengine2d.graphics.material.ColorMaterial.java
com.miviclin.droidengine2d.graphics.material.Material.java
com.miviclin.droidengine2d.graphics.material.TextureColorMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureHsvMaterial.java
com.miviclin.droidengine2d.graphics.material.TextureMaterial.java
com.miviclin.droidengine2d.graphics.material.TransparentTextureMaterial.java
com.miviclin.droidengine2d.graphics.material.UnsupportedMaterialException.java
com.miviclin.droidengine2d.graphics.mesh.ColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.Geometry.java
com.miviclin.droidengine2d.graphics.mesh.GraphicsBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchGeometry.java
com.miviclin.droidengine2d.graphics.mesh.RectangleBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureColorMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureHsvMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRendererBase.java
com.miviclin.droidengine2d.graphics.mesh.TextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.mesh.TransparentTextureMaterialBatchRenderer.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgramException.java
com.miviclin.droidengine2d.graphics.shader.ShaderProgram.java
com.miviclin.droidengine2d.graphics.shader.ShaderVars.java
com.miviclin.droidengine2d.graphics.text.BitmapFont.java
com.miviclin.droidengine2d.graphics.text.FontChar.java
com.miviclin.droidengine2d.graphics.text.Font.java
com.miviclin.droidengine2d.graphics.text.UndefinedCharacterException.java
com.miviclin.droidengine2d.graphics.texture.TextureAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureManager.java
com.miviclin.droidengine2d.graphics.texture.TexturePackerAtlas.java
com.miviclin.droidengine2d.graphics.texture.TextureRegion.java
com.miviclin.droidengine2d.graphics.texture.Texture.java
com.miviclin.droidengine2d.input.DefaultKeyEventProcessor.java
com.miviclin.droidengine2d.input.GameInputManager.java
com.miviclin.droidengine2d.input.GameStateInputManager.java
com.miviclin.droidengine2d.input.KeyEventInfo.java
com.miviclin.droidengine2d.input.KeyEventProcessor.java
com.miviclin.droidengine2d.input.KeyProcessor.java
com.miviclin.droidengine2d.input.MotionEventProcessor.java
com.miviclin.droidengine2d.input.TouchProcessor.java
com.miviclin.droidengine2d.input.sensor.AccelerometerValuesListener.java
com.miviclin.droidengine2d.input.sensor.Accelerometer.java
com.miviclin.droidengine2d.input.sensor.SensorUtilities.java
com.miviclin.droidengine2d.resources.AssetsLoader.java
com.miviclin.droidengine2d.util.ActivityUtilities.java
com.miviclin.droidengine2d.util.MutexLock.java
com.miviclin.droidengine2d.util.PrimitiveTypeSize.java
com.miviclin.droidengine2d.util.TransformUtilities.java
com.miviclin.droidengine2d.util.Transform.java
com.miviclin.droidengine2d.util.math.Matrix4.java
com.miviclin.droidengine2d.util.math.MatrixFix.java
com.miviclin.droidengine2d.util.math.Vector2.java
com.miviclin.droidengine2d.util.math.Vector3.java
com.miviclin.droidengine2d.util.time.TimeConstants.java
com.miviclin.droidengine2d.util.time.TimeCounter.java