Convert font of t6963 driver to 8 byte bitmap.
This commit is contained in:
@@ -25,6 +25,7 @@ v.0.5dev (ongoing development)
|
||||
* Convert set_char of drivers bayrad, lb216, lcterm, mtc_s16209x, wirz-sli
|
||||
* CFontzPacket: Fix not using select() even if its available
|
||||
* CFontzPacket: Use cellwidth = 5 on CFA-631 and CFA-635 too
|
||||
* t6963: Convert font to 8 byte bitmap
|
||||
|
||||
v0.5.4
|
||||
* Update driver includes and LDFLAGS (fixed glk and bayrad binding error)
|
||||
|
||||
+23
-23
@@ -186,7 +186,7 @@ t6963_init(Driver * drvthis)
|
||||
t6963_low_command_word(drvthis, SET_OFFSET_REGISTER, CHARGEN_BASE >> 11);
|
||||
|
||||
/* Load font data */
|
||||
t6963_set_nchar(drvthis, 0, fontdata_6x8, 256);
|
||||
t6963_set_nchar(drvthis, 0, 256);
|
||||
|
||||
/* Clear display */
|
||||
t6963_clear(drvthis);
|
||||
@@ -371,46 +371,46 @@ t6963_chr(Driver * drvthis, int x, int y, char c)
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the font data of character n.
|
||||
* Load the custom font into LCD. Font data may be modified by the \c set_char
|
||||
* function on the fly.
|
||||
*
|
||||
* \param drvthis Pointer to driver structure.
|
||||
* \param n Index of character in CGRAM to update.
|
||||
* \param dat Data (must consist of num*cellwidth*cellheight bytes).
|
||||
* \param num Number of characters stored in data.
|
||||
* \param n Index of starting character in CGRAM
|
||||
* \param num Number of characters to update
|
||||
*/
|
||||
static void
|
||||
t6963_set_nchar(Driver * drvthis, int n, unsigned char *dat, int num)
|
||||
t6963_set_nchar(Driver *drvthis, int n, int num)
|
||||
{
|
||||
PrivateData *p = drvthis->private_data;
|
||||
int row, col;
|
||||
int chr, row;
|
||||
char letter;
|
||||
unsigned char mask = (1 << p->cellwidth) - 1;
|
||||
|
||||
debug(RPT_DEBUG, "Setting char %d", n);
|
||||
debug(RPT_DEBUG, "Loading font");
|
||||
|
||||
if ((!dat) || (n + num > 256))
|
||||
return;
|
||||
|
||||
t6963_low_command_word(drvthis, SET_ADDRESS_POINTER, CHARGEN_BASE + n * 8);
|
||||
t6963_low_command_word(drvthis, SET_ADDRESS_POINTER, CHARGEN_BASE + n * p->cellheight);
|
||||
t6963_low_command(drvthis, AUTO_WRITE);
|
||||
for (row = 0; row < p->cellheight * num; row++) {
|
||||
letter = 0;
|
||||
/* Accumulate data for one pixel row */
|
||||
for (col = 0; col < p->cellwidth; col++) {
|
||||
letter <<= 1;
|
||||
letter |= (dat[(row * p->cellwidth) + col] > 0);
|
||||
for (chr = 0; chr < num; chr++) {
|
||||
for (row = 0; row < p->cellheight; row++) {
|
||||
letter = fontdata_6x8[chr][row] & mask;
|
||||
t6963_low_auto_write(drvthis, letter);
|
||||
}
|
||||
|
||||
t6963_low_auto_write(drvthis, letter);
|
||||
}
|
||||
t6963_low_command(drvthis, AUTO_RESET);
|
||||
}
|
||||
|
||||
/**
|
||||
* API: Define a custom character and write it to the LCD.
|
||||
* API: Define a custom character and write it into the font data, possibly
|
||||
* overwriting an existing character.
|
||||
*/
|
||||
MODULE_EXPORT void
|
||||
t6963_set_char(Driver * drvthis, int n, char *dat)
|
||||
t6963_set_char(Driver * drvthis, int n, unsigned char *dat)
|
||||
{
|
||||
t6963_set_nchar(drvthis, n, (unsigned char *)dat, 1);
|
||||
if (!dat || n < 0 || n > 255)
|
||||
return;
|
||||
|
||||
memcpy(fontdata_6x8[n], dat, 8);
|
||||
t6963_set_nchar(drvthis, n, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -97,11 +97,11 @@ MODULE_EXPORT void t6963_vbar (Driver *drvthis, int x, int y, int len, int promi
|
||||
MODULE_EXPORT void t6963_hbar (Driver *drvthis, int x, int y, int len, int promille, int options);
|
||||
MODULE_EXPORT void t6963_num (Driver *drvthis, int x, int num);
|
||||
MODULE_EXPORT int t6963_icon (Driver *drvthis, int x, int y, int icon);
|
||||
MODULE_EXPORT void t6963_set_char (Driver *drvthis, int n, char *dat);
|
||||
MODULE_EXPORT void t6963_set_char (Driver *drvthis, int n, unsigned char *dat);
|
||||
|
||||
/* Internal functions */
|
||||
static void t6963_graphic_clear(Driver *drvthis);
|
||||
static void t6963_set_nchar(Driver *drvthis, int n, unsigned char *dat, int num);
|
||||
static void t6963_set_nchar(Driver *drvthis, int n, int num);
|
||||
static inline int t6963_low_dsp_ready(Driver *drvthis, u8 sta);
|
||||
static void t6963_low_data(Driver *drvthis, u8 byte);
|
||||
static void t6963_low_auto_write(Driver *drvthis, u8 byte);
|
||||
|
||||
+2117
-2309
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user