34    int  i, linebyte, databyte;
 
   44    size_t ret = fread(&rhd, hd.
bsize, 1, fp);
 
   79    if (databyte==linebyte) {
 
   80        ret = fread(buf, hd.
lsize, 1, fp);
 
   88        for (i=0; i<hd.
ysize; i++) {
 
   89            ret = fread(buf, databyte, 1, fp);
 
   90            if (ret>0) ret = fread(null, linebyte - databyte, 1, fp);
 
  102        for(i=0; i<hd.
xsize*hd.
ysize; i++) wptr[i] = ntohs(wptr[i]);
 
 
  124    int  i, j, k, l, linebyte, databyte, depth, lsize;
 
  125    uByte null=0x00, *ptr, *buf;
 
  133        for (u=0; u<hd->
lsize; u++) ptr[u] = hd->
grptr[u];
 
  139            if (obit==8) depth = 8;
 
  143            buf = (
uByte*)malloc(lsize);
 
  145            memset(buf, 0, lsize);
 
  151                    max = 
Max(max, wp[i]);
 
  154                    buf[i] = 255*wp[i]/max;
 
  160                    buf[k++] = hd->
grptr[l++];
 
  161                    buf[k++] = hd->
grptr[l++];
 
  172        databyte = hd->
xsize*depth/8;
 
  173        linebyte = lsize/hd->
ysize;
 
  176            lsize = linebyte*hd->
ysize;
 
  188        ptr = (
uByte*)malloc(lsize);
 
  190            if (hd->
depth==16) free(buf);
 
  193        memset(ptr, 0, lsize);
 
  196        for (i=0 ; i<hd->
ysize; i++) {
 
  197            for (j=0; j<databyte; j++)          ptr[k++] = buf[l++];
 
  198            for (j=0; j<linebyte-databyte; j++) ptr[k++] = null;
 
  201        if (hd->
depth==16) free(buf);
 
  205    fwrite(&shd, 
sizeof(
RasHead), 1, fp);
 
  206    fwrite(ptr, lsize, 1, fp);
 
 
  260    size_t ret = fread((
void*)hd.
buf, hd.
bsize, 1, fp);
 
  268    if (hd.
zsize>=10 && cnt) {
 
  278    if (hd.
grptr==NULL) {
 
  286    fseek(fp, hd.
bsize, 0);
 
  298        for (
int i=0; i<hd.
zsize; i++) {
 
  299            ret = fread(hd.
grptr+i*psize, psize, 1, fp);
 
  323            for (
int i=0; i<hd.
xsize*hd.
ysize*hd.
zsize; i++) wptr[i] = ntohs(wptr[i]);
 
  327    if (counter!=NULL) counter->
PutFill();
 
 
  356    memset(&hd, 0, 
sizeof(
CmnHead));
 
  364    if ((fp=fopen(fn,
"rb"))==NULL) {
 
 
  400    ret = fread((
void*)&chd, hd.
bsize, 1, fp);
 
  415    if (fsz>0 && fsz!=hd.
bsize+hd.
lsize) 
return hd;
 
  426    if (hd.
grptr==NULL) {
 
  434    fseek(fp, hd.
bsize, 0);
 
  443        for (i=0; i<hd.
xsize*hd.
ysize; i++) wptr[i] = ntohs(wptr[i]);
 
 
  471int  jbxl::dicomHeader(FILE* fp, 
int fsize, 
int* dsize, 
int* xsize, 
int* ysize, 
int* depth, 
double* rzxy)
 
  473    int   i, j, sz, rp, ef;
 
  475    int   xs = 0, ys = 0, dp = 0;
 
  481    uWord  cn[2] __attribute__((may_alias));
 
  489    if (rzxy!=NULL) *rzxy = 0.0;
 
  495    rp = (int)fread(&dt, 
sizeof(
uWord), 1, fp);
 
  496    while(!feof(fp) && ef!=
ON) {
 
  499            rp += (int)fread(&dt, 
sizeof(
uWord), 1, fp);
 
  502                rp += (int)fread(&cn, 
sizeof(
uWord), 2, fp);
 
  505                    rp += (int)fread(&cn, 
sizeof(
uWord), 2, fp);
 
  508                int* sizep = (
int*)cn;
 
  510                hsize = rp*
sizeof(
uWord);
 
  511                if (fsize>=*dsize+hsize) {      
 
  517        rp += (int)fread(&dt, 
sizeof(
uWord), 1, fp);
 
  522    sz = rp*
sizeof(
uWord);
 
  523    wp = (
uWord*)malloc(sz);
 
  530    size_t ret = fread(wp, sz, 1, fp);
 
  535    for (i=0; i<sz/2-3; i++) {
 
  544                memset(rx, 0, 
LNAME);
 
  545                memset(ry, 0, 
LNAME);
 
  548                else                       ln = *(
int*)&wp[i+2];
 
  551                    bp = (
uByte*)&wp[i+4];
 
  553                    while (j<ln-1 && bp[j]!=
'\\') {
 
  560                    while (j<ln-1 && bp[j]!=
' ') {
 
  564                    if (!strcmp(rx, ry)) {
 
  573                else                       ln = *(
int*)&wp[i+2];
 
  575                    xs = (int)*(
sWord*)&wp[i+4];
 
  578                    xs = *(
int*)&wp[i+4];
 
  585                else                       ln = *(
int*)&wp[i+2];
 
  587                    ys = (int)*(
sWord*)&wp[i+4];
 
  590                    ys = *(
int*)&wp[i+4];
 
  597                else                       ln = *(
int*)&wp[i+2];
 
  599                    dp = (int)*(
sWord*)&wp[i+4];
 
  602                    dp = *(
int*)&wp[i+4];
 
  609    if (rzxy!=NULL)  *rzxy  = rz;
 
  610    if (xsize!=NULL) *xsize = xs;
 
  611    if (ysize!=NULL) *ysize = ys;
 
  612    if (depth!=NULL) *depth = dp;
 
 
  642    if ((fp=fopen(fn,
"r"))==NULL) {
 
 
  657    int   xsize, ysize, depth;
 
  663    sz = 
dicomHeader(fp, fsize, &dsize, &xsize, &ysize, &depth, &rzxy);
 
  669    if (dsize!=xsize*ysize*((depth+7)/8)) {
 
  674    if ((depth+7)/8!=2) {
 
  679    vp.
set(xsize, ysize, 1, 0, 0, rzxy);
 
  682    size_t ret = fread(vp.
gp, dsize, 1, fp);
 
 
  714    memset(&hd, 0, 
sizeof(
CmnHead));
 
  734    if ((fp=fopen(fn,
"rb"))==NULL) {
 
  745    size_t ret = fread(&hd.
entry, hsz, 1, fp);
 
  770        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize) + 4 ) hsz = 36;     
 
  771        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize) + 16) hsz = 48;     
 
  773        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize)) {  
 
  787                ret = fread(hd.
buf, hd.
bsize, 1, fp);
 
  801                PRINT_MESG(
"JBXL::readXHead: ファイルサイズ fsz   = %d\n", fsz);
 
  811    memset(&hd, 0, 
sizeof(
CmnHead));
 
  819    ret = fread(&cthd, csz, 1, fp);
 
  844        memcpy(hd.
buf, &cthd, csz);
 
  849            PRINT_MESG(
"JBXL::readXHead: ファイルサイズ fsz   = %d\n", fsz);
 
  858    memset(&hd, 0, 
sizeof(
CmnHead));
 
  863    int   ls, sz, dsize, xsize, ysize, depth;
 
  866    sz = 
dicomHeader(fp, fsz, &dsize, &xsize, &ysize, &depth, &rzxy);
 
  867    ls = xsize*ysize*((depth+7)/8);
 
  868    if (sz>0 && dsize==ls) {
 
  880        memset(pcthd, 0, hd.
bsize);
 
  921    if (isJPEGHeader(buf)) {
 
  936    memset(&hd, 0, 
sizeof(
CmnHead));
 
 
  979    bool  no_ntoh = 
false;
 
  983    memset(&hd, 0, 
sizeof(
CmnHead));
 
  992    if ((fp=fopen(fn,
"rb"))==NULL) {
 
 1015                if (hd.
depth==16 && !no_ntoh) {
 
 1018                        wptr[i] = ntohs(wptr[i]);
 
 1033    size_t ret = fread(&hd.
entry, hsz, 1, fp);
 
 1055        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize) + 4 ) hsz = 36;     
 
 1056        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize) + 16) hsz = 48;     
 
 1058        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize)) {
 
 1063            if (hd.
zsize >= 10 && cnt) {
 
 1065                if (counter != NULL) {
 
 1087                size_t ret = fread(hd.
buf, hd.
bsize, 1, fp);
 
 1100            if (counter!=NULL) counter->
PutFill();
 
 1106        if (counter==NULL) {
 
 1107            size_t ret = fread(hd.
grptr, hd.
lsize, 1, fp);
 
 1117            for (
int i=0; i<hd.
zsize; i++) {
 
 1118                size_t ret = fread(hd.
grptr+i*psize, psize, 1, fp);
 
 1140        if (hd.
depth==16 && !no_ntoh) {
 
 1143                wptr[i] = ntohs(wptr[i]);
 
 1147        if (counter!=NULL) counter->
PutFill();
 
 1151    memset(&hd, 0, 
sizeof(
CmnHead));
 
 1162    memset(&hd, 0, 
sizeof(
CmnHead));
 
 1181        memset(pcthd, 0, hd.
bsize);
 
 1200                wptr[i] = ntohs(wptr[i]);
 
 1241#ifdef  ENABLE_JPEGLIB 
 1243    if (isJPEGHeader(buf)) {
 
 1245        JPEGImage jpg = readJPEGData(fp);
 
 1246        hd = JPEGImage2CmnHead(jpg);
 
 1262    memset(&hd, 0, 
sizeof(
CmnHead));
 
 1265    if (hd.
grptr==NULL) {
 
 1271    memset(hd.
grptr, 0, fsz);
 
 1274    ret = fread(hd.
grptr, fsz, 1, fp);
 
 
 1318    bool  no_ntoh = 
false;
 
 1322    memset(&hd, 0, 
sizeof(
CmnHead));
 
 1326    if (chd==NULL) 
return hd;
 
 1334    if ((fp=fopen(fn,
"rb"))==NULL) {
 
 1343    kind = chd->
kind & 0x00ff;
 
 1354            if (hd.
depth==16 && !no_ntoh) {
 
 1357                    wptr[i] = ntohs(wptr[i]);
 
 1379            memset(pcthd, 0, hd.
bsize);
 
 1398                    wptr[i] = ntohs(wptr[i]);
 
 1416#ifdef  ENABLE_JPEGLIB 
 1420        JPEGImage jpg = readJPEGData(fp);
 
 1421        hd = JPEGImage2CmnHead(jpg);
 
 1438        size_t ret = fread(&hd.
entry, hsz, 1, fp);
 
 1450        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize) + 4 ) hsz = 36;     
 
 1451        if (fsz == (
int)(hsz + hd.
bsize + hd.
lsize) + 16) hsz = 48;     
 
 1454        if (hd.
zsize>=10 && cnt) {
 
 1456            if (counter!=NULL) {
 
 1479            ret = fread(hd.
buf, hd.
bsize, 1, fp);
 
 1491            if (counter!=NULL) counter->
PutFill();
 
 1495            if (counter==NULL) {
 
 1506                for (
int i=0; i<hd.
zsize; i++) {
 
 1507                    ret = fread(hd.
grptr+i*psize, psize, 1, fp);
 
 1529            if (hd.
depth==16 && !no_ntoh) {
 
 1532                    wptr[i] = ntohs(wptr[i]);
 
 1536            if (counter!=NULL) counter->
PutFill();
 
 1541        PRINT_MESG(
"JBXL::readCmnHeadFile: 未知のデータ形式が指定された.(%04x, %04x)\n", chd->
kind, (
uWord)kind);
 
 
 1581    int  kind = hd->
kind & 0x0ff;
 
 1586    if ((fp=fopen(fn,
"wb"))==NULL) {
 
 1587        PRINT_MESG(
"JBXL::writeCmnHeadFile: ERROR:ファイルオープン失敗\n");
 
 1595    if (csize<0) 
return (
int)csize;
 
 1614        PRINT_MESG(
"JBXL::writeCmnHeadFile: ERROR:書き込みファイルのサイズが合わない %d != %d\n", psize, fsz);
 
 1619    if ((fp=fopen(fn,
"rb"))==NULL) {
 
 1620        PRINT_MESG(
"JBXL::writeCmnHeadFile: ERROR:ファイル検査:再オープン失敗\n");
 
 1628        PRINT_MESG(
"JBXL::writeCmnHeadFile: ERROR:ファイルヘッダ検査:ヘッダ異常\n");
 
 1633        PRINT_MESG(
"JBXL::writeCmnHeadFile: ERROR:ファイルヘッダ検査:ヘッダ異常\n");
 
 
 1674    int kind = hd->
kind & 0x00ff;
 
 1685#ifdef  ENABLE_JPEGLIB 
 1689        JPEGImage jpg = CmnHead2JPEGImage(*hd);
 
 1690        csize = writeJPEGData(fp, &jpg, 100);
 
 1719    memset(ptr, 0, hd->
lsize);
 
 1724            PRINT_MESG(
"JBXL::writeCmnHeadData: CTデータ\n");
 
 1725            PRINT_MESG(
"JBXL::writeCmnHeadData: ヘッダバッファ bsize = %d\n", hd->
bsize);
 
 1748                for (j=0; j<hd->
depth/8; j++) ptr[k++] = 0x00;
 
 1749                for (j=hd->
depth/8; j<2; j++) ptr[k++] = hd->
grptr[l++];
 
 1752        else if (hd->
depth==16) {
 
 1754                for (j=0; j<2; j++) ptr[k++] = hd->
grptr[l++];
 
 1759                for (j=0; j<2; j++) ptr[k++] = hd->
grptr[l++];
 
 1760                l += (hd->
depth)/8 - 2;
 
 1765        PRINT_MESG(
"JBXL::writeCmnHeadData: サポートしていないヘッダタイプ %d\n", hd->
kind);
 
 1776        if (hd->
zsize>=10 && cnt) {
 
 1778            if (counter!=NULL) {
 
 1789        fwrite(&cmd.
entry, csize, 1, fp);
 
 1793    fwrite(&chd, 
sizeof(
CTHead), 1, fp);
 
 1799    if (counter==NULL) {
 
 1800        fwrite(ptr, hd->
lsize, 1, fp);
 
 1804        for (i=0; i<hd->
zsize; i++) {
 
 1805            fseek(fp, csize, 0);
 
 1806            fwrite(ptr+i*psize, psize, 1, fp);
 
 1819    if (counter!=NULL) counter->
PutFill();
 
 
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
 
Buffer read_Buffer_data(FILE *fp, int sz)
ファイルポインタ fp から szバイトをBuffer型変数に読み込む.
 
virtual void StepIt(int n=1)
カウンタのメモリを増やす
 
virtual void SetMax(int m)
カウンタの最大値(最終目標)を設定
 
virtual void PutFill()
取り敢えずの目標(最短目標)までカウンタを進める.
 
virtual bool isCanceled()
カウンタがオペレータにより,キャンセルされたか
 
virtual void SetPos(int p)
カウンタの現在位置を設定
 
int zs
zサイズ. 4Byte. 2Dの場合は 1.
 
double RZxy
Z軸の歪.Z軸の間隔を 1とした XY軸の間隔.(X or Y)/Z.
 
void set(RBound< int > rb, T v=(T) 0, T b=(T) 0, double rz=1.0)
 
unsigned short uWord
2Byte
 
#define checkBit(dat, bit)
 
#define JBXL_GRAPH_IVDARG_ERROR
無効な引数
 
#define JBXL_FILE_READ_ERROR
ファイル読み込みエラー
 
#define JBXL_GRAPH_OPFILE_ERROR
ファイルのオープンエラー
 
#define JBXL_GRAPH_RDFILE_ERROR
ファイルの読み込みエラー
 
#define JBXL_GRAPH_CANCEL
処理がキャンセルされた
 
#define JBXL_GRAPH_NOFILE_ERROR
ファイルが存在しない
 
#define JBXL_GRAPH_WRFILE_ERROR
ファイルの書き込みエラー
 
#define JBXL_GRAPH_HEADER_ERROR
画像ヘッダーのエラー
 
#define JBXL_GRAPH_MEMORY_ERROR
メモリエラー
 
CVCounter * GetUsableGlobalCounter()
現在有効なグローバルカウンタを得る.(子カウンタを得るかもしれない)
 
MSGraph< sWord > readDicomFile(const char *fn)
 
int writeCmnHeadData(FILE *fp, CmnHead *hd, bool cnt=false)
 
MSGraph< sWord > readDicomData(FILE *fp, int fsz)
 
void init_CmnHead(CmnHead *hd)
 
void free_CmnHead(CmnHead *hd)
 
CmnHead readRasData(FILE *fp)
read_ras_data() for C // SUN RASTER形式のファイルを読み込む
 
int writeRasData(FILE *fp, CmnHead *ch, int obit=8)
write_ras_data() for C
 
CmnHead readMoonData(FILE *fp, unsigned int fsz=0, bool no_ntoh=false)
 
CmnHead readUserSetData(FILE *fp, CmnHead *ch, bool cnt=false)
read_user_data() for C // ユーザ指定(ch)のデータ形式でファイルを読み込む
 
CmnHead readMoonFile(const char *fn, bool no_ntoh=false)
 
CmnHead readCmnHeadFile(const char *fn, CmnHead *ch, bool cnt=false)
拡張read関数.ファイル種別を指定して読み込む.
 
CmnHead readXHeadFile(const char *fn, CmnHead *ch=NULL, bool cnt=false)
拡張read関数.ファイルを自動判別して読み込む.
 
int writeCmnHeadFile(const char *fn, CmnHead *hd, bool cnt=false)
 
int dicomHeader(FILE *fp, int fsize, int *dsize, int *xsize, int *ysize, int *depth, double *rzxy)
 
CmnHead readXHead(const char *fn, CmnHead *ch=NULL)
ヘッダ部分のみ読み込み
 
unsigned int lsize
Size of Graphics Data (byte unit)
 
uByte * buf
Ture Header buffer
 
int zsize
For 3D Data (or Color)
 
int kind
Kind of Graphics Format.
 
unsigned int bsize
Fllowing buf size or Any Data (byte unit)
 
uByte * grptr
Pointer to Data.
 
int ysize
Height of Graphics.
 
int depth
Color Depth of Graphics (bit unit)
 
int xsize
Width of Graphics.