Ejemplo n.º 1
0
void print_str(ui_context * ctx,char * buf,int maxsize,int col,int line,int linefeed,int mode)
{
	int i;

	#ifdef DEBUG
	dbg_printf("UIOut x:%d y:%d %s\n",col,line,buf);
	#endif

	#ifdef SDLHOST
	if(strlen(buf)>2)
	{
		printf("%s\n",buf);
	}
	#endif

	set_char_pos(ctx, col, line);

	i = 0;
	while(buf[i] && i < maxsize)
	{
		if(buf[i] == '\n' && linefeed)
		{
			line++;
			set_char_pos(ctx, 0, line);
		}
		else
		{
			print_char(ctx,buf[i],mode);
		}
		i++;
	}
}
Ejemplo n.º 2
0
int media_read(uint32 sector, uint8 *buffer, uint32 sector_count)
{
	int ret;
	uint32 i;
	direct_access_status_sector * dass;

	dass = (direct_access_status_sector *)buffer;

	#ifdef DEBUG
	dbg_printf("media_read sector : 0x%.8X, cnt : %d \n",sector,sector_count);
	#endif

	set_char_pos(&g_ui_ctx,g_ui_ctx.screen_txt_xsize - 1, 0);
	print_char(&g_ui_ctx, 10, INVERTED);

	for(i=0;i<sector_count;i++)
	{
		do
		{
			if((sector-last_setlbabase)>=8)
			{
				ret = setlbabase(sector);
				if( ret != ERR_NO_ERROR )
					return 0;
			}

			ret = readsector(0,buffer,0); 
			if( ret != ERR_NO_ERROR )
			{
				hxc_printf_box(&g_ui_ctx,"ERROR: Read ERROR ! fsector %d [Err %d]",(sector-last_setlbabase)+1,ret);

				return 0;
			}
			last_setlbabase = L_INDIAN(dass->lba_base);

		}while((sector-L_INDIAN(dass->lba_base))>=8);

		ret = readsector((unsigned char)((sector-last_setlbabase)+1),&buffer[i*512],0);
		if( ret != ERR_NO_ERROR )
		{
			hxc_printf_box(&g_ui_ctx,"ERROR: Read ERROR ! fsector %d [Err %d]",(sector-last_setlbabase)+1,ret);
			return 0;
		}

		sector++;

		#ifdef DEBUG
		print_hex_array(buffer,512);
		#endif
	}

	set_char_pos(&g_ui_ctx,g_ui_ctx.screen_txt_xsize - 1, 0);
	print_char(&g_ui_ctx, ' ', INVERTED);

	return 1;
}
Ejemplo n.º 3
0
int media_write(uint32 sector, uint8 *buffer, uint32 sector_count)
{
	int ret;
	uint32 i;

	#ifdef DEBUG
	dbg_printf("media_write : 0x%.8X\n",sector);
	#endif

	set_char_pos(&g_ui_ctx,g_ui_ctx.screen_txt_xsize - 1, 0);
	print_char(&g_ui_ctx, 1, INVERTED);

	for(i=0;i<sector_count;i++)
	{
		if( sector - last_setlbabase >=8)
		{
			last_setlbabase=sector;
			ret = setlbabase(sector);
			if( ret != ERR_NO_ERROR )
				return 0;
		}

		ret = writesector((unsigned char)((sector-last_setlbabase)+1),buffer);
		if( ret != ERR_NO_ERROR )
		{
			hxc_printf_box(&g_ui_ctx,"ERROR: Write sector ERROR !");
			return 0;
		}

		sector++;
	}

	set_char_pos(&g_ui_ctx,g_ui_ctx.screen_txt_xsize - 1, 0);
	print_char(&g_ui_ctx, ' ', INVERTED);

	#ifdef DEBUG
	print_hex_array(buffer,512);
	#endif

	return 1;
}
Ejemplo n.º 4
0
void PXL_Text::render(PXL_Batch* batch) {
    scaled_max.x = max_width;
    scaled_max.y = max_height;
    if (scale_max_size) {
        scaled_max.x = max_width * font_scale.x;
        scaled_max.y = max_height * font_scale.y;
    }

    rect.x = x;
    rect.y = y;
    float pos_x = 0;
    float pos_y = 0;
    for (size_t n = 0; n < text.length(); ++n) {
        if (set_char_pos(text[n], x)) {
            continue;
        }

        float offset_x = rect.w + kerning;
        if (max_width != INT_MAX || max_height != INT_MAX) {
            pos_x = (rect.x - x) + rect.w;
            pos_y = (rect.y - y) + rect.h;
            if (pos_x - rect.w >= scaled_max.x) {
                continue;
            }
            if (pos_y - rect.h >= scaled_max.y) {
                continue;
            }

            //cut off texture width if it goes over the max width
            if (pos_x >= scaled_max.x) {
                src_rect.w = src_rect.w - fabs(scaled_max.x - pos_x);
                src_rect.w = PXL_min(src_rect.w, scaled_max.x);
                rect.w = src_rect.w * font_scale.x;
            }
            //cut off texture height if it goes over the max height
            if (pos_y >= scaled_max.y) {
                src_rect.h = src_rect.h - fabs(scaled_max.y - pos_y);
                src_rect.h = PXL_min(src_rect.h, scaled_max.y);
                rect.h = src_rect.h * font_scale.y;
            }
        }

        temp_origin.x = (x + origin.x) - rect.x;
        temp_origin.y = (y + origin.y) - rect.y;
        batch->add(*font->get_glyph_sheet(), &rect, &src_rect, rotation, &temp_origin, NULL, z_depth, colour, PXL_text_shader);
        rect.x += offset_x;
    }
}
Ejemplo n.º 5
0
int hxc_printf_box(ui_context * ctx,char * chaine, ...)
{
	char temp_buffer[1024];
	int str_size;
	int i;
	int start_xpos;
	va_list marker;

	va_start( marker, chaine );

#if ( _MSC_VER >= 1100 && _MSC_VER <= 1200 ) // VC 6 doesn't have vsnprintf.
	vsprintf(temp_buffer,chaine,marker);
#else
	vsnprintf(temp_buffer,1024,chaine,marker);
#endif

	str_size = strlen(temp_buffer);
	str_size += 4;

	start_xpos = ( ctx->screen_txt_xsize - str_size) / 2;

	// Upper bar
	set_char_pos(ctx, start_xpos, BOX_UPPERBAR_YPOS);
	for(i=0;i< str_size;i++)
	{
		print_char(ctx,UPPER_HORIZONTAL_BAR_CHAR,0);
	}

	// Top right corner
	set_char_pos(ctx, start_xpos + (i-1), BOX_UPPERBAR_YPOS);
	print_char(ctx,UPPER_RIGHT_CORNER_CHAR,0);

	//Top left corner
	set_char_pos(ctx, start_xpos, BOX_UPPERBAR_YPOS);
	print_char(ctx,UPPER_LEFT_CORNER_CHAR,0);

	// Clear Middle space bar
	set_char_pos(ctx, start_xpos, BOX_UPPERBAR_YPOS+1);
	for(i=0;i< str_size;i++)
	{
		print_char(ctx,' ',0);
	}

	// Middle right bar
	set_char_pos(ctx, start_xpos + (i-1), BOX_UPPERBAR_YPOS+1);
	print_char(ctx,RIGHT_VERTICAL_BAR_CHAR,0);

	// Middle left bar
	set_char_pos(ctx, start_xpos, BOX_UPPERBAR_YPOS+1);
	print_char(ctx,LEFT_VERTICAL_BAR_CHAR,0);

	// Print the string
	print_str(ctx,temp_buffer,MAXTXTSIZE,start_xpos + 2,BOX_UPPERBAR_YPOS+1,0,0);

	// Lower bar
	set_char_pos(ctx, start_xpos, BOX_UPPERBAR_YPOS+2);
	for(i=0;i<str_size;i++)
	{
		print_char(ctx,LOWER_HORIZONTAL_BAR_CHAR,0);
	}

	// Bottom right corner
	set_char_pos(ctx, start_xpos + (i-1), BOX_UPPERBAR_YPOS+2);
	print_char(ctx,LOWER_RIGHT_CORNER_CHAR,0);

	// Bottom left corner
	set_char_pos(ctx, start_xpos, BOX_UPPERBAR_YPOS+2);
	print_char(ctx,LOWER_LEFT_CORNER_CHAR,0);

	va_end( marker );

	return 0;
}