/**
* Copyright (C) 2009 Michael A. MacDonald
*/
package android.androidVNC;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.DrawableContainer;
/**
* @author Michael A. MacDonald
*
*/
public class AbstractBitmapDrawable extends DrawableContainer {
Rect cursorRect;
Rect clipRect;
AbstractBitmapData data;
static final Paint _defaultPaint;
static final Paint _whitePaint;
static final Paint _blackPaint;
static {
_defaultPaint = new Paint();
_whitePaint = new Paint();
_whitePaint.setColor(0xffffffff);
_blackPaint = new Paint();
_blackPaint.setColor(0xff000000);
}
AbstractBitmapDrawable(AbstractBitmapData data)
{
this.data = data;
cursorRect = new Rect();
clipRect = new Rect();
}
void draw(Canvas canvas, int xoff, int yoff)
{
canvas.drawBitmap(data.mbitmap, xoff, yoff, _defaultPaint);
if(data.vncCanvas.connection.getUseLocalCursor())
{
setCursorRect(data.vncCanvas.mouseX, data.vncCanvas.mouseY);
clipRect.set(cursorRect);
if (canvas.clipRect(cursorRect))
{
drawCursor(canvas);
}
}
}
void drawCursor(Canvas canvas)
{
canvas.drawRect(cursorRect,_whitePaint);
canvas.drawRect((float)cursorRect.left + 1, (float)cursorRect.top + 1, (float)cursorRect.right - 1, (float)cursorRect.bottom - 1, _blackPaint);
}
void setCursorRect(int mouseX, int mouseY)
{
cursorRect.left = mouseX - 2;
cursorRect.right = cursorRect.left + 4;
cursorRect.top = mouseY - 2;
cursorRect.bottom = cursorRect.top + 4;
}
/* (non-Javadoc)
* @see android.graphics.drawable.DrawableContainer#getIntrinsicHeight()
*/
@Override
public int getIntrinsicHeight() {
return data.framebufferheight;
}
/* (non-Javadoc)
* @see android.graphics.drawable.DrawableContainer#getIntrinsicWidth()
*/
@Override
public int getIntrinsicWidth() {
return data.framebufferwidth;
}
/* (non-Javadoc)
* @see android.graphics.drawable.DrawableContainer#getOpacity()
*/
@Override
public int getOpacity() {
return PixelFormat.OPAQUE;
}
/* (non-Javadoc)
* @see android.graphics.drawable.DrawableContainer#isStateful()
*/
@Override
public boolean isStateful() {
return false;
}
}