Example #1
0
/*
 * Xboard - level command
 * Arguments are three numbers, or four numbers with a colon between
 * the two in the middle:
 *
 *  level 40 5 0
 *
 * or
 *
 *  level 20 1:40 2
 */
static void
cmd_level(void)
{
    unsigned mps, base, inc;
    char *base_str;
    char *base_token;
    char *lasts;
    long long base_minutes;
    long long base_seconds;

    mps = get_uint(0, 1024);
    base_str = get_str_arg();
    inc = get_uint(0, 1024);

    base_token = xstrtok_r(base_str, ":", &lasts);
    base_minutes = get_num_arg(base_token);
    if (base_minutes < 0 || base_minutes > 8192)
        param_error();

    if ((base_token = xstrtok_r(NULL, ":", &lasts)) != NULL)
        base_seconds = get_num_arg(base_token);
    else
        base_seconds = 0;

    if (base_minutes < 0 || base_minutes > 59)
        param_error();

    if (xstrtok_r(NULL, ":", &lasts) != NULL)
        param_error();

    base = ((unsigned)base_minutes) * 60 + (unsigned)base_seconds;
    set_moves_left_in_time(mps);
    set_computer_clock(base * 100);
    set_time_inc(inc * 100);
}
Example #2
0
static int
get_int(int min, int max)
{
    long long n;

    n = get_num_arg(get_str_arg());
    if (n < (long long)min) {
        (void) fprintf(stderr, "Number too low: %lld\n", n);
        param_error();
    }
    if (n > (long long)max) {
        (void) fprintf(stderr, "Number too high: %lld\n", n);
        param_error();
    }
    return (int)n;
}
Example #3
0
static unsigned
get_uint(unsigned min, unsigned max)
{
    long long n;

    n = get_num_arg(get_str_arg());
    if (n < (long long)min) {
        (void) fprintf(stderr, "Number too low: %lld\n", n);
        param_error();
    }
    if (n > (long long)max) {
        (void) fprintf(stderr, "Number too high: %lld\n", n);
        param_error();
    }
    return (unsigned)n;
}
Example #4
0
int main(int argc, char **argv)
{
  bf_t *bf_desc_font;
  bf_t *bf;
  char *bdf_filename = NULL;
  int is_verbose = 0;
  char *map_str ="*";
  char *desc_font_str = "";
  unsigned y;
  
  argv++;
  /*
  if ( *argv == NULL )
  {
    help();
    exit(1);
  }
  */
  for(;;)
  {
    if ( *argv == NULL )
      break;
    if ( is_arg(&argv, 'h') != 0 )
    {
      help();
      exit(1);
    }
    else if ( is_arg(&argv, 'v') != 0 )
    {
      is_verbose = 1;
    }
    else if ( is_arg(&argv, 'a') != 0 )
    {
      font_picture_extra_info = 1;
    }
    else if ( is_arg(&argv, 't') != 0 )
    {
      font_picture_test_string = 1;
    }
    else if ( is_arg(&argv, 'r') != 0 )
    {
      runtime_test = 1;
    }
    else if ( get_num_arg(&argv, 'b', &build_bbx_mode) != 0 )
    {
    }
    else if ( get_num_arg(&argv, 'f', &font_format) != 0 )
    {
    }
    else if ( get_num_arg(&argv, 'l', &left_margin) != 0 )
    {
    }
    else if ( get_str_arg(&argv, 'd', &desc_font_str) != 0 )
    {      
    }
    else if ( get_str_arg(&argv, 'o', &c_filename) != 0 )
    {      
    }
    else if ( get_str_arg(&argv, 'n', &target_fontname) != 0 )
    {      
    }
    else if ( get_str_arg(&argv, 'm', &map_str) != 0 )
    {      
    }
    else
    {
      bdf_filename = *argv;
      argv++;
    }
  }
  
  if ( bdf_filename  == NULL )
  {
    help();
    exit(1);
  }

  bf_desc_font = NULL;
  if ( desc_font_str[0] != '\0' )
  {
    bf_desc_font = bf_OpenFromFile(desc_font_str, 0, BDF_BBX_MODE_MINIMAL, "*", 0);	/* assume format 0 for description */
    if ( bf_desc_font == NULL )
    {
      exit(1);
    }
  }

  if ( font_format == 1 )
  {
    build_bbx_mode = BDF_BBX_MODE_M8;
    /* issue the following log message later, when there is a valid bf object */
    /* bf_Log(bf, "Font mode 1: BBX mode set to 3"); */
  }
  
  bf = bf_OpenFromFile(bdf_filename, is_verbose, build_bbx_mode, map_str, font_format);
  
  if ( bf == NULL )
  {
    exit(1);
  }

  if ( font_format == 1 )
  {
    /* now generate the log message */
    bf_Log(bf, "Note: For font format 1 BBX mode has been set to 3");
  }

  if ( bf_desc_font != NULL )
  {
    tga_init(1024, 600);
    y = tga_draw_font(0, bdf_filename, bf_desc_font, bf);
    
    if ( runtime_test != 0 )
    {
      long i;
      clock_t c = clock();
      fd_t fd;
      fd_init(&fd);
      fd_set_font(&fd, bf->target_data);
      for( i = 0; i < 10000; i++ )
	fd_draw_string(&fd, left_margin, y, "Woven silk pyjamas exchanged for blue quartz.");
      bf_Log(bf, "Runtime test: %.2lf sec", (double)(clock()-c)/(double)CLOCKS_PER_SEC);
    }
    
    tga_save("bdf.tga");
  }
  
  
  if ( c_filename != NULL )
  {
    /* write the encoded data in bf->target_data */
    if ( font_format == 0 )
    {
      bf_WriteUCGCByFilename(bf, c_filename, target_fontname, "  ");
    }
    else
    {
      bf_WriteU8G2CByFilename(bf, c_filename, target_fontname, "  ");
    }
  }

  
  bf_Close(bf);
  return 0;
}