Toshihiro Shimizu 890ddd
#include <stdio.h></stdio.h>
Toshihiro Shimizu 890ddd
#include "inforegion.h"
Toshihiro Shimizu 890ddd
#include "tnz4.h"
Toshihiro Shimizu 890ddd
/*---------------------------------------------------------------------------*/
Toshihiro Shimizu 890ddd
Shinya Kitaoka 12c444
#ifndef min
Shinya Kitaoka 120a6e
#define min(a, b) (((a) < (b)) ? (a) : (b))
Shinya Kitaoka 12c444
#endif
Shinya Kitaoka 12c444
#ifndef max
Shinya Kitaoka 120a6e
#define max(a, b) (((a) > (b)) ? (a) : (b))
Shinya Kitaoka 12c444
#endif
Shinya Kitaoka 12c444
Shinya Kitaoka 120a6e
void getInfoRegion(INFO_REGION *region, int x1_out, int y1_out, int x2_out,
Shinya Kitaoka 120a6e
                   int y2_out, int scale, int width_in, int height_in) {
Shinya Kitaoka 120a6e
  /*
Shinya Kitaoka 120a6e
*    I suffissi _in e _out sono relativi alle immagini di
Shinya Kitaoka 120a6e
*    input e output, cioe' all'immagine sorgente (input)
Shinya Kitaoka 120a6e
*    ca cui prendere (leggere) la regione voluta (output).
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  int x1_in, y1_in, x2_in, y2_in;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
#define SWAP(a, b)                                                             \
Shinya Kitaoka 120a6e
  {                                                                            \
Shinya Kitaoka 120a6e
    int tmp;                                                                   \
Shinya Kitaoka 120a6e
    tmp = a;                                                                   \
Shinya Kitaoka 120a6e
    a   = b;                                                                   \
Shinya Kitaoka 120a6e
    b   = tmp;                                                                 \
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Scambia le coordinate della regione da leggere se invertite */
Shinya Kitaoka 120a6e
  if (x1_out > x2_out) SWAP(x1_out, x2_out);
Shinya Kitaoka 120a6e
  if (y1_out > y2_out) SWAP(y1_out, y2_out);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifdef DEBUG
Shinya Kitaoka 120a6e
  /* Controllo della consistenza delle coordinate della regione */
Shinya Kitaoka 120a6e
  if (((x2_out - x1_out) < 0) || ((y2_out - y1_out) < 0))
Shinya Kitaoka 120a6e
    printf("warning: bad region coord.\n");
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  /* Copia delle coordinate della regione per region globale */
Shinya Kitaoka 120a6e
  region->x1 = x1_out;
Shinya Kitaoka 120a6e
  region->y1 = y1_out;
Shinya Kitaoka 120a6e
  region->x2 = x2_out;
Shinya Kitaoka 120a6e
  region->y2 = y2_out;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Imposta le dimensioni dell'immagine in output */
Shinya Kitaoka 120a6e
  if (scale <= 0) {
Shinya Kitaoka 120a6e
    printf("error: scale value negative or zero\n");
Shinya Kitaoka 120a6e
    return;
Shinya Kitaoka 120a6e
  } else {
Shinya Kitaoka 120a6e
    region->xsize = ((x2_out - x1_out + 1) - 1) / scale + 1;
Shinya Kitaoka 120a6e
    region->ysize = ((y2_out - y1_out + 1) - 1) / scale + 1;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Passo sull'asse delle y e delle x */
Shinya Kitaoka 120a6e
  region->step = scale;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Coordinate immagine sorgente */
Shinya Kitaoka 120a6e
  x1_in = 0;
Shinya Kitaoka 120a6e
  y1_in = 0;
Shinya Kitaoka 120a6e
  x2_in = width_in - 1;
Shinya Kitaoka 120a6e
  y2_in = height_in - 1;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Dimensioni immagine sorgente */
Shinya Kitaoka 120a6e
  region->lx_in = width_in;
Shinya Kitaoka 120a6e
  region->ly_in = height_in;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Numero di righe e colonne dell'immagine sorgente da scandire */
Shinya Kitaoka 120a6e
  region->scanNcol = region->xsize;
Shinya Kitaoka 120a6e
  region->scanNrow = region->ysize;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Coordinate all'interno dell'immagine sorgente, da cui deve
Shinya Kitaoka 120a6e
* partire la scansione.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  region->startScanRow = y1_out;
Shinya Kitaoka 120a6e
  region->startScanCol = x1_out - x1_in;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /*
Shinya Kitaoka 120a6e
* Questi offset sono relativi al buffer di uscita, nel caso
Shinya Kitaoka 120a6e
* in cui una parte della regione sfora rispetto all'immagine
Shinya Kitaoka 120a6e
* sorgente.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  region->x_offset = 0;
Shinya Kitaoka 120a6e
  region->y_offset = 0;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* La regione sfora sulla destra e sulla sinistra */
Shinya Kitaoka 120a6e
  if (x2_out > x2_in && x1_out < x1_in) {
Shinya Kitaoka 120a6e
    region->scanNcol     = width_in / scale;
Shinya Kitaoka 120a6e
    region->x_offset     = (x1_in - x1_out) / scale;
Shinya Kitaoka 120a6e
    region->startScanCol = 0;
Shinya Kitaoka 120a6e
  } else {
Shinya Kitaoka 120a6e
    /* La regione sfora solo sulla destra */
Shinya Kitaoka 120a6e
    if (x2_out > x2_in) {
Shinya Kitaoka 120a6e
      region->scanNcol = (x2_in - x1_out) / scale + 1;
Shinya Kitaoka 120a6e
      region->x_offset = 0;
Shinya Kitaoka 120a6e
    } else
Shinya Kitaoka 120a6e
        /* La regione sfora solo sulla sinistra */
Shinya Kitaoka 120a6e
        if (x1_out < x1_in) {
Shinya Kitaoka 120a6e
      region->x_offset     = (x1_in - x1_out) / scale;
Shinya Kitaoka 120a6e
      region->scanNcol     = (x2_out - x1_in) / scale + 1;
Shinya Kitaoka 120a6e
      region->startScanCol = 0;
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* La regione sfora in alto e in basso */
Shinya Kitaoka 120a6e
  if (y2_out > y2_in && y1_out < y1_in) {
Shinya Kitaoka 120a6e
    region->scanNrow     = height_in / scale;
Shinya Kitaoka 120a6e
    region->y_offset     = (y1_in - y1_out) / scale;
Shinya Kitaoka 120a6e
    region->startScanRow = 0;
Shinya Kitaoka 120a6e
  } else {
Shinya Kitaoka 120a6e
    /* La regione sfora solo in alto */
Shinya Kitaoka 120a6e
    if (y2_out > y2_in) {
Shinya Kitaoka 120a6e
      region->scanNrow = (y2_in - y1_out) / scale + 1;
Shinya Kitaoka 120a6e
      region->y_offset = 0;
Shinya Kitaoka 120a6e
    } else
Shinya Kitaoka 120a6e
        /* La regione sfora solo in basso */
Shinya Kitaoka 120a6e
        if (y1_out < y1_in) {
Shinya Kitaoka 120a6e
      region->scanNrow     = (y2_out - y1_in) / scale + 1;
Shinya Kitaoka 120a6e
      region->y_offset     = (y1_in - y1_out) / scale;
Shinya Kitaoka 120a6e
      region->startScanRow = 0;
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
  }
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*---------------------------------------------------------------------------*/
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
int get_info_region(EXT_INFO_REGION *region, int x1_out, int y1_out, int x2_out,
Shinya Kitaoka 120a6e
                    int y2_out, int scale, int width_in, int height_in,
Shinya Kitaoka 120a6e
                    int orientation) {
Shinya Kitaoka 120a6e
  /*
Shinya Kitaoka 120a6e
*    I suffissi _in e _out sono relativi alle immagini di
Shinya Kitaoka 120a6e
*    input e output, cioe' all'immagine sorgente (input)
Shinya Kitaoka 120a6e
*    ca cui prendere (leggere) la regione voluta (output).
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  int x1_in, y1_in, x2_in, y2_in;
Shinya Kitaoka 120a6e
  int appo, appoNcol, appoNrow;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
#define SWAP(a, b)                                                             \
Shinya Kitaoka 120a6e
  {                                                                            \
Shinya Kitaoka 120a6e
    int tmp;                                                                   \
Shinya Kitaoka 120a6e
    tmp = a;                                                                   \
Shinya Kitaoka 120a6e
    a   = b;                                                                   \
Shinya Kitaoka 120a6e
    b   = tmp;                                                                 \
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Scambia le coordinate della regione da leggere se invertite */
Shinya Kitaoka 120a6e
  if (x1_out > x2_out) SWAP(x1_out, x2_out);
Shinya Kitaoka 120a6e
  if (y1_out > y2_out) SWAP(y1_out, y2_out);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Controllo della consistenza delle coordinate della regione */
Shinya Kitaoka 120a6e
  if (((x2_out - x1_out) < 1) || ((y2_out - y1_out) < 1)) {
Shinya Kitaoka 120a6e
    printf("error: bad image read region coordinates\n");
Shinya Kitaoka 120a6e
    return FALSE;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Copia delle coordinate della regione per region globale */
Shinya Kitaoka 120a6e
  region->x1 = x1_out;
Shinya Kitaoka 120a6e
  region->y1 = y1_out;
Shinya Kitaoka 120a6e
  region->x2 = x2_out;
Shinya Kitaoka 120a6e
  region->y2 = y2_out;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Imposta le dimensioni dell'immagine in output */
Shinya Kitaoka 120a6e
  if (scale <= 0) {
Shinya Kitaoka 120a6e
    printf("error: scale value negative or zero\n");
Shinya Kitaoka 120a6e
    return FALSE;
Shinya Kitaoka 120a6e
  } else {
Shinya Kitaoka 120a6e
    region->xsize = (x2_out - x1_out) / scale + 1;
Shinya Kitaoka 120a6e
    region->ysize = (y2_out - y1_out) / scale + 1;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Passo sull'asse delle y e delle x */
Shinya Kitaoka 120a6e
  region->step = scale;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Coordinate immagine sorgente */
Shinya Kitaoka 120a6e
  x1_in = 0;
Shinya Kitaoka 120a6e
  y1_in = 0;
Shinya Kitaoka 120a6e
  x2_in = width_in - 1;
Shinya Kitaoka 120a6e
  y2_in = height_in - 1;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Dimensioni immagine sorgente */
Shinya Kitaoka 120a6e
  region->lx_in = width_in;
Shinya Kitaoka 120a6e
  region->ly_in = height_in;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Numero di righe e colonne dell'immagine sorgente da scandire */
Shinya Kitaoka 120a6e
  region->scanNcol = region->xsize;
Shinya Kitaoka 120a6e
  region->scanNrow = region->ysize;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* Coordinate all'interno dell'immagine sorgente, da cui deve
Shinya Kitaoka 120a6e
* partire la scansione.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  region->startScanRow = y1_out;
Shinya Kitaoka 120a6e
  region->startScanCol = x1_out;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /*
Shinya Kitaoka 120a6e
* Questi offset sono relativi al buffer di uscita, nel caso
Shinya Kitaoka 120a6e
* in cui una parte della regione sfora rispetto all'immagine
Shinya Kitaoka 120a6e
* sorgente.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  region->x_offset = 0;
Shinya Kitaoka 120a6e
  region->y_offset = 0;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* La regione sfora sulla destra e sulla sinistra */
Shinya Kitaoka 120a6e
  if (x2_out > x2_in && x1_out < x1_in) {
Shinya Kitaoka 120a6e
    region->scanNcol     = (width_in - 1) / scale /* +1 */;
Shinya Kitaoka 120a6e
    region->x_offset     = (x1_in - x1_out + scale - 1) / scale;
Shinya Kitaoka 120a6e
    region->startScanCol = 0;
Shinya Kitaoka 120a6e
  } else {
Shinya Kitaoka 120a6e
    /* La regione sfora solo sulla destra */
Shinya Kitaoka 120a6e
    if (x2_out > x2_in) {
Shinya Kitaoka 120a6e
      region->scanNcol = (x2_in - x1_out) / scale /* +1 */;
Shinya Kitaoka 120a6e
      region->x_offset = 0;
Shinya Kitaoka 120a6e
    } else
Shinya Kitaoka 120a6e
        /* La regione sfora solo sulla sinistra */
Shinya Kitaoka 120a6e
        if (x1_out < x1_in) {
Shinya Kitaoka 120a6e
      region->scanNcol     = (x2_out - x1_in) / scale /* +1 */;
Shinya Kitaoka 120a6e
      region->x_offset     = (x1_in - x1_out + scale - 1) / scale;
Shinya Kitaoka 120a6e
      region->startScanCol = 0;
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /* La regione sfora in alto e in basso */
Shinya Kitaoka 120a6e
  if (y2_out > y2_in && y1_out < y1_in) {
Shinya Kitaoka 120a6e
    region->scanNrow     = (height_in - 1) / scale /* +1 */;
Shinya Kitaoka 120a6e
    region->y_offset     = (y1_in - y1_out + scale - 1) / scale;
Shinya Kitaoka 120a6e
    region->startScanRow = 0;
Shinya Kitaoka 120a6e
  } else {
Shinya Kitaoka 120a6e
    /* La regione sfora solo in alto */
Shinya Kitaoka 120a6e
    if (y2_out > y2_in) {
Shinya Kitaoka 120a6e
      region->scanNrow = (y2_in - y1_out) / scale /* +1 */;
Shinya Kitaoka 120a6e
      region->y_offset = 0;
Shinya Kitaoka 120a6e
    } else
Shinya Kitaoka 120a6e
        /* La regione sfora solo in basso */
Shinya Kitaoka 120a6e
        if (y1_out < y1_in) {
Shinya Kitaoka 120a6e
      region->scanNrow     = (y2_out - y1_in) / scale /* +1 */;
Shinya Kitaoka 120a6e
      region->y_offset     = (y1_in - y1_out + scale - 1) / scale;
Shinya Kitaoka 120a6e
      region->startScanRow = 0;
Shinya Kitaoka 120a6e
    }
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  appoNcol = min((region->scanNcol * scale), width_in);
Shinya Kitaoka 120a6e
  appoNrow = min((region->scanNrow * scale), height_in);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  switch (orientation) {
Shinya Kitaoka 120a6e
  case TNZ_TOPLEFT:
Shinya Kitaoka 120a6e
    region->buf_inc = 1;
Shinya Kitaoka 120a6e
    region->y_offset += region->scanNrow - 1;
Shinya Kitaoka 120a6e
    region->verso_x = 0;
Shinya Kitaoka 120a6e
    region->verso_y = -1;
Shinya Kitaoka 120a6e
    region->sxpix   = region->startScanCol;
Shinya Kitaoka 120a6e
    region->sypix   = height_in - region->startScanRow - appoNrow;
Shinya Kitaoka 120a6e
    region->sypix   = max(0, region->sypix);
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_TOPRIGHT:
Shinya Kitaoka 120a6e
    region->buf_inc = -1;
Shinya Kitaoka 120a6e
    region->y_offset += region->scanNrow - 1;
Shinya Kitaoka 120a6e
    region->x_offset += region->scanNcol - 1;
Shinya Kitaoka 120a6e
    region->verso_x = 0;
Shinya Kitaoka 120a6e
    region->verso_y = -1;
Shinya Kitaoka 120a6e
    region->sxpix   = width_in - region->startScanCol - appoNcol;
Shinya Kitaoka 120a6e
    region->sypix   = height_in - region->startScanRow - appoNrow;
Shinya Kitaoka 120a6e
    region->sxpix   = max(0, region->sxpix);
Shinya Kitaoka 120a6e
    region->sypix   = max(0, region->sypix);
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_BOTRIGHT:
Shinya Kitaoka 120a6e
    region->buf_inc = -1;
Shinya Kitaoka 120a6e
    region->x_offset += region->scanNcol - 1;
Shinya Kitaoka 120a6e
    region->verso_x = 0;
Shinya Kitaoka 120a6e
    region->verso_y = 1;
Shinya Kitaoka 120a6e
    region->sxpix   = width_in - region->startScanCol - appoNcol;
Shinya Kitaoka 120a6e
    region->sypix   = region->startScanRow;
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_BOTLEFT:
Shinya Kitaoka 120a6e
    region->buf_inc = 1;
Shinya Kitaoka 120a6e
    region->verso_x = 0;
Shinya Kitaoka 120a6e
    region->verso_y = 1;
Shinya Kitaoka 120a6e
    region->sxpix   = region->startScanCol;
Shinya Kitaoka 120a6e
    region->sypix   = region->startScanRow;
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_LEFTOP:
Shinya Kitaoka 120a6e
    region->buf_inc = -region->xsize;
Shinya Kitaoka 120a6e
    region->y_offset += region->scanNrow - 1;
Shinya Kitaoka 120a6e
    region->verso_x = 1;
Shinya Kitaoka 120a6e
    region->verso_y = 0;
Shinya Kitaoka 120a6e
    region->sxpix   = height_in - region->startScanRow - appoNrow;
Shinya Kitaoka 120a6e
    region->sypix   = region->startScanCol;
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_RIGHTOP:
Shinya Kitaoka 120a6e
    region->buf_inc = -region->xsize;
Shinya Kitaoka 120a6e
    region->y_offset += region->scanNrow - 1;
Shinya Kitaoka 120a6e
    region->x_offset += region->scanNcol - 1;
Shinya Kitaoka 120a6e
    region->verso_x = -1;
Shinya Kitaoka 120a6e
    region->verso_y = 0;
Shinya Kitaoka 120a6e
    if ((region->sxpix = height_in - region->startScanRow - appoNrow) < 0)
Shinya Kitaoka 120a6e
      region->sxpix = 0;
Shinya Kitaoka 120a6e
    if ((region->sypix = width_in - region->startScanCol - appoNcol) < 0)
Shinya Kitaoka 120a6e
      region->sypix = 0;
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_RIGHTBOT:
Shinya Kitaoka 120a6e
    region->buf_inc = region->xsize;
Shinya Kitaoka 120a6e
    region->x_offset += region->scanNcol - 1;
Shinya Kitaoka 120a6e
    region->verso_x = -1;
Shinya Kitaoka 120a6e
    region->verso_y = 0;
Shinya Kitaoka 120a6e
    region->sxpix   = region->startScanRow;
Shinya Kitaoka 120a6e
    region->sypix   = width_in - region->startScanCol - appoNcol;
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  case TNZ_LEFTBOT:
Shinya Kitaoka 120a6e
    region->buf_inc = region->xsize;
Shinya Kitaoka 120a6e
    region->verso_x = 1;
Shinya Kitaoka 120a6e
    region->verso_y = 0;
Shinya Kitaoka 120a6e
    region->sxpix   = region->startScanRow;
Shinya Kitaoka 120a6e
    region->sypix   = region->startScanCol;
Shinya Kitaoka 120a6e
    break;
Shinya Kitaoka 120a6e
  default:
Shinya Kitaoka 120a6e
    printf("error: bad orientation type\n");
Shinya Kitaoka 120a6e
    return FALSE;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
  /*  Se le righe sono verticali, allora ... */
Shinya Kitaoka 120a6e
  if (orientation > 4) {
Shinya Kitaoka 120a6e
    appo             = region->lx_in;
Shinya Kitaoka 120a6e
    region->lx_in    = region->ly_in;
Shinya Kitaoka 120a6e
    region->ly_in    = appo;
Shinya Kitaoka 120a6e
    appo             = region->scanNcol;
Shinya Kitaoka 120a6e
    region->scanNcol = region->scanNrow;
Shinya Kitaoka 120a6e
    region->scanNrow = appo;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
  return TRUE;
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/*-------------------------------------------------------------------------*/
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
void print_info_region(EXT_INFO_REGION *region) {
Shinya Kitaoka 120a6e
  if (!region) return;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  printf("IMAGE INPUT:\n");
Shinya Kitaoka 120a6e
  printf(" size              (lx_in, ly_in)........ (%d,%d)\n", region->lx_in,
Shinya Kitaoka 120a6e
         region->ly_in);
Shinya Kitaoka 120a6e
  printf(" start offset      (sScanCol, sScanRow).. (%d,%d)\n",
Shinya Kitaoka 120a6e
         region->startScanCol, region->startScanRow);
Shinya Kitaoka 120a6e
  printf(" region size       (scanNcol, scanNrow).. (%d,%d)\n",
Shinya Kitaoka 120a6e
         region->scanNcol, region->scanNrow);
Shinya Kitaoka 120a6e
  printf(" bottom-left       (sxpix, sypix)........ (%d,%d)\n", region->sxpix,
Shinya Kitaoka 120a6e
         region->sypix);
Shinya Kitaoka 120a6e
  printf(" scale             (step)................ (   %d)\n", region->step);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  printf("IMAGE OUTPUT:\n");
Shinya Kitaoka 120a6e
  printf(" size              (xsize, ysize)........ (%d,%d)\n", region->xsize,
Shinya Kitaoka 120a6e
         region->ysize);
Shinya Kitaoka 120a6e
  printf(" start offset      (x_offset, y_offset).. (%d,%d)\n",
Shinya Kitaoka 120a6e
         region->x_offset, region->y_offset);
Shinya Kitaoka 120a6e
  printf(" verso             (verso_x, verso_y).... (%d,%d)\n", region->verso_x,
Shinya Kitaoka 120a6e
         region->verso_y);
Shinya Kitaoka 120a6e
  printf(" buffer increment  (buf_inc)............. (   %d)\n",
Shinya Kitaoka 120a6e
         region->buf_inc);
Toshihiro Shimizu 890ddd
}