164 lines
3.8 KiB
HolyC
Executable File
164 lines
3.8 KiB
HolyC
Executable File
#help_index "Misc/TOS"
|
|
|
|
Bool fg_on =FALSE;
|
|
|
|
I64 CopyVideo()
|
|
{
|
|
I64 res=0;
|
|
Bool old_silent=Silent;
|
|
Del("D:/Tmp/*.AU");
|
|
Del("D:/Tmp/*.MV");
|
|
Silent(old_silent);
|
|
SndShift(&scrncast.snd_head,0.185);
|
|
AUWrite("D:/Tmp/AUDIO",&scrncast.snd_head,scrncast.t0_now,scrncast.t0_tS);
|
|
QueDel(&scrncast.snd_head,TRUE);
|
|
GR2MV("D:/Tmp/VID%03d.MV","B:/Tmp","+d");
|
|
return res;
|
|
}
|
|
|
|
#help_index "ScrnCast/TOS"
|
|
U0 DelScrnShots()
|
|
{
|
|
Bool old_silent=Silent;
|
|
DelTree("B:/Tmp");
|
|
DirMk("B:/Tmp");
|
|
Del("D:/Tmp/*.AU");
|
|
Del("D:/Tmp/*.MV");
|
|
Del("C:/Tmp/*.AU");
|
|
Del("C:/Tmp/*.MV");
|
|
Silent(old_silent);
|
|
}
|
|
|
|
public U0 FrameGrabberToggle(Bool sync_tone,Bool tos_theme,
|
|
Bool just_audio=FALSE)
|
|
{//The frame grabber saves GR files to B:/Tmp.
|
|
static F64 last_time=0;
|
|
if (tS-last_time>3.0) {
|
|
last_time=tS;
|
|
if (fg_on) {
|
|
fg_on=FALSE;
|
|
ScrnCast(OFF);
|
|
User("CopyVideo;Exit;\n");
|
|
} else {
|
|
DelScrnShots;
|
|
fg_on=TRUE;
|
|
ScrnCast(ON,just_audio);
|
|
if (sync_tone) {Beep;}
|
|
if (tos_theme) {User("ExeFile(\"~/TOS/TOSTheme\");Exit;\n");}
|
|
}
|
|
}
|
|
}
|
|
|
|
public U0 JukeSongTAD(I64 num,I64 passes=2)
|
|
{//Make movie of one song.
|
|
if (!fg_on)
|
|
FrameGrabberToggle(FALSE,FALSE);
|
|
Sleep(200);
|
|
JukeSongsPuppet("~/TAD/Songs",passes,num,num+1);
|
|
if (fg_on)
|
|
FrameGrabberToggle(FALSE,FALSE);
|
|
}
|
|
|
|
public U0 JukeSongSup(I64 vol,I64 num,I64 passes=2)
|
|
{//Make movie of one song.
|
|
U8 *st=MStrPrint("~/Sup%d/Sup%dHymns",vol,vol);
|
|
if (!fg_on)
|
|
FrameGrabberToggle(FALSE,FALSE);
|
|
JukeSongsPuppet(st,passes,num,num+1);
|
|
if (fg_on)
|
|
FrameGrabberToggle(FALSE,FALSE);
|
|
Free(st);
|
|
}
|
|
|
|
public U0 JukeLines(I64 vol,I64 start_line,I64 end_line)
|
|
{//Make movie of many lines of songs, starting at 0.
|
|
U8 *st=MStrPrint("~/Sup%d/Sup%dHymns",vol,vol);
|
|
if (!fg_on)
|
|
FrameGrabberToggle(FALSE,FALSE);
|
|
JukeSongsPuppet(st,,start_line*5,end_line*5);
|
|
if (fg_on)
|
|
FrameGrabberToggle(FALSE,FALSE);
|
|
Free(st);
|
|
}
|
|
|
|
public U0 TADHymns(I64 vol,I64 let)
|
|
{//Make 2-lines of songs movie
|
|
I64 line=2*(ToUpper(let)-'A');
|
|
JukeLines(vol,line,line+2);
|
|
}
|
|
|
|
#help_index "Misc/TOS"
|
|
public U0 DskChkAll()
|
|
{//DskChk on C & D.
|
|
U8 *ptr=TOS_HDS;
|
|
while (*ptr) {
|
|
"DskChk('%c')\n",*ptr;
|
|
DskChk(*ptr++,TRUE);
|
|
}
|
|
}
|
|
|
|
public CDoc *DC2Doc(CDC *dc,I64 dx=0,I64 dy=0,I64 *_total_score=NULL)
|
|
{//Use OCR to make a text DolDoc from CDC.
|
|
U8 byte_bit_cnts[256];
|
|
I64 i,j,*ptr,row,col,ch,best_ch,score,best_score,
|
|
cur_char_image,diff_image,total_score=0;
|
|
CDoc *doc=DocNew;
|
|
|
|
MemSet(byte_bit_cnts,0,sizeof(byte_bit_cnts));
|
|
for (i=0;i<256;i++)
|
|
for (j=0;j<7;j++)
|
|
if (Bt(&i,j))
|
|
byte_bit_cnts[i]++;
|
|
|
|
for (row=0;row<dc->height/FONT_HEIGHT;row++) {
|
|
for (col=0;col<dc->width/FONT_WIDTH;col++) {
|
|
|
|
cur_char_image=0;
|
|
for (i=0;i<FONT_HEIGHT;i++)
|
|
for (j=0;j<FONT_WIDTH;j++)
|
|
if (GrPeek(dc,col*FONT_WIDTH+j+dx,row*FONT_HEIGHT+i+dy)!=WHITE)
|
|
LBts(&cur_char_image,i*8+j);
|
|
|
|
best_score=I64_MAX;
|
|
best_ch=0;
|
|
ptr=&text.font[32];
|
|
for (ch=32;ch<127;ch++) {
|
|
diff_image=*ptr++ ^ cur_char_image;
|
|
score=0;
|
|
for (i=0;i<8;i++)
|
|
score+=byte_bit_cnts[diff_image.u8[i]];
|
|
if (score<best_score) {
|
|
best_score=score;
|
|
best_ch=ch;
|
|
}
|
|
}
|
|
if (best_ch=='$$')
|
|
DocPrint(doc,"$$$$");
|
|
else
|
|
DocPrint(doc,"%c",best_ch);
|
|
total_score+=best_score;
|
|
}
|
|
DocPrint(doc,"\n");
|
|
}
|
|
if (_total_score) *_total_score=total_score;
|
|
return doc;
|
|
}
|
|
|
|
#define MEM_TEST_SIZE 1024*1024
|
|
U0 MemTest()
|
|
{
|
|
U8 *b;
|
|
while (sys_data_bp->alloced_u8s-sys_data_bp->used_u8s>0x1000000) {
|
|
b=MAlloc(MEM_TEST_SIZE,Fs->data_heap);
|
|
MemSet(b,0x88,MSize(b));
|
|
"Data:%X\n",sys_data_bp->alloced_u8s-sys_data_bp->used_u8s;
|
|
Yield;
|
|
}
|
|
while (sys_code_bp->alloced_u8s-sys_code_bp->used_u8s>0x1000000) {
|
|
b=MAlloc(MEM_TEST_SIZE,Fs->code_heap);
|
|
MemSet(b,0x88,MSize(b));
|
|
"Code:%X\n",sys_code_bp->alloced_u8s-sys_code_bp->used_u8s;
|
|
Yield;
|
|
}
|
|
}
|