+--------------------------------------------------------------------+
|   Reference Manual of TEO library Ver 1.1.4           Y.Mukaigaw   |
|                                                        1998.7.31   |
+--------------------------------------------------------------------+

######################################################################
$BL\<!(B
	$B#0(B $B$O$8$a$K(B
	$B#1(B TEO$B2hA|%U%)!<%^%C%H$NFCD'(B
		1.1 $B%7%s%W%k$J9=B$(B
		1.2 $B$5$^$6$^$J2hAGCM$N7?(B
		1.3 $B:BI87O(B
		1.4 $B%^%k%A%W%l!<%s!&%^%k%A%U%l!<%`(B
		1.5 $B05=L(B
		1.6 User Extension($B%f!<%63HD%(B)
	$B#2(B $B%i%$%V%i%j$N35MW(B
		2.1 $B2hAGCM$N7?(B
		2.2 $B%U%!%$%k!&2hA|$rI=8=$9$k9=B$BN(B
		2.3 $B%(%i!<=hM}(B
		2.4 $B4D6-JQ?t(B
		2.5 $B%3%s%Q%$%kJ}K!(B
	$B#3(B $B0lHL8~$14X?t72(B
		3.1 $B%U%!%$%k%"%/%;%9(B
		3.1.1 $B%U%!%$%k%*!<%W%s!&%/%m!<%:(B
		3.1.2 $B?75,$K%U%!%$%k$r:n@.(B
		3.2 $B2hA|%"%/%;%9(B
		3.3 $B2hAG%"%/%;%9(B
		3.4 $B9=B$BN$K%"%/%;%9$9$k%^%/%m(B
		3.4.1 TEOFILE$B$H(B TEOIMAGE$B$K6&DL$7$F;H$($k%^%/%m(B
		3.4.2 TEOFILE$B$K$N$_;H$($k%^%/%m(B
		3.4.3 TEOIMAGE$B$K$N$_;H$($k%^%/%m(B
		3.5 $B$=$NB>(B
	$B#4(B $BFC<lMQES8~$14X?t72(B
		4.1 $B?75,$K%U%!%$%k$r:n@.(B
		4.1.1 User Extension$B$r;XDj$7$J$$%U%!%$%k:n@.(B
		4.1.2 User Extension$B$r;XDj$9$k%U%!%$%k:n@.(B
		4.2 User Extensiobn($B%f!<%63HD%NN0h(B)$B$X$N%"%/%;%9(B
		4.3 $BFbIt$G;HMQ$9$k4X?t72(B
	$B#5(B $B%G%P%C%0%b!<%I(B
	$B#6(B $B%5%s%W%k%W%m%0%i%`(B
	$B#7(B $B4X?t%j%U%!%l%s%9(B
	$B#8(B $B:G8e$K(B
	
######################################################################
$B#0(B $B$O$8$a$K(B

$B$3$N%I%-%e%a%s%H$O!$(BTEO(Tsukuba-Etl-Okayama)$B2hA|%U%)!<%^%C%H(B Ver$B#1$r#C(B
$B8@8l$G4JC1$K07$&$?$a$N%i%$%V%i%j(B libteo$B$K$D$$$F$N%j%U%!%l%s%9%^%K%e%"(B
$B%k$G$9!%(BTEO$B$r07$&:]$K$O!$I,$:$7$b$3$N%i%$%V%i%j$r;H$&I,MW$O$"$j$^$;$s(B
$B$,!$$3$N%i%$%V%i%j$O%"!<%-%F%/%A%c$N0c$$$r5[<}$7$F$/$l$^$9!%$3$N%i%$%V(B
$B%i%j$r;H$C$F=q$+$l$?%W%m%0%i%`$O!$%W%i%C%H%[!<%`$K0MB8$7$J$$$b$N$H$J$j(B
$B$^$9$N$G!$$<$R3hMQ$7$F2<$5(B

$B$3$l$O%j%U%!%l%s%9%^%K%e%"%k$G$9$N$G!$I,MW$J>pJs$r$9$Y$FLVMe$9$k$H$$$&(B
$BJ}?K$G=q$+$l$F$$$^$9!%$H$j$"$($:4JC1$J%W%m%0%i%_%s%0$r;O$a$F$_$h$&$H$$(B
$B$&?M$O!$(B
	$B#3>O(B $B0lHL8~$14X?t72(B
	$B#6>O(B $B%5%s%W%k%W%m%0%i%`(B
$B$rFI$`$H$$$$$G$7$g$&!%(B


######################################################################
$B#1(B TEO$B2hA|%U%)!<%^%C%H$NFCD'(B

=============================================
1.1 $B%7%s%W%k$J9=B$(B
=============================================

TEO$B2hA|%U%)!<%^%C%H$O!$(B
 $B#1(B $B2hA|$N>pJs$rI=$9%X%C%@!<It(B
 $B#2(B $B2hA|<+BN$N%P%$%J%j%G!<%?It(B
 $B#3(B $B%f!<%6$,<+M3$K;H$($k%U%C%?!<It(B

$B$+$i$J$j$^$9!%%X%C%@!<It$O%F%-%9%H$G=q$+$l$F$$$^$9!%%P%$%J%j%G!<%?It$K(B
$B$O!$2hA|$N%G!<%?$,!J$$$o$f$k!K%Y%?7A<0$H$7$F3JG<$5$l$F$$$^$9!%(B

$B$3$N$h$&$K(B TEO$B2hA|$OHs>o$K%7%s%W%k$J9=B$$G$9$,!$(B
 $B!{(B $B%W%i%C%H%[!<%`$K0MB8$7$J$$(B
 $B!{(B $BB?MM$J7A<0$G2hA|$r07$($k(B
 $B!{(B $B%f!<%6$K$h$k3HD%@-$,$"$k(B
$B$H$$$&FCD'$,$"$j$^$9!%(B

TEO$B2hA|%U%)!<%^%C%H$N>\:Y$K$D$$$F$O!$%U%)!<%^%C%H;EMM=q$G>\$7$/=R$Y$i(B
$B$l$F$$$^$9$N$G!$$=$A$i$r;29M$K$7$F2<$5$$!%(B

=============================================
1.2 $B$5$^$6$^$J2hAGCM$N7?(B
=============================================

TEO$B$K$O!$$5$^$6$^$J2hAGCM$N7?$,MQ0U$5$l$F$$$^$9!%(B
	$B#2CM(B		1bit (0 or 1)
	$B@0?t(B		8bit/16bit/32bit/64bit$B$N$=$l$>$l$K$D$$$F(B
			signed / unsigned$B$,MQ0U$5$l$F$$$^$9(B
	$BIbF0>.?tE@(B	$BC1@:EY(B(32bit) / $BG\@:EY(B(64bit)

  $B"((B $B#2CM2hA|$G$O!$#0$,9u!$#1$,Gr$H$J$k$3$H$r?d>)$7$^$9(B

=============================================
1.3 $B:BI87O(B
=============================================

TEO$B$G$O2hAG$N0LCV$r!$2#J}8~$K1&$r@5$H$9$k#X:BI8!$=DJ}8~$K2<$r@5$H$9$k(B
$B#Y:BI8$GI=8=$7$^$9!%$?$@$7!$86E@$N0LCV$OG$0U$K;XDj$G$-$^$9$N$G!$:8>e$N(B
$B6y$,I,$:$7$b(B (0,0)$B$K$J$i$:!$:BI8CM$,Ii$NCM$K$J$k$3$H$b$"$j$^$9$N$G!$%W(B
$B%m%0%i%_%s%0$N:]$K$OCm0U$,I,MW$G$9!%(BTEO$B$G$O!$:8>e$N6y$N:BI8$N$3$H$r(B
$B!V:BI8CM$N%*%U%;%C%H!W$H8F$S$^$9!%(B

$B:BI8CM$NHO0O$K$D$$$F$O!$$5$^$6$^$J%^%/%m$,MQ0U$5$l$F$$$^$9!%(B

=============================================
1.4 $B%^%k%A%W%l!<%s!&%^%k%A%U%l!<%`(B
=============================================

TEO$B%U%)!<%^%C%H$G$O!$2hA|$r%^%k%A%W%l!<%s!&%^%k%A%U%l!<%`$H$7$F07$$$^(B
$B$9!%%7%s%0%k%W%l!<%s$H$O!$2hAGCM$,0l$D$NCM$r;}$D2hA|$G!$%0%l%$2hA|$,$3(B
$B$l$K$"$?$j$^$9!%%^%k%A%W%l!<%s$H$O!$J#?t$N%W%l!<%s$r$^$H$a$F(B1$BKg$N2hA|(B
$B$H07$&5!G=$G$9!%%+%i!<2hA|$@$HIaDL$O(BRGB$B$N#3%W%l!<%s$G$9$,!$(BYUV$B$N#3%W%l!<(B
$B%s$H$7$F;H$&$3$H$b$G$-$^$9$7!$%9%F%l%*2hA|$r#2%W%l!<%s$GI=8=$7$?$j!$(B
RGB$BCM$K&ACM$r2C$($F#4%W%l!<%s$H$9$k$3$H$b<+M3$K$G$-$^$9!%(BTEO$B$O!$$3$N$h(B
$B$&$KB??t$N%W%l!<%s$r#1Kg$N2hA|$H$7$F07$$$^$9!%(B

 $B"(%+%i!<2hA|$N>l9g$O#3%W%l!<%s$H$7!$(BRGB$B$N=g$K3JG<$9$k$3$H$r?d>)$7$^$9(B

TEO$B$N%^%k%A%U%l!<%`$H$O!$J#?t$N2hA|$r$^$H$a$F0l$D$N%U%!%$%k$K$G$-$k5!(B
$BG=$G$9!%%^%k%A%U%l!<%`5!G=$rMxMQ$9$k$3$H$K$h$j!$;~7ONs$NF02h$r0l$D$N%U%!(B
$B%$%k$K3JG<$9$k$3$H$,$G$-$^$9!%(BTEO$B$O4pK\E*$KF02h$r4pK\$H$7$F$$$^$9!%$D(B
$B$^$j!$@E;_2h$O%U%l!<%`?t$,#1$NF02h$G$"$k$H2r<a$7$^$9!%(B

=============================================
1.5 $B05=L(B
=============================================

$B2hA|%U%!%$%k$O%5%$%:$,Bg$-$/$J$j$^$9$,!$(BTEO$B$O2hA|$r05=L$9$k5!G=$,$"$j(B
$B$^$9!%$3$N%i%$%V%i%j$r;H$&8B$j!$%f!<%6$O2hA|$,05=L$5$l$F$$$k$+$I$&$+$r(B
$BA4$/5$$K$9$kI,MW$O$"$j$^$;$s!%%i%$%V%i%j$,<+F0E*$K05=L!??-D9$7$F$/$l$^(B
$B$9!%(B

$B$J$*!$2hA|$r05=L$9$k%D!<%k$H$7$F(B teogzip$B$,!$?-D9$9$k%D!<%k$H$7$F(B 
teoungzip$B$,%3%^%s%I$H$7$FMQ0U$5$l$F$$$^$9!%(B

=============================================
1.6 User Extension($B%f!<%63HD%(B)
=============================================

TEO$B2hA|%U%)!<%^%C%H$O!$%f!<%6$,<+M3$K3HD%$G$-$k$h$&$K@_7W$5$l$F$$$^$9!%(B
$B3HD%$9$kJ}K!$O#2DL$j$"$j$^$9!%(B
 $B#1(B $B%X%C%@!<It$K!V(B#%$B!W$G;O$^$k9T$K5-=R(B
 $B#2(B $B%U%C%?!<It$rMxMQ(B
$B$3$N5!G=$rMxMQ$9$l$P!$%U%l!<%`?t$N%*%U%;%C%H$r5-=R$7$?$j!$%5%$%:$N0[$J(B
$B$k2hA|$r0l$D$N%U%!%$%k$K$^$H$a$?$j$9$k$3$H$b$G$-$^$9!%(B

$B%X%C%@!<It$N(B User Extension$B$N2r@O$r=u$1$k4X?t$O!$%i%$%V%i%j$H$7$FMQ0U(B
$B$5$l$F$$$^$9!%(B


######################################################################
$B#2(B $B%i%$%V%i%j$N35MW(B

=============================================
2.1 $B2hAGCM$N7?(B
=============================================

$B%i%$%V%i%j$G$O!$2hAGCM$rI=$97?$H$7$F0J2<$N$b$N$,Dj5A$5$l$F$$$^$9!%%W%i%C(B
$B%H%[!<%`$K0MB8$7$J$$%W%m%0%i%`$r=q$/$?$a$K$O!$2hAGCM$O$+$J$i$:!$$3$l$i(B
$B$N7?$rMQ$$$F2<$5$$!%JX59>e!$$3$l$i$N7?$N$3$H$r!V(BETYPE$B!W$H8F$S$^$9!%(B

	TEO_BIT		$B#2CM(B
	TEO_UINT8	$BId9f$J$7(B8bit
	TEO_SINT8	$BId9f$"$j(B8bit
	TEO_UINT16	$BId9f$J$7(B16bit
	TEO_SINT16	$BId9f$"$j(B16bit
	TEO_UINT32	$BId9f$J$7(B32bit
	TEO_SINT32	$BId9f$"$j(B32bit
	TEO_FLOAT32	$BIbF0>.?tE@(B32bit
	TEO_FLOAT64	$BIbF0>.?tE@(B64bit

$B"((B 64bit$B0J>e$N@0?t$O!$8=CJ3,$G$O%i%$%V%i%j$G$O%5%]!<%H$7$^$;$s!%(B

$B2hAGCM$NId9f$rI=$97?$H$7$F!$0J2<$N$b$N$rDj5A$7$^$9!%<!@a$G@bL@$9$k9=B$(B
$BBN$NCf$G2hA|$N7?$r<($9%a%s%P(B type$B$NCM$H$7$FMxMQ$7$F2<$5$$!%(B

	TEO_SIGNED      $BId9f$D$-@0?t(B
	TEO_UNSIGNED    $BId9f$J$7@0?t(B
	TEO_FLOAT       $BIbF0>.?tE@(B

=============================================
2.2 $B%U%!%$%k!&2hA|$rI=8=$9$k9=B$BN(B
=============================================

TEO$B$G$O2hA|%U%!%$%k!&2hA|%G!<%?$r07$&$?$a$K!$$=$l$>$l(B TEOFILE$B7?!&(B
TEOIMAGE$B7?$rDj5A$7$F$$$^$9!%(B

TEOFILE$B7?$O!$F02h%U%!%$%k$rI=$7$^$9!%(B"foo.teo"$B$X$N%U%!%$%k%]%$%s%?$N$h(B
$B$&$J$b$N$H9M$($F2<$5$$!%2C$($F!$%5%$%:$d%U%l!<%`?t$J$I$NF02h%U%!%$%k$H(B
$B$7$F$N>pJs$r;}$C$F$$$^$9!%$?$@$7!$2hA|%G!<%?$=$N$b$N$O4^$_$^$;$s!%(B

typedef struct{
  int width;		/* $B2#%5%$%:(B */
  int height;		/* $B=D%5%$%:(B */
  int xoffset;		/* x $B:BI8$N%*%U%;%C%HCM(B */
  int yoffset;		/* y $B:BI8$N%*%U%;%C%HCM(B */
  int type;		/* $B2hAG$N7?(B */
  int bit;		/* $B2hAG$N(B bit $B?t(B */
  int plane;		/* $B%W%l!<%s?t(B */
  int frame;		/* $B%U%l!<%`?t(B */
  int current;          /* $B<!$K%"%/%;%9$7$h$&$H$7$F$$$k%U%l!<%`HV9f(B */
  int extc;		/* $B%f!<%63HD%MQ%+%&%s%?(B */
  char **extv;		/* $B%f!<%63HD%MQJ8;zNs$X$N%]%$%s%?(B */
  int fsize;		/* 1$B%U%l!<%`$N%5%$%:(B */
  int hsize;		/* $B%G!<%?It$N@hF,$N%]%$%s%H(B */
  FILE *fp;		/* $B%U%!%$%k$X$N%]%$%s%?(B */
  int ac_type;		/* $B%"%/%;%9%b!<%I(B */
  char *filename	/* $B%U%!%$%kL>(B */
  char *tmpfile;	/* $B%F%s%]%i%j%U%!%$%kL>(B */
} TEOFILE;


TEOIMAGE$B7?$O!$%7%s%0%k%U%l!<%`$N2hA|$rI=$7$^$9!%@E;_2h$N%5%$%:$J$I$N>p(B
$BJs$H$H$b$K2hA|%G!<%?$=$N$b$N$r4^$_$^$9!%$J$*!$(BTEOIMAGE$B7?$O!$%f!<%6$G(B
$B%a%b%j$N3NJ]!&2rJ|$N4IM}$,I,MW$G$9!%(B

typedef struct{
  int width;		/* $B2#%5%$%:(B */
  int height;		/* $B=D%5%$%:(B */
  int xoffset;		/* x $B:BI8$N%*%U%;%C%HCM(B */
  int yoffset;		/* y $B:BI8$N%*%U%;%C%HCM(B */
  int type;		/* $B2hAG$N7?(B */
  int bit;		/* $B2hAG$N(B bit $B?t(B */
  int plane;		/* $B%W%l!<%s?t(B */
  char *data;		/* $B2hA|%G!<%?(B */
  int fsize;		/* 1$B%U%l!<%`$N%5%$%:(B */
} TEOIMAGE;

$B"((B $B%i%$%V%i%j$N%P!<%8%g%s%"%C%W$KH<$$!$9=B$BN$N%a%s%P$OJQ99$5$l$k2DG=(B
   $B@-$,$"$j$^$9!%(B

=============================================
2.3 $B%(%i!<=hM}(B
=============================================

TEO$B%i%$%V%i%j$N4X?t72$N$$$/$D$+$O!$FbIt$G%(%i!<$,5/$-$?;~!$(BNULL$B$rJV$7(B
$B$^$9!%%(%i!<$N<oN`$OBg0hJQ?t(B TEO_ERROR_CODE$B$KF~$j$^$9!%(B

$BE,@Z$J%(%i!<%a%C%;!<%8$r=PNO$9$k$?$a$K$O!$8e=R$9$k4X?t(B TeoError()$B$rMx(B
$BMQ$7$F2<$5$$!%(B

=============================================
2.4 $B4D6-JQ?t(B
=============================================

TEO$B2hA|$O!$05=L$7$?>uBV$GMxMQ$G$-$^$9!%K\%i%$%V%i%j$N$$$/$D$+$O!$@8@.(B
$B%U%!%$%k$N05=L7A<0$r7h$a$k$?$a$K!$4D6-JQ?t(BTEO_GZIP $B$rMxMQ$7$^$9!%$3$N(B
$BJQ?t$,(B `yes'$B$K$J$C$F$$$l$P!$@8@.$5$l$k2hA|%U%!%$%k$O<+F0E*$K05=L$5$l$?(B
$B$b$N$H$J$j$^$9!%2hA|%U%!%$%k$O%5%$%:$,Bg$-$/$J$j$,$A$G$9$N$G!$FC$KM}M3(B
$B$N$J$$8B$j@_Dj$7$F$*$/$3$H$r$*4+$a$7$^$9!%(B

$BNc(B) setenv TEO_GZIP yes

$B$^$?!$4D6-JQ?t(B TEO_GZIP_COMMAND, TEO_GUNZIP_COMMAND $B$G05=L!&?-D9$r9T$&(B
$B%3%^%s%I$rJQ99$9$k$3$H$b$G$-$^$9!%$?$@$7$I$A$i$b7k2L$rI8=`=PNO$K=PNO$9(B
$B$k7A<0$G;XDj$7$F2<$5$$!%0l;~E*$KJL$N%P!<%8%g%s$N(B gzip$B$r;H$$$?$$;~$J$I(B
$B$KMxMQ$7$F2<$5$$!%FC$K;XDj$7$J$$>l9g!$%i%$%V%i%j$N%3%s%Q%$%k;~$K;XDj$5(B
$B$l$?%3%^%s%I$,%G%U%)%k%H$H$7$F;H$o$l$^$9!%(B

$BNc(B) setenv TEO_GZIP_COMMAND "/usr/local/bin/gzip -c"
    setenv TEO_GUNZIP_COMMAND "/usr/local/bin/zcat"

$B$^$?!$4D6-JQ?t(B TEO_TMP_DIR $B$r;XDj$9$k$3$H$K$h$C$F05=L!&?-D9$N$?$a$N:n(B
$B6H%G%#%l%/%H%j$rJQ99$9$k$3$H$,$G$-$^$9!%Bg$-$J05=L%U%!%$%k$r3+$-$?$$$,!$(B
$B:n6H%G%#%l%/%H%j$KM>M5$,$J$$>l9g$J$I$KMxMQ$7$F2<$5$$!%FC$K;XDj$7$J$$>l(B
$B9g!$%i%$%V%i%j$N%3%s%Q%$%k;~$K;XDj$5$l$?%G%#%l%/%H%j$,%G%U%)%k%H$H$7$F(B
$B;H$o$l$^$9(B($BG[I[%Q%C%1!<%8$G$O(B /tmp$B$K$J$C$F$$$^$9(B)$B!%(B

$BNc(B) setenv TEO_TMP_DIR "/home/hogehoge/tmp"

=============================================
2.5 $B%3%s%Q%$%kJ}K!(B
=============================================

$B%i%$%V%i%j$O!$%X%C%@!<%U%!%$%k(B teo.h$B$H!$%i%$%V%i%j(B libteo$B$+$i$J$j$^$9!%(B
$B%W%m%0%i%`Cf$G$O!$%X%C%@!<%U%!%$%k$r<!$N$h$&$K$7$FFI$_9~$s$G2<$5$$!%(B
 #include <teo.h>

$B%3%s%Q%$%k$K$O!$(B
 -I<$B%X%C%@!<%U%!%$%k$N$"$j$+(B> -L<$B%i%$%V%i%j$N$"$j$+(B> -lteo
$B$H$$$&%*%W%7%g%s$,I,MW$G$9!%(B

$BNc(B) $B2,;3Bg3X<\D98&$N>l9g(B
    gcc -I/usr/local/lab/include -L/usr/local/lab/lib $B%=!<%9(B.c -lteo 

$BNc(B) $BC^GHBg3X2hA|8&$N>l9g(B
    gcc -I/usr/local/Image/include -L/usr/local/Image/lib $B%=!<%9(B.c -lteo


$B%W%m%0%i%`:n@.;~$N%P%0$r$J$/$9$?$a$K$O!$%G%P%C%0%b!<%I$rMxMQ$7$?J}$,$$(B
$B$$$G$7$g$&!%>e5-$N%*%W%7%g%s$NB>$K!$(B
 -DTEO_DEBUG_ALL
$B$rIU$1$F$*$/$3$H$r$*4+$a$7$^$9(B(Makefile$BCf$G$O(B CFLAGS$B$KDI2C$7$^$9(B)$B!%(B
$B>\$7$/$O!V%G%P%C%0%b!<%I!W$N>O$r;29M$K$7$F2<$5$$!%(B
Makefile$B$N=q$-J}$K$D$$$F$O!$%5%s%W%k%W%m%0%i%`$N>O$r;29M$K$7$F2<$5$$!%(B

######################################################################
$B#3(B $B0lHL8~$14X?t72(B

$BK\@a$G$O!$0lHL$N?M$,MQ$$$kCf%l%Y%k$N4X?t72$K$D$$$F@bL@$7$^$9!%$3$3$G=R(B
$B$Y$k4X?t$d%^%/%m$O!$9bEY$J5!G=$r4JC1$K07$&$3$H$,$G$-$^$9!%4pK\E*$K$OK\(B
$B@a$G=R$Y$i$l$F$$$k4X?t72$@$1$G2hA|=hM}$N%W%m%0%i%`$r:n@.$9$k$3$H$,$G$-(B
$B$^$9$N$G!$0lHL%f!<%6!$FC$K=i$a$F(Blibteo$B$rMxMQ$9$k?M$O!$$3$l$i$rMxMQ$7$F(B
$B2<$5$$!%$J$*!$FC<l$JMQES8~$1$NDc%l%Y%k4X?t72$K$D$$$F$O<!@a$G=R$Y$^$9!%(B

=============================================
3.1 $B%U%!%$%k%"%/%;%9(B
=============================================

-----------------------------------
3.1.1 $B%U%!%$%k%*!<%W%s!&%/%m!<%:(B
-----------------------------------
---
TEOFILE *TeoOpenFile(char *filename);

$B0z?t$GM?$($i$l$?%U%!%$%kL>$NF02h%U%!%$%k$r%*!<%W%s$7$^$9!%6qBNE*$K$O!$(B
$B%U%!%$%k$r%*!<%W%s$7!$F02h%U%!%$%k$N%X%C%@!<>pJs$rFI$_$H$j!$FbIt$G3NJ](B
$B$7$?(BTEOFILE$B7?$K%X%C%@!<>pJs$r=q$-9~$_!$$=$N%]%$%s%?$rJV$7$^$9!%F02h%U%!(B
$B%$%k$K4X$9$k>pJs$OJV$5$l$k(BTEOFILE$B7?$K4^$^$l$F$$$^$9$N$G!$0J8e$O(BTEOFILE
$B7?$rDL$7$FF02h%U%!%$%k$K%"%/%;%9$7$^$9!%$J$*!$%*!<%W%sD>8e$O!$%U%!%$%k(B
$B%]%$%s%?$O%G!<%?!<It$N@hF,$K$"$j$^$9!%(B

$B$3$l$i$N4X?t$K$O!$0J2<$N5!G=$,$"$j$^$9!%(B

 $B!{%U%!%$%kL>$,(B "-" $B$N>l9g$K$O!$I8=`F~NO$+$iFI$_9~$_$^$9!%(B
 $B!{%U%!%$%k$,(B PNM$B%U%)!<%^%C%H$N>l9g$K$O!$<+F0E*$K(BPNM$B$H$7$F%X%C%@!<$r2r(B
   $B@O$7!$0J8e$O(B TEO$B%U%!%$%k$HF1MM$K07$&$3$H$,$G$-$^$9!%(B
 $B!{%U%!%$%k$,05=L$5$l$F$$$k$+$I$&$+$r<+F0E*$KH=JL$7!$05=L$5$l$F$$$k>l(B
   $B9g$K$O?-D9$7$FDL>o$N(BTEO$B%U%!%$%k$H$7$F07$&$3$H$,$G$-$^$9!%(B

$BNc!K(Bfile=TeoOpenFile("-")       $BI8=`F~NO$+$iFI$_9~$_$^$9!%(B
    file=TeoOpenFile("foo.teo") TEO$B%U%!%$%k$H$7$FFI$_9~$_$^$9!%05=L$5$l(B
                                $B$F$$$l$P<+F0E*$K?-D9$7!$0J8e$ODL>o$N(BTEO
                                $B%U%!%$%k$H$7$FFI$_9~$_$^$9!%(B
    file=TeoOpenFile("foo.ppm") PNM$B$H$7$F%X%C%@$r2r@O$7!$0J8e$O(BTEO$B%U%!(B
                                $B%$%k$H$7$FFI$_9~$_$^$9!%05=L$5$l$F$$$l(B
                                $B$P<+F0E*$K?-D9$7!$(BPNM$B$H$7$F%X%C%@$r2r@O(B
                                $B$7!$0J8e$O(B TEO$B%U%!%$%k$H$7$FFI$_9~$_$^$9!%(B

$BCm!K05=L$5$l$?%U%!%$%k$r%*!<%W%s$9$k>l9g$K$O!$==J,$JBg$-$5(B($B?-D9$5$l$?(B
    $B%U%!%$%k$,<}$^$kBg$-$5(B)$B$N:n6H%G%#%l%/%H%j$,$"$k$3$H$r3NG'$7$F2<$5(B
    $B$$!%$J$*!$:n6H%G%#%l%/%H%j$N>l=j$O4D6-JQ?t$GJQ992DG=$G$9!%(B

---
TEOFILE *TeoCloseFile(TEOFILE *teofp);

$B0z?t$GM?$($i$l$?(B TEOFILE$B$r%/%m!<%:$7$^$9!%?7$?$K@8@.$7$?%U%!%$%k$N>l9g!$(B
$BI,MW$G$"$l$P%U%!%$%k$,<+F0E*$K05=L$5$l$^$9!%4{B8$N%U%!%$%k$N>l9g$K$O!$(B
$B:n6HMQ%U%!%$%k(B($B?-D9$5$l$?%U%!%$%kFbMF(B)$B$,>C5n$5$l$^$9!%$5$i$K!$(BTEOFILE
$B$N9=B$BN<+?H$N%a%b%j$b2rJ|$5$l$^$9!%$3$3$G!$(BTEOIMAGE$B<+BN$OA4$/1F6A$r<u(B
$B$1$J$$$3$H$KCm0U$7$F2<$5$$!%(B

-----------------------------------
3.1.2 $B?75,$K%U%!%$%k$r:n@.(B
-----------------------------------
---
TEOFILE *TeoCreateFile(char *filename,
		   int width,int height,int xoffset,int yoffset,
		   int type,int bit,
		   int plane,int frame);
TEOFILE *TeoCreateSimilarFile(char *filename,TEOFILE *teofp);

TeoCreateFile$B$O:n@.$7$?$$F02hA|$NL>A0!&%5%$%:!&7?$J$I$r;XDj$7$F!$%U%!(B
$B%$%k$r?7$?$K@8@.$7$^$9!%(BTeoCreateSimilarFile$B$O!$4{$KB8:_$9$kF02h%U%!%$(B
$B%k$HF1$8%5%$%:!&7?$NF02h%U%!%$%k$r?7$?$K@8@.$7$^$9!%(B

$BNc(B) teofile = TeoCreateFile("foo.teo",640,480,0,0,TEO_UNSIGNED,8,3,1);
	"foo.teo"$B$H$$$&L>A0$G!$2#(B640$B=D(B480$B!$:8>e$N:BI8$,(B(0,0)$B!$Id9f$J$7(B
	8bit$B!$#3%W%l!<%s!$#1%U%l!<%`$N2hA|%U%!%$%k$r@8@.$7$^$9!%(B


$B$3$l$i$N4X?t$K$O!$0J2<$N5!G=$,$"$j$^$9!%(B

 $B!{%U%!%$%kL>$,(B "-" $B$N>l9g$K$O!$I8=`=PNO$K=q$-=P$7$^$9!%(B
 $B!{4D6-JQ?t(B TEO_GZIP$B$r;2>H$7!$CM$,(B`yes'$B$K$J$C$F$$$l$P!$<+F0E*$K05=L%U%!(B
   $B%$%k$r@8@.$7$^$9!%(B

$BCm!K05=L%U%!%$%k$r@8@.$9$k>l9g$K$O!$==J,$JBg$-$5(B($B05=LA0$N%U%!%$%k$,<}(B
    $B$^$kBg$-$5(B)$B$N:n6H%G%#%l%/%H%j$,$"$k$3$H$r3NG'$7$F2<$5$$!%$J$*!$:n(B
    $B6H%G%#%l%/%H%j$N>l=j$O4D6-JQ?t$GJQ992DG=$G$9!%(B


=============================================
3.2 $B2hA|%"%/%;%9(B
=============================================

---
TEOIMAGE *TeoAllocSimilarImage(TEOFILE *teofp);
TEOIMAGE *TeoAllocSimilarImage(TEOIMAGE *image);

$B2hA|$N>pJs$r3JG<$9$k$N$KI,MW$J%a%b%j$r3NJ]$7$^$9!%6qBNE*$K$O!$0z?t$GM?(B
$B$($i$l$?F02h%U%!%$%k$d2hA|$HF1$8%5%$%:$d7?$N2hA|$rI=$9(B TEOIMAGE$B9=B$BN(B
$B$r:n@.$7!$I,MW$J>pJs$r=q$-9~$_$^$9!%$^$?!$2hA|%G!<%?$r3JG<$9$k%a%b%j$r(B 
malloc$B$7!$$=$N%]%$%s%?$r9=B$BN$N%a%s%P$H$7$FJ];}$7!$9=B$BN$N%]%$%s%?$r(B
$BJV$7$^$9!%(B

$B$3$l$i$N#2<oN`$N8F$S=P$7$O!$0z?t$N7?$O0[$J$j$^$9$,!$%^%/%m$GAH$^$l$F$$(B
$B$k$?$a!$F1$8L>A0$K$J$C$F$$$^$9!%%^%/%m$G$"$k$?$a!$0z?t$OJ#?t2s;2>H$5$l(B
$B$k$?$a!$(BTeoAllocSimilarImage(image++)$B$N$h$&$J=q$-J}$O@5$7$/F0:n$7$^$;(B
$B$s$N$GCm0U$,I,MW$G$9!%(B

---
TEOIMAGE *TeoAllocImage(int width,int height,int xoffset,int yoffset,
			int type,int bit,int plane);

$B2hA|$N>pJs$r3JG<$9$k$N$KI,MW$J%a%b%j$r3NJ]$7$^$9!%6qBNE*$JF0:n$OA0=R$N(B
TeoAllocSimilarImage$B$HF1$8$G$9$,!$2hA|$N%5%$%:!&7?$J$I$O!$$9$Y$F0z?t$G(B
$B;XDj$7$^$9!%0l;~E*$KMxMQ$9$k2hA|$r@8@.$9$k:]$KMQ$$$i$l$^$9!%(B

---
int TeoFreeImage(TEOIMAGE *image);

$B2hA|%G!<%?$r2rJ|$7$^$9!%6qBNE*$K$O!$2hA|%G!<%?$r3JG<$7$F$$$kNN0h$r(Bfree
$B$7!$(BTEOIMAGE$B9=B$BN<+BN$rGK4~$7$^$9!%$J$*!$>e5-$N#3<oN`$N(BTeoAllocImage
$B%7%j!<%:$N$&$A!$$I$N4X?t$G3NJ]$7$?$b$N$G$b!$$3$N(BTeoFreeImage$B$G2rJ|$G$-(B
$B$^$9!%(B

---
int TeoReadFrame(TEOFILE *teofp,TEOIMAGE *image);

$B8=:_$N%U%!%$%k%]%$%s%?$N0LCV$+$i!$#1%U%l!<%`J,$N%G!<%?$rFI$_9~$_!$;XDj(B
$B$5$l$?2hA|$K%3%T!<$7$^$9!%%U%!%$%k%]%$%s%?$O<!$N%U%l!<%`$N@hF,$K0\F0$7(B
$B$^$9!%F02hA|%G!<%?$r<!!9$HO"B3E*$KFI$_9~$`>l9g$K$O!$%U%!%$%k%]%$%s%?$r(B
$BA`:n$9$kI,MW$O$J$/!$(BTeoReadFrame$B$r<!!9$H8F$V$@$1$G$9!%(B

---
int TeoWriteFrame(TEOFILE *teofp,TEOIMAGE *image);

$B8=:_$N%U%!%$%k%]%$%s%?$N0LCV$K!$;XDj$5$l$?%a%b%jNN0h$K$"$k#1%U%l!<%`J,(B
$B$N2hA|%G!<%?$r=q$-=P$7$^$9!%F02hA|%G!<%?$r<!!9$HO"B3E*$K=q$-9~$`>l9g$K(B
$B$O!$%U%!%$%k%]%$%s%?$rA`:n$9$kI,MW$O$J$/!$(BTeoWriteFrame$B$r<!!9$H8F$V$@(B
$B$1$G$9!%(B

---
int TeoSetAbsFrame(TEOFILE *teofp, int frame);

frame$B$G;XDj$7$?%U%l!<%`HV9f$N2hA|$N@hF,$K!$%U%!%$%k%]%$%s%?$r@dBPE*$K(B
$B0\F0$7$^$9!%(B0$B$r;XDj$7$?>l9g$O:G=i$N%U%l!<%`$N@hF,%"%I%l%9$K%U%!%$%k%](B
$B%$%s%?$r0\F0$7$^$9!%(B

---
int TeoSetRelFrame(TEOFILE *teofp, int frame);

frame$B$G;XDj$7$?%U%l!<%`?t$@$1!$%U%!%$%k%]%$%s%?$rAjBPE*$K0\F0$7$^$9!%(B0
$B$r;XDj$7$?>l9g$O0\F0$7$^$;$s!%(B

---
int TeoCheckFrame(TEOFILE *teofp)

$B<!$K%"%/%;%9$7$h$&$H$7$F$$$k%U%l!<%`$,%U%l!<%`?t$NHO0OFb$J$i$P??(B($BHs(B0$BCM(B)$B!$(B
$B$=$&$G$J$1$l$P56(B(0)$B$rJV$7$^$9!%(B


=============================================
3.3 $B2hAG%"%/%;%9(B
=============================================

---
ETYPE TeoGetPixel(TEOIMAGE *image,int index_x,int index_y,int index_p,
		       ETYPE);
ETYPE TeoPutPixel(TEOIMAGE *image,int index_x,int index_y,int index_p,
		       ETYPE,ETYPE val);

(x,y)$B:BI8!$(Bp$BHVL\$N%W%l!<%s$N2hAG$K%"%/%;%9$7$^$9!%:BI8$O:8>e$,I,$:$7$b(B
(0,0)$B$H$O$J$i$J$$$N$GCm0U$7$F2<$5$$!%$^$?!$%W%l!<%sHV9f$O(B 0$B$+$i?t$($F(B
$B2<$5$$!%(BETYPE$B$O%"%/%;%9$9$k2hAG$N7?$G$9(B(2.1$B@a;2>H(B)$B!%(BTeoGetPixel$B$O;XDj(B
$B$5$l$?:BI8$N2hAGCM$rJV$7$^$9!%(BTeoPutPixel$B$O(Bval$B$NCM$r;XDj$5$l$?:BI8$K%;%C(B
$B%H$7$^$9!%#2CM2hA|$r=|$/A4$F$N7?$N%U%)!<%^%C%H$K$D$$$F%"%/%;%9$G$-$^$9(B
$B$,!$#2CM2hA|$K$D$$$F$O(B TeoGetBit/TeoPutBit $B$rMxMQ$7$F2<$5$$!%(B

$BNc(B) TeoPutPixel(image, 10,20, 0, TEO_UINT8, 100);
    $B2hA|(B image$B$N(B 0$BHVL\$N%W%l!<%s$N(B(10,20)$B$N:BI8$K!$Id9f$J$7(B8bit$B@0?t(B100
    $B$r=q$-9~$_$^$9!%(B

---
TEO_BIT TeoGetBit(TEOIMAGE *image,int index_x,int index_y,int index_p);
TEO_BIT TeoPutBit(TEOIMAGE *image,int index_x,int index_y,int index_p,
		       TEO_BIT val);

$B#2CM2hA|$N(B(x,y)$B:BI8!$(Bp$BHVL\$N%W%l!<%s$N2hAG$K%"%/%;%9$7$^$9!%(BTeoGetBit
$B$O;XDj$5$l$?:BI8$N2hAGCM$r(BTEO_BIT$B7?$N(B0$B$+(B1$B$GJV$7$^$9!%(BTeoPutBit$B$O;XDj$5(B
$B$l$?:BI8$N2hAGCM$r(Bval$B$NCM(B(0$B$+(B1)$B$K%;%C%H$7$^$9!%(B

$BNc(B) TeoPutBit(image,10,20, 0, 1);
    $B#2CM2hA|(B image$B$N(B 0$BHVL\$N%W%l!<%s$N(B(10,20)$B$N:BI8$K(B $B#1$r=q$-9~$_$^$9!%(B

=============================================
3.4 $BMM!9$J%^%/%m(B
=============================================

$B$3$3$G$O!$F02h%U%)!<%^%C%H$d2hA|$+$iMM!9$J>pJs$rCj=P$9$k$?$a$N%^%/%m$K(B
$B$D$$$F@bL@$7$^$9!%$3$l$i$N%^%/%m$O$rMxMQ$7$J$/$F$b!$9=B$BN$N%a%s%P$rD>(B
$B@\;2>H$9$k$3$H$b2DG=$G$9!%$?$@!$9=B$BN$N%a%s%PJQ?t$O!$>-Mh$N%P!<%8%g%s(B
$B%"%C%W$KH<$$JQ99$5$l$k2DG=@-$b$"$j$^$9$,!$$3$l$i$N%^%/%m$r;H$C$F;2>H$9(B
$B$k8B$j!$>-Mh$KEO$C$F8_49@-$,J]>Z$5$l$^$9!%(B

$B"((B Ver 1.0$B$G$O(B teo_ $B$G;O$^$k%^%/%mL>$,$"$j$^$7$?$,!$(BVer 1.1$B0J9_(B
   $B$G$O(BTeo$B$G;O$a$kL>A0$KJQ99$5$l$F$$$^$9$N$G!$$=$A$i$r;H$&$h$&$K(B
   $B$7$F2<$5$$(B($B$b$A$m$s@N$NL>A0$G$b;H$($^$9(B)$B!%(B

-----------------------------------
3.4.1 TEOFILE$B$H(B TEOIMAGE$B$K6&DL$7$F;H$($k%^%/%m(B
-----------------------------------
---
int TeoWidth(  TEOFILE *teofp) / int TeoWidth(  TEOIMAGE *image)
int TeoHeight( TEOFILE *teofp) / int TeoHeight( TEOIMAGE *image)
int TeoType(   TEOFILE *teofp) / int TeoType(   TEOIMAGE *image)
int TeoBit(    TEOFILE *teofp) / int TeoBit(    TEOIMAGE *image)
int TeoPlane(  TEOFILE *teofp) / int TeoPlane(  TEOIMAGE *image)
int TeoFsize(  TEOFILE *teofp) / int TeoFsize(  TEOIMAGE *image)
int TeoXoffset(TEOFILE *teofp) / int TeoXoffset(TEOIMAGE *image)
int TeoYoffset(TEOFILE *teofp) / int TeoYoffset(TEOIMAGE *image)

$B0J>e$N%^%/%m$O!$4pK\E*$K3F9=B$BN$N%a%s%P$H#1BP#1$KBP1~$7$F$$$^$9!%(B

---
int TeoXstart( TEOFILE *teofp) / int TeoXstart( TEOIMAGE *image)
int TeoYstart( TEOFILE *teofp) / int TeoYstart( TEOIMAGE *image)
int TeoXend(   TEOFILE *teofp) / int TeoXend(   TEOIMAGE *image)
int TeoYend(   TEOFILE *teofp) / int TeoYend(   TEOIMAGE *image)

$B0J>e$N%^%/%m$O!$:8>e$N:BI8$H1&2<$N:BI8$rI=$7$^$9!%$3$l$i$OA0=R$N(B
width/height/xoffset/yoffset$B$NAH9g$;$GI=8=$G$-$^$9$,!$I,MW$K1~$8$FMxMQ(B
$B$7$F2<$5$$!%(B

---
int TeoIsBIT(    TEOFILE *teofp)  / int TeoIsBIT(    TEOIMAGE *image)
int TeoIsUINT8(  TEOFILE *teofp)  / int TeoIsUINT8(  TEOIMAGE *image)
int TeoIsSINT8(  TEOFILE *teofp)  / int TeoIsSINT8(  TEOIMAGE *image)
int TeoIsUINT16( TEOFILE *teofp)  / int TeoIsUINT16( TEOIMAGE *image)
int TeoIsSINT16( TEOFILE *teofp)  / int TeoIsSINT16( TEOIMAGE *image)
int TeoIsUINT32( TEOFILE *teofp)  / int TeoIsUINT32( TEOIMAGE *image)
int TeoIsSINT32( TEOFILE *teofp)  / int TeoIsSINT32( TEOIMAGE *image)
int TeoIsFLOAT32(TEOFILE *teofp)  / int TeoIsFLOAT32(TEOIMAGE *image)
int TeoIsFLOAT64(TEOFILE *teofp)  / int TeoIsFLOAT64(TEOIMAGE *image)

$B0J>e$N%^%/%m$O!$%^%/%mL>$N2hAGCM$N7?$H<B:]$N2hAGCM$N7?$,F1$8$G$"$l$P??(B
($BHs(B0$BCM(B)$B!$0c$C$F$$$l$P56(B(0)$B$rJV$7$^$9!%(B

-----------------------------------
3.4.2 TEOFILE$B$K$N$_;H$($k%^%/%m(B
-----------------------------------

int    TeoFrame(TEOFILE *teofp)
int    TeoHsize(TEOFILE *teofp)
FILE  *TeoFp(TEOFILE *teofp)
int    TeoExtc(TEOFILE *teofp);
char **TeoExtv(TEOFILE *teofp);
int    TeoCurrent(TEOFILE *teofp);

$B8=%P!<%8%g%s$G$O!$9=B$BN$N%a%s%P$H#1BP#1$KBP1~$9$k%^%/%m$H$J$C$F$$$^$9!%(B

-----------------------------------
3.4.3 TEOIMAGE$B$K$N$_;H$($k%^%/%m(B
-----------------------------------

(void *)TeoData(TEOIMAGE *image)

$B8=%P!<%8%g%s$G$O!$9=B$BN$N%a%s%P$H#1BP#1$KBP1~$9$k%^%/%m$H$J$C$F$$$^$9!%(B

=============================================
3.5 $B$=$NB>(B
=============================================

---
void TeoError(void);

$BFbIt%(%i!<$,H/@8$7!$(BTEO$B4X?t72$,(BNULL$B$rJV$7$?>l9g$K!$$3$N4X?t$r8F$S=P$9(B
$B$H!$Bg0hJQ?t$r;2>H$7$FE,@Z$J%(%i!<%a%C%;!<%8$rI8=`%(%i!<$KI=<($7$?8e!$(B
$B%W%m%0%i%`$r=*N;$7$^$9!%(B

$B"((B libteo Ver 1.1$B0J9_!$%a%C%;!<%8$NFbMF$,JQ$o$C$F$$$^$9!%(B
   $B$h$j>\:Y$J%(%i!<%a%C%;!<%8$,I=<($5$l$k$h$&$K$J$j$^$7$?!%(B

######################################################################
$B#4(B $BFC<lMQES8~$14X?t72(B

$BK\@a$G$O!$(BUser Extension$B$J$I$N9bEY$J5!G=$rMxMQ$7$?$$!$M>7W$J5!G=$r;}$?(B
$B$:9bB.$KF0:n$9$k4X?t$rMxMQ$7$?$$!$Ey$NFC<l$JMQES8~$1$N4X?t72$K$D$$$F@b(B
$BL@$7$^$9!%(B

=============================================
4.1 $B?75,$K%U%!%$%k$r:n@.(B
=============================================

$BF02h%U%!%$%k$r:n@.$9$k4X?t$O!$<B$KB?$/$N%P%j%(!<%7%g%s$,$"$j$^$9!%0z?t(B
$B$K(B User Extension$B$r;XDj$9$k>l9g$H!$;XDj$7$J$$>l9g$N#2DL$j$KJ,$1$F@bL@(B
$B$7$^$9!%(B

-----------------------------------
4.1.1 User Extension$B$r;XDj$7$J$$%U%!%$%k:n@.(B
-----------------------------------

$B:n@.$9$k2hA|%U%)!<%^%C%H$,(B {Teo$B$G$"$k$+(B | Pnm$B$G$"$k$+(B}$B$N#2DL$j$,$"$j$^(B
$B$9!%<!$K!$05=L7ABV$H$7$F!$(B{$B05=L(B | $BHs05=L(B | $B4D6-JQ?t$K$h$jH=JL(B}$B$N#3DL$j(B
$B$,$"$j$^$9!%$5$i$K!$%U%!%$%k%5%$%:$d7?$O(B {$BL@<(E*$K;XDj(B | $B4{$K$"$k%U%!(B
$B%$%k$G;XDj(B}$B$N#2DL$j$,$"$j$^$9!%$D$^$j!$A4It$G(B 2$B!_(B3$B!_(B2=12$BDL$j$N4X?t72$,(B
$B$"$j$^$9!%!V(BTEO$B%U%)!<%^%C%H(B & $B4D6-JQ?t$K$h$jH=JL!W$N#2<oN`$N4X?t$OCf%l(B
$B%Y%k4X?t$H$7$F4{$KA0@a$G@bL@$7$F$$$^$9$N$G!$$3$3$G$O;D$j$N(B10$B<oN`$N4X?t(B
$B$r$^$H$a$F@bL@$7$^$9!%(B

---
TEOFILE *TeoCreateNonGzFile(char *filename,
		     int width,int height,int xoffset,int yoffset,
		     int type,int bit,
		     int plane,int frame);
TEOFILE *TeoCreateNonGzSimilarFile(char *filename,TEOFILE *teofp);
TEOFILE *TeoCreateGzFile(char *filename,
		     int width,int height,int xoffset,int yoffset,
		     int type,int bit,
		     int plane,int frame);
TEOFILE *TeoCreateGzSimilarFile(char *filename,TEOFILE *teofp);
TEOFILE *PnmCreateFile(char *filename,int width,int height,
		   int type,int bit,int plane);
TEOFILE *PnmCreateSimilarFile(char *filename,TEOFILE *teofp);
TEOFILE *PnmCreateGzFile(char *filename,int width,int height,
		     int type,int bit,int plane);
TEOFILE *PnmCreateGzSimilarFile(char *filename,TEOFILE *teofp);
TEOFILE *PnmCreateNonGzFile(char *filename,int width,int height,
		     int type,int bit,int plane);
TEOFILE *PnmCreateNonGzSimilarFile(char *filename,TEOFILE *teofp);

$BL>A0$NF,$,(B Teo$B$K$J$C$F$$$k$b$N$O(B TEO$B%U%)!<%^%C%H!$(BPnm$B$K$J$C$F$$$k$b$N(B
$B$O(B PNM$B%U%)!<%^%C%H$N2hA|$r:n@.$7$^$9!%(B

NonGz$B$,$D$$$F$$$k$b$N$OHs05=L2hA|$r:n@.!$(BGz$B$,$D$$$F$$$k$b$N$O05=L2hA|(B
$B$r:n@.$7$^$9!%(BNonGz/Gz$B$N$I$A$i$b$D$$$F$$$J$$$b$N$O4D6-JQ?t$r8+$F<+F0E*(B
$B$KH=JL$7$^$9!%(B

$B:G8e$,(BFile$B$K$J$C$F$$$k$b$N$O2hA|$N%5%$%:$d7?$r%Q%i%a!<%?$GL@<(E*$K;X(B
$BDj$7$^$9!%(BSimilarFile$B$H$J$C$F$$$k$b$N$O!$4{$KB8:_$9$kF02h%U%!%$%k$HF1(B
$B$8%5%$%:!&7?$N%U%!%$%k$r:n@.$7$^$9!%(B

$B$J$*!$:G8e$,(B SimilarFile$B$H$J$C$F$$$k>l9g$G!$4{$KB8:_$9$k%U%!%$%k$,(B 
User Extension$B$r4^$s$G$$$?>l9g!$?7$?$K@8@.$5$l$k%U%!%$%k$b<+F0E*$KF1$8(B 
User Extension$B$,%3%T!<$5$l$^$9!%(B

$BDc%l%Y%k$J4X?t72$G$"$k$?$a!$M>7W$J$*@a2p$O>/$J$/!$0J2<$N#1E@$@$1$G$9!%(B
 $B!{%U%!%$%kL>$,(B "-" $B$N>l9g$K$O!$I8=`=PNO$K=q$-=P$7$^$9!%(B

-----------------------------------
4.1.2 User Extension$B$r;XDj$9$k%U%!%$%k:n@.(B
-----------------------------------

User Extension$B$,4^$^$l$^$9$N$G!$:n@.$9$k2hA|%U%)!<%^%C%H$O(B Teo$B$N$_$G$9(B
(Pnm$B%U%)!<%^%C%H$K$O(B User Extension$B$O$"$j$^$;$s(B)$B!%%U%!%$%k%5%$%:$d7?$O!$(B
$B$9$Y$FL@<(E*$K;XDj$7$^$9!%$?$@$7!$05=L7ABV$O!$(B{$B05=L(B | $BHs05=L(B | $B4D6-JQ(B
$B?t$K$h$jH=JL(B}$B$N#3DL$j$,$"$j$^$9!%(B

---
TEOFILE *TeoCreateFileWithUserExtension(char *filename,
                                        int width,int height,
                                        int xoffset,int yoffset,
                                        int type,int bit,
                                        int plane,int frame,
                                        int extc,char **extv);
TEOFILE *TeoCreateNonGzFileWithUserExtension(char *filename,
                                             int width,int height,
                                             int xoffset,int yoffset,
                                             int type,int bit,
                                             int plane,int frame,
                                             int extc,char **extv);
TEOFILE *TeoCreateGzFileWithUserExtension(char *filename,
                                          int width,int height,
                                          int xoffset,int yoffset,
                                          int type,int bit,
                                          int plane,int frame,
                                          int extc,char **extv);

$B>e5-$N#3<oN`$N4X?t(B
	TeoCreateFileWithUserExtension,
	TeoCreateNonGzFileWithUserExtension,
	TeoCreateGzFileWithUserExtension
$B$O!$$=$l$>$l(B
	TeoCreateFile,
	TeoCreateNonGzFile,
	TeoCreateGzFile 
$B$K(B User Extension$B$r=q$-9~$`5!G=$r;}$?$;$?$b$N$G$9!%0z?t(B extc,extv$B$,A}(B
$B$($F$$$^$9!%(B

$BNc$($P!$(B
---
extc = 3;
extv[0] = "Generator    Tsai-Method-Package dist2undist";
extv[1] = "ImageCenter  202.985252 258.470741";
extv[2] = "FocalLength  18.403144";
---
$B$H$J$C$F$$$k>l9g!$:n@.$5$l$k%U%!%$%k$N%X%C%@!<$O0J2<$N$h$&$K!$(BUser
Extension$B$,=q$-9~$^$l$^$9!%(B
---
TEO 1 # generated by TEO library version Version 1.0
#%      Generator       Tsai-Method-Package
#% ImageCenter  202.985252 258.470741
#% FocalLength  18.403144
100 100 0 0
S 16
3 2
 :
---

=============================================
4.2 User Extensiobn($B%f!<%63HD%NN0h(B)$B$X$N%"%/%;%9(B
=============================================

---
char *TeoGetUserExtension(TEOFILE *teofp,char *key);

User Extension$B$N2r@O$r=u$1$k4X?t$G$9!%(BUser Extension$B$N$=$l$>$l$N9T$r!$(B
$B%9%Z!<%9$b$7$/$O%?%V$G6h@Z$i$l$k%+%i%`$+$i$J$k$b$N$H$7$F!$Bh0l%+%i%`$,(B 
key$B$H0lCW$9$k$b$N$rC5$7$^$9!%La$jCM$O!$Bh0l%+%i%`$,0lCW$7$?9T$NBhFs%+(B
$B%i%`$N@hF,%]%$%s%?$G$9!%0lCW$9$k$b$N$,$J$1$l$P(B NULL$B$rJV$7$^$9!%(B

$BNc$($P!$(B
teofp->extc     = 3;
teofp->extv[0]  = "Generator    Tsai-Method-Package dist2undist";
teofp->extv[1]  = "ImageCenter  202.985252 258.470741";
teofp->extv[2]  = "FocalLength  18.403144";

$B$H$J$C$F$$$k>l9g!$(B
char *ptr;
ptr = TeoGetUserExtension(teofp,"ImageCenter");
$B$H$9$k$H!$(Bptr$B$OJ8;zNs(B "202.985252 258.470741"$B$r;X$7$^$9!%(B


=============================================
4.3 $BFbIt$G;HMQ$9$k4X?t72(B
=============================================

$BK\@a$G=R$Y$k4X?t72$O!$(Blibteo$B<+BN$,FbIt$GMxMQ$9$k$b$N$G$"$j!$(Blibteo$BMxMQ(B
$B<T$,D>@\;H$&$3$H$OA[Dj$7$F$$$^$;$s!%$7$+$7!$>l9g$K$h$C$F$OMxMQ$G$-$k$3(B
$B$H$b$"$k$?$a!$4JC1$K@bL@$r$7$^$9!%$J$*!$$3$3$G>R2p$9$k4X?t72$O!$FbIt$G(B
$B;HMQ$7$F$$$k4X?t72$N0lIt$G$9!%(B

---
int TeoIsLittleEndian(void);

ENDIAN $B$N%F%9%H$r9T$$$^$9!%;HMQ$7$F$$$k%^%7%s$,!$(Blittle endian $B$J$i(B 1
big endian $B$J$i(B 0 $B$rJV$7$^$9!%(B

---
int TeoTransEndian(char *buf, int size);

buf $B$KM?$($?%G!<%?$K$D$$$F(Blittle endian <-> big endian $B$NF~$l49$($r9T(B
$B$$$^$9!%(B

---
int TeoFreadEndian(char *buf, int size, int num);
int TeoFwriteEndian(char *buf, int size, int num);

Endian$B$N0c$$$r5$$K$9$k$3$H$J$/MxMQ$G$-$k(B fread,fwrite$B$G!$>o$K(B Big
Endian$B$KE}0l$5$l$^$9!%$?$@$7!$#1%U%l!<%`J,$N%G!<%?$r0lEY$KFI$_=q$-$9$k(B
$B$N$G$"$l$P!$$3$l$i$N4X?t$G$O$J$/!$(BTeoReadFrame() / TeoWriteFrame() $B$r(B
$B;HMQ$7$F2<$5$$!%2hA|$rAv::@~$4$H$K%"%/%;%9$9$k$H$$$C$?FCJL$J>l9g$K$N$_(B
$BMxMQ$7$F2<$5$$!%(B

buf  : $B3NJ]$7$?%a%b%j$N@hF,%]%$%s%?(B
size : 1$B$D$N%G!<%?$N%5%$%:(B
num  : $B%G!<%?$N?t(B

---
int TeoReadHeader(TEOFILE *teofp);

TEO$B%U%)!<%^%C%H$N%X%C%@>pJs$r3MF@$7$^$9!%(BTEO$B%U%)!<%^%C%H$N%U%!%$%k$r%*!<(B
$B%W%s$7$?D>8e$K$3$NA`:n$r9T$C$F2<$5$$!%(Binfo$B$K%X%C%@>pJs$,%;%C%H$5$l$^$9!%(B
$B$^$?!$%U%!%$%k%]%$%s%?$O:G=i$N%U%l!<%`$N@hF,$K0\F0$7$^$9!%(B

---
int TeoWriteHeader(TEOFILE *teofp);

TEO $B%U%)!<%^%C%H$N%X%C%@>pJs$r=q$-9~$_$^$9!%$"$i$+$8$a(Binfo$B$KI,MW$J>pJs!$(B
(width/height/type/bit/plane/frame$B$J$I(B)$B$r%;%C%H$7$F$+$i$3$N4X?t$r8F$S(B
$B=P$7$F2<$5$$!%(B

---
int PnmReadHeader(TEOFILE *teofp);

PBM,PGM,PPM$B$N(Braw$B7A<0(B($B%^%8%C%/%J%s%P!<(B P4,P5,P6)$B$N%U%!%$%k$N%X%C%@$rFI(B
$B$s$G!$(B1$B%U%l!<%`$N(BTEO$B%U%)!<%^%C%H$H$7$F07$$$^$9!%(B

---
int PnmWriteHeader(TEOFILE *teofp);

PNM$B$G07$&$3$H$N$G$-$k2hA|7A<0(B(1frame,UNSIGNED)$B$G(B
bit 1 & plane 1
bit 8 & plane 1
bit 8 & plane 3
$B$K$D$$$F!$(BPNM $B7A<0$N%X%C%@$r=PNO$7$^$9!%(B

######################################################################
$B#5(B $B%G%P%C%0%b!<%I(B

$B$3$N%i%$%V%i%j$O!$M>7W$J$3$H$r$7$J$$$3$H$r4pK\J}?K$H$7$F$$$k$?$a!$8zN((B
$BLL$GM%$l$F$*$j!$%j%"%k%?%$%`=hM}$J$I$N%9%T!<%I$r=E;k$9$kMQES$K$b==J,Mx(B
$BMQ2DG=$G$9!%$=$NH?LL!$%(%i!<%A%'%C%/$J$I$r>J$$$F$$$k$?$a$K!$%(%i!<$,H/(B
$B@8$7$?;~$N860x5fL@$,Fq$7$/!$=i?4<T$K$O07$$$K$/$$$H$$$&LL$b$"$j$^$7$?!%(B

$B$=$N$?$a!$(BVer 1.1$B0J9_$+$i$O!V%G%P%C%0%b!<%I!W$H8F$V?75!G=$,DI2C$5$l$F(B
$B$$$^$9!%%G%P%C%0%b!<%I$G%3%s%Q%$%k$5$l$?%W%m%0%i%`$O!$<B9T;~$K$5$^$6$^(B
$B$J%A%'%C%/$r9T$$!$2x$7$$F0:n$,$"$l$PD>$A$K>\:Y$J860x$rI=<($7$F$/$l$^$9!%(B
$B$?$@$7!$<B9TB.EY$OMn$A$^$9!%(B

$BK\%i%$%V%i%j$rMxMQ$9$k%W%m%0%i%^$O!$@8;:8zN($r$"$2$k$?$a$K!$$^$:!$%G%P%C(B
$B%0%b!<%I$G%3%s%Q%$%k$r9T$&$3$H$r$*4+$a$7$^$9!%==J,$K%F%9%H$r9T$$!$%P%0(B
$B$,40A4$K$J$/$J$C$?$3$H$r3NG'$7$F$+$i!$%G%P%C%0%b!<%I$r$O$:$7$F%3%s%Q%$(B
$B%k$7$F2<$5$$!%%G%P%C%0%b!<%I$r$O$:$7$?%P%$%J%j$O!$=>Mh$HF1$8$/!VM>7W$J(B
$B$3$H!W$r$7$^$;$s$N$G9bB.$KF0:n$7$^$9!%$3$N$h$&$K$7$F!$0BDj$G9bB.$J<B9T(B
$B%P%$%J%j$rF@$k$3$H$,$G$-$^$9!%(B

$B%G%P%C%0%b!<%I$K$O!$;0$D$N%l%Y%k$,$"$j$^$9!%(B
    Level-1 
       $B!&(BTeoGetPixel,TeoPutPixel$B$G(B(x,y,p)$B$,HO0O$r1[$($F$$$l$P7Y9p(B
       $B!&(BTeoGetPixel,TeoPutPixel$B$9$k$H$-$K!$(BTEOIMAGE$B$,(B NULL$B$G$"$l$P%(%i!<(B
       $B!&(BTeoAllocImage$B$7$?$H$-$K!$2hA|$NI}$d9b$5$,Ii$NCM$K$J$C$F$$$l$P7Y9p(B
       $B!&(BTeoPutPixel,TeoGetPixel,TeoPutBit,TeoGetBit $B$G(B, $B;XDj$7$?2hAG(B
         $B$N7?$H<B:]$N2hAG$N7?$N%5%$%:$,0[$C$F$$$l$P7Y9p(B
    Level-2
       $B!&(BTeoCloseFile$B$7$?;~$K!$:G=*%U%l!<%`$G$J$$$J$i(B(WriteFrame$BK:$l(B)
         $B$G$"$l$P7Y9p(B
       $B!&(BTeoAllocImage$B$7$?$H$-$K!$2hA|%5%$%:$,0[>o$K$G$+$$(B(100MB$B0J>e(B)$B$H$-7Y9p(B
       $B!&(BTeoOpenFile,TeoCreateFile$B$G!$%U%!%$%kL>$,(B *.teo$B$G=*$C$F$$$J$1$l$P7Y9p(B
          (sprintf$B$G%U%!%$%kL>$r<+F0@8@.$9$k;~$N%P%0$rH/8+(B)

    Level-3
       $B!&$=$NB>$9$Y$F$NIT?3$J5sF0$K7Y9p$r=P$9(B.

$B%G%P%C%0%b!<%I$rM-8z$K$9$k$K$O(B, $B%=!<%9$rJQ99$9$kI,MW$OA4$/$"$j$^$;$s!%(B
$B%3%s%Q%$%k;~$K(B

  -DTEO_DEBUG1
  -DTEO_DEBUG2
  -DTEO_DEBUG3
  -DTEO_DEBUG_ALL

$B$N$I$l$+$N%*%W%7%g%s$rIU$1$F$/$@$5$$(B. 1,2,3 $B$O%G%P%C%0%l%Y%k$K$J$j$^$9(B.
ALL$B$OA4$F$N%G%P%C%0%b!<%I$rM-8z$K$9$k%*%W%7%g%s$G!$8=:_$O(B TEO_DEBUG3$B$H(B
$BF1$8$G$9!%(B

  -DTEO_DEBUG_ERROR

$B$N%*%W%7%g%s$rJ;MQ$9$k$H(B, $B7Y9p$r=P$9$H$3$m$rA4$F%(%i!<$K$7$FDd;_$9$k$h(B
$B$&$K$J$j$^$9(B.


######################################################################
$B#6(B $B%5%s%W%k%W%m%0%i%`(B

$B$3$N%W%m%0%i%`$O!$Bh#10z?t$KF~NO2hA|$N%U%!%$%kL>$r!$Bh#20z?t$K=PNO2hA|(B
$B$N%U%!%$%kL>$r;XDj$7$F<B9T$9$k$H!$?'$rH?E>$7$?%M%,2hA|$r@8@.$7$^$9!%(B

/*****************************************
 * Unsigned 8bit$B$N2hA|$rF~NO$H$7(B,        *
 * $B%M%,2hA|$r@8@.$9$k%W%m%0%i%`(B          *
 *                                       *
 * ($B%^%k%A%W%l!<%s!&%^%k%A%U%l!<%`BP1~(B)  *
 *****************************************/

#include <stdio.h>
#include <teo.h>

int main( int argc, char *argv[])
{
    int		x,y,f,p;
    TEOFILE	*fileIn,*fileOut;
    TEOIMAGE	*imgIn, *imgOut;
    TEO_UINT8	pixel;

    /* $BF~NO2hA|$N%*!<%W%s(B
       $B$3$N;~E@$G%X%C%@!<>pJs$,FI$_$H$i$l$k(B */
    if ((fileIn = TeoOpenFile(argv[1]))==NULL) TeoError();

    /* $B$3$N%W%m%0%i%`$O(B Unsigned 8bit$B$7$+;H$($J$$(B */
    if(TeoType(fileIn) != TEO_UNSIGNED || TeoBit(fileIn) != 8){
      fprintf(stderr,"Wrong pixel type.\n");
      exit(-1);
    }

    /* $B=PNO2hA|$r@8@.(B ($BF~NO2hA|$HF1$8%5%$%:!&7?(B)
       $B$3$N;~E@$G%X%C%@!<>pJs$,%U%!%$%k$K=q$-=P$5$l$k(B */
    fileOut= TeoCreateSimilarFile(argv[2],fileIn);

    /* $B#1%U%l!<%`J,$N2hA|>pJs$r3JG<$9$k$N$KI,MW$J%a%b%j$r3NJ](B
       $B%5%$%:$O0z?t$NF02hA|$r;2>H$7$F7hDj$9$k(B */
    imgIn  = TeoAllocSimilarImage(fileIn);
    imgOut = TeoAllocSimilarImage(fileOut);

    for(f=0; f<TeoFrame(fileIn); f++){/* $B%^%k%A%U%l!<%`$X$NBP1~(B */

      /* $B#1%U%l!<%`J,FI$_9~$`(B
         $B$$$A$$$A(Bmalloc$B$9$k$3$H$J$/!$$I$s$I$s>e=q$-$7$F$$$k(B */
      TeoReadFrame(fileIn,imgIn); 

      for (y=TeoYstart(fileIn); y<=TeoYend(fileIn); y++)
	for (x=TeoXstart(fileIn); x<=TeoXend(fileIn); x++)
	  for(p=0; p<TeoPlane(fileIn); p++){/* $B%^%k%A%W%l!<%s$X$NBP1~(B */

	    pixel = TeoGetPixel(imgIn,x,y,p,TEO_UINT8);
	    TeoPutPixel(imgOut,x,y,p,TEO_UINT8,255-pixel);
	  }

      /* $B#1%U%l!<%`J,$N%G!<%?$r=q$-=P$9(B */
      TeoWriteFrame(fileOut,imgOut);
    }

    /* $B2hA|$N$?$a$N%a%b%j$r2rJ|(B */
    TeoFreeImage(imgIn);
    TeoFreeImage(imgOut);

    /* $B2hA|%U%!%$%k$r%/%m!<%:(B */
    TeoCloseFile(fileIn);
    TeoCloseFile(fileOut);

    return (int)0;
}


$B>e5-$N%=!<%9$r%3%s%Q%$%k$9$k$?$a$N(B Makefile$B$NNc$r<($7$^$9!%%=!<%9%U%!(B
$B%$%k$NL>A0$,(B nega.c $B$G!$<B9T%P%$%J%j$NL>A0$,(B nega$B$G$9!%(BTEO$B4XO"$N%U%!(B
$B%$%k$N>l=j$O!$3F%5%$%H$K$"$o$;$FJQ99$7$F2<$5$$!%C^GHBg2hA|8&$N>l9g$O(B
CFLAGS        = -DTEO_DEBUG_ALL -O -I/usr/local/Image/include -I.
LDFLAGS	      = -L/usr/local/Image/lib
$B$HJQ99$7$F2<$5$$!%(B
$B$J$*!$2<5-$NNc$G$O%G%P%C%0%b!<%I$,M-8z$K$J$k$h$&$K$J$C$F$$$^$9!%(B

$B!a!a!a!a!a(B Makefile$B$NNc(B $B!a!a!a!a!a(B
CC	      = gcc
CFLAGS        = -DTEO_DEBUG_ALL -O -I/usr/local/lab/include -I.
LDFLAGS	      = -L/usr/local/lab/lib
LIBS	      = -lteo -lm
HDRS          =
OBJS	      = nega.o
PROGRAM	      = nega

all:		$(PROGRAM)

$(PROGRAM):     $(OBJS) $(HDRS)
		$(CC) $(OBJS) $(LDFLAGS) $(LIBS) -o $(PROGRAM)

clean:;		rm -f *.o *~ core $(PROGRAM)
$B!a!a!a!a!a(B $B$3$3$^$G(B $B!a!a!a!a!a(B


######################################################################
$B#7(B $B4X?t%j%U%!%l%s%9(B

$B4X?t!&%^%/%m$N$&$A!$<g$K0lHL%f!<%6$K4X78$"$k$b$N$r0J2<$KNs5s$7$^$9!%(B

$B!a!a!a(B $B%U%!%$%k%"%/%;%94X78(B $B!a!a!a(B
TEOFILE *TeoOpenFile(char *filename);
TEOFILE *TeoCreateFile(char *filename,
		   int width,int height,int xoffset,int yoffset,
		   int type,int bit,
		   int plane,int frame);
TEOFILE *TeoCreateSimilarFile(char *filename,TEOFILE *teofp);

$B!a!a!a(B $B2hA|%"%/%;%94X78(B $B!a!a!a(B
TEOIMAGE *TeoAllocSimilarImage(TEOFILE *teofp);
TEOIMAGE *TeoAllocSimilarImage(TEOIMAGE *image);
TEOIMAGE *TeoAllocImage(int width,int height,int xoffset,int yoffset,
			int type,int bit,int plane);
int TeoFreeImage(TEOIMAGE *image);
int TeoReadFrame(TEOFILE *teofp,TEOIMAGE *image);
int TeoWriteFrame(TEOFILE *teofp,TEOIMAGE *image);
int TeoSetAbsFrame(TEOFILE *teofp, int frame);
int TeoSetRelFrame(TEOFILE *teofp, int frame);
int TeoCheckFrame(TEOFILE *teofp)

$B!a!a!a(B $B2hAG%"%/%;%94X78(B $B!a!a!a(B
ETYPE TeoGetPixel(TEOIMAGE *image,int index_x,int index_y,int index_p,
		  ETYPE);
ETYPE TeoPutPixel(TEOIMAGE *image,int index_x,int index_y,int index_p,
		  ETYPE,ETYPE val);
TEO_BIT TeoGetBit(TEOIMAGE *image,int index_x,int index_y,int index_p);
TEO_BIT TeoPutBit(TEOIMAGE *image,int index_x,int index_y,int index_p,
		  TEO_BIT val);

$B!a!a!a(B $B9=B$BN%"%/%;%9%^%/%m(B $B!a!a!a(B
int TeoWidth(  TEOFILE *teofp) / int TeoWidth(  TEOIMAGE *image)
int TeoHeight( TEOFILE *teofp) / int TeoHeight( TEOIMAGE *image)
int TeoType(   TEOFILE *teofp) / int TeoType(   TEOIMAGE *image)
int TeoBit(    TEOFILE *teofp) / int TeoBit(    TEOIMAGE *image)
int TeoPlane(  TEOFILE *teofp) / int TeoPlane(  TEOIMAGE *image)
int TeoFsize(  TEOFILE *teofp) / int TeoFsize(  TEOIMAGE *image)
int TeoXoffset(TEOFILE *teofp) / int TeoXoffset(TEOIMAGE *image)
int TeoYoffset(TEOFILE *teofp) / int TeoYoffset(TEOIMAGE *image)

int TeoXstart( TEOFILE *teofp) / int TeoXstart( TEOIMAGE *image)
int TeoYstart( TEOFILE *teofp) / int TeoYstart( TEOIMAGE *image)
int TeoXend(   TEOFILE *teofp) / int TeoXend(   TEOIMAGE *image)
int TeoYend(   TEOFILE *teofp) / int TeoYend(   TEOIMAGE *image)

int TeoIsBIT(    TEOFILE *teofp)  / int TeoIsBIT(    TEOIMAGE *image)
int TeoIsUINT8(  TEOFILE *teofp)  / int TeoIsUINT8(  TEOIMAGE *image)
int TeoIsSINT8(  TEOFILE *teofp)  / int TeoIsSINT8(  TEOIMAGE *image)
int TeoIsUINT16( TEOFILE *teofp)  / int TeoIsUINT16( TEOIMAGE *image)
int TeoIsSINT16( TEOFILE *teofp)  / int TeoIsSINT16( TEOIMAGE *image)
int TeoIsUINT32( TEOFILE *teofp)  / int TeoIsUINT32( TEOIMAGE *image)
int TeoIsSINT32( TEOFILE *teofp)  / int TeoIsSINT32( TEOIMAGE *image)
int TeoIsFLOAT32(TEOFILE *teofp)  / int TeoIsFLOAT32(TEOIMAGE *image)
int TeoIsFLOAT64(TEOFILE *teofp)  / int TeoIsFLOAT64(TEOIMAGE *image)

int    TeoFrame(TEOFILE *teofp)
int    TeoHsize(TEOFILE *teofp)
FILE  *TeoFp(TEOFILE *teofp)
int    TeoExtc(TEOFILE *teofp);
char **TeoExtv(TEOFILE *teofp);
int    TeoCurrent(TEOFILE *teofp);

(void *)TeoData(TEOIMAGE *image)

$B!a!a!a(B $B$=$NB>(B $B!a!a!a(B

void TeoError(void);


######################################################################
$B#8(B $B:G8e$K(B

TEO$B$r07$&4pK\%i%$%V%i%j(B libteo$B$O!$:#8e$O4pK\E*$K%P%0%U%#%C%/%9$N(B
$B$_$N%P!<%8%g%s%"%C%W$H$7$^$9!%$h$jJXMx$J5!G=$r;}$C$?4X?t72$O!$JL(B
$BES%f!<%F%#%j%F%#%i%$%V%i%j(B (libteoutil)$B$H$7$FDs6!$5$l$$$^$9$N$G!$(B
$B$=$A$i$rJ;MQ$9$k$3$H$r$*4+$a$7$^$9!%(B

TEO$B%U%)!<%^%C%H!$$*$h$S(B libteo$B$K4X$9$k5?LdE@$d%P%0$N;XE&$J$I!$MM!9$J>p(B
$BJs$O(B TEO@chino.it.okayama-u.ac.jp $B$X$*Ld$$9g$o$;2<$5$$!%(B

######################################################################

							$BJ8@U!'8~@n9/Gn(B
