// info  nam="SAMPLE05B"  tit="画像回転"  dsc="JPEG画像の一括回転コピー"  pro=2

typedef struct {
  char  idir[512];
  char  odir[512];
  char  ffmt[64];
  UINT  ibgn;
  UINT  iend;
  REAL  rrot;
} INPDAT;
 
void CommandMain(HWND hwnd)
{ // 画像回転
  int i, re, cn = 0;
  HBUF rb;
  HDIB bm;
  char nam[64], cur[512];
  static INPDAT dat;
  static COLI ci[6] = {
    { STR(512), 48, "idir", "入力フォルダ名", },
    { STR(512), 48, "odir", "出力フォルダ名", },
    { STR(64),  24, "ffmt", "書式文字列", },
    { TID_U4B,   6, "ibgn", "開始番号", },
    { TID_U4B,   6, "iend", "終了番号", },
    { TID_F8B,   6, "rscl", "画像回転角度", },
  };
  static COLS cs = { ci, NELEM(ci) };
  static TBLI ti = { &cs, };

  strcpy(dat.idir, "C:\\Users\\S.Sorimachi\\Pictures\\DCIM\\117NIKON\\");
  strcpy(dat.odir, "C:\\Users\\S.Sorimachi\\Pictures\\TEST\\OUT03\\");
  strcpy(dat.ffmt, "DSCN%04d.JPG");
  dat.ibgn = 4635;
  dat.iend = 4636;
  dat.rrot = 90.0;
  rb = CreateRowBufX(&dat, &ti);
  re = EditRowDlgBox(hwnd, rb, "画像回転");
  DeleteRowBuf(rb);
  if (!re) return;
  BusyMsg(hwnd, "処理中...");
  get_working_path(cur, sizeof(cur));
  set_working_path(dat.idir);
  for (i = dat.ibgn; i <= dat.iend; i++) {
    sprintf(nam, dat.ffmt, i);
    if (file_exists(nam)) {
      bm = LoadJPG(NULL, nam); if (!bm) break;
      StatMsg(hwnd, format("処理中  %d", i));
      RotateDIB(bm, dat.rrot, 0);
      set_working_path(dat.odir);
      if (SaveJPG(bm, nam)) cn++;
      DeleteDIB(bm);
      set_working_path(dat.idir);
    }
  }
  set_working_path(cur);
  EndBusy(hwnd);
  OkBox(hwnd, format("%d 個のファイルを回転しました。", cn), NULL);
}
