Android Open Source - droidengine2d Blending Options






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   www. j  av  a2  s  .co m*/
 *  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.material;

import android.opengl.GLES20;

/**
 * Blending options.
 * 
 * @author Miguel Vicente Linares
 * 
 */
public class BlendingOptions {

  private int sourceFactor;
  private int destinationFactor;
  private int blendEquationMode;

  /**
   * Constructor.<br>
   * The default source factor is {@link GLES20#GL_SRC_ALPHA}.<br>
   * The default destination factor is {@link GLES20#GL_ONE_MINUS_SRC_ALPHA}.<br>
   * The default blending equation is {@link GLES20#GL_FUNC_ADD}.
   * 
   * @see GLES20#glBlendFunc(int, int)
   * @see GLES20#glBlendEquation(int)
   */
  public BlendingOptions() {
    this(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA, GLES20.GL_FUNC_ADD);
  }

  /**
   * Constructor.<br>
   * Supported values for source factor and destination factor:<br>
   * {@link GLES20#GL_ZERO}, {@link GLES20#GL_ONE}, {@link GLES20#GL_SRC_COLOR}, {@link GLES20#GL_ONE_MINUS_SRC_COLOR}
   * , {@link GLES20#GL_DST_COLOR}, {@link GLES20#GL_ONE_MINUS_DST_COLOR}, {@link GLES20#GL_SRC_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_SRC_ALPHA}, {@link GLES20#GL_DST_ALPHA}, {@link GLES20#GL_ONE_MINUS_DST_ALPHA},
   * {@link GLES20#GL_CONSTANT_COLOR}, {@link GLES20#GL_ONE_MINUS_CONSTANT_COLOR}, {@link GLES20#GL_CONSTANT_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_CONSTANT_ALPHA}, {@link GLES20#GL_SRC_ALPHA_SATURATE}<br>
   * <br>
   * 
   * The default blending equation is {@link GLES20#GL_FUNC_ADD}
   * 
   * @param sourceFactor Source factor.
   * @param destinationFactor Destination factor.
   * 
   * @see GLES20#glBlendFunc(int, int)
   * @see GLES20#glBlendEquation(int)
   */
  public BlendingOptions(int sourceFactor, int destinationFactor) {
    this(sourceFactor, destinationFactor, GLES20.GL_FUNC_ADD);
  }

  /**
   * Constructor.<br>
   * Supported values for source factor and destination factor:<br>
   * {@link GLES20#GL_ZERO}, {@link GLES20#GL_ONE}, {@link GLES20#GL_SRC_COLOR}, {@link GLES20#GL_ONE_MINUS_SRC_COLOR}
   * , {@link GLES20#GL_DST_COLOR}, {@link GLES20#GL_ONE_MINUS_DST_COLOR}, {@link GLES20#GL_SRC_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_SRC_ALPHA}, {@link GLES20#GL_DST_ALPHA}, {@link GLES20#GL_ONE_MINUS_DST_ALPHA},
   * {@link GLES20#GL_CONSTANT_COLOR}, {@link GLES20#GL_ONE_MINUS_CONSTANT_COLOR}, {@link GLES20#GL_CONSTANT_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_CONSTANT_ALPHA}, {@link GLES20#GL_SRC_ALPHA_SATURATE}<br>
   * <br>
   * 
   * Supported values for the blending equation:<br>
   * {@link GLES20#GL_FUNC_ADD}, {@link GLES20#GL_FUNC_SUBTRACT}, {@link GLES20#GL_FUNC_REVERSE_SUBTRACT}.
   * 
   * @param sourceFactor Source factor.
   * @param destinationFactor Destination factor.
   * @param blendEquationMode Blending equation. This setting will only work in Android Ice Cream Sandwich or newer
   *            versions.
   * 
   * @see GLES20#glBlendFunc(int, int)
   * @see GLES20#glBlendEquation(int)
   */
  public BlendingOptions(int sourceFactor, int destinationFactor, int blendEquationMode) {
    checkValidFactor(sourceFactor);
    checkValidFactor(destinationFactor);
    checkValidBlendEquationMode(blendEquationMode);
    this.sourceFactor = sourceFactor;
    this.destinationFactor = destinationFactor;
    this.blendEquationMode = blendEquationMode;
  }

  /**
   * Returns the source factor of the blending function.
   * 
   * @return source factor
   * 
   * @see GLES20#glBlendFunc(int, int)
   */
  public int getSourceFactor() {
    return sourceFactor;
  }

  /**
   * Sets the source factor of the blending function.<br>
   * Supported values for source factor:<br>
   * {@link GLES20#GL_ZERO}, {@link GLES20#GL_ONE}, {@link GLES20#GL_SRC_COLOR}, {@link GLES20#GL_ONE_MINUS_SRC_COLOR}
   * , {@link GLES20#GL_DST_COLOR}, {@link GLES20#GL_ONE_MINUS_DST_COLOR}, {@link GLES20#GL_SRC_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_SRC_ALPHA}, {@link GLES20#GL_DST_ALPHA}, {@link GLES20#GL_ONE_MINUS_DST_ALPHA},
   * {@link GLES20#GL_CONSTANT_COLOR}, {@link GLES20#GL_ONE_MINUS_CONSTANT_COLOR}, {@link GLES20#GL_CONSTANT_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_CONSTANT_ALPHA}, {@link GLES20#GL_SRC_ALPHA_SATURATE}
   * 
   * @param sourceFactor Source factor.
   * 
   * @see GLES20#glBlendFunc(int, int)
   */
  public void setSourceFactor(int sourceFactor) {
    checkValidFactor(sourceFactor);
    this.sourceFactor = sourceFactor;
  }

  /**
   * Returns the destination factor of the blending function.
   * 
   * @return destination factor
   * 
   * @see GLES20#glBlendFunc(int, int)
   */
  public int getDestinationFactor() {
    return destinationFactor;
  }

  /**
   * Sets the destination factor of the blending function.<br>
   * Supported values for source factor:<br>
   * {@link GLES20#GL_ZERO}, {@link GLES20#GL_ONE}, {@link GLES20#GL_SRC_COLOR}, {@link GLES20#GL_ONE_MINUS_SRC_COLOR}
   * , {@link GLES20#GL_DST_COLOR}, {@link GLES20#GL_ONE_MINUS_DST_COLOR}, {@link GLES20#GL_SRC_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_SRC_ALPHA}, {@link GLES20#GL_DST_ALPHA}, {@link GLES20#GL_ONE_MINUS_DST_ALPHA},
   * {@link GLES20#GL_CONSTANT_COLOR}, {@link GLES20#GL_ONE_MINUS_CONSTANT_COLOR}, {@link GLES20#GL_CONSTANT_ALPHA},
   * {@link GLES20#GL_ONE_MINUS_CONSTANT_ALPHA}, {@link GLES20#GL_SRC_ALPHA_SATURATE}
   * 
   * @param destinationFactor Destination factor.
   * 
   * @see GLES20#glBlendFunc(int, int)
   */
  public void setDestinationFactor(int destinationFactor) {
    checkValidFactor(destinationFactor);
    this.destinationFactor = destinationFactor;
  }

  /**
   * Returns the blending equation. This setting will only work in Android Ice Cream Sandwich or newer versions.
   * 
   * @return {@link GLES20#GL_FUNC_ADD}, {@link GLES20#GL_FUNC_SUBTRACT} o {@link GLES20#GL_FUNC_REVERSE_SUBTRACT}
   * 
   * @see GLES20#glBlendEquation(int)
   */
  public int getBlendEquationMode() {
    return blendEquationMode;
  }

  /**
   * Sets the blending equation. This setting will only work in Android Ice Cream Sandwich or newer versions.
   * 
   * @param blendEquationMode {@link GLES20#GL_FUNC_ADD}, {@link GLES20#GL_FUNC_SUBTRACT} or
   *            {@link GLES20#GL_FUNC_REVERSE_SUBTRACT}
   * 
   * @see GLES20#glBlendEquation(int)
   */
  public void setBlendEquationMode(int blendEquationMode) {
    checkValidBlendEquationMode(blendEquationMode);
    this.blendEquationMode = blendEquationMode;
  }

  /**
   * Copies the specified BlendingOptions into this BlendingOptions.
   * 
   * @param other BlendingOptions
   */
  public void copy(BlendingOptions other) {
    this.sourceFactor = other.sourceFactor;
    this.destinationFactor = other.destinationFactor;
    this.blendEquationMode = other.blendEquationMode;
  }

  /**
   * Checks if the specified factor is a valid param for {@link GLES20#glBlendFunc(int, int)}.
   * 
   * @param factor Supported factors: {@link GLES20#GL_ZERO}, {@link GLES20#GL_ONE}, {@link GLES20#GL_SRC_COLOR},
   *            {@link GLES20#GL_ONE_MINUS_SRC_COLOR}, {@link GLES20#GL_DST_COLOR},
   *            {@link GLES20#GL_ONE_MINUS_DST_COLOR}, {@link GLES20#GL_SRC_ALPHA},
   *            {@link GLES20#GL_ONE_MINUS_SRC_ALPHA}, {@link GLES20#GL_DST_ALPHA},
   *            {@link GLES20#GL_ONE_MINUS_DST_ALPHA}, {@link GLES20#GL_CONSTANT_COLOR},
   *            {@link GLES20#GL_ONE_MINUS_CONSTANT_COLOR}, {@link GLES20#GL_CONSTANT_ALPHA},
   *            {@link GLES20#GL_ONE_MINUS_CONSTANT_ALPHA}, {@link GLES20#GL_SRC_ALPHA_SATURATE}
   */
  private void checkValidFactor(int factor) {
    switch (factor) {
    case GLES20.GL_ZERO:
      break;
    case GLES20.GL_ONE:
      break;
    case GLES20.GL_SRC_COLOR:
      break;
    case GLES20.GL_ONE_MINUS_SRC_COLOR:
      break;
    case GLES20.GL_DST_COLOR:
      break;
    case GLES20.GL_ONE_MINUS_DST_COLOR:
      break;
    case GLES20.GL_SRC_ALPHA:
      break;
    case GLES20.GL_ONE_MINUS_SRC_ALPHA:
      break;
    case GLES20.GL_DST_ALPHA:
      break;
    case GLES20.GL_ONE_MINUS_DST_ALPHA:
      break;
    case GLES20.GL_CONSTANT_COLOR:
      break;
    case GLES20.GL_ONE_MINUS_CONSTANT_COLOR:
      break;
    case GLES20.GL_CONSTANT_ALPHA:
      break;
    case GLES20.GL_ONE_MINUS_CONSTANT_ALPHA:
      break;
    case GLES20.GL_SRC_ALPHA_SATURATE:
      break;
    default:
      throw new IllegalArgumentException("" +
          "The specified factor is not a valid glBlendFunc(sFactor, dfactor) parameter");
    }
  }

  /**
   * Checks if the specified blending equation is a valid param for {@link GLES20#glBlendEquation(int)}
   * 
   * @param mode Supported blending equations: {@link GLES20#GL_FUNC_ADD}, {@link GLES20#GL_FUNC_SUBTRACT},
   *            {@link GLES20#GL_FUNC_REVERSE_SUBTRACT}.
   */
  private void checkValidBlendEquationMode(int mode) {
    switch (mode) {
    case GLES20.GL_FUNC_ADD:
      break;
    case GLES20.GL_FUNC_SUBTRACT:
      break;
    case GLES20.GL_FUNC_REVERSE_SUBTRACT:
      break;
    default:
      throw new IllegalArgumentException("The specified mode is not a valid glBlendEquation(mode) parameter");
    }
  }

  @Override
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + blendEquationMode;
    result = prime * result + destinationFactor;
    result = prime * result + sourceFactor;
    return result;
  }

  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    if (obj == null) {
      return false;
    }
    if (getClass() != obj.getClass()) {
      return false;
    }
    BlendingOptions other = (BlendingOptions) obj;
    if (blendEquationMode != other.blendEquationMode) {
      return false;
    }
    if (destinationFactor != other.destinationFactor) {
      return false;
    }
    if (sourceFactor != other.sourceFactor) {
      return false;
    }
    return true;
  }

}




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