476 lines
17 KiB
C
476 lines
17 KiB
C
/*******************************************************************
|
|
*
|
|
* gmain.c graphics utility main body 1.1
|
|
*
|
|
* This file defines a common implementation of the graphics
|
|
* utility used by the FreeType test programs. It relies on
|
|
* system-specific drivers, like 'gfs_os.c', which interface is
|
|
* described in the file 'gdriver.h'.
|
|
*
|
|
* Copyright 1996-1999 by
|
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
|
*
|
|
* This file is part of the FreeType project, and may only be used
|
|
* modified and distributed under the terms of the FreeType project
|
|
* license, LICENSE.TXT. By continuing to use, modify or distribute
|
|
* this file you indicate that you have read the license and
|
|
* understand and accept it fully.
|
|
*
|
|
******************************************************************/
|
|
|
|
#include "gdriver.h"
|
|
#include "gmain.h"
|
|
|
|
#ifndef FAILURE
|
|
#define FAILURE 0
|
|
#endif
|
|
|
|
#ifndef SUCCESS
|
|
#define SUCCESS 1
|
|
#endif
|
|
|
|
char* Vio; /* pointer to VRAM or display buffer */
|
|
|
|
int vio_ScanLineWidth; /* scan line width in bytes */
|
|
|
|
int vio_Width;
|
|
int vio_Height;
|
|
|
|
int gcursor_x = 0;
|
|
int gcursor_y = 0;
|
|
|
|
int gwindow_width = 0;
|
|
int gwindow_height = 0;
|
|
|
|
unsigned char gray_palette[5];
|
|
|
|
|
|
typedef void TFunction_Print_8x8_Char( int x,
|
|
int y,
|
|
unsigned char c );
|
|
|
|
TFunction_Print_8x8_Char* Print_8x8_Char;
|
|
|
|
/* font characters */
|
|
|
|
unsigned char font_8x8[2048] =
|
|
{
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,
|
|
0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E,
|
|
0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00,
|
|
0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00,
|
|
0x38, 0x7C, 0x38, 0xFE, 0xFE, 0x92, 0x10, 0x7C,
|
|
0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x7C,
|
|
0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00,
|
|
0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF,
|
|
0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00,
|
|
0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF,
|
|
0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78,
|
|
0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18,
|
|
0x3F, 0x33, 0x3F, 0x30, 0x30, 0x70, 0xF0, 0xE0,
|
|
0x7F, 0x63, 0x7F, 0x63, 0x63, 0x67, 0xE6, 0xC0,
|
|
0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99,
|
|
0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00,
|
|
0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00,
|
|
0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18,
|
|
0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00,
|
|
0x7F, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x00,
|
|
0x3E, 0x63, 0x38, 0x6C, 0x6C, 0x38, 0x86, 0xFC,
|
|
0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00,
|
|
0x18, 0x3C, 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF,
|
|
0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00,
|
|
0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00,
|
|
0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00,
|
|
0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, 0x00, 0x00,
|
|
0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00,
|
|
0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00,
|
|
0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00,
|
|
0x00, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00,
|
|
0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
|
|
0x18, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x18, 0x00,
|
|
0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
|
|
0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00,
|
|
0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00,
|
|
0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00,
|
|
0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
|
|
0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
|
|
0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
|
|
0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00,
|
|
0x7C, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0x7C, 0x00,
|
|
0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00,
|
|
0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, 0xFC, 0x00,
|
|
0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
|
|
0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00,
|
|
0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
|
|
0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00,
|
|
0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
|
|
0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00,
|
|
0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00,
|
|
0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30,
|
|
0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00,
|
|
0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00,
|
|
0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00,
|
|
0x3C, 0x66, 0x0C, 0x18, 0x18, 0x00, 0x18, 0x00,
|
|
0x7C, 0xC6, 0xDE, 0xDE, 0xDC, 0xC0, 0x7C, 0x00,
|
|
0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x00,
|
|
0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00,
|
|
0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00,
|
|
0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00,
|
|
0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00,
|
|
0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00,
|
|
0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3A, 0x00,
|
|
0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00,
|
|
0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00,
|
|
0xE6, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0xE6, 0x00,
|
|
0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00,
|
|
0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
|
|
0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
|
|
0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00,
|
|
0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00,
|
|
0x7C, 0xC6, 0xC6, 0xC6, 0xD6, 0x7C, 0x0E, 0x00,
|
|
0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00,
|
|
0x7C, 0xC6, 0xE0, 0x78, 0x0E, 0xC6, 0x7C, 0x00,
|
|
0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFC, 0x00,
|
|
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
|
|
0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
|
|
0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0x00,
|
|
0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00,
|
|
0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00,
|
|
0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00,
|
|
0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00,
|
|
0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
|
|
0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
|
0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
|
|
0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xDC, 0x00,
|
|
0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
|
|
0x1C, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0x76, 0x00,
|
|
0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
|
|
0x38, 0x6C, 0x64, 0xF0, 0x60, 0x60, 0xF0, 0x00,
|
|
0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
|
|
0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00,
|
|
0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0x0C, 0x00, 0x1C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78,
|
|
0xE0, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00,
|
|
0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0x00, 0x00, 0xCC, 0xFE, 0xFE, 0xD6, 0xD6, 0x00,
|
|
0x00, 0x00, 0xB8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
|
|
0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0,
|
|
0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E,
|
|
0x00, 0x00, 0xDC, 0x76, 0x62, 0x60, 0xF0, 0x00,
|
|
0x00, 0x00, 0x7C, 0xC0, 0x70, 0x1C, 0xF8, 0x00,
|
|
0x10, 0x30, 0xFC, 0x30, 0x30, 0x34, 0x18, 0x00,
|
|
0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
|
|
0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
|
|
0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
|
|
0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00,
|
|
0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
|
|
0x00, 0x00, 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00,
|
|
0x1C, 0x30, 0x30, 0xE0, 0x30, 0x30, 0x1C, 0x00,
|
|
0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
|
|
0xE0, 0x30, 0x30, 0x1C, 0x30, 0x30, 0xE0, 0x00,
|
|
0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0x00,
|
|
0x7C, 0xC6, 0xC0, 0xC6, 0x7C, 0x0C, 0x06, 0x7C,
|
|
0x00, 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
|
|
0x1C, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
|
|
0x7E, 0x81, 0x3C, 0x06, 0x3E, 0x66, 0x3B, 0x00,
|
|
0xCC, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
|
|
0xE0, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
|
|
0x30, 0x30, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
|
|
0x00, 0x00, 0x7C, 0xC6, 0xC0, 0x78, 0x0C, 0x38,
|
|
0x7E, 0x81, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
|
|
0xCC, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
|
|
0xE0, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
|
|
0xCC, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0x7C, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00,
|
|
0xE0, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0xC6, 0x10, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
|
|
0x30, 0x30, 0x00, 0x78, 0xCC, 0xFC, 0xCC, 0x00,
|
|
0x1C, 0x00, 0xFC, 0x60, 0x78, 0x60, 0xFC, 0x00,
|
|
0x00, 0x00, 0x7F, 0x0C, 0x7F, 0xCC, 0x7F, 0x00,
|
|
0x3E, 0x6C, 0xCC, 0xFE, 0xCC, 0xCC, 0xCE, 0x00,
|
|
0x78, 0x84, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x00, 0xCC, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x00, 0xE0, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x78, 0x84, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
|
|
0x00, 0xE0, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
|
|
0x00, 0xCC, 0x00, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
|
|
0xC3, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x18, 0x00,
|
|
0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x18, 0x18, 0x7E, 0xC0, 0xC0, 0x7E, 0x18, 0x18,
|
|
0x38, 0x6C, 0x64, 0xF0, 0x60, 0xE6, 0xFC, 0x00,
|
|
0xCC, 0xCC, 0x78, 0x30, 0xFC, 0x30, 0xFC, 0x30,
|
|
0xF8, 0xCC, 0xCC, 0xFA, 0xC6, 0xCF, 0xC6, 0xC3,
|
|
0x0E, 0x1B, 0x18, 0x3C, 0x18, 0x18, 0xD8, 0x70,
|
|
0x1C, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
|
|
0x38, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
|
|
0x00, 0x1C, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x00, 0x1C, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
|
|
0x00, 0xF8, 0x00, 0xB8, 0xCC, 0xCC, 0xCC, 0x00,
|
|
0xFC, 0x00, 0xCC, 0xEC, 0xFC, 0xDC, 0xCC, 0x00,
|
|
0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00,
|
|
0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00,
|
|
0x18, 0x00, 0x18, 0x18, 0x30, 0x66, 0x3C, 0x00,
|
|
0x00, 0x00, 0x00, 0xFC, 0xC0, 0xC0, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0xFC, 0x0C, 0x0C, 0x00, 0x00,
|
|
0xC6, 0xCC, 0xD8, 0x36, 0x6B, 0xC2, 0x84, 0x0F,
|
|
0xC3, 0xC6, 0xCC, 0xDB, 0x37, 0x6D, 0xCF, 0x03,
|
|
0x18, 0x00, 0x18, 0x18, 0x3C, 0x3C, 0x18, 0x00,
|
|
0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00,
|
|
0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00,
|
|
0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88,
|
|
0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA,
|
|
0xDB, 0xF6, 0xDB, 0x6F, 0xDB, 0x7E, 0xD7, 0xED,
|
|
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18,
|
|
0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36,
|
|
0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36,
|
|
0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18,
|
|
0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
|
|
0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00,
|
|
0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00,
|
|
0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00,
|
|
0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18,
|
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
|
|
0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18,
|
|
0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36,
|
|
0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00,
|
|
0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36,
|
|
0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00,
|
|
0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18,
|
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00,
|
|
0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18,
|
|
0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36,
|
|
0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36,
|
|
0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
|
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x76, 0xDC, 0xC8, 0xDC, 0x76, 0x00,
|
|
0x00, 0x78, 0xCC, 0xF8, 0xCC, 0xF8, 0xC0, 0xC0,
|
|
0x00, 0xFC, 0xCC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
|
|
0x00, 0x00, 0xFE, 0x6C, 0x6C, 0x6C, 0x6C, 0x00,
|
|
0xFC, 0xCC, 0x60, 0x30, 0x60, 0xCC, 0xFC, 0x00,
|
|
0x00, 0x00, 0x7E, 0xD8, 0xD8, 0xD8, 0x70, 0x00,
|
|
0x00, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0xC0,
|
|
0x00, 0x76, 0xDC, 0x18, 0x18, 0x18, 0x18, 0x00,
|
|
0xFC, 0x30, 0x78, 0xCC, 0xCC, 0x78, 0x30, 0xFC,
|
|
0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x6C, 0x38, 0x00,
|
|
0x38, 0x6C, 0xC6, 0xC6, 0x6C, 0x6C, 0xEE, 0x00,
|
|
0x1C, 0x30, 0x18, 0x7C, 0xCC, 0xCC, 0x78, 0x00,
|
|
0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x00, 0x00,
|
|
0x06, 0x0C, 0x7E, 0xDB, 0xDB, 0x7E, 0x60, 0xC0,
|
|
0x38, 0x60, 0xC0, 0xF8, 0xC0, 0x60, 0x38, 0x00,
|
|
0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
|
|
0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00,
|
|
0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00,
|
|
0x60, 0x30, 0x18, 0x30, 0x60, 0x00, 0xFC, 0x00,
|
|
0x18, 0x30, 0x60, 0x30, 0x18, 0x00, 0xFC, 0x00,
|
|
0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18,
|
|
0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0x70,
|
|
0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00,
|
|
0x00, 0x76, 0xDC, 0x00, 0x76, 0xDC, 0x00, 0x00,
|
|
0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
|
0x0F, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x3C, 0x1C,
|
|
0x58, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00,
|
|
0x70, 0x98, 0x30, 0x60, 0xF8, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
};
|
|
|
|
|
|
void Print_8x8_Mono( int x, int y, unsigned char c )
|
|
{
|
|
int offset, i;
|
|
unsigned char* bitm;
|
|
|
|
if ( !Vio )
|
|
return;
|
|
|
|
offset = x + y * vio_ScanLineWidth * 8;
|
|
bitm = font_8x8 + (int)c * 8;
|
|
|
|
for ( i = 0; i < 8; i++ )
|
|
{
|
|
Vio[offset] = *bitm;
|
|
bitm++;
|
|
offset += vio_ScanLineWidth;
|
|
}
|
|
}
|
|
|
|
|
|
void Print_8x8_Gray( int x, int y, unsigned char c )
|
|
{
|
|
int offset, i, bit;
|
|
unsigned char* bitm;
|
|
|
|
if ( !Vio )
|
|
return;
|
|
|
|
offset = x * 8 + y * vio_ScanLineWidth * 8;
|
|
bitm = font_8x8 + (int)c * 8;
|
|
|
|
for ( i = 0; i < 8; i++ )
|
|
{
|
|
bit = 0x80;
|
|
while ( bit > 0 )
|
|
{
|
|
if ( bit & *bitm )
|
|
Vio[offset] = (char)0x0f;
|
|
else
|
|
Vio[offset] = 0x00;
|
|
|
|
bit >>= 1;
|
|
offset++;
|
|
}
|
|
offset += vio_ScanLineWidth - 8;
|
|
bitm++;
|
|
}
|
|
}
|
|
|
|
|
|
int SetGraphScreen( int mode )
|
|
{
|
|
gcursor_x = 0;
|
|
gcursor_y = 0;
|
|
|
|
switch( mode )
|
|
{
|
|
case Graphics_Mode_Mono:
|
|
if ( !Driver_Set_Graphics( mode ) )
|
|
return FAILURE;
|
|
|
|
gwindow_width = vio_ScanLineWidth;
|
|
gwindow_height = vio_Height / 8;
|
|
|
|
Print_8x8_Char = Print_8x8_Mono;
|
|
break;
|
|
|
|
case Graphics_Mode_Gray:
|
|
if ( !Driver_Set_Graphics( mode ) )
|
|
return FAILURE;
|
|
|
|
gwindow_width = vio_ScanLineWidth / 8;
|
|
gwindow_height = vio_Height / 8;
|
|
|
|
Print_8x8_Char = Print_8x8_Gray;
|
|
break;
|
|
|
|
default:
|
|
/* Invalid function call */
|
|
return FAILURE;
|
|
}
|
|
|
|
return SUCCESS;
|
|
}
|
|
|
|
|
|
/* restore previous (or text) video mode */
|
|
|
|
int RestoreScreen( void )
|
|
{
|
|
gcursor_x = 0;
|
|
gcursor_y = 0;
|
|
gwindow_height = 0;
|
|
gwindow_height = 0;
|
|
|
|
return Driver_Restore_Mode();
|
|
}
|
|
|
|
|
|
void Display_Bitmap_On_Screen( char* buffer, int line, int col )
|
|
{
|
|
Driver_Display_Bitmap( buffer, line, col );
|
|
}
|
|
|
|
|
|
void Goto_XY( int x, int y )
|
|
{
|
|
gcursor_x = x;
|
|
gcursor_y = y;
|
|
}
|
|
|
|
|
|
void Print_Str( char* string )
|
|
{
|
|
if ( !string ) return;
|
|
|
|
while ( *string )
|
|
{
|
|
switch ( *string )
|
|
{
|
|
case '\n':
|
|
gcursor_x = 0;
|
|
gcursor_y++;
|
|
if ( gcursor_y > gwindow_height ) gcursor_y = 0;
|
|
break;
|
|
|
|
default:
|
|
(*Print_8x8_Char)( gcursor_x, gcursor_y, *string );
|
|
|
|
gcursor_x++;
|
|
|
|
if ( gcursor_x >= gwindow_width )
|
|
{
|
|
gcursor_x = 0;
|
|
gcursor_y++;
|
|
|
|
if ( gcursor_y >= gwindow_height ) gcursor_y = 0;
|
|
}
|
|
}
|
|
string++;
|
|
}
|
|
}
|
|
|
|
|
|
void Print_XY( int x, int y, char* string )
|
|
{
|
|
Goto_XY( x, y );
|
|
Print_Str( string );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* End */
|