CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
font.h-Dateireferenz
+ Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define FONT_CP_WIN   0
 
#define FONT_CP_DOS   1
 
#define FONT_CP_WIN_1250   0
 
#define FONT_CP_WIN_1251   1
 
#define FONT_CP_WIN_1252   2
 
#define FONT_CP_WIN_1253   3 /* 1253 (Greek) */
 
#define FONT_CP_WIN_1254   4
 
#define FONT_CP_WIN_1257   5
 

Funktionen

void font_set (int codepage)
 
unsigned char * get_current_font_data (unsigned char ch)
 
int rbf_load_symbol (char *file)
 
void rbf_load_from_file (char *file, int codepage)
 
int rbf_font_height ()
 
int rbf_symbol_height ()
 
int rbf_char_width (int ch)
 
int rbf_symbol_width (int ch)
 
int rbf_str_width (const char *str)
 
void rbf_set_codepage (int codepage)
 
int rbf_draw_char (int x, int y, int ch, twoColors cl)
 
int rbf_draw_symbol (int x, int y, int ch, twoColors cl)
 
int rbf_draw_string (int x, int y, const char *str, twoColors cl)
 
int rbf_draw_clipped_string (int x, int y, const char *str, twoColors cl, int l, int maxlen)
 
int rbf_draw_string_len (int x, int y, int len, const char *str, twoColors cl)
 
int rbf_draw_string_right_len (int x, int y, int len, const char *str, twoColors cl)
 
int rbf_draw_menu_header (int x, int y, int len, char symbol, const char *str, twoColors cl)
 
void rbf_enable_cursor (int s, int e)
 
void rbf_disable_cursor ()
 

Variablen

unsigned char fontdata_lookup []
 

Makro-Dokumentation

#define FONT_CP_DOS   1

Definiert in Zeile 11 der Datei font.h.

#define FONT_CP_WIN   0

Definiert in Zeile 10 der Datei font.h.

#define FONT_CP_WIN_1250   0

Definiert in Zeile 13 der Datei font.h.

#define FONT_CP_WIN_1251   1

Definiert in Zeile 14 der Datei font.h.

#define FONT_CP_WIN_1252   2

Definiert in Zeile 15 der Datei font.h.

#define FONT_CP_WIN_1253   3 /* 1253 (Greek) */

Definiert in Zeile 16 der Datei font.h.

#define FONT_CP_WIN_1254   4

Definiert in Zeile 17 der Datei font.h.

#define FONT_CP_WIN_1257   5

Definiert in Zeile 18 der Datei font.h.

Dokumentation der Funktionen

void font_set ( int  codepage)

Definiert in Zeile 18 der Datei font_8x16.c.

19 {
20  // Save selected codepage
21  current_cp = codepage;
22 }
unsigned char* get_current_font_data ( unsigned char  ch)

Definiert in Zeile 8 der Datei font_8x16.c.

9 {
10  // Test for 'common' char?
11  if (ch < 128)
12  return font_data + cp_common[ch];
13  // If not return value from current codepage
14  return font_data + codepages[current_cp][ch-128];
15 }
int rbf_char_width ( int  ch)

Definiert in Zeile 282 der Datei rbf_font.c.

282  {
283  return rbf_font->wTable[code_page_char(ch)];
284 }
void rbf_disable_cursor ( )

Definiert in Zeile 403 der Datei rbf_font.c.

404 {
405  cursor_on = 0;
406 }
int rbf_draw_char ( int  x,
int  y,
int  ch,
twoColors  cl 
)

Definiert in Zeile 322 der Datei rbf_font.c.

322  {
323  // Convert char for code page
324  ch = code_page_char(ch);
325 
326  // Get char data pointer
327  char* cdata = rbf_font_char(rbf_font, ch);
328 
329  // Draw font character (either loaded font, or from default font)
330  if (rbf_font->usingFont8x16 || !cdata)
331  draw_char(x,y,ch,cl);
332  else
334 
335  return rbf_font->wTable[ch];
336 }
int rbf_draw_clipped_string ( int  x,
int  y,
const char *  str,
twoColors  cl,
int  l,
int  maxlen 
)

Definiert in Zeile 408 der Datei rbf_font.c.

409 {
410  int i = 0;
411  twoColors inv_cl = MAKE_COLOR(FG_COLOR(cl), BG_COLOR(cl));
412 
413  // Draw chars from string up to max pixel length
414  while (*str && l+rbf_char_width(*str)<=maxlen)
415  {
416  if (cursor_on && (cursor_start <= i) && (i <= cursor_end))
417  l+=rbf_draw_char(x+l, y, *str++, inv_cl);
418  else
419  l+=rbf_draw_char(x+l, y, *str++, cl);
420  i++;
421  }
422 
423  return l;
424 }
int rbf_draw_menu_header ( int  x,
int  y,
int  len,
char  symbol,
const char *  str,
twoColors  cl 
)

Definiert in Zeile 454 der Datei rbf_font.c.

454  {
455  int l=0, i, ll, lr;
456 
457  // If symbol to be added to string determing the width of the symbol + space
458  if (symbol!=0x0 && conf.menu_symbol_enable && rbf_font_height()>=rbf_symbol_height()) {
459  l += rbf_symbol_width(symbol);
460  l += rbf_char_width(' ');
461  }
462 
463  // Add the length of the string (possibly clipped to fit)
464  l = rbf_str_clipped_width(str, l, len);
465 
466  // Calculate padding required on left and right side
467  ll = 8;
468  lr = len-l-ll;
469 
470  int right = x+len-1, bottom = y+rbf_font_height()-1;
471 
472  // Fill left & right sides of string area with a rectangle that has rounded top corners
473  for (i=0; i<=l && i<3; i++) {
474  if (i < 2) {
475  // First and second columns make rounded top corners
476  draw_line(x+i, y+2-i, x+i, bottom, BG_COLOR(cl)); // left side
477  draw_line(right-i, y+2-i, right-i, bottom, BG_COLOR(cl)); // right side
478  }
479  else {
480  // Rest of empty space is just filled with rectangles
481  draw_rectangle(x+i, y, x+ll-1, bottom, MAKE_COLOR(BG_COLOR(cl), BG_COLOR(cl)), RECT_BORDER0|DRAW_FILLED); // left side
482  draw_rectangle(right-lr, y, right-i, bottom, MAKE_COLOR(BG_COLOR(cl), BG_COLOR(cl)), RECT_BORDER0|DRAW_FILLED); // right side
483  }
484  }
485 
486  // Draw symbol and space if required
487  if (symbol!=0x0 && conf.menu_symbol_enable && rbf_font_height()>=rbf_symbol_height()) {
488  ll += rbf_draw_symbol(x+ll, y, symbol, cl);
489  ll += rbf_draw_char(x+ll, y, ' ', cl);
490  }
491 
492  // Draw chars
493  ll = rbf_draw_clipped_string(x, y, str, cl, ll, len);
494 
495  return ll;
496 }
int rbf_draw_string ( int  x,
int  y,
const char *  str,
twoColors  cl 
)

Definiert in Zeile 387 der Datei rbf_font.c.

387  {
388  return rbf_draw_string_c(x, y, str, cl, -1, MAKE_COLOR(0,0));
389 }
int rbf_draw_string_len ( int  x,
int  y,
int  len,
const char *  str,
twoColors  cl 
)

Definiert in Zeile 427 der Datei rbf_font.c.

427  {
428  // Draw string characters
429  int l = rbf_draw_clipped_string(x, y, str, cl, 0, len);
430 
431  // Fill any remaining space on right with background color
432  if (l < len)
434 
435  return len;
436 }
int rbf_draw_string_right_len ( int  x,
int  y,
int  len,
const char *  str,
twoColors  cl 
)

Definiert in Zeile 439 der Datei rbf_font.c.

439  {
440  // Calulate amount of padding needed on the left
441  int l = len - rbf_str_clipped_width(str, 0, len);
442 
443  // Fill padding with background color
444  if (l > 0)
446 
447  // Draw chars
448  l = rbf_draw_clipped_string(x, y, str, cl, l, len);
449 
450  return l;
451 }
int rbf_draw_symbol ( int  x,
int  y,
int  ch,
twoColors  cl 
)

Definiert in Zeile 339 der Datei rbf_font.c.

339  {
340  int space=0, pixel_width, sym_height, txt_height;
341 
342  // Skip if symbol font height taller than text font height (or invalid char value)
343  if (rbf_font->hdr.height<rbf_symbol_font->hdr.height || ch==0x0) return 0;
344 
345  // get width of symbol in pixels
346  pixel_width = rbf_symbol_width(ch);
347  // get height of symbol font
348  sym_height = rbf_symbol_font->hdr.height;
349  // get height of text font
350  txt_height = rbf_font->hdr.height;
351 
352  // Get char data pointer
353  char* cdata = rbf_font_char(rbf_symbol_font, ch);
354 
355  if (cdata) {
356  // if symbol font shorter than text font center symbol vertically and fill empty space above
357  if (txt_height > sym_height) {
358  space = (txt_height - sym_height)/2;
360  y+=space;
361  }
362 
363  // Draw font character
364  font_draw_char(x, y, cdata, rbf_symbol_font->width, sym_height, pixel_width, cl);
365 
366  // Fill space below symbol if shorter than text font
367  if (txt_height > sym_height)
368  draw_rectangle(x, y+sym_height, x+pixel_width, y-space+txt_height-1, MAKE_COLOR(BG_COLOR(cl), BG_COLOR(cl)), RECT_BORDER0|DRAW_FILLED);
369  }
370 
371  return pixel_width;
372 }
void rbf_enable_cursor ( int  s,
int  e 
)

Definiert in Zeile 396 der Datei rbf_font.c.

397 {
398  cursor_on = 1;
399  cursor_start = s;
400  cursor_end = e;
401 }
int rbf_font_height ( )

Definiert in Zeile 273 der Datei rbf_font.c.

273  {
274  return rbf_font->hdr.height;
275 }
void rbf_load_from_file ( char *  file,
int  codepage 
)

Definiert in Zeile 242 der Datei rbf_font.c.

243 {
244  // Allocate font if needed
245  init_fonts();
246  // Load font, load default on failure
247  if (!rbf_font_load(file, rbf_font, 0))
248  {
249  // Reset back to built in font, file load failed
253  rbf_font->hdr.charFirst = 0;
254  rbf_font->hdr.charLast = 255;
255 
256  // This is only ever called to copy the 'current_font' data into the rbf_font
257  // Instead of doing this set the rbf_font flag so we call 'draw_char' directly (which uses current_font)
258  // This avoids allocating memory for a copy of something we already have
259  rbf_font->usingFont8x16 = 1;
260 
262  }
263  // Set codepage
264  rbf_set_codepage(codepage);
265 }
int rbf_load_symbol ( char *  file)

Definiert in Zeile 233 der Datei rbf_font.c.

233  {
234  // Allocate font if needed
235  init_fonts();
236  // Load font
237  return rbf_font_load(file, rbf_symbol_font, maxSymbols+32);
238 }
void rbf_set_codepage ( int  codepage)

Definiert in Zeile 268 der Datei rbf_font.c.

268  {
269  rbf_codepage = codepage;
270 }
int rbf_str_width ( const char *  str)

Definiert in Zeile 292 der Datei rbf_font.c.

292  {
293  int l=0;
294 
295  // Calculate how long the string is in pixels
296  while (*str)
297  l+=rbf_char_width(*str++);
298 
299  return l;
300 }
int rbf_symbol_height ( )

Definiert in Zeile 277 der Datei rbf_font.c.

277  {
278  return rbf_symbol_font->hdr.height;
279 }
int rbf_symbol_width ( int  ch)

Definiert in Zeile 287 der Datei rbf_font.c.

287  {
288  return rbf_symbol_font->wTable[ch];
289 }

Variablen-Dokumentation

unsigned char fontdata_lookup[]

Definiert in Zeile 21 der Datei font_8x16_pack.c.