92struct board *board_setup(SDL_Surface *screen, SDL_Rect *dest,
93 SDL_Surface *font, SDL_Rect *font_rects);
94struct board *board_setup(SDL_Surface *screen, SDL_Rect *dest,
95 SDL_Surface *font, SDL_Rect *font_rects)
104 b->font_rects = font_rects;
111 b->p_h =
b->p_rect->h/FONT_H;
112 b->p_w =
b->p_rect->w/FONT_W;
115 b->v_h =
b->p_h * 10;
119 br.h =
b->p_h * FONT_H;
120 br.w =
b->p_w * FONT_W;
125 if (
b->text ==
NULL) {
130 memset(
b->text,
' ',
b->v_w *
b->v_h);
133 b->blank = SDL_CreateRGBSurface(screen->flags, br.w, br.h,
134 screen->format->BitsPerPixel,
135 screen->format->Rmask, screen->format->Gmask,
136 screen->format->Bmask, screen->format->Amask);
138 if (
b->blank ==
NULL) {
145 SDL_BlitSurface(screen,
b->p_rect,
b->blank, &br);
155 b->p_rect->w,
b->p_rect->h,
156 b->p_rect->x,
b->p_rect->y);
165static void render_board(
struct board *
b)
167 int first_row =
b->v_h -
b->p_h -
b->cur_line;
168 int first_char =
b->v_w * first_row;
169 int last_char = first_char +
b->p_h *
b->v_w;
176 dst.x =
b->p_rect->x;
177 dst.y =
b->p_rect->y;
181 SDL_BlitSurface(
b->blank,
NULL,
b->screen,
b->p_rect);
184 for (i = first_char, col = 0; i < last_char; i++) {
185 int c =
b->text[i] - 32;
188 SDL_BlitSurface(
b->font, &
b->font_rects[
c],
b->screen, &dst);
193 dst.x =
b->p_rect->x;
198 SDL_UpdateRects(
b->screen, 1,
b->p_rect);
203 int cur =
b->cur_line + dy;
206 else if (cur >=
b->v_h -
b->p_h)
207 cur =
b->v_h -
b->p_h - 1;
220 memset(
b->text,
' ',
b->v_w *
b->v_h);
248 for (i = 0; i < l; i++) {
274 memcpy(
b->text,
b->text + row *
b->v_w,
b->v_w * (
b->v_h - row));
276 dst =
b->text +
b->v_w * (
b->v_h - row - 1) +
b->cur_col;
277 memset(dst,
' ',
b->v_w -
b->cur_col +
b->v_w * row);
283 dst =
b->text +
b->v_w * (
b->v_h - row - 1);
285 for (i = 0; i < l; i++) {
330 SDL_FreeSurface(
b->blank);
339static int scroll_message(...)
341if moving up, scroll
text up;
342 if (gui->message_board.screen_cur > 0)
343 gui->message_board.screen_cur--;
344otherwise scroll
text down.
345 if ((
b->screen_cur +
b->p_line) <
b->board_next) {
346 gui->message_board.screen_cur++;
Asterisk main include file. File version handling, generic pbx functions.
#define ast_calloc(num, len)
A wrapper for calloc()
void delete_board(struct board *b)
deallocates memory space for a board
void move_message_board(struct board *b, int dy)
const char * read_message(const struct board *b)
return the whole text from a board
int reset_board(struct board *b)
reset the board to blank
int print_message(struct board *b, const char *s)
static force_inline int attribute_pure ast_strlen_zero(const char *s)