/** * Copyright (C) 2009 Michael A. MacDonald */ package android.androidVNC; import java.io.IOException; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; /** * @author Michael A. MacDonald * */ class CompactBitmapData extends AbstractBitmapData { class CompactBitmapDrawable extends AbstractBitmapDrawable { CompactBitmapDrawable() { super(CompactBitmapData.this); } /* (non-Javadoc) * @see android.graphics.drawable.DrawableContainer#draw(android.graphics.Canvas) */ @Override public void draw(Canvas canvas) { draw(canvas, 0, 0); } } CompactBitmapData(RfbProto rfb, VncCanvas c) { super(rfb,c); bitmapwidth=framebufferwidth; bitmapheight=framebufferheight; mbitmap = Bitmap.createBitmap(rfb.framebufferWidth, rfb.framebufferHeight, Bitmap.Config.RGB_565); memGraphics = new Canvas(mbitmap); bitmapPixels = new int[rfb.framebufferWidth * rfb.framebufferHeight]; } @Override void writeFullUpdateRequest(boolean incremental) throws IOException { rfb.writeFramebufferUpdateRequest(0, 0, framebufferwidth, framebufferheight, incremental); } @Override boolean validDraw(int x, int y, int w, int h) { return true; } @Override int offset(int x, int y) { return y * bitmapwidth + x; } /* (non-Javadoc) * @see android.androidVNC.AbstractBitmapData#createDrawable() */ @Override AbstractBitmapDrawable createDrawable() { return new CompactBitmapDrawable(); } /* (non-Javadoc) * @see android.androidVNC.AbstractBitmapData#updateBitmap(int, int, int, int) */ @Override void updateBitmap(int x, int y, int w, int h) { mbitmap.setPixels(bitmapPixels, offset(x,y), bitmapwidth, x, y, w, h); } /* (non-Javadoc) * @see android.androidVNC.AbstractBitmapData#copyRect(android.graphics.Rect, android.graphics.Rect, android.graphics.Paint) */ @Override void copyRect(Rect src, Rect dest, Paint paint) { memGraphics.drawBitmap(mbitmap, src, dest, paint); } /* (non-Javadoc) * @see android.androidVNC.AbstractBitmapData#drawRect(int, int, int, int, android.graphics.Paint) */ @Override void drawRect(int x, int y, int w, int h, Paint paint) { memGraphics.drawRect(x, y, x + w, y + h, paint); } /* (non-Javadoc) * @see android.androidVNC.AbstractBitmapData#scrollChanged(int, int) */ @Override void scrollChanged(int newx, int newy) { // Don't need to do anything here } /* (non-Javadoc) * @see android.androidVNC.AbstractBitmapData#syncScroll() */ @Override void syncScroll() { // Don't need anything here either } }