// Path: core/src/main/java/net/panuska/tlappy/awt/BufferedImage.java
// public class BufferedImage {
//     private Bitmap b;
//     private Graphics g;
//     public static final int TYPE_INT_RGB = Bitmap.Config.ARGB_8888.ordinal();
// 
//     public BufferedImage(BitmapDrawable d) {
//         Bitmap immb = d.getBitmap();
//         b = immb.copy(Bitmap.Config.ARGB_8888, false);
//     }
// 
//     public BufferedImage(int width,
//                          int height,
//                          int imageType) {
//         b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//         g = new Graphics(b);
//     }
// 
//     private BufferedImage(Bitmap b) {
//         this.b = b;
//     }
// 
//     public Graphics getGraphics() {
//         return g;
//     }
// 
//     public Bitmap getBitmap() {
//         return b;
//     }
// 
//     public BufferedImage getSubimage (int x, int y, int w, int h) {
//         Bitmap b = Bitmap.createBitmap(this.b, x, y, w, h);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image rotated by 90 degrees.
//      * @return
//      */
//     public BufferedImage getRotatedImage() {
//         Matrix matrix = new Matrix();
//         matrix.postRotate(90);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image mirrored by vertical axis
//      * @return
//      */
//     public BufferedImage getMirroredImage() {
//         Matrix matrix = new Matrix();
//         matrix.preScale(-1, 1);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns 16x16 subimage starting at x, y
//      * @param x
//      * @param y
//      * @return
//      */
//     public BufferedImage getSubimage (int x, int y) {
//         return getSubimage(x, y, 16, 16);
//     }
// 
//     public int getWidth() {
//         return b.getWidth();
//     }
// 
//     public int getHeight() {
//         return b.getHeight();
//     }
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/awt/Color.java
// public enum Color {
//     BLACK(0xff000000),
//     RED(0xffff0000),
//     BLUE(0xff0000ff),
//     YELLOW(0xffffff00),
//     WHITE(0xffffffff),
//     DARK_GRAY(0xff404040),
//     LIGHT_GRAY(0xffc0c0c0),
//     TRANSPARENT(0x00000000),
// 
//     black(0xff000000),
//     red(0xffff0000),
//     blue(0xff0000ff),
//     yellow(0xffffff00),
//     white(0xffffffff),
//     dark_gray(0xff404040);
// 
//     private final int color;
//     Color(int color) { this.color = color; }
//     public int getValue() { return color; }
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/awt/Graphics.java
// public class Graphics {
//     private Canvas c;
//     static final private Paint p = new Paint();
// 
//     public Graphics(Bitmap b) {
//         c = new Canvas(b);
//     }
// 
//     public void setColor(Color c) {
//         p.setColor(c.getValue());
//     }
// 
//     public void fillRect(int x, int y, int width, int height) {
//         p.setStyle(Paint.Style.FILL);
//         c.drawRect(x, y, x+width, y+height, p);
//     }
// 
//     public void drawRect(int x, int y, int width, int height) {
//         p.setStyle(Paint.Style.STROKE);
//         c.drawRect(x, y, x+width, y+height, p);
//     }
// 
//     public boolean drawImage(BufferedImage img, int x, int y, Paint paint) {
//         c.drawBitmap(img.getBitmap(), x, y, paint);
//         return true;
//     }
// 
//     public void drawString(String str, int x, int y, Color color) {
//         Paint p = new Paint();
//         p.setTypeface(Typeface.DEFAULT_BOLD);
//         p.setTextSize(Constants.SPRITE_SIZE);
//         p.setColor(color.getValue());
//         c.drawText(str, x, y + Constants.SPRITE_SIZE, p);
//     }
// 
//     /**
//      * Draws string using monospaced (Flappy built-in) font.
//      * @param text
//      * @param x
//      * @param y
//      * @param color
//      */
//     public void drawText(String text, int x, int y, Color color) {
//         //todo copied from VRAM.printText()
//         for (int i = 0, maxi = text.length(); i < maxi; i++) {
//             int z = text.charAt(i);
//             if (z < 0x20 || z > 0x7a) {
//                 z = '!';
//             }
//             z -= 0x20;
//             BufferedImage imgChar = ImageUtils.createLetterImage(z, color, Color.BLACK);
//             drawImage(imgChar, x, y, null);
//             x += Constants.FONT_WIDTH;
//         }
//     }
// }


import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import net.panuska.tlappy.awt.BufferedImage;
import net.panuska.tlappy.awt.Color;
import net.panuska.tlappy.awt.Graphics;
package net.panuska.tlappy;



/**
 * VideoRAM "routines".
 * 
 * @author Petr Slechta
 */
public class VRAM {

    private static final int ZOOM = 1;
    private static final int Y_OFS = 3;
    private static VRAM me;

    static VRAM getInstance() {
        if (me == null) me = new VRAM();
// Path: core/src/main/java/net/panuska/tlappy/awt/BufferedImage.java
// public class BufferedImage {
//     private Bitmap b;
//     private Graphics g;
//     public static final int TYPE_INT_RGB = Bitmap.Config.ARGB_8888.ordinal();
// 
//     public BufferedImage(BitmapDrawable d) {
//         Bitmap immb = d.getBitmap();
//         b = immb.copy(Bitmap.Config.ARGB_8888, false);
//     }
// 
//     public BufferedImage(int width,
//                          int height,
//                          int imageType) {
//         b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//         g = new Graphics(b);
//     }
// 
//     private BufferedImage(Bitmap b) {
//         this.b = b;
//     }
// 
//     public Graphics getGraphics() {
//         return g;
//     }
// 
//     public Bitmap getBitmap() {
//         return b;
//     }
// 
//     public BufferedImage getSubimage (int x, int y, int w, int h) {
//         Bitmap b = Bitmap.createBitmap(this.b, x, y, w, h);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image rotated by 90 degrees.
//      * @return
//      */
//     public BufferedImage getRotatedImage() {
//         Matrix matrix = new Matrix();
//         matrix.postRotate(90);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns a copy of this image mirrored by vertical axis
//      * @return
//      */
//     public BufferedImage getMirroredImage() {
//         Matrix matrix = new Matrix();
//         matrix.preScale(-1, 1);
//         Bitmap b = Bitmap.createBitmap(this.getBitmap(), 0, 0, this.getWidth(), this.getHeight(),  matrix, false);
//         return new BufferedImage(b);
//     }
// 
//     /**
//      * Returns 16x16 subimage starting at x, y
//      * @param x
//      * @param y
//      * @return
//      */
//     public BufferedImage getSubimage (int x, int y) {
//         return getSubimage(x, y, 16, 16);
//     }
// 
//     public int getWidth() {
//         return b.getWidth();
//     }
// 
//     public int getHeight() {
//         return b.getHeight();
//     }
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/awt/Color.java
// public enum Color {
//     BLACK(0xff000000),
//     RED(0xffff0000),
//     BLUE(0xff0000ff),
//     YELLOW(0xffffff00),
//     WHITE(0xffffffff),
//     DARK_GRAY(0xff404040),
//     LIGHT_GRAY(0xffc0c0c0),
//     TRANSPARENT(0x00000000),
// 
//     black(0xff000000),
//     red(0xffff0000),
//     blue(0xff0000ff),
//     yellow(0xffffff00),
//     white(0xffffffff),
//     dark_gray(0xff404040);
// 
//     private final int color;
//     Color(int color) { this.color = color; }
//     public int getValue() { return color; }
// }
// 
// Path: core/src/main/java/net/panuska/tlappy/awt/Graphics.java
// public class Graphics {
//     private Canvas c;
//     static final private Paint p = new Paint();
// 
//     public Graphics(Bitmap b) {
//         c = new Canvas(b);
//     }
// 
//     public void setColor(Color c) {
//         p.setColor(c.getValue());
//     }
// 
//     public void fillRect(int x, int y, int width, int height) {
//         p.setStyle(Paint.Style.FILL);
//         c.drawRect(x, y, x+width, y+height, p);
//     }
// 
//     public void drawRect(int x, int y, int width, int height) {
//         p.setStyle(Paint.Style.STROKE);
//         c.drawRect(x, y, x+width, y+height, p);
//     }
// 
//     public boolean drawImage(BufferedImage img, int x, int y, Paint paint) {
//         c.drawBitmap(img.getBitmap(), x, y, paint);
//         return true;
//     }
// 
//     public void drawString(String str, int x, int y, Color color) {
//         Paint p = new Paint();
//         p.setTypeface(Typeface.DEFAULT_BOLD);
//         p.setTextSize(Constants.SPRITE_SIZE);
//         p.setColor(color.getValue());
//         c.drawText(str, x, y + Constants.SPRITE_SIZE, p);
//     }
// 
//     /**
//      * Draws string using monospaced (Flappy built-in) font.
//      * @param text
//      * @param x
//      * @param y
//      * @param color
//      */
//     public void drawText(String text, int x, int y, Color color) {
//         //todo copied from VRAM.printText()
//         for (int i = 0, maxi = text.length(); i < maxi; i++) {
//             int z = text.charAt(i);
//             if (z < 0x20 || z > 0x7a) {
//                 z = '!';
//             }
//             z -= 0x20;
//             BufferedImage imgChar = ImageUtils.createLetterImage(z, color, Color.BLACK);
//             drawImage(imgChar, x, y, null);
//             x += Constants.FONT_WIDTH;
//         }
//     }
// }


// Path: core/src/main/java/net/panuska/tlappy/VRAM.java
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import net.panuska.tlappy.awt.BufferedImage;
import net.panuska.tlappy.awt.Color;
import net.panuska.tlappy.awt.Graphics;

package net.panuska.tlappy;



/**
 * VideoRAM "routines".
 * 
 * @author Petr Slechta
 */
public class VRAM {

    private static final int ZOOM = 1;
    private static final int Y_OFS = 3;
    private static VRAM me;

    static VRAM getInstance() {
        if (me == null) me = new VRAM();
        return me;