$B%G%#%9%W%l%$%W%j%_%F%#%V$G $BE@(B (Point) $B$O!":BI87O>e$G$N0LCV$rI=$o$9$?$a$N4pK\E*$J35G0$G$"$j!"(B $B0J(B
$B2<$N9=B$BN$K$h$jDj5A$5$l$k(B($B4pK\%G!<%?%?%$%W$K4X$7$F$O(B
$B!V(B$BBh(B1$BJT(B $BBh(B1$B>O(B $B4pK\%G!<%?%?%$%W(B$B!W$r;2>H$N;v(B)$B!#(B $B$^$?!"D9J}7A(B (Rectangle) $B$O!"(B $B:BI87O>e$G$NNN0h$rI=$o$9$?$a$N=EMW$J35G0$G$"$j!"0J2<$N9=B$BN$K$h$jDj5A$5$l$k!#(B $B$3$3$G $B$^$?!"D9J}7A$N=89g$rI=8=$9$k$?$a$ND9J}7A$N%j%9%H(B(RectangleList) $B$O0J2<$N$h$&$KDj5A$5$l$k!#%j%9%H$N:G8e$NMWAG$N(B next $B$O(B NULL(0) $B$H$J$k!#(B $B%S%C%H%^%C%W$O!"(B $B?^7A$dJ8;zEy$NI=<(%$%a!<%8$rBg$-$5!"(B $B$*$h$S?'$r;}$C$?E@(B8$B%T%/%;%k(B)$B$N=89g$H$7$FI=$o$7!"$=$NE@$r%a%b%j>e$N(B1$B%S%C%H!"$"$k$$$OJ#?t%S%C%H$K0lBP0lBP1~$5$;$F!" $B%S%C%H%^%C%W>e$G$O0J2<$K<($9?^$N$h$&$K!"(B1$B$D$N%T%/%;%k$,@0?t:BI87O>e$N(B1$B$D$NE@$KBP1~$E$1$i$l$k!#(B
$B%S%C%H%^%C%W$O%$%a!<%8$rI=8=$9$k$?$a$N%G!<%?9=B$$G$"$k$,!"
$B%S%C%H%^%C%W$O!"4pK\E*$KO"B3$7$?(B1$Be$N%S%C%H$HI=<(>e$N%T%/%;%k$H$NBP1~IU$1$O!"0J2<$N$h$&$KDj5A$5$l$k!#(B
$B%S%C%H%^%C%W$O0J2<$N9=B$BN$K$h$jDj5A$5$l$k!#(B
planes $B$O%W%l!<%s?t$rI=$o$7!"(B1$B!A(B28$B$NHO0O$NCM$G$J$/$F$O$$$1$J$$!#$^$?!"%W%l!<%s?t(B $B!_(B $BM-8z%T%/%;%k%S%C%H?t(B($B2<5-(B) $B$O!"(B28$B0J2<$G$J$/$F$O$$$1$J$$!#(B pixbits $B$O!">e0L%P%$%H$,%T%/%;%k%S%C%H$N6-3&%S%C%H?t$rI=$o$7!"2<0L%P%$%H$,M-8z%S%C%H?t$rI=$o$9!#(B $B6-3&%S%C%H?t$O!"%S%C%H%^%C%W%a%b%j>e$G$N(B1$B%T%/%;%kEv$?$j$N%S%C%H?t$r<($9(B1$B!A(B32$B$NHO0O$NCM$G$"$j!"DL>o$O(B2$B$N$Y$->h$NCM$G$"$k!#M-8z%S%C%H?t$O!"6-3&%S%C%H?t$N$&$A $B$J$*!"C1$K%T%/%;%k%S%C%H?t$H8@$C$?>l9g$O!"M-8z%S%C%H?t$r<($9$b$N$H$7!"8e$K=R$Y$k%T%/%;%kCM$OM-8z%S%C%H?t$r$b$H$K$7$F$$$k!#(B rowbytes $B$O!"(B1$B$D$N%W%l!<%s$N2#I}$N%P%$%H?t$r<($7!"I,$:6v?t%P%$%H$H$J$k!#(B bounds $B$O!"%S%C%H%^%C%W$NBg$-$5$H:BI87O$r<($9D9J}7A$G!"(B $B:8>e$N%T%/%;%k$N:BI8CM$H!"1&2<$N%T%/%;%k$N:BI8CM$r;XDj$9$k!#$3$l$K$h$j!"%S%C%H%^%C%W$NBP>]$H$9$kA4BN$NBg$-$5$r;XDj$9$k$H$H$b$K!"(B $B:BI87O$N86E@(B (0,0) $B$rG$0U$N0LCV$K@_Dj$9$k$3$H$,$G$-$k!#$3$N(B bounds $B$ODL>o!"(Browbytes $B$G<($5$l$k%S%C%H%^%C%W$N%a%b%jNN0h$NBg$-$5$K0lCW$9$kBg$-$5$K@_Dj$5$l$k!#(B baseaddr $B$O!"(B $B3F%W%l!<%sKh$N%S%C%H%^%C%W$N3+;O%a%b%j%"%I%l%9$r<($9!"(Bplanes $B8D$NMWAG$+$i$J$kG[Ns$G$"$j!"(Bbaseaddr $B$NCM$,!"(BNULL $B$N>l9g$O!"(B $BBP1~$9$k%W%l!<%s$,B8:_$7$J$$$3$H$rI=$o$9!#(B $B%S%C%H%^%C%W>e$N:8>e$N%T%/%;%k$r>o$K(B(0, 0)$B$H9M$($?:BI8CM$r!V@dBP:BI8!W$H8F$S!"(Bbounds $B$K$h$j5,Dj$5$l$k:BI8CM!"B($A!"(Bbounds.p.lefttop $B$r:8>e$N%T%/%;%k$N:BI8CM$H$7$?$b$N$r!"!VAjBP:BI8!W$H8F$V!#DL>o$O!VAjBP:BI8!W$,;HMQ$5$l$k!#(B $B%S%C%H%^%C%W>e$G!"(B1$B$D$N%T%/%;%k$KBP1~$9$kJ#?t$N%S%C%H$rJB$Y$F(B1$B$D$N?tCM$H$7$F8+$?CM$r%T%/%;%kCM$H8F$V!#(B $B%T%/%;%kCM$O0J2<$N$h$&$KDj5A$5$l!"(B 0$B!A(B(2 ** depth $B!](B1)$B$NHO0O$NCM$r$H$k!#(B $B%T%/%;%kCM$O!"$=$N%T%/%;%k$N?'$dGr9u$N3,D4$rI=$o$9$,!" $B$J$*!"(B $B%G%#%9%W%l%$%W%j%_%F%#%V$G$O(B depth $B$O:GBg(B28$B$^$G$G$"$j!"%T%/%;%kCM$H$7$F(B32$B%S%C%H$N%G!<%?$r;HMQ$7!"2<0L$N(B depth($B:GBg(B28)$B%S%C%H$,M-8z$H$J$k!#(B $B05=L%S%C%H%^%C%W$O!"%S%C%H%^%C%W%G!<%?$r05=L$7!"%5%$%:$r>.$5$/$7$?$b$N$G!" $B05=L%S%C%H%^%C%W$O!"0J2<$N$h$&$KDj5A$5$l$k!#(B compac $B$O%$%a!<%8$N05=LJ}K!$r<($9$b$N$G0J2<$N$b$N$H$J$k!#(B NOCOMPAC ($BHs05=L(B) $B$N>l9g$O!"%S%C%H%^%C%W$NFbMF$ODL>o$N%S%C%H%^%C%W$HA4$/F10l$H$J$k!#05=L$N>l9g$O!"%S%C%H%^%C%W$N(B baseaddr[] $B$G<($5$l$k%G!<%?ItJ,$,05=L$5$l$?7A<0$G3JG<$5$l$k!#(B $B@hF,$N%X%C%@It$K$O0J2<$NFbMF$,F~$j!"%X%C%@It$N8e$K%i%$%sKh$N(BMH$BId9fNs%G!<%?$,JB$V!#(B $B3F%i%$%s$N%G!<%?$O!"(BMH$BId9fNs!"(BFILL($BG$0U8D$N(B0)$B!"(B EOL(000000000001) $B$NJB$S$G$"$j!":G8e$N(BEOL$B$,6v?t%P%$%H6-3&$K$/$k$h$&$K(BFILL$B$K$h$j%Q%C%I$5$l$k!#(BMH$BId9fNs!"(BFILL$B!"(BEOL $B$O$9$Y$F!"(B $BDc0L%"%I%l%9$N(BMSB$B$+$i9b0L%"%I%l%9$N(BLSB$B$K8~$+$&=gHV$H$J$k!#(B MH$BId9f$N>l9g$HF1MM$G$"$j!"3F%i%$%s$N%G!<%?$,(BMR$BId9fNs$H$J$k!#(B $B0lHLE*$K%+%i!<$NI=<(J}<0$O!"0J2<$N(B2$B$D$NJ}K!$KJ,N`$5$l$k!#(B $B%+%i!pJs$r;}$C$F$$$k!#(B($B>\:Y$O8e=R(B) $B%G%#%9%W%l%$%W%j%_%F%#%V$G$O!"%+%i!<;XDj$NJ}K!$H$7$F!"%T%/%;%kCM$K$h$kD>@\;XDj$H!"(BRGB $B$N3FMWAG$N51EY$K$h$k@dBP;XDj$N(B 2 $B $B%+%i!<;XDj$O0J2<$KDj5A$5$l$k9=B$BN$K$h$j9T$J$o$l$k!#(B $B COLOR $B$N2<0L(BN$B%S%C%H$r$=$N$^$^%T%/%;%kCM$H$7!">e0L%S%C%H$OL5;k$9$k!#$3$3$G(BN$B$O!"BP>]%S%C%H%^%C%W$N?<$5$r0UL#$9$k!#(B COLOR $B$G;XDj$7$?%+%i!<$K:G$b6a$$%+%i!<$N%T%/%;%kCM$H$9$k!#%+%i!<%^%C%WJ}<0$N>l9g$O%+%i!<%^%C%W$N8!:w$r9T$J$$!";XDj$7$?(B COLOR $B$K:G$b6a$$?'$N%(%s%H%j$N%$%s%G%C%/%9$r%T%/%;%kCM$H$9$k!#(B $B8GDj%+%i! $B%G%#%9%W%l%$%W%j%_%F%#%V$N $B0[$J$kIA2h4D6-$KBP$9$k%G%#%9%W%l%$%W%j%_%F%#%V$N4X?t$,F1;~$K $B5U$K!"F10l$NIA2h4D6-$KBP$9$k%G%#%9%W%l%$%W%j%_%F%#%V$N4X?t$,F1;~$K $BIA2h4D6-$N@8@.;~$K$O!"IA2hBP>]$H$9$k%G%P%$%9$r<($9J8;zNs$G;XDj$9$k!#$"$i$+$8$a%G%#%9%W%l%$%W%j%_%F%#%V$KEPO?$5$l$F$$$k%G%P%$%9$N$_$,;XDj2DG=$G$"$k!#(B $B%G%#%9%W%l%$%W%j%_%F%#%V$G$+$J$i$:%5%]!<%H$7$F$$$k%G%P%$%9$H$7$F0J2<$N$b$N$,$"$2$i$k!#(B $BIA2hBP>]%G%P%$%9$K$O!"0J2<$N%G%P%$%98GM-$N>pJs(B($B;EMM(B)$B$,Dj5A$5$l$F$*$j!"$3$l$O%S%C%H%^%C%W>e$KIA2h$7$?%$%a!<%8$N6qBNE*$JI=8=$NDj5A$r0UL#$9$k!#(B $B2<0L%P%$%H$,3,D4%S%C%H?t$rI=$o$7!">e0L%P%$%H$,%S%C%H0LCV$rI=$o$9!#%^%C%WJ}<0$N>l9g$O!"%S%C%H0LCV$O0UL#$r;}$?$:(B0$B$H$J$j!"%^%C%WJ}<0$G$J$$>l9g$O!"%T%/%;%kCM>e$G$N(BLSB$B$r(B0$B$H$7$?%S%C%H0LCV$r<($9!#(B $B%+%i!<>pJs$r;}$?$J$$HFMQ%a%b%jIA2h4D6-$N>l9g$K$O!"%T%/%;%kCM$H%+%i!<$H$NBP1~$ODj5A$5$l$J$$$3$H$K$J$j!"(BCOLOR $B$G;XDj$5$l$k%+%i!<$K$D$$$F$O!"F)L@!?ITF)L@$O0UL#$"$k$b$N$H$7$F=hM}$5$l$k$,!"%+%i!
$BIA2h4D6-$K$O!"@8@.;~$K;XDj$7$?%a%b%j%S%C%H%^%C%W$,BP1~IU$1$i$l!"IA2h4D6-$KBP$9$kIA2h$O!"$=$N%S%C%H%^%C%W>e$K9T$J$o$l$k!#(B VRAM $BEy$N%S%C%H%^%C%W$G$OFC $B%W%l!<%s?t$,@5$NCM$N>l9g$O!"$=$N%S%C%H%^%C%W$N%G!<%?$N0UL#$O!"I8=`$N%S%C%H%^%C%W$NDj5A$=$N$b$N$G$"$k$,!"0lHL$K $BHFMQ%a%b%jIA2h4D6-$K$O!"BP>]$H$9$k%S%C%H%^%C%W$N%T%/%;%kCM$N $B%+%i!<>pJs$,@_Dj$5$l$F$$$k>l9g$O!"@dBP(BRGB$B$K$h$k%+%i!<;XDj$O%+%i!<>pJs$K=>$C$F%T%/%;%kCM$KJQ49$5$l$F $B%S%C%H%^%C%WA`:n4X?t$dIA2h%Q%?!<%s$G;HMQ$5$l$k%S%C%H%^%C%W$N?'JQ49$r9T$&$?$a!"IA2h4D6-$K?'JQ49MQ$N%+%i!<>pJs$r@_Dj$9$k$3$H$,$G$-$k!#(B
colmap $B$O!"(Battr & 0x8 $B$,(B 0$B0J30>l9g$K!" $B $BIA2h4D6-$K$*$$$F!" $B%/%j%C%T%s%0NN0h$,L$Dj5A$N>l9g$O!"(B $BBP>]%S%C%H%^%C%W$N6-3&D9J}7A(B (bounds)$B$K4^$^$l$kNN0h$,$9$Y$FIA2hBP>]$H$J$k!#(B $B%/%j%C%T%s%0NN0h$O!"0J2<$NG$0UNN0h9=B$BN$K$h$jDj5A$5$l!"$=$N:BI87O$OAjBP:BI8$G;XDj$5$l$k!#(B $B?eJ?NN0h$O(B1$B$D$N?bD>:BI8CM(B($B%i%9%?!<(B)$B$KBP1~$9$k?eJ?:BI8$NNN0h$r;XDj$9$k$b$N$G$"$j!"(Bnx $B$O!"?eJ?:BI8CM$N8D?t$r<($7!"(Bx[0] $B!A(B x[nx-1] $B$O!"(B $B?eJ?:BI8CM$r>.$5$$=g$KJB$Y$?$b$N$G$"$k!#?eJ?:BI8CM$O!"G$0UNN0hA4BN$r0O$`:G>.$ND9J}7A$N(B r.c.left $B$NCM$r(B0$B$H$9$kHsIi$NCM$G<($5$l$k!#(B $B?eJ?:BI8CM$O(B2$B$D(B1$BAH$G$"$j!"Bh0l$N?eJ?:BI8CM(B($B>.$5$$CM(B)$B$+$i!"BhFs$N?eJ?:BI8CM(B($BBg$-$$CM(B)$B!](B1$B$N?eJ?:BI8CM$^$G$,!"BP>]NN0h$H$J$k!#(B($BBh0l$NCM$O4^$^$l$k$,!"BhFs$NCM$O4^$^$l$J$$!'(Bhalf-open)$B!#(B $BF10l$N?eJ?:BI8CM$,(B2$B$D0J>e4^$^$l$F$$$?>l9g!"6v?t2s$N$H$-$K$O$=$N:BI8CM$OB8:_$7$J$$$b$N$H8+$J$5$l!"4q?t2s$N$H$-$K$O(B1$B$D$N$_B8:_$7$F$$$k$b$N$H8+$J$9!#(Bnx $B$,6v?t$G$J$$>l9g$O!":G8e$N:BI8CM$OL5;k$5$l$k!#(B $BF10l$N?eJ?NN0h$r;}$DO"B3$7$??bD>:BI8$NNN0h$r(B($B?bD>(B)$B6h4V$H8F$S!"G$0UNN0h$O!"$$$/$D$+$N(B($B?bD>(B)$B6h4V$K$h$jDj5A$5$l$k!#(Bns $B$O6h4V$N?t$r<($7!"(B ns$B!a(B0$B$N>l9g$O!"G$0UNN0h$OD9J}7A(B r $B$KEy$7$$$3$H$r0UL#$9$k!#(B s[N].y $B$O6h4V(B N $B$N3+;O?bD>:BI8CM$r<($7!"$=$N6h4V$N=*N;?bD>:BI80LCV$O!"(Bs[N+1].y$B!](B1$B!"$^$?$O(B r.c.bottom$B!](B1($B:G8e$N6h4V$N;~(B)$B$H$J$k!#(B s[N]. hp $B$O6h4V(B N $B$KBP1~$9$k?eJ?NN0h$X$N%]%$%s%?$r<($9!#(Bs[N].hp$B!a(BNULL$B$N;~$O!"$=$N6h4V$O6u$G$"$k$3$H$r0UL#$9$k!#(B $B $BIA2h%b!<%I$O!"0J2<$N7A<0$N(B32$B%S%C%H%G!<%?$G;XDj$5$l$k!#(B $BIA2h1i;;%b!<%I$O!"IA2h$NBP>]$H$9$k%T%/%;%k$K!"=q$-9~$`$Y$-%T%/%;%kCM(B(src)$B$H(B $B4{$K8=:_$N%T%/%;%kCM(B(dest)$B$H!"IA2h8e$N%T%/%;%kCM(B(result)$B$H$N4X78$r5,Dj$9$k$b$N$G$"$j!"0J2<$K<($9$b$N$,MQ0U$5$l$F$$$k!#(B $B%S%C%H%^%C%W7A<0JQ49;XDj$O!"%=!<%9$H%G%#%9%F%#%M!<%7%g%s$N%S%C%H%^%C%W$N7A<0(B($B%W%l!<%s?t(B $B!"(B $B%T%/%;%k%S%C%H?t(B)$B$,0[$J$k>l9g$O0J2<$K<($9JQ49$r9T$J$&$3$H$r;XDj$9$k!#(B $B%^%9%/%T%/%;%k;XDj$O!"IA2h4D6-$KDj5A$5$l$?%^%9%/%T%/%;%kCM$N8z2L$r;XDj$9$k!#(B $BIA2h%Q%?!<%s$O!"IA2h$NBP>]$H$J$k%T%/%;%k$K=q$-9~$`%T%/%;%kCM$r;XDj$9$k$?$a$K;HMQ$5$l$k%G!<%?$G$"$j!"G$0U$NBg$-$5$ND9J}7A$N%G!<%?$H$7$FDj5A$5$l$k!#(B $BIA2hBP>]$N%S%C%H%^%C%W$N6-3&D9J}7A(B(bounds)$B$N86E@(B(0,0) $B$KIA2h%Q%?!<%s%G!<%?$N:8>e$NE@$rB7$($F!"5,B'@5$7$/%?%$%k$r5M$a$k$h$&$K6-3&D9J}7A$NA40h$KCV$$$?>l9g!"IA2h$NBP>]$H$J$k%T%/%;%k$N0LCV$N%T%/%;%kCM$,=q$-9~$`$Y$-%T%/%;%kCM$H$J$k!#(B $BIA2h%Q%?!<%s$O!"0J2<$N(B3$B $B%^%9%/%G!<%?!"(B $BA07J?'!"GX7J?'(B $B$K$h$jIA2h%Q%?!<%s$r;XDj$9$k!#A07J?'!"$*$h$SGX7J?'$O$=$l$>$lF)L@$H$9$k$3$H$,2DG=$G$"$j!"F)L@$r4^$a$?(B2$B?'$^$G$N:.9g%Q%?!<%s$,;XDj$G$-$k!#(B $B%S%C%H%^%C%W%G!<%?$K$h$jIA2h%Q%?!<%s$r;XDj$9$k!#;XDj$7$?%S%C%H%^%C%W>e$N:8>e6y$N@5J}7A$r%Q%?!<%s$H$7$F;XDj$9$k$?$a!"G$0U$N?'$N:.9g%Q%?!<%s$,2DG=$H$J$k!#$^$?!"JL$K%^%9%/%G!<%?$,;XDj2DG=$G$"$j!"$3$l$K$h$j%Q%?!<%s$N0lIt$rF)L@$H$9$k;v$,$G$-$k!#(B $B>e5-(B1$B$^$?$O(B2$B$NJ}K!$GDj5A$7$?%Q%?!<%s$r$h$j9bB.$KIA2h$9$k$?$a$KFbIt7A<0$KJQ49$7$?$b$N$r;XDj$9$k!#$3$N>l9g$O!"$"$i$+$8$aBP>]$H$9$kIA2h4D6-$KBP$7$F!";HMQ$9$kIA2h%Q%?!<%s(B($B>e5-(B1,2)$B$r!";XDj$7$?%a%b%jNN0h(B($BDL>o$O%W%m%;%9$N%m!<%+%k%a%b%jNN0h(B)$B>e$KFbIt%Q%?!<%s%$%a!<%8$H$7$F@8@.$7$F$*$/I,MW$,$"$k!#(B $BFbIt%Q%?!<%s%$%a!<%8$N7A<0$H%5%$%:$O!"IA2h4D6-!"%Q%?!<%s%?%$%W!"%Q%?!<%s$N%5%$%:!"$*$h$S%$%s%W%j%a%s%H$K0MB8$9$k!#FbIt%Q%?!<%s%$%a!<%8$X$NJQ494X?t!"$*$h$SFbIt%Q%?!<%s%$%a!<%8$NBg$-$5$rF@$k$?$a$N4X?t$,MQ0U$5$l$F$$$k!#(B $BIA2h%Q%?!<%s$O0J2<$K<($9%G!<%?$K$h$jIA2h;~$K;XDj$9$k$3$H$K$J$k!#(B $B$J$*!"0J2<$N%Q%?!<%s%^%9%/%G!<%?$,AH9~$_$GMQ0U$5$l$F$$$k$?$a(B mask $B$H$7$F;HMQ$9$k$3$H$,$G$-$k!#(B($B$3$l$i$O!"%Q%?!<%s$N%5%$%:$KL54X78$K;HMQ$G$-$k!#(B) $BD>@~!"8L$dJD$8$??^7A$NOH$NIA2h$N>l9g$O!"IA2h$9$k@~$NB0@-$r0J2<$N7A$G;XDj$9$k$3$H$,$G$-$k!#(B $BIA2h4D6-$K$O!"@~%^%9%/%Q%?!<%s$rEPO?$7$F$*$/$3$H$,2DG=$G$"$j!"(BT = 255$B$N>l9g$O!"EPO?$7$F$*$$$?@~%^%9%/%Q%?!<%s$r;HMQ$7$?@~ $B@~%^%9%/%Q%?!<%s$O!"@~I}(B1$B$N;~$KIA2hBP>]$H$J$k%T%/%;%k$r(B"1"$B$N%S%C%H$G<($7$?<~4|E*$J%^%9%/%Q%?!<%s$H$7$FDj5A$5$l!"<~4|$NC10L$H$7$F(B8$B!A(B64$B%T%/%;%k$^$G!"(B8$B%T%/%;%kC10L$G;XDj$9$k$3$H$,$G$-$k!#B($A!"(B1$B!A(B8$B%P%$%H$^$G%P%$%HG[Ns$K$h$jDj5A$5$l$k!#(B $B$J$*!"B@$$@~I}$GIA2h$7$?>l9g$O!"Dj5A$7$?%Q%?!<%s$O<+A3$J7A$G3HBg$5$l$FIA2h$5$l$k$3$H$K$J$k!#(B $BJ8;zIA2h$O;XDj$7$?J8;z$KBP1~$9$kJ8;z%$%a!<%8%G!<%?$rIA2h$9$k$3$H$K$h$j9T$J$o$l$k!#J8;z%$%a!<%8%G!<%?$O!"J8;z(B($BA07J(B)$BItJ,$HGX7JItJ,$+$i$J$kC10l%W%l!<%s$N%S%C%H%^%C%W$G$"$j!"J8;zItJ,$HGX7JItJ,$r$=$l$>$l2??'$GIA2h$9$k$+$N0J2<$N(B2$B $B chfgc$B!f(B0$B!'(B $BJ8;zA07J?'$r%T%/%;%kCM$H$7$F3F%W%l!<%s$KBP$7$F!"J8;zIA2h1i;;;XDj$K=>$C$FIA2h$9$k!#(B chfgc$B!c(B0$B!'(B $BIA2h$r9T$J$o$J$$(B($BF)L@(B) chbgc$B!f(B0$B!'(B $BJ8;zGX7J?'$r%T%/%;%kCM$H$7$F3F%W%l!<%s$KBP$7$F!"J8;zIA2h1i;;;XDj$K=>$C$FIA2h$9$k!#(B chbgc$B!c(B0$B!'(B $BIA2h$r9T$J$o$J$$(B($BF)L@(B) $BIA2h4D6-$r@8@.$7$?;~E@$N%G%U%)!<%k%H$NJ8;zIA2h%+%i!<$O!"J8;zGX7J?'$OGr(B($B%+%i!<>pJs$r;}$?$J$$>l9g$O(B0)$B!"J8;zA07J?'$O9u(B($B%+%i!<>pJs$r;}$?$J$$>l9g$O:GBg%T%/%;%kCM(B)$B$H$J$k!#(B $BIA2h4D6-$K$O!"J8;zIA2h$N:]$K;HMQ$5$l$k!"J8;zIA2h0LCV!"J8;zIA2hJ}8~!"J8;z4V3V(B $B$N%G!<%?$,J];}$5$l$F$$$k!#(B $BJ8;zIA2h0LCV$O!"
$BJ8;zIA2hJ}8~$O!"J8;z$NIA2hJ}8~$r;XDj$9$k$b$N$G$"$j!"0J2<$NCM$GI=$5$l$k!#J8;zIA2hJ}8~$K$h$j!"J8;z%$%a!<%86k7A(B($BJ8;zOH(B)$B$N$I$N0LCV$rJ8;zIA2h0LCV$H$9$k$+$,0l0UE*$K7hDj$5$l$k!#(B $BJ8;z4V3V$O!"J8;z$HJ8;z$N4V3V$r;XDj$9$k$b$N$G$"$j!"0J2<$N9=B$BN%G!<%?$K$h$j;XDj$5$l$k!#(B $B?eJ?!??bD>J8;z4V3V$O!"J8;zIA2hJ}8~$,(B TOARB $B0J30$N>l9g$O!"(B $BJ8;zOH$NC<$Hl9g$O!"J8;zIA2h0LCV$H
$B6uGr?eJ?!??bD>4V3V$O!"(B $B6uGrJ8;z(B($B2DJQI}6uGr!"%3!<%I!a(B0x20) $B$ND>8e$KDI2C$5$l$kJ8;z4V3V$r<($7!"6uGrJ8;z(B($B2DJQI}6uGr(B)$B$NI}!"$^$?$O9b$5$rJQ99$9$k$3$H$KAjEv$9$k!#(B $BJ8;z4V3V;XDj!"(BSGAP $B$NMWAG$O0J2<$N0UL#$r;}$D!#(B $BJ8;z4V3V$O!"(B $BJ8;zI}(B($B?eJ?J}8~$N;~(B) $B$^$?$OJ8;z9b$5(B($B?bD>J}8~$N;~(B)$B!_#A!?#B$N%T%/%;%k?t!#(B($B#B!a(B0$B$N;~$OHfN((B1$B$H$_$J$9(B)$BJ8;zI}!"J8;z9b$5$,8GDjD9$5$G$J$$>l9g$O!":GBgI}!":GBg9b$5$r4p=`$H$9$k!#(B $BJ8;z4V3V$N;XDj$K$h$j!"J8;zOH$Hl9g!"$=$N7d4V$K$O2?$bIA2h$5$l$J$$$?$a!"Cm0U$,I,MW$G$"$k!#(B $BJ8;zIA2h0LCV$OJ8;z$rIA2h$7$?8e!"0J2<$K<($9$h$&$K99?7$5$l$k!#(B $BIA2h4D6-$r@8@.$7$?;~E@$G$O!"0J2<$N%G%U%)!<%k%HCM$,@_Dj$5$l$k!#(B $BJ8;zIA2h$G;HMQ$9$kJ8;z%U%)%s%H$O!"0J2<$N%U%)%s%H;XDj%G!<%?$K$h$j;XDj$5$l$k!#$3$N%U%)%s%H;XDj$K$h$j!"%U%)%s%H$N $B$^$?!";XDj$7$?%U%)%s%H$K4X$9$k0J2<$N>pJs$rF@$k$3$H$,$G$-$k!#(B $BJ8;z$NB@$5!"I}!" $B$J$*!"(B $B%U%)%s%H$K4X$9$k>\:Y$O!V(B$BBh(B3$B>O(B 3.9 $B%U%)%s%H%^%M!<%8%c(B$B!W$r;2>H$N$3$H!#(B
/* $BE@(B */
typedef struct Point {
H x; /* $B?eJ?:BI8CM(B */
H y; /* $B?bD>:BI8CM(B */
} PNT;
/* $BD9J}7A(B */
typedef union Rectangle {
struct {
H left; /* $B:8$N:BI8CM(B */
H top; /* $B>e$N:BI8CM(B */
H right; /* $B1&$N:BI8CM(B */
H bottom; /* $B2<$N:BI8CM(B */
} c;
struct {
PNT lefttop; /* $B:8>e$NE@(B */
PNT rightbot; /* $B1&2<$NE@(B */
} p;
} RECT;
(left <= x) && (x < right) && (top <= y) && (y < bottom)
/* $BD9J}7A%j%9%H(B */
typedef struct RectangleList {
RectangleList *next; /* $B
$B%G%#%9%W%l%$%W%j%_%F%#%V$G
2.2.2 $B%S%C%H%^%C%W(B
$B%S%C%H%^%C%W(B
$B%S%C%H%^%C%W$N9=B$(B
/* $B%S%C%H%^%C%W(B */
#define PLANES (1) /* $B%@%_!<(B */
typedef struct Bitmap {
UW planes; /* $B%W%l!<%s$N?t(B */
UH pixbits; /* ($B6-3&!?M-8z(B)$B%T%/%;%k%S%C%H?t(B */
UH rowbytes; /* $B%W%l!<%s$N2#I}$N%P%$%H?t(B($B6v?t(B) */
RECT bounds; /* $B6-3&D9J}7A(B($B:BI8Dj5A(B) */
UB *baseaddr[PLANES]; /* $B3+;O%"%I%l%9(B(planes $B8D$NG[Ns(B) */
} BMP;
$B%S%C%H%^%C%W$N:BI87O(B
$B%T%/%;%kCM(B
/* $B%T%/%;%kCM(B */
typedef W PIXVAL; /* $B%T%/%;%kCM(B */
$B05=L%S%C%H%^%C%W(B
/* $B05=L%S%C%H%^%C%W(B */
typedef struct CompactedBitmap {
W compac; /* $B%$%a!<%805=LJ}K!(B */
BMP bmp; /* $B%S%C%H%^%C%W(B */
} CBMP;
/* $B%$%a!<%805=LJ}K!(B */
enum ImageCompactionMethod {
NOCOMPAC = 0, /* $BHs05=L(B */
MHCOMPAC = 1, /* MH$BId9f(B */
MR2COMPAC = 2, /* MR$BId9f(B (K = 2) */
MR4COMPAC = 3 /* MR$BId9f(B (K = 4) */
/* = 4$B!A(B : $BM=Ls(B */
/* < 0 : $B%$%s%W%j%a%s%H$K0MB8$7$?FC
2.2.3 $B%+%i!
/* $B%+%i!
XXXX RRRRRRRR GGGGGGGG BBBBBBBB
$B@V(B(8) $BNP(B(8) $B@D(B(8)
$B%+%i!<%^%C%WJ}<0$N>l9g!"%T%/%;%kCM(B 0 $B$OGr!"(B $B:GBgCM(B (2** depth$B!](B1) $B$O9u$rDj5A$9$k$3$H$,K>$^$7$$!#(B
2.2.4 $BIA2h4D6-(B
$BIA2h4D6-(B
/* $BIA2h4D6-(BID */
typedef W GID; /* $BIA2h4D6-(BID */
1$B$D$NIA2h4D6-$KBP$7$F0J2<$N%G!<%?$,BP1~$E$1$i$l$k!#(B
$B$5$i$K!"8D!9$NIA2h4D6-$4$H$K0J2<$N%G!<%?$,BP1~$E$1$i$l$k!#(B
typedef struct {
H attr; /* $B%G%P%$%9$NB0@-(B */
H planes; /* $B%W%l!<%s?t(B */
H pixbits; /* $B%T%/%;%k%S%C%H?t(B($B6-3&!?M-8z(B) */
H hpixels; /* $B2#$N%T%/%;%k?t(B */
H vpixels; /* $B=D$N%T%/%;%k?t(B */
H hres; /* $B2#$N2rA|EY(B */
H vres; /* $B=D$N2rA|EY(B */
H color[4]; /* $B%+%i!<>pJs(B */
H resv[6]; /* $BM=Ls(B */
} DEV_SPEC;
0LMX XXXX XXXX PRRR
1$B!a(B $B$3$N%G%P%$%9$KBP$7$F@8@.$7$?%G%P%$%9IA2h4D6-%l%3!<%I$O%m%C%/$NBP>]$H$5$l$k!#(B
1$B!a(B $B8GM-%$%a!<%8NN0h(B($B%S%C%H%^%C%W(B) $B$r;}$C$F$$$k(B($B%G%P%$%9IA2h4D6-$r@[email protected]=(B)$B!#(B
1$B!a(B $B%+%i!<%^%C%WM-(B($B%^%C%W%(%s%H%j?t$O%W%l!<%s?t!_%T%/%;%k%S%C%H?t$G7h$^$k(B)
1$B!a(B RGB$B%+%i!<(B
2$B!a(B CMY $B%+%i!<(B
3$B!A(B $B$=$NB>(B
color[1]$B!A(B $BL$;HMQ(B(0)
color[1] $BNP$N3,D4%S%C%H?t$H$=$N0LCV$r<($9!#(B
color[2] $B@D$N3,D4%S%C%H?t$H$=$N0LCV$r<($9!#(B
color[3] $BL$;HMQ(B(0)
color[1] $B%^%<%s%?$N3,D4%S%C%H?t$H$=$N0LCV$r<($9!#(B
color[2] $B2+$N3,D4%S%C%H?t$H$=$N0LCV$r<($9!#(B
color[3] $B9u$N3,D4%S%C%H?t$H$=$N0LCV$r<($9!#(B
....BBBBGGGGGGRRRRRR
color[0] = 0x0006
color[1] = 0x0606
color[2] = 0x0c04
$B$H$J$k!#(B
$BBP>]%S%C%H%^%C%W(B
$B%+%i!<>pJs(B
/* $B%+%i!<;XDj(B */
struct ColorSpec {
W attr; /* $B%+%i!
info $B$O(B attr & 0x8 $B$,(B0$B$N>l9g$O(B DEV_SPEC $B$N(B color $B$HF1$80UL#$r;}$D!#(B
$B%^%9%/%T%/%;%kCM(B
$B%^%9%/%T%/%;%kCM$O!"IA2hBP>]$H$9$k%T%/%;%k$r8BDj$9$k$?$a$K;HMQ$5$l$k%T%/%;%kCM$G$"$j!"8e=R$9$kIA2h%b!<%I$N;XDj$K$h$j!"0J2<$N$$$:$l$+$NIA2hF0:n$H$J$k!#(B
$B%/%j%C%T%s%0NN0h(B
/* $BG$0UNN0h(B */
#define NX 1 /* $B%@%_!<(B */
#define NS 1 /* $B%@%_!<(B */
struct HorizontalRegion {
UH nx; /* $B?eJ?:BI8$N?t(B($B6v?t(B) */
UH x[NX]; /* $B?eJ?:BI8$NCM(B(nx $B8D$NMWAG$GCM$N>.$5$$=g(B) */
};
typedef HorizontalRegion HRGN; /* $B?eJ?NN0h(B */
struct GenericRegion {
RECT r; /* $BG$0UNN0hA4BN$r0O$`:G>.$ND9J}7A(B($BAjBP:BI87O(B) */
UW ns; /* $B?bD>6h4V?t(B */
struct {
UH y; /* $B6h4V$N3+;O?bD>:BI8CM(B */
HRGN *hp; /* $B6h4V$N?eJ?NN0h$X$N%]%$%s%?(B */
} s[NS];
};
typedef GenericRegion GRGN; /* $BG$0UNN0h(B */
r = (0, 0, 17, 15)
ns = 11
s[0].y = 0 s[0].hp = &(2, 5, 12)
s[1].y = 1 s[1].hp = &(4, 3, 8, 9, 14)
s[2].y = 2 s[2].hp = &(4, 1, 7, 10, 16)
s[3].y = 3 s[3].hp = &(4, 0, 6, 11, 17)
s[4].y = 4 s[4].hp = &(4, 0, 5, 12, 17)
s[5].y = 5 s[5].hp = &(4, 0, 4, 13, 17)
s[6].y = 10 s[6].hp = &(4, 0, 5, 12, 17)
s[7].y = 11 s[7].hp = &(4, 0, 6, 11, 17)
s[8].y = 12 s[8].hp = &(4, 1, 7, 10, 16)
s[9].y = 13 s[9].hp = &(4, 3, 8, 9, 14)
s[10].y = 14 s[10].hp = &(2, 5, 12)
r = (x0, y0, x3, y3)
ns = 3
s[0].y = y0 s[0].hp = &(2, x0, x2)
s[1].y = y1 s[1].hp = NULL
s[2].y = y2 s[2].hp = &(2, x1, x3)
r = (x0, y0, x4, y4)
ns = 4
s[0].y = y0 s[0].hp = &(2, x0, x3)
s[1].y = y1 s[1].hp = &(2, x0, x4)
s[2].y = y2 s[2].hp = &(2, x1, x4)
s[3].y = y3 s[3].hp = &(2, x1, x2)
$BIA2h%b!<%I(B
0000 0000 0000 0000 0000 PPCF MMMM MMMM
M: $BIA2h1i;;%b!<%I;XDj(B
F: $B%S%C%H%^%C%W7A<0JQ49;XDj(B
C: $B%+%i!
/* $BIA2h1i;;%b!<%I(B */
enum DrawingCopyMode {
/* $B%T%/%;%kCM$N%S%C%HC10L$NO@M}1i;;(B */
G_STORE = 0, /* (src) --> (result) */
G_XOR = 1, /* (src) XOR (dest) --> (result) */
G_OR = 2, /* (src) OR (dest) --> (result) */
G_AND = 3, /* (src) AND (dest) --> (result) */
G_CPYN = 4, /* NOT (src) --> (result) */
G_XORN = 5, /* NOT (src) XOR (dest) --> (result) */
G_ORN = 6, /* NOT (src) OR (dest) --> (result) */
G_ANDN = 7, /* NOT (src) AND (dest) --> (result) */
G_NOP = 8 /* (dest) --> (result) */
};
$B%+%i!
/* $B%S%C%H%^%C%W7A<0JQ49(B */
enum BitMapFormConversion {
G_CVFORM = 0x0100 /* $B%S%C%H%^%C%W7A<0JQ49(B */
};
/* $B%^%9%/%T%/%;%k;XDj(B */
enum MackPixelMode {
G_MASK = 0x0400 /* $B%^%9%/%T%/%;%kCM$HF10l$NCM$N(B dest $B%T%/%;%k$N$_IA2h(B */
G_MASKN = 0x0800 /* $B%^%9%/%T%/%;%kCM$H0[$J$kCM$N(B dest $B%T%/%;%k$N$_IA2h(B */
};
/* $BIA2h%b!<%I(B */
typedef W DCM; /* $BIA2h%b!<%I(B */
$BIA2h%Q%?!<%s(B
/* $BIA2h%Q%?!<%s(B */
typedef W PatKind; /* $B%Q%?!<%s%?%$%W(B */
union pattern {
struct {
PatKind kind; /* $B%Q%?!<%s%?%$%W(B($B!a(B0) */
UH hsize; /* $B%Q%?!<%s$N2#%5%$%:(B($B%T%/%;%k?t(B) */
UH vsize; /* $B%Q%?!<%s$N=D%5%$%:(B($B%T%/%;%k?t(B) */
COLOR fgcol; /* $BA07J?'(B */
COLOR bgcol; /* $BGX7J?'(B */
UB *mask; /* $B%Q%?!<%s%^%9%/%G!<%?$X$N%]%$%s%?(B */
} spat;
struct {
PatKind kind; /* $B%Q%?!<%s%?%$%W(B($B!a(B1) */
UH hsize; /* $B%Q%?!<%s$N2#%5%$%:(B($B%T%/%;%k?t(B) */
UH vsize; /* $B%Q%?!<%s$N=D%5%$%:(B($B%T%/%;%k?t(B) */
UB *mask; /* $B%Q%?!<%s%^%9%/%G!<%?$X$N%]%$%s%?(B */
BMP *bmap; /* $B%S%C%H%^%C%W$X$N%]%$%s%?(B */
} mpat;
struct {
PatKind kind; /* $B%Q%?!<%s%?%$%W(B($B!a(B2) */
UH hsize; /* $B%Q%?!<%s$N2#%5%$%:(B($B%T%/%;%k?t(B) */
UH vsize; /* $B%Q%?!<%s$N=D%5%$%:(B($B%T%/%;%k?t(B) */
UB *pat; /* $BFbIt%Q%?!<%s%$%a!<%8$X$N%]%$%s%?(B */
} ipat;
}
typedef Pattern PAT /* $BIA2h%Q%?!<%s(B */
$BI8=`%Q%?!<%s$H$7$F0J2<$N%Q%?!<%s$,MQ0U$5$l$F$$$k!#(B
$B!a(B0 $B!'(B spat $B%?%$%W(B
$B!a(B1 $B!'(B mpat $B%?%$%W(B
$B!a(B2 $B!'(B ipat $B%?%$%W(B
$B!a(B3$B!A!'(B $BM=Ls(B ($B;XDj$7$?>l9g$O!"(BEG_NOSPT $B$N%(%i!<$H$J$k(B)
/* $BI8=`%Q%?!<%s%^%9%/%]%$%s%?(B */
enum StdPatternMask {
_FILL0 = (1), /* 0 % $BEI$jDY$7(B */
_FILL12 = (2), /* 12.5% $BEI$jDY$7(B */
_FILL25 = (3), /* 25 % $BEI$jDY$7(B */
_FILL50 = (4), /* 50 % $BEI$jDY$7(B */
_FILL75 = (5), /* 75 % $BEI$jDY$7(B */
_FILL87 = (6), /* 87.5% $BEI$jDY$7(B */
_FILL100 = (7) /* 100 % $BEI$jDY$7(B */
};
#define FILL0 ((B*)_FILL0)
#define FILL12 ((B*)_FILL12)
#define FILL25 ((B*)_FILL25)
#define FILL50 ((B*)_FILL50)
#define FILL75 ((B*)_FILL75)
#define FILL87 ((B*)_FILL87)
#define FILL100 ((B*)_FILL100)
/* $BI8=`%Q%?!<%s%]%$%s%?(B */
enum StdPattern { /* $B$9$Y$F!"A07J?'!'9u!"GX7J?'!'Gr(B */
_WHITE0 = (1), /* 0 % $BEI$jDY$7(B */
_BLACK12 = (2), /* 12.5% $B9uEI$jDY$7(B */
_BLACK25 = (3), /* 25 % $B9uEI$jDY$7(B */
_BLACK50 = (4), /* 50 % $B9uEI$jDY$7(B */
_BLACK75 = (5), /* 75 % $B9uEI$jDY$7(B */
_BLACK87 = (6), /* 87.5% $B9uEI$jDY$7(B */
_BLACK100 = (7) /* 100 % $B9uEI$jDY$7(B */
};
#define WHITE0 ((PAT*)_WHITE0)
#define BLACK12 ((PAT*)_BLACK12)
#define BLACK25 ((PAT*)_BLACK25)
#define BLACK50 ((PAT*)_BLACK50)
#define BLACK75 ((PAT*)_BLACK75)
#define BLACK87 ((PAT*)_BLACK87)
#define BLACK100 ((PAT*)_BLACK100)
$B@~B0@-(B
0000 0000 0000 0000 TTTT TTTT WWWW WWWW
W: $B@~I}(B ($B2<0L(B8$B%S%C%HId9fL5$7(B) (0$B!A(B255)
$B@~$NI}(B($BB@$5(B)$B$r%T%/%;%k?t$G;XDj$7$?$b$N(B
T: $B@~
2.2.5 $BJ8;zIA2h(B
$BJ8;zIA2h%+%i!<(B
$BJ8;zIA2h0LCV!?J}8~(B
/* $BJ8;zIA2hJ}8~(B */
enum CharacterDirection {
TORIGHT = 0; /* $B1&8~$-(B($BJ8;zOH$N%Y!<%9%i%$%s$N:8C<$,IA2h0LCV(B) */
TOLEFT = 1; /* $B:88~$-(B($BJ8;zOH$N%Y!<%9%i%$%s$N1&C<$,IA2h0LCV(B) */
TOUP = 2; /* $B>e8~$-(B($BJ8;zOH$N:8>e$NE@$,IA2h0LCV(B) */
TODOWN = 3; /* $B2<8~$-(B($BJ8;zOH$N:82<$NE@$,IA2h0LCV(B) */
TOARB = 4; /* $BG$0U$N8~$-(B($BJ8;zOH$N:8>e$NE@$,IA2h0LCV(B) */
};
/* $BJ8;z4V3V(B */
struct SignedGap {
H dir; /* $BJ}8~(B */
UH gap; /* $BJ8;z4V3V(B */
}
typedef SignedGap SGAP; /* $BJ8;z4V3V(B */
struct CharacterGap {
SGAP hgap; /* $B?eJ?J8;z4V3V(B */
SGAP vgap; /* $B?bD>J8;z4V3V(B */
SGAP hspgap; /* $B6uGr?eJ?4V3V(B */
SGAP vspgap; /* $B6uGr?bD>4V3V(B */
};
typedef CharacterGap CGAP; /* $BJ8;z4V3V(B */
$BJ8;zIA2hJ}K!$,!"(BTOUP$B!?(BTODOWN $B$N>l9g$OL5;k$5$l$k!#(B
$BJ8;zIA2hJ}K!$,!"(BTORIGHT$B!?(BTOLEFT $B$N>l9g$OL5;k$5$l$k!#(B
$B!b(B 0$B!'J8;z4V3V$rJ8;zIA2hJ}8~$NH?BPJ}8~$K$H$k!#(B ($B=E$J$C$FIA2h$5$l$k(B)
$B@dBP%T%/%;%k?t;XDj!'(B 1NNN NNNN NNNN NNNN
$BJ8;z4V3V$O(BN$B%T%/%;%k?t(B
$BJ8;z%5%$%:HfNc;XDj!'(B 0AAA AAAA BBBB BBBB
TOLEFT $B!'(B $BJ8;zI}(B+$B?eJ?J8;z4V3V(B+[$B6uGr?eJ?4V3V(B]$B$@$18:>/(B
TODOWN $B!'(B $BJQ2=$7$J$$(B
TOUP $B!'(B $BJQ2=$7$J$$(B
TOARB $B!'(B $B?eJ?J8;z4V3V$@$1A}2C(B
TORIGHT $B!'(B $BJQ2=$7$J$$(B
TODOWN $B!'(B $BJ8;z9b$5(B+$B?bD>J8;z4V3V(B+[$B6uGr?bD>4V3V(B]$B$@$1A}2C(B
TOUP $B!'(B $BJ8;z9b$5(B+$B?bD>J8;z4V3V(B+[$B6uGr?bD>4V3V(B]$B$@$18:>/(B
TOARB $B!'(B $B?bD>J8;z4V3V$@$1A}2C(B
$BJ8;z%U%)%s%H(B
/* $B%U%)%s%H;XDj(B */
typedef struct ExtendFontSpecifier {
TC name[L_FONTFAMNM]; /* $B%U%)%s%H%U%!%_%jL>(B */
UW fclass; /* $B%U%)%s%H%/%i%9(B */
UW attr; /* $B%U%)%s%HB0@-(B */
SIZE size; /* $BJ8;z%5%$%:(B */
} FSSPEC;
/* $B%U%)%s%H>pJs(B */
struct FontInfo {
UH height; /* $B:GBgJ8;z9b(B ($BJ8;z%5%$%:(B) */
UH width; /* $B:GBgJ8;zI}(B */
UH base; /* $B%Y!<%90LCV(B */
UH leading; /* $B%l%G%#%s%0(B */
};
typedef FontInfo FNTINFO; /* $B%U%)%s%H>pJs(B */
/* $BJ8;z%3!<%I(B */
typedef UH TC /* $BJ8;z%3!<%I(B(1$BJ8;z(B) */
$B$3$N>O$NL\
$BA0JG(B:2.1 $B$O$8$a$K$K$b$I$k(B
$B