package org.bbssh.terminal.fonts;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.XYPoint;
import org.bbssh.exceptions.FontNotFoundException;
import org.bbssh.model.FontSettings;
public class BitmapFontRenderer extends FontRenderer {
BitmapFont font;
/**
* Constructor, sets up renderer for usage.
*
* @param settings font settings to load
*/
public BitmapFontRenderer(FontSettings settings) throws FontNotFoundException {
super(settings);
font = BBSSHFontManager.getInstance().getBitmapFont(settings);
}
/*
* (non-Javadoc)
*
* @see org.bbssh.terminal.SessionFontRenderer#drawChars(net.rim.device.api.ui.Graphics, int, int, char[], int, int,
* int, int)
*/
public void drawChars(Graphics g, int fg, int bg, long[] chars, int offset, int length, int x, int y) {
if (font == null)
return;
font.setColor(fg, bg);
XYPoint dim = getFontDimensions();
int len = offset + length;
for (int i = offset; i < len; i++) {
font.drawChar(g, (char)chars[i], x, y);
x += dim.x;
}
}
public void drawChar(Graphics g, int fg, int bg, char c, int x, int y) {
if (font == null)
return;
font.setColor(fg, bg);
font.drawChar(g, c, x, y);
}
/*
* (non-Javadoc)
*
* @see org.bbssh.terminal.SessionFontRenderer#getFontDimensions()
*/
public XYPoint getFontDimensions() {
if (font == null) {
return null;
}
return font.getDimensions();
}
}