From af243c0321c8eff1fcf1384d105333ae4e243f67 Mon Sep 17 00:00:00 2001 From: reinelt <> Date: Wed, 22 Mar 2000 15:36:21 +0000 Subject: [lcd4linux @ 2000-03-22 15:36:21 by reinelt] added '-l' switch (list drivers) generic pixmap driver added X11 Framework done --- pixmap.c | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 pixmap.c (limited to 'pixmap.c') diff --git a/pixmap.c b/pixmap.c new file mode 100644 index 0000000..ceaa1f2 --- /dev/null +++ b/pixmap.c @@ -0,0 +1,165 @@ +/* $Id: pixmap.c,v 1.1 2000/03/22 15:36:21 reinelt Exp $ + * + * generic pixmap driver + * + * Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * + * $Log: pixmap.c,v $ + * Revision 1.1 2000/03/22 15:36:21 reinelt + * + * added '-l' switch (list drivers) + * generic pixmap driver added + * X11 Framework done + * + */ + +/* + * exported functions: + * + * int pix_clear(void); + * clears the pixmap + * + * int pix_init (int r, int c); + * allocates & clear pixmap wit r rows and c columns + * + * int pix_put (int row, int col, char *text); + * draws text into the pixmap + * + * int pix_bar (int type, int row, int col, int max, int len1, int len2); + * draws a bar into the pixmap + * + */ + +#include +#include + +#include "display.h" +#include "pixmap.h" +#include "fontmap.h" + +static int rows=0; +static int cols=0; +unsigned char *Pixmap=NULL; + +int pix_clear(void) +{ + int i; + + for (i=0; i>=1; + Pixmap[(row+y)*cols+col+x]=Fontmap[c][y]&mask?1:0; + } + } + col+=XRES; + text++; + } + return 0; +} + +int pix_bar (int type, int row, int col, int max, int len1, int len2) +{ + int i, x, y, len, rev; + unsigned char *p; + + row*=YRES; + col*=XRES; + + if (type & BAR_H) { + if (max>cols-col) + max=cols-col; + } else { + if (max>rows-row) + max=rows-row; + } + + if (len1<1) len1=1; + else if (len1>max) len1=max; + + if (len2<1) len2=1; + else if (len2>max) len2=max; + + rev=0; + + switch (type) { + case BAR_L: + len1=max-len1; + len2=max-len2; + rev=1; + + case BAR_R: + for (y=0; y