Files
harbour-core/harbour/source/rtl/gtalleg/ssf.h
Przemyslaw Czerpak cb47250bfc 2007-12-17 21:21 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
  * harbour/include/hbgtcore.h
  * harbour/source/rtl/gtapi.c
  * harbour/source/rtl/hbgtcore.c
  * harbour/source/rtl/gt_tpl/gt_tpl.c
  * harbour/source/rtl/gtdos/gtdos.c
  * harbour/source/rtl/gtwin/gtwin.c
  * harbour/source/rtl/gtxwc/gtxwc.c
  * harbour/source/rtl/gtos2/gtos2.c
  * harbour/source/rtl/gtcrs/gtcrs.c
  * harbour/source/rtl/gtsln/gtsln.c
  * harbour/source/rtl/gttrm/gttrm.c
  * harbour/source/rtl/gtpca/gtpca.c
  * harbour/source/rtl/gtgui/gtgui.c
  * harbour/source/rtl/gtwvt/gtwvt.c
  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtstd/gtstd.c
  * harbour/contrib/hbct/ctwin.c
  * harbour/contrib/hbgtwvg/gtwvg.c
  * harbour/source/rtl/gtalleg/gtalleg.c
  * harbour/source/rtl/gtalleg/ssf.h
  * harbour/source/rtl/gtalleg/fixedth.sfc
    * added missing const to few declarations
    * formatting and minor code cleanup

  * harbour/source/rtl/hbgtcore.c
    ! fixed GTNUL registration

  * harbour/source/rtl/gtcgi/gtcgi.c
  * harbour/source/rtl/gtstd/gtstd.c
    * moved static variables to dynamic GT area

  * harbour/contrib/hbct/files.c
    ! fixed DOS version
2007-12-17 20:22:32 +00:00

242 lines
7.2 KiB
C

/*
* $Id$
*/
/*
*
* This file was conceived while I was developing an allegro based gt
* (gtAlleg) for xHarbour, so it is brought under the same license terms.
*
* Mauricio Abre
*
*/
/*
* xHarbour Project source code:
* Simple Scalable Font library, main header file.
*
* Copyright 2004 Mauricio Abre <maurifull@datafull.com>
* www - http: (yet to be constructed...)
*
* 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 software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#ifndef _SSF_H_
#define _SSF_H_
#include <allegro.h>
/* Hack to use old Allegro branches */
#ifndef AL_GFX_NONE
#define AL_GFX_NONE GFX_NONE
#define AL_GFX_SAFE GFX_SAFE
#ifdef GFX_XWINDOWS
#define AL_GFX_XDGA GFX_XDGA
#define AL_GFX_XDGA2 GFX_XDGA2
#define AL_GFX_XWINDOWS GFX_XWINDOWS
#endif
#define AL_GFX_VBEAF GFX_VBEAF
#ifdef GFX_FBCON
#define AL_GFX_FBCON GFX_FBCON
#endif
#define AL_GFX_AUTODETECT_WINDOWED GFX_AUTODETECT_WINDOWED
#define AL_GFX_AUTODETECT GFX_AUTODETECT
#ifdef GFX_GDI
#define AL_GFX_GDI GFX_GDI
#define AL_GFX_DIRECTX_WIN GFX_DIRECTX_WIN
#endif
#define AL_BITMAP BITMAP
#define AL_SCREEN_W SCREEN_W
#define AL_SCREEN_H SCREEN_H
#define AL_KEY_ESC KEY_ESC
#define AL_KEY_INSERT KEY_INSERT
#define AL_KEY_HOME KEY_HOME
#define AL_KEY_PGUP KEY_PGUP
#define AL_KEY_PGDN KEY_PGDN
#define AL_KEY_END KEY_END
#define AL_KEY_DEL KEY_DEL
#define AL_KEY_UP KEY_UP
#define AL_KEY_DOWN KEY_DOWN
#define AL_KEY_LEFT KEY_LEFT
#define AL_KEY_RIGHT KEY_RIGHT
#define AL_KEY_QUOTE KEY_QUOTE
#define AL_KEY_A KEY_A
#define AL_KEY_B KEY_B
#define AL_KEY_C KEY_C
#define AL_KEY_D KEY_D
#define AL_KEY_E KEY_E
#define AL_KEY_F KEY_F
#define AL_KEY_G KEY_G
#define AL_KEY_H KEY_H
#define AL_KEY_I KEY_I
#define AL_KEY_J KEY_J
#define AL_KEY_K KEY_K
#define AL_KEY_L KEY_L
#define AL_KEY_M KEY_M
#define AL_KEY_N KEY_N
#define AL_KEY_O KEY_O
#define AL_KEY_P KEY_P
#define AL_KEY_Q KEY_Q
#define AL_KEY_R KEY_R
#define AL_KEY_S KEY_S
#define AL_KEY_T KEY_T
#define AL_KEY_U KEY_U
#define AL_KEY_V KEY_V
#define AL_KEY_W KEY_W
#define AL_KEY_X KEY_X
#define AL_KEY_Y KEY_Y
#define AL_KEY_Z KEY_Z
#define AL_KEY_F1 KEY_F1
#define AL_KEY_F2 KEY_F2
#define AL_KEY_F3 KEY_F3
#define AL_KEY_F4 KEY_F4
#define AL_KEY_F5 KEY_F5
#define AL_KEY_F6 KEY_F6
#define AL_KEY_F7 KEY_F7
#define AL_KEY_F8 KEY_F8
#define AL_KEY_F9 KEY_F9
#define AL_KEY_F10 KEY_F10
#define AL_KEY_F11 KEY_F11
#define AL_KEY_F12 KEY_F12
#define al_desktop_color_depth desktop_color_depth
#define al_set_color_depth set_color_depth
#define al_bitmap_color_depth bitmap_color_depth
#define al_get_desktop_resolution get_desktop_resolution
#define al_install_timer install_timer
#define al_screen screen
#define al_set_gfx_mode set_gfx_mode
#define al_set_window_title set_window_title
#define al_text_mode text_mode
#define al_make_color makecol
#define al_key_shifts key_shifts
#define al_install_keyboard install_keyboard
#define al_keyboard_needs_poll keyboard_needs_poll
#define al_poll_keyboard poll_keyboard
#define al_key_pressed keypressed
#define al_read_key readkey
#define al_set_keyboard_leds set_leds
#define al_install_mouse install_mouse
#define al_show_mouse show_mouse
#define al_mouse_needs_poll mouse_needs_poll
#define al_poll_mouse poll_mouse
#define al_mouse_x mouse_x
#define al_mouse_y mouse_y
#define al_mouse_b mouse_b
#define al_scare_mouse scare_mouse
#define al_scare_mouse_area scare_mouse_area
#define al_unscare_mouse unscare_mouse
#define al_position_mouse position_mouse
#define al_set_mouse_range set_mouse_range
#define al_create_bitmap create_bitmap
#define al_create_system_bitmap create_system_bitmap
#define al_destroy_bitmap destroy_bitmap
#define al_acquire_screen acquire_screen
#define al_release_screen release_screen
#define al_acquire_bitmap acquire_bitmap
#define al_release_bitmap release_bitmap
#define al_drawing_mode drawing_mode
#define al_get_pixel getpixel
#define al_put_pixel putpixel
#define al_draw_line line
#define al_draw_vline vline
#define al_draw_hline hline
#define al_draw_rect rect
#define al_draw_rect_fill rectfill
#define al_draw_spline spline
#define al_draw_circle circle
#define al_draw_circle_fill circlefill
#define al_draw_ellipse ellipse
#define al_draw_ellipse_fill ellipsefill
#define al_floodfill floodfill
#define al_draw_triangle triangle
#define al_blit blit
#define al_clear_to_color clear_to_color
#ifndef al_set_clip
#if ALLEGRO_SUB_VERSION < 2
#define al_set_clip set_clip
#else
#define al_set_clip set_clip_rect
#endif
#endif
#endif
typedef enum {
SSF_NONE,
SSF_LINE,
SSF_BOX,
SSF_SPLINE1,
SSF_SPLINE2,
SSF_TRIANGLE,
SSF_COLOR
} ssfType;
#ifndef SSF_MAXFRAMES
#define SSF_MAXFRAMES 128
#endif
#define THICK_LEFT 0
#define THICK_UP 1
#define THICK_RIGHT 2
#define THICK_DOWN 3
typedef struct _ssfFrame {
char ftype;
unsigned short left, top, right, bottom, thick;
unsigned short thickdir;
} ssfFrame;
typedef struct _ssfGlyph {
int num;
ssfFrame frames[SSF_MAXFRAMES];
} ssfGlyph;
typedef struct _ssfFont {
unsigned short fsize;
const ssfGlyph **chars;
} ssfFont;
extern void ssfCreateThinFont(ssfFont *sfont);
extern void ssfSetFontSize(ssfFont *sfont, unsigned short fsize);
extern unsigned short ssfDrawChar(AL_BITMAP *dst, ssfFont *sfont, char c, int x, int y, int color);
extern int ssfDrawText(AL_BITMAP *dst, ssfFont *sfont, char *s, int x, int y, int color);
#endif /* _SSF_H_ */