Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1504 → Rev 1505

/uspace/trunk/fb/fb.c
40,9 → 40,12
#include <ipc/services.h>
#include <kernel/errno.h>
#include <async.h>
 
#include "font-8x16.h"
#include "helenos.xbm"
#include "fb.h"
#include "main.h"
#include "../console/screenbuffer.h"
 
#define DEFAULT_BGCOLOR 0x000080
#define DEFAULT_FGCOLOR 0xffff00
458,6 → 461,22
cursor_print(vp);
}
 
static void draw_text_data(int vp, keyfield_t *data)
{
viewport_t *vport = &viewports[vp];
int i;
char c;
 
clear_port(vp);
for (i=0; i < vport->cols * vport->rows; i++) {
if (data[i].character == ' ') /* TODO: && data[i].style==vport->style */
continue;
draw_char(vp, data[i].character, i/vport->rows, i % vport->cols);
}
cursor_print(vp);
}
 
 
/** Function for handling connections to FB
*
*/
469,6 → 488,8
int i;
unsigned int row,col;
char c;
keyfield_t *interbuffer = NULL;
size_t intersize = 0;
 
int vp = 0;
viewport_t *vport = &viewports[0];
494,6 → 515,25
vport->initialized = 0;
ipc_answer_fast(callid,0,0,0);
return; /* Exit thread */
case IPC_M_AS_AREA_SEND:
/* We accept one area for data interchange */
intersize = IPC_GET_ARG2(call);
receive_comm_area(callid,&call,(void **)&interbuffer,
sizeof(*interbuffer)*viewports[0].cols*viewports[0].rows);
continue;
 
case FB_DRAW_TEXT_DATA:
if (!interbuffer) {
retval = EINVAL;
break;
}
if (intersize < vport->cols*vport->rows*sizeof(*interbuffer)) {
retval = EINVAL;
break;
}
draw_text_data(vp, interbuffer);
retval = 0;
break;
case FB_PUTCHAR:
c = IPC_GET_ARG1(call);
row = IPC_GET_ARG2(call);