blob: fde1854581a8548bbf8528a33ef6d681fbe64bc0 [file] [log] [blame]
/*
* Low-level drawing operations for a cfb16 frame buffer
*
* (C) Copyright 2001-2002 Geert Uytterhoeven
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file COPYING in the main directory of this archive for
* more details.
*/
#include "types.h"
#include "drawops.h"
#include "fb.h"
static u16 *screen;
static u32 screen_width;
static int cfb16_init(void)
{
if (fb_fix.type != FB_TYPE_PACKED_PIXELS || fb_var.bits_per_pixel != 16)
return 0;
screen = (u16 *)fb;
screen_width = fb_fix.line_length ? fb_fix.line_length/2
: fb_var.xres_virtual;
return cfb_init();
}
static void cfb16_setpixel(u32 x, u32 y, pixel_t pixel)
{
screen[y*screen_width+x] = pixel;
}
static pixel_t cfb16_getpixel(u32 x, u32 y)
{
return screen[y*screen_width+x];
}
const struct drawops cfb16_drawops = {
.name = "cfb16 (16 bpp packed pixels)",
.init = cfb16_init,
.set_pixel = cfb16_setpixel,
.get_pixel = cfb16_getpixel,
.draw_hline = cfb_draw_hline,
.fill_rect = cfb_fill_rect,
.copy_rect = cfb_copy_rect,
};