Android Open Source - feup-lpoo-android-tower-defense Android Graphics






From Project

Back to project page feup-lpoo-android-tower-defense.

License

The source code is released under:

MIT License

If you think the Android project feup-lpoo-android-tower-defense 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

package pt.up.fe.lpoo.framework.implementation;
/*from   w  w  w .j  av  a  2s  .  com*/
import java.io.IOException;
import java.io.InputStream;

import pt.up.fe.lpoo.framework.Graphics;
import pt.up.fe.lpoo.framework.Image;

import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;

/**
 * Information about the implementation of the framework can be found at
 *  http://www.kilobolt.com/day-6-the-android-game-framework-part-ii.html
 */
public class AndroidGraphics implements Graphics {
  AssetManager assets;
  Bitmap frameBuffer;
  Canvas canvas;
  Paint paint;
  Rect srcRect = new Rect();
  Rect dstRect = new Rect();

  public AndroidGraphics(AssetManager assets, Bitmap frameBuffer) {
    this.assets = assets;
    this.frameBuffer = frameBuffer;
    this.canvas = new Canvas(frameBuffer);
    this.paint = new Paint();
  }

  @Override
  public Image newImage(String fileName, ImageFormat format) {
    Config config = null;
    if (format == ImageFormat.RGB565)
      config = Config.RGB_565;
    else if (format == ImageFormat.ARGB4444)
      config = Config.ARGB_4444;
    else
      config = Config.ARGB_8888;

    Options options = new Options();
    options.inPreferredConfig = config;


    InputStream in = null;
    Bitmap bitmap = null;
    try {
      in = assets.open(fileName);
      bitmap = BitmapFactory.decodeStream(in, null, options);
      if (bitmap == null)
        throw new RuntimeException("Couldn't load bitmap from asset '"
            + fileName + "'");
    } catch (IOException e) {
      throw new RuntimeException("Couldn't load bitmap from asset '"
          + fileName + "'");
    } finally {
      if (in != null) {
        try {
          in.close();
        } catch (IOException e) {
        }
      }
    }

    if (bitmap.getConfig() == Config.RGB_565)
      format = ImageFormat.RGB565;
    else if (bitmap.getConfig() == Config.ARGB_4444)
      format = ImageFormat.ARGB4444;
    else
      format = ImageFormat.ARGB8888;

    return new AndroidImage(bitmap, format);
  }

  @Override
  public void clearScreen(int color) {
    canvas.drawRGB((color & 0xff0000) >> 16, (color & 0xff00) >> 8,
        (color & 0xff));
  }


  @Override
  public void drawLine(int x, int y, int x2, int y2, int color) {
    paint.setColor(color);
    canvas.drawLine(x, y, x2, y2, paint);
  }

  @Override
  public void drawRect(int x, int y, int width, int height, int color) {
    paint.setColor(color);
    paint.setStyle(Style.FILL);
    canvas.drawRect(x, y, x + width - 1, y + height - 1, paint);
  }
  
  @Override
  public void drawCircle(float x, float y, float rad, int color) {
    paint.setColor(color);
    paint.setStyle(Style.FILL);
    canvas.drawCircle(x, y, rad, paint);
  }

  @Override
  public void drawARGB(int a, int r, int g, int b) {
    paint.setStyle(Style.FILL);
    canvas.drawARGB(a, r, g, b);
  }

  @Override
  public void drawString(String text, int x, int y, Paint paint){
    canvas.drawText(text, x, y, paint);


  }


  public void drawImage(Image Image, int x, int y, int srcX, int srcY,
      int srcWidth, int srcHeight) {
    srcRect.left = srcX;
    srcRect.top = srcY;
    srcRect.right = srcX + srcWidth;
    srcRect.bottom = srcY + srcHeight;


    dstRect.left = x;
    dstRect.top = y;
    dstRect.right = x + srcWidth;
    dstRect.bottom = y + srcHeight;

    canvas.drawBitmap(((AndroidImage) Image).bitmap, srcRect, dstRect,
        null);
  }

  @Override
  public void drawImage(Image Image, int x, int y) {
    canvas.drawBitmap(((AndroidImage)Image).bitmap, x, y, null);
  }

  @Override
  public void drawScaledImage(Image Image, int x, int y, int width, int height, int srcX, int srcY, int srcWidth, int srcHeight){


    srcRect.left = srcX;
    srcRect.top = srcY;
    srcRect.right = srcX + srcWidth;
    srcRect.bottom = srcY + srcHeight;


    dstRect.left = x;
    dstRect.top = y;
    dstRect.right = x + width;
    dstRect.bottom = y + height;



    canvas.drawBitmap(((AndroidImage) Image).bitmap, srcRect, dstRect, null);

  }

  @Override
  public int getWidth() {
    return frameBuffer.getWidth();
  }

  @Override
  public int getHeight() {
    return frameBuffer.getHeight();
  }
  
  @Override
  public AssetManager getAssets()  {
    return assets;
  }
}




Java Source Code List

pt.up.fe.lpoo.framework.Audio.java
pt.up.fe.lpoo.framework.FileIO.java
pt.up.fe.lpoo.framework.Game.java
pt.up.fe.lpoo.framework.Graphics.java
pt.up.fe.lpoo.framework.Image.java
pt.up.fe.lpoo.framework.Input.java
pt.up.fe.lpoo.framework.Music.java
pt.up.fe.lpoo.framework.Pool.java
pt.up.fe.lpoo.framework.Screen.java
pt.up.fe.lpoo.framework.Sound.java
pt.up.fe.lpoo.framework.implementation.AndroidAudio.java
pt.up.fe.lpoo.framework.implementation.AndroidFastRenderView.java
pt.up.fe.lpoo.framework.implementation.AndroidFileIO.java
pt.up.fe.lpoo.framework.implementation.AndroidGame.java
pt.up.fe.lpoo.framework.implementation.AndroidGraphics.java
pt.up.fe.lpoo.framework.implementation.AndroidImage.java
pt.up.fe.lpoo.framework.implementation.AndroidInput.java
pt.up.fe.lpoo.framework.implementation.AndroidMusic.java
pt.up.fe.lpoo.framework.implementation.AndroidSound.java
pt.up.fe.lpoo.framework.implementation.MultiTouchHandler.java
pt.up.fe.lpoo.framework.implementation.SingleTouchHandler.java
pt.up.fe.lpoo.framework.implementation.TouchHandler.java
pt.up.fe.lpoo.towerdefense.Animation.java
pt.up.fe.lpoo.towerdefense.Assets.java
pt.up.fe.lpoo.towerdefense.BarricadeDefense.java
pt.up.fe.lpoo.towerdefense.BoulderProjectile.java
pt.up.fe.lpoo.towerdefense.BoulderTower.java
pt.up.fe.lpoo.towerdefense.BuildingOption.java
pt.up.fe.lpoo.towerdefense.DefenseObject.java
pt.up.fe.lpoo.towerdefense.DescriptionObject.java
pt.up.fe.lpoo.towerdefense.Enemy.java
pt.up.fe.lpoo.towerdefense.FreezeTower.java
pt.up.fe.lpoo.towerdefense.GameElements.java
pt.up.fe.lpoo.towerdefense.GameObj.java
pt.up.fe.lpoo.towerdefense.Golem.java
pt.up.fe.lpoo.towerdefense.InstructionsScreen.java
pt.up.fe.lpoo.towerdefense.LevelScreen.java
pt.up.fe.lpoo.towerdefense.LevelSelectionScreen.java
pt.up.fe.lpoo.towerdefense.LoadingScreen.java
pt.up.fe.lpoo.towerdefense.MainMenuScreen.java
pt.up.fe.lpoo.towerdefense.Messages.java
pt.up.fe.lpoo.towerdefense.MusicPlayer.java
pt.up.fe.lpoo.towerdefense.PathCluster.java
pt.up.fe.lpoo.towerdefense.PoisonTower.java
pt.up.fe.lpoo.towerdefense.Projectile.java
pt.up.fe.lpoo.towerdefense.Skull.java
pt.up.fe.lpoo.towerdefense.Slime.java
pt.up.fe.lpoo.towerdefense.SplashLoadingScreen.java
pt.up.fe.lpoo.towerdefense.StatusEffect.java
pt.up.fe.lpoo.towerdefense.TarPoolDefense.java
pt.up.fe.lpoo.towerdefense.TextParser.java
pt.up.fe.lpoo.towerdefense.Tile.java
pt.up.fe.lpoo.towerdefense.TowerDefenseGame.java
pt.up.fe.lpoo.towerdefense.TurretProjectile.java
pt.up.fe.lpoo.towerdefense.TurretTower.java
pt.up.fe.lpoo.towerdefense.Wave.java