From 056e1ebed94379db41ebb2e40cc88a873cfb4411 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 8 Apr 2009 10:17:09 +0000 Subject: initial commit of netsurf framebuffer library svn path=/trunk/libnsfb/; revision=7060 --- src/libnsfb.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/libnsfb.c (limited to 'src/libnsfb.c') diff --git a/src/libnsfb.c b/src/libnsfb.c new file mode 100644 index 0000000..ec6ba86 --- /dev/null +++ b/src/libnsfb.c @@ -0,0 +1,71 @@ +#include +#include + +#include "libnsfb.h" +#include "nsfb.h" +#include "frontend.h" + + +/* documented in libnsfb.h */ +nsfb_t* +nsfb_init(const enum nsfb_frontend_e frontend_type) +{ + nsfb_t *newfb; + newfb = calloc(1, sizeof(nsfb_t)); + if (newfb == NULL) + return NULL; + + /* obtain frontend routines */ + newfb->frontend_rtns = nsfb_frontend_get_rtns(frontend_type); + if (newfb->frontend_rtns == NULL) { + free(newfb); + return NULL; + } + + newfb->frontend_rtns->defaults(newfb); + + return newfb; +} + + +int +nsfb_init_frontend(nsfb_t *nsfb) +{ + return nsfb->frontend_rtns->initialise(nsfb); +} + +int nsfb_input(nsfb_t *nsfb) +{ + return nsfb->frontend_rtns->input(nsfb); +} + +int nsfb_claim(nsfb_t *nsfb, nsfb_bbox_t *box) +{ + return nsfb->frontend_rtns->claim(nsfb, box); +} + +int nsfb_release(nsfb_t *nsfb, nsfb_bbox_t *box) +{ + return nsfb->frontend_rtns->release(nsfb, box); +} + +int nsfb_get_geometry(nsfb_t *nsfb, int *width, int *height, int *bpp) +{ + if (width != NULL) + *width = nsfb->width; + + if (height != NULL) + *height = nsfb->height; + + if (bpp != NULL) + *bpp = nsfb->bpp; + + return 0; +} + +int nsfb_get_framebuffer(nsfb_t *nsfb, uint8_t **ptr, int *linelen) +{ + *ptr = nsfb->ptr; + *linelen = nsfb->linelen; + return 0; +} -- cgit v1.2.3