TempleOSCD_150720.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:46:22 +02:00
1 parent 401601816c
commit f8c05f98f4
554 files changed
+26046 -24853

No files matched your search

+51 -28
View File
@@ -1,4 +1,4 @@
#help_index "God;Graphics/Sprite"
#help_index "God;Graphics/Sprite;Sprites"
U0 GodDoodleDraw(CTask *task,CDC *dc)
{
@@ -6,21 +6,25 @@ U0 GodDoodleDraw(CTask *task,CDC *dc)
if (Blink) {
if (god.doodle_done) {
dc->color=RED;
GrPrint(dc,(task->pix_width-FONT_WIDTH*29)>>1,(task->pix_height-3*FONT_HEIGHT)>>1,
"Press <ESC> to insert sprite.");
GrPrint(dc,(task->pix_width-FONT_WIDTH*39)>>1,(task->pix_height-3*FONT_HEIGHT)>>1+2*FONT_HEIGHT,
"Press <SHIFT-ESC> to throw-away sprite.");
GrPrint(dc,(task->pix_width-FONT_WIDTH*29)>>1,
(task->pix_height-3*FONT_HEIGHT)>>1,
"Press <ESC> to insert sprite.");
GrPrint(dc,(task->pix_width-FONT_WIDTH*39)>>1,
(task->pix_height-3*FONT_HEIGHT)>>1+2*FONT_HEIGHT,
"Press <SHIFT-ESC> to throw-away sprite.");
} else {
dc->color=GREEN;
GrPrint(dc,(task->pix_width-FONT_WIDTH*25)>>1,(task->pix_height-FONT_HEIGHT)>>1,
"Press <SPACE> repeatedly.");
GrPrint(dc,(task->pix_width-FONT_WIDTH*25)>>1,
(task->pix_height-FONT_HEIGHT)>>1,
"Press <SPACE> repeatedly.");
}
}
}
U0 GodDoodleSmooth(I64 num)
{
CDC *dc=DCExtract(god.doodle_dc,0,0,god.doodle_dc->width-1,god.doodle_dc->height-1);
CDC *dc=DCExtract(god.doodle_dc,0,0,
god.doodle_dc->width-1,god.doodle_dc->height-1);
I64 i,x,y,x1,y1,c,histogram[16],best,best_cnt,c_old=god.doodle_dc->color;
for (y=0;y<god.doodle_dc->height;y++)
for (x=0;x<god.doodle_dc->width;x++) {
@@ -45,10 +49,30 @@ U0 GodDoodleSmooth(I64 num)
DCDel(dc);
}
U0 GodDoodleBitsIns(I64 num_bits,I64 n)
{//Insert bits into God doodle bit fifo.
I64 i;
for (i=0;i<num_bits;i++) {
FifoU8Ins(god.doodle_fifo,n&1);
n>>=1;
}
}
U0 GodDoodleHexIns(U8 *st)
{//Insert hex record into God doodle bit fifo.
U8 buf[2];
if (st) {
buf[1]=0;
while (*buf=*st++)
if (Bt(chars_bmp_hex_numeric,*buf))
GodDoodleBitsIns(4,Str2I64(buf,16));
}
}
I64 GodDoodleBits(I64 num_bits)
{
U8 b;
I64 i,k,result=0;
I64 result=0;
while (num_bits) {
if (FifoU8Rem(god.doodle_fifo,&b)) {
result=result<<1+b;
@@ -62,19 +86,14 @@ I64 GodDoodleBits(I64 num_bits)
FifoU8Flush(god.doodle_fifo);
} else if ('0'<=god.doodle_ch<='9')
GodDoodleSmooth(god.doodle_ch-'0');
else {
k=KbdMouseEvtTime>>GOD_BAD_BITS;
for (i=0;i<GOD_GOOD_BITS;i++) {
FifoU8Ins(god.doodle_fifo,k&1);
k>>=1;
}
}
else
GodDoodleBitsIns(GOD_GOOD_BITS,KbdMouseEvtTime>>GOD_BAD_BITS);
}
}
return result;
}
public U8 *GodDoodleSprite()
public U8 *GodDoodleSprite(U8 *hex=NULL)
{//Make God draw sprite. $LK+PU,"Holy Spirit Instructions",A="FI:::/Adam/God/HSNotes.TXT"$
I64 i,j,w,h,x,y,ch;
U8 *elems;
@@ -97,6 +116,7 @@ public U8 *GodDoodleSprite()
Fs->draw_it=&GodDoodleDraw;
FifoU8Flush(god.doodle_fifo);
GodDoodleHexIns(hex);
try {
for (i=0;i<3;i++) {
god.doodle_dc->color=RED;
@@ -104,29 +124,32 @@ public U8 *GodDoodleSprite()
nobound_switch (GodDoodleBits(3)) {
case 0:
GrEllipse3(god.doodle_dc,
(w-1)*GodDoodleBits(5)/15.5-w/2,(h-1)*GodDoodleBits(5)/15.5-h/2,0,
(w-1)*GodDoodleBits(5)/15.5,(h-1)*GodDoodleBits(5)/15.5);
(w-1)*GodDoodleBits(5)/15.5-w/2,
(h-1)*GodDoodleBits(5)/15.5-h/2,0,
(w-1)*GodDoodleBits(5)/15.5,(h-1)*GodDoodleBits(5)/15.5);
break;
case 1:
GrCircle3(god.doodle_dc,
(w-1)*GodDoodleBits(5)/15.5-w/2,(h-1)*GodDoodleBits(5)/15.5-h/2,0,
(w-1)*GodDoodleBits(5)/15.5);
(w-1)*GodDoodleBits(5)/15.5-w/2,
(h-1)*GodDoodleBits(5)/15.5-h/2,0,
(w-1)*GodDoodleBits(5)/15.5);
break;
case 2:
GrBorder(god.doodle_dc,
(w-1)*GodDoodleBits(5)/15.5-w/2,(h-1)*GodDoodleBits(5)/15.5-h/2,
(w-1)*GodDoodleBits(5)/15.5,(h-1)*GodDoodleBits(5)/15.5);
(w-1)*GodDoodleBits(5)/15.5-w/2,
(h-1)*GodDoodleBits(5)/15.5-h/2,
(w-1)*GodDoodleBits(5)/15.5,(h-1)*GodDoodleBits(5)/15.5);
break;
case 3...7:
GrLine3(god.doodle_dc,
(w-1)*GodDoodleBits(4)/15,(h-1)*GodDoodleBits(4)/15,0,
(w-1)*GodDoodleBits(4)/15,(h-1)*GodDoodleBits(4)/15,0);
(w-1)*GodDoodleBits(4)/15,(h-1)*GodDoodleBits(4)/15,0,
(w-1)*GodDoodleBits(4)/15,(h-1)*GodDoodleBits(4)/15,0);
break;
}
for (j=0;j<6;j++) {
x=(w-1)*GodDoodleBits(5)/31+w/64;
y=(h-1)*GodDoodleBits(5)/31+h/64;
switch(GodDoodleBits(2)) {
nobound_switch(GodDoodleBits(2)) {
case 0: god.doodle_dc->color=BLACK; break;
case 1: god.doodle_dc->color=DKGRAY; break;
case 2: god.doodle_dc->color=LTGRAY; break;
@@ -155,10 +178,10 @@ public U8 *GodDoodleSprite()
}
#help_index "God"
public U0 GodDoodle()
public U0 GodDoodle(U8 *hex=NULL)
{//Make God draw sprite, insert in doc. $LK+PU,"Holy Spirit Instructions",A="FI:::/Adam/God/HSNotes.TXT"$
U8 *elems;
if (elems=GodDoodleSprite) {
if (elems=GodDoodleSprite(hex)) {
Sprite(elems);
Free(elems);
}