Add indication of offending cell in C64 formats

This commit is contained in:
Adrian Castravete 2015-03-02 13:44:45 +02:00 committed by Adrian Castravete
parent 48a8a79746
commit 7059271965
3 changed files with 24 additions and 3 deletions

View File

@ -2831,9 +2831,8 @@ int Save_C64_hires(T_IO_Context *context, char *filename, byte saveWhat, byte lo
numcolors=Count_used_colors_area(cusage,cx*8,cy*8,8,8);
if (numcolors>2)
{
Warning_message("More than 2 colors in 8x8 pixels");
Warning_with_format("More than 2 colors\nin 8x8 pixel cell: (%d, %d)\nRect: (%d, %d, %d, %d)", cx, cy, cx * 8, cy * 8, cx * 8 + 7, cy * 8 + 7);
// TODO here we should hilite the offending block
printf("\nerror at %dx%d (%d colors)\n",cx*8,cy*8,numcolors);
return 1;
}
c1 = 0; c2 = 0;
@ -3006,7 +3005,7 @@ int Save_C64_multi(T_IO_Context *context, char *filename, byte saveWhat, byte lo
numcolors=Count_used_colors_area(cusage,cx*4,cy*8,4,8);
if(numcolors>4)
{
Warning_message("More than 4 colors in 4x8");
Warning_with_format("More than 4 colors\nin 4x8 pixel cell: (%d, %d)\nRect: (%d, %d, %d, %d)", cx, cy, cx * 4, cy * 8, cx * 4 + 3, cy * 8 + 7);
// TODO hilite offending block
return 1;
}

View File

@ -25,6 +25,7 @@
*/
#include <math.h>
#include <stdarg.h> // va_args ...
#include <stdlib.h> // atoi()
#include <string.h> // strncpy() strlen()
@ -1183,6 +1184,26 @@ void Warning_message(char * message)
Display_cursor();
}
/// Window that shows a warning message and waits for a click on the OK button
/// This has the added advantage of supporting the printf interface.
void Warning_with_format(const char *template, ...) {
va_list arg_ptr;
char *message;
message = malloc(sizeof(char) * 1024); // a maximum of 1 KiB of complete message.
if (message) {
va_start(arg_ptr, template);
vsprintf(message, template, arg_ptr);
//Warning_message(message);
Verbose_message("Warning", message);
va_end(arg_ptr);
free(message);
} else {
//Warning_message(template);
Verbose_message("Warning", template);
}
}
/// Window that shows a big message (up to 35x13), and waits for a click on OK.
/// On call: Cursor must be displayed
/// On exit: Cursor is displayed

View File

@ -76,6 +76,7 @@ void Print_counter(short x,short y,const char * str,byte text_color,byte backgro
byte Confirmation_box(char * message);
void Warning_message(char * message);
void Warning_with_format(const char * message, ...);
void Verbose_message(const char * caption, const char * message);
int Requester_window(char* message, int initial_value);