forked from KolibriOS/kolibrios
Adding menuetlibc back to its place in /programs/develop/libraries
This version of menuetlibc was taken from revision 4743, right before I made any changes git-svn-id: svn://kolibrios.org@4973 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
120
programs/develop/libraries/menuetlibc/include/SDL/SDL_bdf.h
Normal file
120
programs/develop/libraries/menuetlibc/include/SDL/SDL_bdf.h
Normal file
@@ -0,0 +1,120 @@
|
||||
/*
|
||||
SDL_bdf - renders BDF fonts
|
||||
Copyright (C) 2002-2003 Andre de Leiradella
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
For information about SDL_bdf contact leiradella@bigfoot.com
|
||||
|
||||
Version 1.0: first public release.
|
||||
Version 1.1: removed SDL dependecies, now SDL_bdf can be used with any graphics
|
||||
library.
|
||||
Version 1.2: fixed BDF_SizeH and BDF_SizeEntitiesH to return the correct sizes.
|
||||
*/
|
||||
#ifndef __SDL_bdf_h__
|
||||
#define __SDL_bdf_h__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Error codes. */
|
||||
|
||||
/* No error. */
|
||||
#define BDF_OK 0
|
||||
/* Not enough memory reading BDF font. */
|
||||
#define BDF_MEMORYERROR 1
|
||||
/* Error reading BDF font. */
|
||||
#define BDF_READERROR 2
|
||||
/* Can only handle BDF font varsions up to 2.2. */
|
||||
#define BDF_WRONGVERSION 3
|
||||
/* Can only handle horizontal BDF fonts. */
|
||||
#define BDF_CANNOTHANDLEVERTICAL 4
|
||||
/* Character found past end of BDF font. */
|
||||
#define BDF_TOOMANYCHARACTERS 5
|
||||
/* BDF font is missing characters. */
|
||||
#define BDF_TOOFEWCHARACTERS 6
|
||||
/* Error parsing BDF font. */
|
||||
#define BDF_PARSEERROR 7
|
||||
|
||||
/* A BDF character. */
|
||||
typedef struct {
|
||||
char *name;
|
||||
int code;
|
||||
int dwx0, dwy0;
|
||||
int dwx1, dwy1;
|
||||
int bbw, bbh, bbxoff0x, bbyoff0y, wbytes;
|
||||
unsigned char *bits;
|
||||
} BDF_Char;
|
||||
|
||||
/* A BDF font. */
|
||||
typedef struct {
|
||||
int metricsSet, numChars;
|
||||
BDF_Char *chars;
|
||||
BDF_Char *code[256];
|
||||
} BDF_Font;
|
||||
|
||||
/*
|
||||
Function to put a pixel on the surface, it receives a pointer to the surface
|
||||
(whatever format it may be), the x and y coordinates and the color.
|
||||
*/
|
||||
typedef void (*BDF_PutPixel)(void *, int, int, unsigned int);
|
||||
|
||||
/*
|
||||
Function to read a byte, it receives an user defined void pointer and must
|
||||
return a value in the range [0..255] or -1 to indicate EOF.
|
||||
*/
|
||||
typedef int (*BDF_ReadByte)(void *);
|
||||
|
||||
/*
|
||||
Opens a BDF font, it receives the function that will produce the stream of
|
||||
bytes, the user defined void pointer that will be passed to getbyte and a
|
||||
pointer to an int that will receive the error code. Returns the BDF font.
|
||||
*/
|
||||
extern BDF_Font *BDF_OpenFont(BDF_ReadByte getbyte, void *info, int *error);
|
||||
/*
|
||||
Closes the font and frees all associated memory.
|
||||
*/
|
||||
extern void BDF_CloseFont(BDF_Font *font);
|
||||
/*
|
||||
Determines the size of the horizontal text, returns the width and height of the
|
||||
smallest rectangle that can acomodate the rendered text and the start position
|
||||
in x0 and y0 on where the text must be rendered to exactly fit the rectangle.
|
||||
This is because the render functions take the y parameter as the baseline of
|
||||
the text to allow different fonts (e.g. normal and italic) to be mixed in the
|
||||
same line. It handles NULL pointers for pieces of information you don't want.
|
||||
*/
|
||||
extern void BDF_SizeH(BDF_Font *font, char *text, int *x0, int *y0, int *width, int *height);
|
||||
/*
|
||||
Same as above but accepts entities in the form &...;
|
||||
*/
|
||||
extern void BDF_SizeEntitiesH(BDF_Font *font, char *text, int *x0, int *y0, int *width, int *height);
|
||||
/*
|
||||
Draws the text at the given surface starting at position (x, y). It calls
|
||||
putpixel with the surface, coordinates and color to draw the pixel (doesn't
|
||||
clip). Returns the next x coordinate to continue to render more text. Only
|
||||
accepts characters in the range [0..255].
|
||||
*/
|
||||
extern int BDF_DrawH(void *surface, BDF_PutPixel putpixel, BDF_Font *font, char *text, int x, int y, unsigned int color);
|
||||
/*
|
||||
Same as above but accepts entities in the form &...;
|
||||
*/
|
||||
extern int BDF_DrawEntitiesH(void *, BDF_PutPixel, BDF_Font *, char *, int, int, unsigned int);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user