TempleOSCDV4.03.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:01 +02:00
1 parent 1541d7328d
commit 0f1a4a5d65
115 files changed
+5361 -4606

No files matched your search

Binary file not shown.
+9 -7
View File
@@ -67,27 +67,29 @@ public Bool Copy(U8 *src_files_find_mask,U8 *dst_files_find_mask=".")
CDirContext *dirc; CDirContext *dirc;
CDirEntry *tempde,*tempde1; CDirEntry *tempde,*tempde1;
U8 *st; U8 *st;
if (!(tempde=FilesFind(src_files_find_mask,FUF_CLUSTER_ORDER))) if (!(tempde1=FilesFind(src_files_find_mask,FUF_CLUSTER_ORDER)))
return FALSE; return FALSE;
if (IsDir(dst_files_find_mask)) { if (IsDir(dst_files_find_mask)) {
if (dirc=DirContextNew(dst_files_find_mask,TRUE)) { if (dirc=DirContextNew(dst_files_find_mask,TRUE)) {
tempde=tempde1;
while (tempde) { while (tempde) {
tempde1=tempde->next;
if (!(tempde->attr & RS_ATTR_DIR)) { if (!(tempde->attr & RS_ATTR_DIR)) {
st=FileNameAbs(tempde->name); st=FileNameAbs(tempde->name);
if (!CopySingle(tempde->full_name,st)) if (!CopySingle(tempde->full_name,st))
result=FALSE; result=FALSE;
Free(st); Free(st);
} }
DirEntryDel(tempde); tempde=tempde->next;
tempde=tempde1;
} }
DirContextDel(dirc); DirContextDel(dirc);
} }
DirTreeDel(tempde1);
return result; return result;
} else } else {
DirTreeDel(tempde1);
return CopySingle(src_files_find_mask,dst_files_find_mask); return CopySingle(src_files_find_mask,dst_files_find_mask);
} }
}
public Bool Move(U8 *f1,U8 *f2) public Bool Move(U8 *f1,U8 *f2)
{//Move files from one location to another or rename. {//Move files from one location to another or rename.
@@ -206,8 +208,7 @@ U0 TouchFile(U8 *filename,U8 *attr,CDate cdt=MIN_I64)
{ {
CDrv *dv=Let2Drv(*filename); CDrv *dv=Let2Drv(*filename);
CDirEntry de; CDirEntry de;
U8 *cur_dir=StrNew(filename), U8 *cur_dir=StrNew(filename),buf[STR_LEN];
buf[STR_LEN];
if (FileFind(filename,&de,FUF_JUST_FILES)) { if (FileFind(filename,&de,FUF_JUST_FILES)) {
Free(de.full_name); Free(de.full_name);
if (!StrCmp(attr,"+?")) if (!StrCmp(attr,"+?"))
@@ -226,6 +227,7 @@ U0 TouchFile(U8 *filename,U8 *attr,CDate cdt=MIN_I64)
} }
} else } else
PrintErr("File not found.\n"); PrintErr("File not found.\n");
Free(cur_dir);
} }
public U0 Touch(U8 *files_find_mask="*",U8 *attr="+?", public U0 Touch(U8 *files_find_mask="*",U8 *attr="+?",
U8 *fu_flags=NULL,CDate cdt=MIN_I64) U8 *fu_flags=NULL,CDate cdt=MIN_I64)
+11 -11
View File
@@ -35,7 +35,7 @@ Bool ClassRep2(CDoc *doc,U8 *_d,U8 *class_name=lastclass,
ptr=*ptr; ptr=*ptr;
if (ChkPtr(ptr)) { if (ChkPtr(ptr)) {
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM-P+RD,64,A=\"%%40ts\"$$\n"); doc_e=DocPrint(doc,"$$DA-TRM-P+RD,LEN=64,A=\"%%40ts\"$$\n");
doc_e->data=ptr; doc_e->data=ptr;
DocDataFmt(doc,doc_e); DocDataFmt(doc,doc_e);
} else } else
@@ -46,13 +46,13 @@ Bool ClassRep2(CDoc *doc,U8 *_d,U8 *class_name=lastclass,
if (tempc2->raw_type==RT_I8 || tempc2->raw_type==RT_U8) { if (tempc2->raw_type==RT_I8 || tempc2->raw_type==RT_U8) {
if (j==1) { if (j==1) {
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=U8,A=\"%%c\"$$\n"); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U8,A=\"%%c\"$$\n");
doc_e->data=ptr; doc_e->data=ptr;
} else } else
DocPrint(doc,"%c\n",*ptr(U8 *)); DocPrint(doc,"%c\n",*ptr(U8 *));
} else { } else {
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM-P+RD,64,A=\"%%40ts\"$$\n"); doc_e=DocPrint(doc,"$$DA-TRM-P+RD,LEN=64,A=\"%%40ts\"$$\n");
doc_e->data=ptr; doc_e->data=ptr;
DocDataFmt(doc,doc_e); DocDataFmt(doc,doc_e);
} else } else
@@ -66,56 +66,56 @@ Bool ClassRep2(CDoc *doc,U8 *_d,U8 *class_name=lastclass,
break; break;
case RT_I8: case RT_I8:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=I8,A=\"%%02X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I8,A=\"%%02X\"$$ ");
doc_e->data=ptr(I8 *)++; doc_e->data=ptr(I8 *)++;
} else } else
DocPrint(doc,"%02X ",*ptr(I8 *)++); DocPrint(doc,"%02X ",*ptr(I8 *)++);
break; break;
case RT_U8: case RT_U8:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=U8,A=\"%%02X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U8,A=\"%%02X\"$$ ");
doc_e->data=ptr(U8 *)++; doc_e->data=ptr(U8 *)++;
} else } else
DocPrint(doc,"%02X ",*ptr(U8 *)++); DocPrint(doc,"%02X ",*ptr(U8 *)++);
break; break;
case RT_I16: case RT_I16:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=I16,A=\"%%04X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I16,A=\"%%04X\"$$ ");
doc_e->data=ptr(I16 *)++; doc_e->data=ptr(I16 *)++;
} else } else
DocPrint(doc,"%04X ",*ptr(I16 *)++); DocPrint(doc,"%04X ",*ptr(I16 *)++);
break; break;
case RT_U16: case RT_U16:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=U16,A=\"%%04X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U16,A=\"%%04X\"$$ ");
doc_e->data=ptr(U16 *)++; doc_e->data=ptr(U16 *)++;
} else } else
DocPrint(doc,"%04X ",*ptr(U16 *)++); DocPrint(doc,"%04X ",*ptr(U16 *)++);
break; break;
case RT_I32: case RT_I32:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=I32,A=\"%%08X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I32,A=\"%%08X\"$$ ");
doc_e->data=ptr(I32 *)++; doc_e->data=ptr(I32 *)++;
} else } else
DocPrint(doc,"%08X ",*ptr(I32 *)++); DocPrint(doc,"%08X ",*ptr(I32 *)++);
break; break;
case RT_U32: case RT_U32:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=U32,A=\"%%08X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=U32,A=\"%%08X\"$$ ");
doc_e->data=ptr(U32 *)++; doc_e->data=ptr(U32 *)++;
} else } else
DocPrint(doc,"%08X ",*ptr(U32 *)++); DocPrint(doc,"%08X ",*ptr(U32 *)++);
break; break;
case RT_F64: case RT_F64:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=F64,A=\"%%16g\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=F64,A=\"%%16g\"$$ ");
doc_e->data=ptr(F64 *)++; doc_e->data=ptr(F64 *)++;
} else } else
DocPrint(doc,"%16g ",*ptr(I64 *)++); DocPrint(doc,"%16g ",*ptr(I64 *)++);
break; break;
default: default:
if (dynamic) { if (dynamic) {
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,A=\"%%016X\"$$ "); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,A=\"%%016X\"$$ ");
doc_e->data=ptr(I64 *)++; doc_e->data=ptr(I64 *)++;
} else } else
DocPrint(doc,"%016X ",*ptr(I64 *)++); DocPrint(doc,"%016X ",*ptr(I64 *)++);
+2 -2
View File
@@ -11,8 +11,8 @@ U0 LoadDocDefines()
//This is cut and replaced when I generate a distro. //This is cut and replaced when I generate a distro.
//See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$. //See $LK,"DD_TEMPLEOS_LOC",A="FF:::/Demo/AcctExample/TOSDistro.CPP,DD_TEMPLEOS_LOC"$.
$TR-C,"LineRep"$ $TR-C,"LineRep"$
$ID,4$DefinePrint("DD_TEMPLEOS_LOC","118,999"); $ID,4$DefinePrint("DD_TEMPLEOS_LOC","119,687");
DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,991"); DefinePrint("DD_TEMPLEOS_LOC_OFFICIAL","80,688");
$ID,-4$ $ID,-4$
DefinePrint("DD_KERNEL","%08X",bfh); DefinePrint("DD_KERNEL","%08X",bfh);
bfh(I64)+=bfh->file_size-1; bfh(I64)+=bfh->file_size-1;
+4 -2
View File
@@ -16,7 +16,7 @@ extern U0 DocBMP(CDoc *doc=NULL,U8 *filename,
extern U0 DocBinDel(CDoc *doc,CDocBin *b); extern U0 DocBinDel(CDoc *doc,CDocBin *b);
extern U0 DocBinsValidate(CDoc *doc); extern U0 DocBinsValidate(CDoc *doc);
extern U0 DocBottom(CDoc *doc=NULL); extern U0 DocBottom(CDoc *doc=NULL);
extern U0 DocCenter(CDoc *doc=NULL,I64 recalc=DOC_RECALC); extern U0 DocCenter(CDoc *doc=NULL,I64 recalc=RECALCt_NORMAL);
extern U0 DocClear(CDoc *doc=NULL); extern U0 DocClear(CDoc *doc=NULL);
extern Bool DocCursor(Bool show=OFF,CDoc *doc=NULL); extern Bool DocCursor(Bool show=OFF,CDoc *doc=NULL);
extern U0 DocD(U8 *buf,I64 cnt=0x80); extern U0 DocD(U8 *buf,I64 cnt=0x80);
@@ -25,9 +25,11 @@ extern U0 DocDel(CDoc *doc);
extern CDoc *DocDisplay(CTask *task=NULL); extern CDoc *DocDisplay(CTask *task=NULL);
extern U0 DocDump(CDoc *doc,I64 uS_delay=0); extern U0 DocDump(CDoc *doc,I64 uS_delay=0);
extern CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e); extern CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e);
extern U0 DocEntryDel(CDoc *doc,CDocEntry *doc_e);
extern Bool DocForm(U8 *_d,U8 *class_name=lastclass, extern Bool DocForm(U8 *_d,U8 *class_name=lastclass,
I64 dof_flags=0,U8 *header=NULL,U8 *footer=NULL); I64 dof_flags=0,U8 *header=NULL,U8 *footer=NULL);
extern U0 DocHelpIndex(CDoc *doc,U8 *index); extern U0 DocHelpIndex(CDoc *doc,U8 *index);
extern Bool DocHighlightCursor(Bool show=OFF,CDoc *doc=NULL);
extern U0 DocInsDoc(CDoc *doc,CDoc *doc2); extern U0 DocInsDoc(CDoc *doc,CDoc *doc2);
extern U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e); extern U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e);
extern Bool DocLock(CDoc *doc); extern Bool DocLock(CDoc *doc);
@@ -36,7 +38,7 @@ extern CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL);
extern CDocEntry *DocPrint(CDoc *doc,U8 *src,...); extern CDocEntry *DocPrint(CDoc *doc,U8 *src,...);
extern CDoc *DocPut(CTask *task=NULL); extern CDoc *DocPut(CTask *task=NULL);
extern CDoc *DocRead(U8 *name=NULL,I64 flags=0); extern CDoc *DocRead(U8 *name=NULL,I64 flags=0);
extern Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC); extern Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL);
extern U0 DocRst(CDoc *doc,Bool is_old); extern U0 DocRst(CDoc *doc,Bool is_old);
extern CDocEntry *DocSprite(CDoc *doc,U8 *elems,U8 *fmt=NULL); extern CDocEntry *DocSprite(CDoc *doc,U8 *elems,U8 *fmt=NULL);
extern U0 DocTop(CDoc *doc=NULL); extern U0 DocTop(CDoc *doc=NULL);
+1 -1
View File
@@ -96,7 +96,7 @@ public Bool IsInHeapCtrl(U8 *a,CHeapCtrl *hc,Bool lock=TRUE)
PAUSE PAUSE
m=hc->next_mem_blk; m=hc->next_mem_blk;
while (m!=&hc->next_mem_blk) { while (m!=&hc->next_mem_blk) {
if (a>=m && a<m(U8 *)+m->pages*MEM_PAGE_SIZE) { if (a>=m && a<m(U8 *)+m->pages<<MEM_PAGE_BITS) {
if (lock) if (lock)
LBtr(&hc->locked_flags,HClf_LOCKED); LBtr(&hc->locked_flags,HClf_LOCKED);
POPFD POPFD
+2
View File
@@ -129,6 +129,7 @@ public U0 ACInit(U8 *mask=NULL)
Bool start_flag; Bool start_flag;
CBlkDev *bd=Let2BlkDev; CBlkDev *bd=Let2BlkDev;
LBtr(&sys_run_level,RLf_AUTO_COMPLETE);
AutoComplete; AutoComplete;
while (LBts(&ac.flags,ACf_INIT_IN_PROGRESS)) while (LBts(&ac.flags,ACf_INIT_IN_PROGRESS))
Yield; Yield;
@@ -155,6 +156,7 @@ public U0 ACInit(U8 *mask=NULL)
ACDWordsLoad; ACDWordsLoad;
LBtr(&ac.flags,ACf_INIT_IN_PROGRESS); LBtr(&ac.flags,ACf_INIT_IN_PROGRESS);
LBts(&sys_run_level,RLf_AUTO_COMPLETE);
AutoComplete(ON); AutoComplete(ON);
} }
+3 -1
View File
@@ -263,6 +263,7 @@ public Bool AutoComplete(Bool val=OFF)
while (Bt(&ac.flags,ACf_INIT_IN_PROGRESS)) while (Bt(&ac.flags,ACf_INIT_IN_PROGRESS))
Sleep(10); Sleep(10);
if (val) { if (val) {
if (Bt(&sys_run_level,RLf_AUTO_COMPLETE)) {
if (TaskValidate(ac.task)) if (TaskValidate(ac.task))
old_autocomplete=TRUE; old_autocomplete=TRUE;
else { else {
@@ -270,8 +271,10 @@ public Bool AutoComplete(Bool val=OFF)
TaskWait(ac.task); TaskWait(ac.task);
} }
WinToTop(ac.task); WinToTop(ac.task);
}
} else { } else {
if (TaskValidate(ac.task)) { if (TaskValidate(ac.task)) {
if (Bt(&sys_run_level,RLf_AUTO_COMPLETE))
old_autocomplete=TRUE; old_autocomplete=TRUE;
Kill(ac.task); Kill(ac.task);
while (TaskValidate(ac.task)) while (TaskValidate(ac.task))
@@ -280,4 +283,3 @@ public Bool AutoComplete(Bool val=OFF)
} }
return old_autocomplete; return old_autocomplete;
} }
+50 -44
View File
@@ -35,7 +35,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
if (cc>doc_ce->min_col) { if (cc>doc_ce->min_col) {
if (IsEditableText(doc_ce) && cc<doc_ce->max_col) { if (IsEditableText(doc_ce) && cc<doc_ce->max_col) {
dst=doc_ce->tag+cc; dst=doc_ce->tag+cc;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ce->max_col=cc; doc_ce->max_col=cc;
QueIns(doc_ne,doc_ce); QueIns(doc_ne,doc_ce);
@@ -43,7 +43,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
cc--; cc--;
if (IsEditableText(doc_ce) && cc>doc_ce->min_col) { if (IsEditableText(doc_ce) && cc>doc_ce->min_col) {
dst=doc_ce->tag+cc; dst=doc_ce->tag+cc;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ce->max_col=cc; doc_ce->max_col=cc;
QueIns(doc_ne,doc_ce); QueIns(doc_ne,doc_ce);
@@ -68,7 +68,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
cc=doc_ce->max_col-1; cc=doc_ce->max_col-1;
if (IsEditableText(doc_ce) && cc>doc_ce->min_col) { if (IsEditableText(doc_ce) && cc>doc_ce->min_col) {
dst=doc_ce->tag+cc; dst=doc_ce->tag+cc;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ce->max_col=cc; doc_ce->max_col=cc;
QueIns(doc_ne,doc_ce); QueIns(doc_ne,doc_ce);
@@ -112,7 +112,7 @@ public U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64)
if (cc<doc_ce->max_col) { if (cc<doc_ce->max_col) {
if (IsEditableText(doc_ce) && cc>doc_ce->min_col) { if (IsEditableText(doc_ce) && cc>doc_ce->min_col) {
dst=doc_ce->tag+cc; dst=doc_ce->tag+cc;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ce->max_col=cc; doc_ce->max_col=cc;
QueIns(doc_ne,doc_ce); QueIns(doc_ne,doc_ce);
@@ -126,7 +126,7 @@ public U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64)
BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT); BEqu(&doc_ce->type,DOCEt_SELECTED,sc&SCF_SHIFT);
if (IsEditableText(doc_ce) && cc<doc_ce->max_col) { if (IsEditableText(doc_ce) && cc<doc_ce->max_col) {
dst=doc_ce->tag+cc; dst=doc_ce->tag+cc;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ne->type=DOCT_TEXT | old_color & -0x100; doc_ne->type=DOCT_TEXT | old_color & -0x100;
doc_ne->de_flags=old_de_flags|doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=old_de_flags|doldoc.dft_de_flags[DOCT_TEXT];
@@ -188,7 +188,7 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
if (IsEditableText(doc_ce)) { if (IsEditableText(doc_ce)) {
if (doc_ce->min_col<doc->cur_col<doc_ce->max_col-1) { if (doc_ce->min_col<doc->cur_col<doc_ce->max_col-1) {
dst=doc_ce->tag+doc->cur_col; dst=doc_ce->tag+doc->cur_col;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ne->x=doc_ce->x+doc->cur_col; doc_ne->x=doc_ce->x+doc->cur_col;
doc_ce->max_col=doc->cur_col; doc_ce->max_col=doc->cur_col;
@@ -255,7 +255,7 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
if (IsEditableText(doc_ce) && doc_ce->x<x) { if (IsEditableText(doc_ce) && doc_ce->x<x) {
if (doc->cur_col<doc_ce->max_col-1) { if (doc->cur_col<doc_ce->max_col-1) {
dst=doc_ce->tag+doc->cur_col; dst=doc_ce->tag+doc->cur_col;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
if (sc>=0) { if (sc>=0) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
@@ -301,7 +301,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
if (IsEditableText(doc_ce)) { if (IsEditableText(doc_ce)) {
if (doc->cur_col>doc_ce->min_col && doc->cur_col<doc_ce->max_col-1) { if (doc->cur_col>doc_ce->min_col && doc->cur_col<doc_ce->max_col-1) {
dst=doc_ce->tag+doc->cur_col; dst=doc_ce->tag+doc->cur_col;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
if (sc>=0) { if (sc>=0) {
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
@@ -362,7 +362,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
doc->cur_col=doc_ce->min_col; doc->cur_col=doc_ce->min_col;
if (IsEditableText(doc_ce)&&doc_ce->min_col<doc->cur_col<doc_ce->max_col-1) { if (IsEditableText(doc_ce)&&doc_ce->min_col<doc->cur_col<doc_ce->max_col-1) {
dst=doc_ce->tag+doc->cur_col; dst=doc_ce->tag+doc->cur_col;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ne->type=DOCT_TEXT | old_color & -0x100; doc_ne->type=DOCT_TEXT | old_color & -0x100;
doc_ne->de_flags=old_de_flags|doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=old_de_flags|doldoc.dft_de_flags[DOCT_TEXT];
@@ -385,7 +385,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
DocUnlock(doc); DocUnlock(doc);
} }
U0 EdDelChar(CDoc *doc) U0 EdCharDel(CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
CDocEntry *doc_ce=doc->cur_entry; CDocEntry *doc_ce=doc->cur_entry;
@@ -435,10 +435,10 @@ U0 ChkDollarBufSize(CDoc *doc)
} }
} }
U0 EdInsChar(I64 ch,I64 sc,CDoc *doc) U0 EdCharIns(I64 ch,I64 sc,CDoc *doc)
{ {
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
U8 *b,*src,*dst; U8 *st,*src,*dst;
CDocEntry *doc_ce=doc->cur_entry,*doc_ne; CDocEntry *doc_ce=doc->cur_entry,*doc_ne;
I64 i,j,m,y=doc_ce->y; I64 i,j,m,y=doc_ce->y;
@@ -483,15 +483,16 @@ ic_cont:
goto ic_done; goto ic_done;
} }
if (doc_ce->type_u8==DOCT_HEX_ED) { if (doc_ce->type_u8==DOCT_HEX_ED) {
if (doc_ce->de_flags & DOCEF_DATA_IS_PTR) if (doc_ce->de_flags&DOCEF_DEREF_DATA &&
b=doc_ce->data; !(doc_ce->de_flags&DOCEF_REMALLOC_DATA))
st=doc_ce->data;
else else
b=&doc_ce->data; st=&doc_ce->data;
i=doc->cur_col; i=doc->cur_col;
j=i%(doc_ce->hex_ed_width*3); j=i%(doc_ce->hex_ed_width*3);
m=i/(doc_ce->hex_ed_width*3)*doc_ce->hex_ed_width; m=i/(doc_ce->hex_ed_width*3)*doc_ce->hex_ed_width;
if (j>=doc_ce->hex_ed_width<<1) if (j>=doc_ce->hex_ed_width<<1)
b[j-doc_ce->hex_ed_width<<1+m]=ch; st[j-doc_ce->hex_ed_width<<1+m]=ch;
else { else {
ch=ToUpper(ch)-'0'; ch=ToUpper(ch)-'0';
if (ch>9) { if (ch>9) {
@@ -501,16 +502,16 @@ ic_cont:
} }
m=j>>1+m; m=j>>1+m;
if (j & 1) if (j & 1)
b[m]=b[m] & 0xF0| ch; st[m]=st[m] & 0xF0| ch;
else else
b[m]=b[m] & 0xF | ch<<4; st[m]=st[m] & 0xF | ch<<4;
} }
doc->cur_col++; doc->cur_col++;
goto ic_done; goto ic_done;
} }
if (doc->flags & DOCF_OVERSTRIKE) { if (doc->flags & DOCF_OVERSTRIKE) {
if (Bt(chars_bmp_displayable,ch)) { if (Bt(chars_bmp_displayable,ch)) {
ic_overstrike_char: ic_overstrike:
if (IsEditableText(doc_ce)) { if (IsEditableText(doc_ce)) {
if (doc->cur_col<doc_ce->max_col) { if (doc->cur_col<doc_ce->max_col) {
if (doc_ce->tag[doc->cur_col]) { if (doc_ce->tag[doc->cur_col]) {
@@ -521,7 +522,7 @@ ic_overstrike_char:
doc_ce=doc_ce->next; doc_ce=doc_ce->next;
doc->cur_entry=doc_ce; doc->cur_entry=doc_ce;
doc->cur_col=doc_ce->min_col; doc->cur_col=doc_ce->min_col;
goto ic_overstrike_char; goto ic_overstrike;
} }
} else if (doc_ce->type_u8==DOCT_DATA) { } else if (doc_ce->type_u8==DOCT_DATA) {
if (doc_ce->de_flags & DOCEF_HAS_TERMINATOR) { if (doc_ce->de_flags & DOCEF_HAS_TERMINATOR) {
@@ -532,15 +533,13 @@ ic_overstrike_char:
doc_ce->tag[doc->cur_col]='_'; doc_ce->tag[doc->cur_col]='_';
doc_ce->tag[doc->cur_col+1]=0; doc_ce->tag[doc->cur_col+1]=0;
} }
} } else if (doc_ce->de_flags & DOCEF_REMALLOC_DATA)
goto ic_not_overstrike;
} else if (doc_ce->tag[doc->cur_col]) } else if (doc_ce->tag[doc->cur_col])
doc_ce->tag[doc->cur_col++]=ch; doc_ce->tag[doc->cur_col++]=ch;
goto ic_done; goto ic_done;
} }
b=MAlloc(2,doc->mem_task); doc_ne=DocEntryNewTag(doc,doc_ce,&ch);
*b=ch;
b[1]=0;
doc_ne=DocEntryNew(doc,doc_ce,b);
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
QueIns(doc_ne,doc_ce->last); QueIns(doc_ne,doc_ce->last);
@@ -554,14 +553,14 @@ ic_overstrike_char:
} }
goto ic_done; goto ic_done;
} }
ic_not_overstrike:
if (ch=='\n') { if (ch=='\n') {
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
if (sc&SCF_CTRL && !(sc&SCF_SHIFT)) { if (sc&SCF_CTRL && !(sc&SCF_SHIFT)) {
doc_ne->type=DOCT_PAGE_BREAK | doc->settings_root.dft_text_attr<<8; doc_ne=DocEntryNewBase(doc,
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK]; DOCT_PAGE_BREAK|doc->settings_root.dft_text_attr<<8);
} else { } else {
doc_ne->type=DOCT_NEW_LINE | doc->settings_root.dft_text_attr<<8; doc_ne=DocEntryNewBase(doc,
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_NEW_LINE]; DOCT_NEW_LINE|doc->settings_root.dft_text_attr<<8);
} }
DocInsEntry(doc,doc_ne); DocInsEntry(doc,doc_ne);
} else if (ch=='\t') { } else if (ch=='\t') {
@@ -575,26 +574,36 @@ ic_form_tab:
DocFormFwd(doc); DocFormFwd(doc);
goto ic_done; goto ic_done;
} else { } else {
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_ne=DocEntryNewBase(doc,DOCT_TAB|doc->settings_root.dft_text_attr<<8);
doc_ne->type=DOCT_TAB | doc->settings_root.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TAB];
DocInsEntry(doc,doc_ne); DocInsEntry(doc,doc_ne);
} }
} else { } else {
if (Bt(chars_bmp_displayable,ch)) { if (Bt(chars_bmp_displayable,ch)) {
if (doc_ce->type_u8==DOCT_DATA) { if (doc_ce->type_u8==DOCT_DATA) {
while (TRUE) {
i=doc_ce->len+doc_ce->min_col; i=doc_ce->len+doc_ce->min_col;
if (doc_ce->de_flags & DOCEF_HAS_TERMINATOR) if (doc_ce->de_flags & DOCEF_HAS_TERMINATOR)
i++; i++;
if (i>doc_ce->max_col) { if (doc_ce->max_col<i) {
b=doc_ce->tag; st=doc_ce->tag;
doc_ce->max_col++; doc_ce->max_col++;
for (i=doc_ce->max_col;i>doc->cur_col;i--) for (i=doc_ce->max_col;i>doc->cur_col;i--)
b[i]=b[i-1]; st[i]=st[i-1];
b[doc->cur_col++]=ch; st[doc->cur_col++]=ch;
break;
} else if (doc_ce->de_flags & DOCEF_REMALLOC_DATA) {
st=MAlloc(doc_ce->max_col+8,doc->mem_task);
MemCpy(st,doc_ce->tag,doc_ce->max_col+1);
Free(doc_ce->tag);
doc_ce->tag=st;
doc_ce->len=MSize(st)-doc_ce->min_col-2; //See $LK,"DataTagWidth",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$
Free(doc_ce->data);
doc_ce->data=MAlloc(doc_ce->len+2,doc->mem_task);
} else
break;
} }
} else if (IsEditableText(doc_ce)) { } else if (IsEditableText(doc_ce)) {
dst=b=MAlloc(doc_ce->max_col+2,doc->mem_task); dst=st=MAlloc(doc_ce->max_col+2,doc->mem_task);
src=doc_ce->tag; src=doc_ce->tag;
i=doc->cur_col; i=doc->cur_col;
while (i-->0) while (i-->0)
@@ -602,14 +611,11 @@ ic_form_tab:
*dst++=ch; *dst++=ch;
while (*dst++=*src++); while (*dst++=*src++);
Free(doc_ce->tag); Free(doc_ce->tag);
doc_ce->tag=b; doc_ce->tag=st;
doc_ce->max_col++; doc_ce->max_col++;
doc->cur_col++; doc->cur_col++;
} else { } else {
b=MAlloc(2,doc->mem_task); doc_ne=DocEntryNewTag(doc,doc_ce,&ch);
*b=ch;
b[1]=0;
doc_ne=DocEntryNew(doc,doc_ce,b);
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
doc_ne->x=doc_ce->x+1; doc_ne->x=doc_ce->x+1;
@@ -627,7 +633,7 @@ ic_done:
DocUnlock(doc); DocUnlock(doc);
} }
U0 EdDelLine(CDoc *doc) U0 EdLineDel(CDoc *doc)
{ {
CDocEntry *doc_ce=doc->cur_entry,*doc_ce2; CDocEntry *doc_ce=doc->cur_entry,*doc_ce2;
I64 y; I64 y;
+8 -14
View File
@@ -272,7 +272,7 @@ U0 EdRemFunLeadingSpace(CDoc *doc)
do { do {
doc_e2=doc_e->next; doc_e2=doc_e->next;
if (doc_e!=doc && doc_e!=doc->cur_entry && if (doc_e!=doc && doc_e!=doc->cur_entry &&
!(doc_e->de_flags&(DOCEG1_DONT_EDIT-DOCEF_SCROLLING_X))) !(doc_e->de_flags&(DOCEG_DONT_EDIT-DOCEF_SCROLLING_X)))
switch (doc_e->type_u8) { switch (doc_e->type_u8) {
case DOCT_TEXT: case DOCT_TEXT:
ptr=doc_e->tag; ptr=doc_e->tag;
@@ -511,7 +511,7 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE)
end_y=start_y+indent->total_cnt; end_y=start_y+indent->total_cnt;
while (start_y<=doc_e->y<end_y) { while (start_y<=doc_e->y<end_y) {
if (doc_e!=doc && doc_e!=doc->cur_entry && if (doc_e!=doc && doc_e!=doc->cur_entry &&
!(doc_e->de_flags&(DOCEG1_DONT_EDIT-DOCEF_SCROLLING_X))) { !(doc_e->de_flags&(DOCEG_DONT_EDIT-DOCEF_SCROLLING_X))) {
if (doc_e->type_u8==DOCT_NEW_LINE|| if (doc_e->type_u8==DOCT_NEW_LINE||
doc_e->type_u8==DOCT_SOFT_NEW_LINE) doc_e->type_u8==DOCT_SOFT_NEW_LINE)
start_of_line=TRUE; start_of_line=TRUE;
@@ -520,12 +520,9 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE)
i=QueVectU8Get(indent,doc_e->y)*C_INDENT_SPACES; i=QueVectU8Get(indent,doc_e->y)*C_INDENT_SPACES;
x=doc_e->x+1; x=doc_e->x+1;
while (i>8) { while (i>8) {
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_ne=DocEntryNewBase(doc,
doc_ne->type=DOCT_TAB | doc->settings_root.dft_text_attr<<8; DOCT_TAB|doc->settings_root.dft_text_attr<<8,,
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TAB]; x,doc_e->y,doc_e->page_line_num);
doc_ne->x=x;
doc_ne->y=doc_e->y;
doc_ne->page_line_num=doc_e->page_line_num;
MemCpy(&doc_ne->settings, MemCpy(&doc_ne->settings,
&doc_e->settings,sizeof(CDocSettings)); &doc_e->settings,sizeof(CDocSettings));
QueIns(doc_ne,doc_e->last); QueIns(doc_ne,doc_e->last);
@@ -536,14 +533,11 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE)
b=MAlloc(i+1,doc->mem_task); b=MAlloc(i+1,doc->mem_task);
MemSet(b,CH_SPACE,i); MemSet(b,CH_SPACE,i);
b[i]=0; b[i]=0;
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_ne=DocEntryNewBase(doc,
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; DOCT_TEXT|doc->settings_root.dft_text_attr<<8,,
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; x,doc_e->y,doc_e->page_line_num);
doc_ne->tag=b; doc_ne->tag=b;
doc_ne->max_col=1; doc_ne->max_col=1;
doc_ne->x=x;
doc_ne->y=doc_e->y;
doc_ne->page_line_num=doc_e->page_line_num;
MemCpy(&doc_ne->settings, MemCpy(&doc_ne->settings,
&doc_e->settings,sizeof(CDocSettings)); &doc_e->settings,sizeof(CDocSettings));
QueIns(doc_ne,doc_e->last); QueIns(doc_ne,doc_e->last);
+6 -5
View File
@@ -95,15 +95,16 @@ public Bool DocEd(CDoc *doc,I64 dof_flags=0)
old_task_title=StrNew(Fs->task_title); old_task_title=StrNew(Fs->task_title);
if (Fs->title_src!=TTS_LOCKED_CONST) { if (Fs->title_src!=TTS_LOCKED_CONST) {
Fs->title_src=TTS_ED_FILENAME; Fs->title_src=TTS_ED_FILENAME;
MemCpy(Fs->task_title,doc->filename.name,TASK_TITLE_LEN); MemCpy(Fs->task_title,doc->filename.name,STR_LEN-1);
} }
doc_e=DocPrint(bdoc,"$$DA-TRM-P+BD+RD+CX+IV,140,A=\"%%s...\",SCX=16$$"); doc_e=DocPrint(bdoc,"$$DA-TRM-P+BD+RD+CX+IV,LEN=STR_LEN-1,"
"A=\"%%s...\",SCX=16$$");
doc_e->data=&Fs->task_title; doc_e->data=&Fs->task_title;
DocDataFmt(bdoc,doc_e); DocDataFmt(bdoc,doc_e);
if (doc->flags & DOCF_ALLOW_UNDO) { if (doc->flags & DOCF_ALLOW_UNDO) {
DocPrint(bdoc,"$$CM+BY+LX+NC,1,1$$"); DocPrint(bdoc,"$$CM+BY+LX+NC,1,1$$");
doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,RT=U32,A=\"Undo:%%03d\"$$\n"); doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,RT=U32,A=\"Undo:%%03d\"$$\n");
doc_e->data=&doc->undo_cnt; doc_e->data=&doc->undo_cnt;
DocDataFmt(bdoc,doc_e); DocDataFmt(bdoc,doc_e);
} }
@@ -124,10 +125,10 @@ public Bool DocEd(CDoc *doc,I64 dof_flags=0)
doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$"); doc_e=DocPrint(bdoc,"$$TX+BD+TC,\" \"$$");
doc_e->user_data=doc; doc_e->user_data=doc;
doc_e->tag_cb=&EdDollarCB; doc_e->tag_cb=&EdDollarCB;
doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,A=\"Line:%%04d \"$$"); doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,A=\"Line:%%04d \"$$");
doc_e->data=&doc->line; doc_e->data=&doc->line;
DocDataFmt(bdoc,doc_e); DocDataFmt(bdoc,doc_e);
doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,32,A=\"Col:%%04d\"$$\n"); doc_e=DocPrint(bdoc,"$$DA+BD+RD-TRM,A=\"Col:%%04d\"$$\n");
doc_e->data=&doc->col; doc_e->data=&doc->col;
DocDataFmt(bdoc,doc_e); DocDataFmt(bdoc,doc_e);
+42 -51
View File
@@ -27,8 +27,7 @@ public U0 DocLoad(CDoc *doc,U8 *src2,I64 size)
} }
if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS)))
DocBinsValidate(doc); DocBinsValidate(doc);
DocTop(doc); //DOCT_CURSOR will set it in recalc DocTop(doc); //Calls $LK,"DocRecalc",A="MN:DocRecalc"$(). DOCT_CURSOR will be set.
DocRecalc(doc);
if (unlock) if (unlock)
DocUnlock(doc); DocUnlock(doc);
} }
@@ -53,24 +52,27 @@ public CDoc *DocRead(U8 *name=NULL,I64 flags=0)
public U8 *DocSave(CDoc *doc,I64 *_size=NULL) public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
{//Store doc to raw mem buf. {//Store doc to raw mem buf.
CDocEntry *doc_e; CDocEntry *doc_e,*doc_e1;
CDocBin *b; CDocBin *b;
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
I64 ch,i,cnt; I64 ch,cnt=1;//terminator
U8 *st,*result,*dst,*src; U8 *st,*result,*dst,*src;
if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) if (!(doc->flags & (DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS)))
DocBinsValidate(doc); DocBinsValidate(doc);
if (doc->flags&DOCF_NO_CURSOR)
DocRecalc(doc); DocRecalc(doc);
if (doc->flags&DOCF_NO_CURSOR || doc->root.next==doc) else {
cnt=1; //terminator DocRecalc(doc,RECALCF_ADD_CURSOR);
else if (doc->root.next->type_u8==DOCT_CURSOR)
cnt=2; //cursor + terminator DocEntryDel(doc,doc->root.next); //If no cursor, $LK,"DocLoad",A="MN:DocLoad"$() puts at top.
}
for (doc_e=doc->root.next;doc_e!=doc;doc_e=doc_e->next) { for (doc_e=doc->root.next;doc_e!=doc;doc_e=doc_e->next) {
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) {
switch (doc_e->type_u8) { switch (doc_e->type_u8) {
case DOCT_TAB: case DOCT_TAB:
case DOCT_PAGE_BREAK: case DOCT_PAGE_BREAK:
case DOCT_CURSOR:
cnt++; cnt++;
break; break;
case DOCT_NEW_LINE: case DOCT_NEW_LINE:
@@ -81,7 +83,7 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
break; break;
case DOCT_SOFT_NEW_LINE: case DOCT_SOFT_NEW_LINE:
break; break;
case DOCT_TEXT://$BK,1$Update $LK,"DOCT_TEXT",A="FF:D:/Compiler/Lex.CPP,DOCT_TEXT"$$BK,0$ case DOCT_TEXT:
if (!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP| if (!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|
DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP))&& DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP))&&
!(doc_e->type&DOCG_BL_IV_UL)) { !(doc_e->type&DOCG_BL_IV_UL)) {
@@ -98,39 +100,20 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
} }
} }
} }
for (b=doc->bin_root.next;b!=&doc->bin_root;b=b->next) { for (b=doc->bin_root.next;b!=&doc->bin_root;b=b->next)
if (b->use_cnt>b->temp_use_cnt) if (b->use_cnt>b->temp_use_cnt)
cnt+=offset(CDocBin.end)- cnt+=offset(CDocBin.end)-offset(CDocBin.start)+b->size;
offset(CDocBin.start)+b->size;
}
result=MAlloc(cnt); result=MAlloc(cnt);
dst=result; dst=result;
for (doc_e=doc->root.next;doc_e!=doc;doc_e=doc_e->next) { doc_e=doc->root.next;
if (!Bt(doldoc.type_flags_data,doc_e->type_u8)) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_TEXT && doc_e1=doc_e->next;
!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP| if (!Bt(doldoc.type_flags_data,doc_e->type_u8))
DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP)) &&
!(doc_e->type&DOCG_BL_IV_UL)) {
src=doc_e->tag;
i=0;
while (ch=*src++) {
if (doc_e==doc->cur_entry && i++==doc->cur_col &&
!(doc->flags&DOCF_NO_CURSOR))
*dst++=CH_CURSOR;
*dst++=ch;
if (ch=='$$') {
if (!(doc->flags & (DOCF_PLAIN_TEXT | DOCF_PLAIN_TEXT_TABS)) ||
doc->flags&DOCF_DBL_DOLLARS)
*dst++=ch;
}
}
if (doc_e==doc->cur_entry && i++==doc->cur_col &&
!(doc->flags&DOCF_NO_CURSOR))
*dst++=CH_CURSOR;
} else {
if (doc_e==doc->cur_entry && !(doc->flags&DOCF_NO_CURSOR))
*dst++=CH_CURSOR;
switch (doc_e->type_u8) { switch (doc_e->type_u8) {
case DOCT_CURSOR:
DocEntryDel(doc,doc_e);
*dst++=CH_CURSOR;
break;
case DOCT_TAB: case DOCT_TAB:
*dst++='\t'; *dst++='\t';
break; break;
@@ -144,6 +127,19 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
break; break;
case DOCT_SOFT_NEW_LINE: case DOCT_SOFT_NEW_LINE:
break; break;
case DOCT_TEXT:
if (!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|
DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP)) &&
!(doc_e->type&DOCG_BL_IV_UL)) {
src=doc_e->tag;
while (ch=*src++) {
*dst++=ch;
if (ch=='$$' && (!(doc->flags & (DOCF_PLAIN_TEXT|
DOCF_PLAIN_TEXT_TABS)) || doc->flags&DOCF_DBL_DOLLARS))
*dst++=ch;
}
break;
}
default: default:
*dst++='$$'; *dst++='$$';
st=Doc2PlainText(doc,doc_e); st=Doc2PlainText(doc,doc_e);
@@ -152,18 +148,9 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
*dst++='$$'; *dst++='$$';
Free(st); Free(st);
} }
doc_e=doc_e1;
} }
}
}
if (doc->cur_entry==doc && doc->root.next!=doc &&
!(doc->flags&DOCF_NO_CURSOR))
*dst++=CH_CURSOR;
*dst++=0; *dst++=0;
if (*result==CH_CURSOR) {
MemCpy(result,result+1,dst-result-1);
cnt--;
dst--;
}
b=doc->bin_root.next; b=doc->bin_root.next;
if (b!=&doc->bin_root) { if (b!=&doc->bin_root) {
do { do {
@@ -210,7 +197,7 @@ public U0 DocInsDoc(CDoc *doc=NULL,CDoc *doc2)
if (doc_ce->type_u8==DOCT_TEXT && doc->cur_col>doc_ce->min_col) { if (doc_ce->type_u8==DOCT_TEXT && doc->cur_col>doc_ce->min_col) {
if (doc->cur_col<doc_ce->max_col) { if (doc->cur_col<doc_ce->max_col) {
dst=doc_ce->tag+doc->cur_col; dst=doc_ce->tag+doc->cur_col;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ne->type=DOCT_TEXT | doc_ce->type & 0xFFFFFF00; doc_ne->type=DOCT_TEXT | doc_ce->type & 0xFFFFFF00;
doc_ce->max_col=doc->cur_col; doc_ce->max_col=doc->cur_col;
@@ -258,7 +245,7 @@ public U0 StreamDoc(CDoc *doc)
Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE) Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE)
{ {
Bool result=FALSE,unlock; Bool result=FALSE,unlock;
I64 time_stamp; I64 time_stamp,flags;
CDocUndo *u; CDocUndo *u;
if (doc->flags&DOCF_ALLOW_UNDO) { if (doc->flags&DOCF_ALLOW_UNDO) {
unlock=DocLock(doc); unlock=DocLock(doc);
@@ -268,7 +255,10 @@ Bool DocCaptureUndo(CDoc *doc,Bool force=FALSE)
force) { force) {
u=CAlloc(sizeof(CDocUndo),doc->mem_task); u=CAlloc(sizeof(CDocUndo),doc->mem_task);
u->time_stamp=time_stamp; u->time_stamp=time_stamp;
flags=doc->flags;
doc->flags&=~DOCF_NO_CURSOR;
u->body=DocSave(doc,&u->size); u->body=DocSave(doc,&u->size);
doc->flags=flags;
QueIns(u,doc->undo_root.last); QueIns(u,doc->undo_root.last);
doc->flags&=~DOCF_UNDO_DIRTY; doc->flags&=~DOCF_UNDO_DIRTY;
doc->undo_cnt++; doc->undo_cnt++;
@@ -291,8 +281,9 @@ U0 DocUndoRestore(CDoc *doc)
u_last=doc->undo_root.last; u_last=doc->undo_root.last;
QueInit(&doc->undo_root); QueInit(&doc->undo_root);
DocRst(doc,TRUE); DocRst(doc,TRUE);
doc->flags=u->doc_flags; doc->flags=u->doc_flags&~DOCF_NO_CURSOR;
DocLoad(doc,u->body,u->size); DocLoad(doc,u->body,u->size);
doc->flags=u->doc_flags;
DocUndoDel(doc,u); DocUndoDel(doc,u);
doc->undo_root.next=u_next; doc->undo_root.next=u_next;
doc->undo_root.last=u_last; doc->undo_root.last=u_last;
+4 -4
View File
@@ -7,7 +7,7 @@ public Bool DocLineNumGoTo(CDoc *doc,I64 line_num) //one based
unlock=DocLock(doc); unlock=DocLock(doc);
doc->x=0; doc->x=0;
doc->y=line_num-1; doc->y=line_num-1;
DocRecalc(doc,FALSE,DOC_RECALC_FIND_CURSOR); DocRecalc(doc,RECALCt_FIND_CURSOR);
DocCenter(doc); DocCenter(doc);
if (doc->cur_entry->y==line_num-1) if (doc->cur_entry->y==line_num-1)
result=TRUE; result=TRUE;
@@ -105,7 +105,7 @@ public U0 EdFindNext(CDoc *doc)
do { do {
if (doc_e!=doc) { if (doc_e!=doc) {
if (doc_e->de_flags&DOCEF_TAG && doc_e->tag && if (doc_e->de_flags&DOCEF_TAG && doc_e->tag &&
!(doc_e->de_flags&(DOCEG1_DONT_EDIT|DOCEF_FILTER_SKIP))) { !(doc_e->de_flags&(DOCEG_DONT_EDIT|DOCEF_FILTER_SKIP))) {
if (doc_e->type & DOCET_SELECTED || if (doc_e->type & DOCET_SELECTED ||
!doc->find_replace->scan_selected_text) { !doc->find_replace->scan_selected_text) {
if (doc->find_replace->scan_fwd) { if (doc->find_replace->scan_fwd) {
@@ -473,7 +473,7 @@ I64 EdFindReplace(CDoc *doc)
break; break;
} }
if (doc_e->type_u8==DOCT_TEXT && if (doc_e->type_u8==DOCT_TEXT &&
!(doc_e->de_flags&(DOCEG1_DONT_EDIT|DOCEF_FILTER_SKIP)) && !(doc_e->de_flags&(DOCEG_DONT_EDIT|DOCEF_FILTER_SKIP)) &&
(doc_e->type & DOCET_SELECTED || (doc_e->type & DOCET_SELECTED ||
!doc->find_replace->scan_selected_text&& !doc->find_replace->scan_selected_text&&
!doc->find_replace->local_var)) { !doc->find_replace->local_var)) {
@@ -571,7 +571,7 @@ Bool selected=TRUE,Bool match_case=TRUE,Bool whole_labels=FALSE)
class CEdLineGoTo class CEdLineGoTo
{ {
I64 line fmtstr "$$DA,256,A=\"Go to Line:%d\"$$"; I64 line fmtstr "$$DA,A=\"Go to Line:%d\"$$";
}; };
U0 EdGoToLine(CDoc *doc) U0 EdGoToLine(CDoc *doc)
+45 -5
View File
@@ -59,12 +59,13 @@ U0 DocFormBwd(CDoc *doc,Bool giveup=FALSE)
U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL) U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL)
{ {
I64 i; I64 i;
U8 *ptr; U8 *ptr,*ptr2;
CHashDefineStr *temph; CHashDefineStr *temph;
if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR || if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR ||
doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) { doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) {
if (d==DOCM_CANCEL) { if (d==DOCM_CANCEL) {
if (doc_e->de_flags & DOCEF_DATA_IS_PTR) { if (doc_e->de_flags&DOCEF_DEREF_DATA &&
!(doc_e->de_flags&DOCEF_REMALLOC_DATA)) {
if (!(ptr=doc_e->data)) return; if (!(ptr=doc_e->data)) return;
} else } else
ptr=&doc_e->data; ptr=&doc_e->data;
@@ -81,13 +82,32 @@ U0 DocDataFmt(CDoc *doc,CDocEntry *doc_e,I64 d=DOCM_CANCEL)
} }
} }
if (doc_e->type_u8==DOCT_DATA) { if (doc_e->type_u8==DOCT_DATA) {
if (doc_e->de_flags & DOCEF_REMALLOC_DATA) {
ptr=MStrPrint(doc_e->aux_str,d,doc_e->my_fmt_data);
i=StrLen(ptr);
if (!doc_e->data) {
doc_e->data=CAlloc(2,doc->mem_task);
doc_e->len=MSize(doc_e->data)-2;
}
if (doc_e->len+doc_e->min_col>i)
MemCpy(doc_e->tag,ptr,i+1);
else {
ptr2=MAlloc(i+8,doc->mem_task);
doc_e->len=MSize(ptr2)-doc_e->min_col-2; //See $LK,"DataTagWidth",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$
MemCpy(ptr2,ptr,i+1);
Free(doc_e->tag);
doc_e->tag=ptr2;
}
Free(ptr);
} else {
StrPrint(doc_e->tag,doc_e->aux_str,d,doc_e->my_fmt_data); StrPrint(doc_e->tag,doc_e->aux_str,d,doc_e->my_fmt_data);
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) {
i=StrLen(doc_e->tag); i=StrLen(doc_e->tag);
}
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) {
doc_e->tag[i++]='_'; doc_e->tag[i++]='_';
doc_e->tag[i]=0; doc_e->tag[i]=0;
} }
doc_e->max_col=StrLen(doc_e->tag); doc_e->max_col=i;
} else if (doc_e->de_flags & DOCEF_LST) { } else if (doc_e->de_flags & DOCEF_LST) {
if (doc_e->de_flags & DOCEF_DEFINE && (temph=HashFind(doc_e->define_str, if (doc_e->de_flags & DOCEF_DEFINE && (temph=HashFind(doc_e->define_str,
doc->win_task->hash_table,HTT_DEFINE_STR)) && 0<=d<temph->cnt) { doc->win_task->hash_table,HTT_DEFINE_STR)) && 0<=d<temph->cnt) {
@@ -115,7 +135,8 @@ U0 DocDataScan(CDoc *doc,CDocEntry *doc_e)
CHashDefineStr *temph; CHashDefineStr *temph;
if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR || if (doc_e->type_u8==DOCT_DATA && doc_e->de_flags&DOCEF_AUX_STR ||
doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) { doc_e->type_u8==DOCT_CHECK_BOX || doc_e->de_flags & DOCEF_LST) {
if (doc_e->de_flags & DOCEF_DATA_IS_PTR) { if (doc_e->de_flags&DOCEF_DEREF_DATA &&
!(doc_e->de_flags&DOCEF_REMALLOC_DATA)) {
if (!(ptr=doc_e->data)) return; if (!(ptr=doc_e->data)) return;
} else } else
ptr=&doc_e->data; ptr=&doc_e->data;
@@ -130,6 +151,13 @@ U0 DocDataScan(CDoc *doc,CDocEntry *doc_e)
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) if (doc_e->de_flags & DOCEF_HAS_TERMINATOR)
doc_e->tag[i]='_'; doc_e->tag[i]='_';
} else if (RT_I64<=doc_e->raw_type<=RT_UF64) { } else if (RT_I64<=doc_e->raw_type<=RT_UF64) {
if (doc_e->de_flags & DOCEF_REMALLOC_DATA) {
ptr=MAlloc(i-doc_e->min_col+8,doc->mem_task);
MemCpy(ptr,doc_e->tag+doc_e->min_col,i-doc_e->min_col+1);
Free(doc_e->data);
doc_e->data=ptr;
doc_e->len=MSize(ptr)-1;
} else
StrScan(doc_e->tag,doc_e->aux_str,ptr,doc_e->my_fmt_data); StrScan(doc_e->tag,doc_e->aux_str,ptr,doc_e->my_fmt_data);
if (doc_e->de_flags & DOCEF_HAS_TERMINATOR) if (doc_e->de_flags & DOCEF_HAS_TERMINATOR)
doc_e->tag[i]='_'; doc_e->tag[i]='_';
@@ -201,6 +229,10 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass,
while (ml) { while (ml) {
if (fmtstr=MemberMetaData("fmtstr",ml)) { if (fmtstr=MemberMetaData("fmtstr",ml)) {
doc_e=DocPrint(doc,"%s",fmtstr); doc_e=DocPrint(doc,"%s",fmtstr);
if (doc_e->de_flags&DOCEF_REMALLOC_DATA) {
doc_e->user_data=_d+ml->offset;
doc_e->data=*doc_e->user_data(U8 **);
} else
doc_e->data=_d+ml->offset; doc_e->data=_d+ml->offset;
doc_e->my_fmt_data=MemberMetaData("fmtdata",ml); doc_e->my_fmt_data=MemberMetaData("fmtdata",ml);
DocDataFmt(doc,doc_e); DocDataFmt(doc,doc_e);
@@ -221,6 +253,14 @@ public Bool DocForm(U8 *_d,U8 *class_name=lastclass,
} }
} }
} }
doc_e=doc->root.next;
while (doc_e!=doc) {
if (doc_e->de_flags&DOCEF_REMALLOC_DATA) {
*doc_e->user_data(U8 **)=doc_e->data;
doc_e->data=NULL;
}
doc_e=doc_e->next;
}
DocDel(doc); DocDel(doc);
Fs->border_src=old_border_src; Fs->border_src=old_border_src;
return result; return result;
+9 -9
View File
@@ -53,16 +53,16 @@ public I64 PopUpColorLighting(U8 *header=NULL)
class CTransformForm class CTransformForm
{ {
F64 x_scale fmtstr "$$DA-TRM,32,RT=F64,A=\"X Scale :%12.6f\"$$\n"; F64 x_scale fmtstr "$$DA-TRM,RT=F64,A=\"X Scale :%12.6f\"$$\n";
F64 y_scale fmtstr "$$DA-TRM,32,RT=F64,A=\"Y Scale :%12.6f\"$$\n"; F64 y_scale fmtstr "$$DA-TRM,RT=F64,A=\"Y Scale :%12.6f\"$$\n";
F64 z_scale fmtstr "$$DA-TRM,32,RT=F64,A=\"Z Scale :%12.6f\"$$\n"; F64 z_scale fmtstr "$$DA-TRM,RT=F64,A=\"Z Scale :%12.6f\"$$\n";
F64 é_z fmtstr F64 é_z fmtstr
"\nAngles are in degrees\n$$DA-TRM,32,RT=F64,A=\"Z-Axis :%12.6f\"$$\n"; "\nAngles are in degrees\n$$DA-TRM,RT=F64,A=\"Z-Axis :%12.6f\"$$\n";
F64 é_y fmtstr "$$DA-TRM,32,RT=F64,A=\"Y-Axis :%12.6f\"$$\n"; F64 é_y fmtstr "$$DA-TRM,RT=F64,A=\"Y-Axis :%12.6f\"$$\n";
F64 é_x fmtstr "$$DA-TRM,32,RT=F64,A=\"X-Axis :%12.6f\"$$\n"; F64 é_x fmtstr "$$DA-TRM,RT=F64,A=\"X-Axis :%12.6f\"$$\n";
F64 x_offset fmtstr "\n$$DA-TRM,32,RT=F64,A=\"X Offset:%12.6f\"$$\n"; F64 x_offset fmtstr "\n$$DA-TRM,RT=F64,A=\"X Offset:%12.6f\"$$\n";
F64 y_offset fmtstr "$$DA-TRM,32,RT=F64,A=\"Y Offset:%12.6f\"$$\n"; F64 y_offset fmtstr "$$DA-TRM,RT=F64,A=\"Y Offset:%12.6f\"$$\n";
F64 z_offset fmtstr "$$DA-TRM,32,RT=F64,A=\"Z Offset:%12.6f\"$$\n"; F64 z_offset fmtstr "$$DA-TRM,RT=F64,A=\"Z Offset:%12.6f\"$$\n";
}; };
Bool PopUpTransform(I64 *r) Bool PopUpTransform(I64 *r)
+1 -1
View File
@@ -1,7 +1,7 @@
#help_index "DolDoc/Misc" #help_index "DolDoc/Misc"
U32 *DocHighlight(CDocEntry *doc_e,U8 *src,I64 len,I64 _temp_u32_attr) U32 *DocHighlight(CDocEntry *doc_e,U8 *src,I64 len,I64 _temp_u32_attr)
{//Be aware of $LK,"::/Adam/Opt/Utils/ToHtml.CPP"$. {//Be aware of $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$.
U32 *result=MAlloc((len+1)*sizeof(U32)),*dst=result; U32 *result=MAlloc((len+1)*sizeof(U32)),*dst=result;
U8 *ptr; U8 *ptr;
CDocSettings *s=&doc_e->settings; CDocSettings *s=&doc_e->settings;
+4 -4
View File
@@ -11,11 +11,11 @@ U0 DocInit()
"BG\0FD\0BD\0PT\0WW\0UL\0IV\0BK\0SX\0SY\0CM\0AN\0LK\0BT\0" "BG\0FD\0BD\0PT\0WW\0UL\0IV\0BK\0SX\0SY\0CM\0AN\0LK\0BT\0"
"DA\0CB\0LS\0MA\0MU\0HX\0TR\0SP\0IB\0IS\0SO\0HL\0HC\0ER\0"); "DA\0CB\0LS\0MA\0MU\0HX\0TR\0SP\0IB\0IS\0SO\0HL\0HC\0ER\0");
DefineLstLoad("ST_DOC_FLAGS", DefineLstLoad("ST_DOC_FLAGS",
"T\0A\0D\0HTML\0LE\0LM\0RE\0RM\0BI\0BP\0RT\0SX\0SY\0SCX\0U\0" "T\0LEN\0A\0D\0HTML\0LE\0LM\0RE\0RM\0BI\0BP\0RT\0SX\0SY\0SCX\0U\0"
"LC\0LA\0RC\0RA\0TC\0LX\0CX\0RX\0TY\0CY\0BY\0" "LC\0LA\0RC\0RA\0LX\0CX\0RX\0TY\0CY\0BY\0"
"HL\0WW\0BK\0IV\0SEL\0UL\0" "HL\0WW\0BK\0IV\0SEL\0UL\0"
"PRY\0MRX\0WR\0L\0X\0Q\0FST\0B\0S\0BD\0C\0CA\0RD\0UD\0P\0TRM\0Z\0H\0" "TC\0PRY\0MRX\0WR\0L\0X\0Q\0FST\0B\0S\0BD\0C\0CA\0RD\0UD\0P\0M\0"
"TR\0LS\0SK\0PU\0SIF\0FS\0NC\0DD\0"); "TRM\0Z\0H\0TR\0LS\0SK\0PU\0SIF\0FS\0NC\0DD\0");
DefineLstLoad("ST_LINK_TYPES", DefineLstLoad("ST_LINK_TYPES",
"FI\0FA\0FF\0FL\0MN\0PI\0PF\0PL\0BF\0DN\0HI\0AD\0AI\0AA\0AF\0AL\0"); "FI\0FA\0FF\0FL\0MN\0PI\0PF\0PL\0BF\0DN\0HI\0AD\0AI\0AA\0AF\0AL\0");
+2 -2
View File
@@ -141,11 +141,11 @@ I64 PopUpMacroMenu()
U8 buf[STR_LEN]; U8 buf[STR_LEN];
CSrvCmd *tempc; CSrvCmd *tempc;
CDoc *doc=DocNew; CDoc *doc=DocNew;
CDocEntry *doc_e=DocPrint(doc,"$$DA-P,STR_LEN-1,A=\"Name:%%s\"$$"); CDocEntry *doc_e=DocPrint(doc,"$$DA-P,LEN=STR_LEN-1,A=\"Name:%%s\"$$");
doc_e->data=captured_macro_name; doc_e->data=captured_macro_name;
DocDataFmt(doc,doc_e); DocDataFmt(doc,doc_e);
doc_e=DocPrint(doc,"\n$$DA,32,A=\"Repeat N:%%d\"$$"); doc_e=DocPrint(doc,"\n$$DA,A=\"Repeat N:%%d\"$$");
doc_e->data=&sys_macro_repeat_n; doc_e->data=&sys_macro_repeat_n;
DocDataFmt(doc,doc_e); DocDataFmt(doc,doc_e);
+36 -19
View File
@@ -29,22 +29,33 @@ public Bool DocUnlock(CDoc *doc)
Bool IsEditableText(CDocEntry *doc_e) Bool IsEditableText(CDocEntry *doc_e)
{ {
if (doc_e->type_u8==DOCT_TEXT&&!(doc_e->de_flags&DOCEG1_DONT_EDIT)) if (doc_e->type_u8==DOCT_TEXT&&!(doc_e->de_flags&DOCEG_DONT_EDIT))
return TRUE; return TRUE;
else else
return FALSE; return FALSE;
} }
CDocEntry *DocEntryNew(CDoc *doc,CDocEntry *doc_ce,U8 *tag) CDocEntry *DocEntryNewBase(CDoc *doc,I64 type,I64 de_flags=0,
{ I64 x=0,I64 y=0,I64 page_line_num=0)
{//See also $LK,"MAllocIdentical",A="FF:::/Adam/DolDoc/DocRecalc.CPP,MAllocIdentical"$ and $MA-X+PU,"CDocEntry",LM="F(\"sizeof(CDocEntry)\");View;"$.
CDocEntry *result=CAlloc(sizeof(CDocEntryBase),doc->mem_task); CDocEntry *result=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
result->type=doc_ce->type; result->type=type;
result->de_flags=doc_ce->de_flags; result->de_flags=de_flags|doldoc.dft_de_flags[type.u8[0]];
result->tag=tag; result->x=x;
result->max_col=StrLen(tag); result->y=y;
result->x=doc_ce->x; result->page_line_num=page_line_num;
result->y=doc_ce->y; return result;
result->page_line_num=doc_ce->page_line_num; }
CDocEntry *DocEntryNewTag(CDoc *doc,CDocEntry *doc_ce,U8 *tag)
{
I64 l=StrLen(tag);
CDocEntry *result=DocEntryNewBase(doc,doc_ce->type,doc_ce->de_flags,
doc_ce->x,doc_ce->y,doc_ce->page_line_num);
result->de_flags=doc_ce->de_flags; //Override
result->max_col=l;
result->tag=MAlloc(l+1,doc->mem_task);
MemCpy(result->tag,tag,l+1);
MemCpy(&result->settings,&doc_ce->settings,sizeof(CDocSettings)); MemCpy(&result->settings,&doc_ce->settings,sizeof(CDocSettings));
return result; return result;
} }
@@ -59,20 +70,22 @@ public U0 DocEntryDel(CDoc *doc,CDocEntry *doc_e)
QueRem(doc_e); QueRem(doc_e);
if (doc_e->de_flags & DOCEF_TAG) if (doc_e->de_flags & DOCEF_TAG)
Free(doc_e->tag); Free(doc_e->tag);
if (doc_e->de_flags & DOCEF_LEFT_MACRO)
Free(doc_e->left_macro);
if (doc_e->de_flags & DOCEF_RIGHT_MACRO)
Free(doc_e->right_macro);
if (doc_e->de_flags & DOCEF_AUX_STR) if (doc_e->de_flags & DOCEF_AUX_STR)
Free(doc_e->aux_str); Free(doc_e->aux_str);
if (doc_e->de_flags & DOCEF_DEFINE) if (doc_e->de_flags & DOCEF_DEFINE)
Free(doc_e->define_str); Free(doc_e->define_str);
if (doc_e->de_flags & DOCEF_HTML_LINK) if (doc_e->de_flags & DOCEF_HTML_LINK)
Free(doc_e->html_link); Free(doc_e->html_link);
if (doc_e->de_flags & DOCEF_LEFT_MACRO)
Free(doc_e->left_macro);
if (doc_e->de_flags & DOCEF_RIGHT_MACRO)
Free(doc_e->right_macro);
if (doc_e->de_flags & DOCEF_BIN_PTR_LINK) if (doc_e->de_flags & DOCEF_BIN_PTR_LINK)
Free(doc_e->bin_ptr_link); Free(doc_e->bin_ptr_link);
if (doc_e->de_flags & DOCEF_HAS_BIN) if (doc_e->de_flags & DOCEF_HAS_BIN)
DocBinDel(doc,doc_e->bin_data); DocBinDel(doc,doc_e->bin_data);
if (doc_e->de_flags & DOCEF_REMALLOC_DATA)
Free(doc_e->data);
Free(doc_e); Free(doc_e);
} }
} }
@@ -90,12 +103,14 @@ public I64 DocEntrySize(CDoc *,CDocEntry *doc_e)
result+=MSize2(doc_e->define_str); result+=MSize2(doc_e->define_str);
if (doc_e->de_flags & DOCEF_HTML_LINK) if (doc_e->de_flags & DOCEF_HTML_LINK)
result+=MSize2(doc_e->html_link); result+=MSize2(doc_e->html_link);
if (doc_e->de_flags & DOCEF_BIN_PTR_LINK)
result+=MSize2(doc_e->bin_ptr_link);
if (doc_e->de_flags & DOCEF_LEFT_MACRO) if (doc_e->de_flags & DOCEF_LEFT_MACRO)
result+=MSize2(doc_e->left_macro); result+=MSize2(doc_e->left_macro);
if (doc_e->de_flags & DOCEF_RIGHT_MACRO) if (doc_e->de_flags & DOCEF_RIGHT_MACRO)
result+=MSize2(doc_e->right_macro); result+=MSize2(doc_e->right_macro);
if (doc_e->de_flags & DOCEF_BIN_PTR_LINK)
result+=MSize2(doc_e->bin_ptr_link);
if (doc_e->de_flags & DOCEF_REMALLOC_DATA)
result+=MSize2(doc_e->data);
return result; return result;
} }
@@ -134,12 +149,12 @@ public CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e)
doc_ne->define_str=MAllocIdentical(doc_e->define_str,task); doc_ne->define_str=MAllocIdentical(doc_e->define_str,task);
if (doc_e->de_flags & DOCEF_HTML_LINK) if (doc_e->de_flags & DOCEF_HTML_LINK)
doc_ne->html_link=MAllocIdentical(doc_e->html_link,task); doc_ne->html_link=MAllocIdentical(doc_e->html_link,task);
if (doc_e->de_flags & DOCEF_BIN_PTR_LINK)
doc_ne->bin_ptr_link=MAllocIdentical(doc_e->bin_ptr_link,task);
if (doc_e->de_flags & DOCEF_LEFT_MACRO) if (doc_e->de_flags & DOCEF_LEFT_MACRO)
doc_ne->left_macro=MAllocIdentical(doc_e->left_macro,task); doc_ne->left_macro=MAllocIdentical(doc_e->left_macro,task);
if (doc_e->de_flags & DOCEF_RIGHT_MACRO) if (doc_e->de_flags & DOCEF_RIGHT_MACRO)
doc_ne->right_macro=MAllocIdentical(doc_e->right_macro,task); doc_ne->right_macro=MAllocIdentical(doc_e->right_macro,task);
if (doc_e->de_flags & DOCEF_BIN_PTR_LINK)
doc_ne->bin_ptr_link=MAllocIdentical(doc_e->bin_ptr_link,task);
if (doc_e->de_flags & DOCEF_HAS_BIN) { if (doc_e->de_flags & DOCEF_HAS_BIN) {
tempb=MAllocIdentical(doc_e->bin_data,task); tempb=MAllocIdentical(doc_e->bin_data,task);
tempb->data=MAllocIdentical(doc_e->bin_data->data,task); tempb->data=MAllocIdentical(doc_e->bin_data->data,task);
@@ -152,6 +167,8 @@ public CDocEntry *DocEntryCopy(CDoc *doc,CDocEntry *doc_e)
tempb->tag=NULL; tempb->tag=NULL;
QueIns(tempb,doc->bin_root.last); QueIns(tempb,doc->bin_root.last);
} }
if (doc_e->de_flags & DOCEF_REMALLOC_DATA)
doc_ne->data=MAllocIdentical(doc_e->data,task);
return doc_ne; return doc_ne;
} }
@@ -195,7 +212,7 @@ public U0 DocInsEntry(CDoc *doc,CDocEntry *doc_e)
DOCEF_HTML_LINK|DOCEF_BIN_PTR_LINK)) && DOCEF_HTML_LINK|DOCEF_BIN_PTR_LINK)) &&
doc->cur_col<doc_ce->max_col) { doc->cur_col<doc_ce->max_col) {
dst=doc_ce->tag+doc->cur_col; dst=doc_ce->tag+doc->cur_col;
doc_ne=DocEntryNew(doc,doc_ce,StrNew(dst,doc->mem_task)); doc_ne=DocEntryNewTag(doc,doc_ce,dst);
*dst=0; *dst=0;
doc_ne->type=DOCT_TEXT|doc_ce->type&0xFFFFFF00; doc_ne->type=DOCT_TEXT|doc_ce->type&0xFFFFFF00;
doc_ce->max_col=doc->cur_col; doc_ce->max_col=doc->cur_col;
+15 -20
View File
@@ -61,7 +61,7 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
for (i=0;i<DOCEf_NUM_FLAGS;i++) for (i=0;i<DOCEf_NUM_FLAGS;i++)
if (Bt(&f1,i)!=Bt(&de_flags,i)) { if (Bt(&f1,i)!=Bt(&de_flags,i)) {
if (Bt(&de_flags,i)) { if (Bt(&de_flags,i)) {
if (!(1<<i&DOCEG1_HAS_ARG)) { if (!(1<<i&DOCEG_HAS_ARG)) {
buf2=MStrPrint("%s+%Z",buf,i,"ST_DOC_FLAGS"); buf2=MStrPrint("%s+%Z",buf,i,"ST_DOC_FLAGS");
Free(buf); buf=buf2; Free(buf); buf=buf2;
} }
@@ -82,19 +82,12 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
buf2=MStrPrint("%s,",buf); buf2=MStrPrint("%s,",buf);
Free(buf); buf=buf2; Free(buf); buf=buf2;
nobound_switch (doc_e->type_u8) { nobound_switch (doc_e->type_u8) {
sub_switch_start:
case DOCT_DATA:
buf2=MStrPrint("%s%d,",buf,doc_e->len);
break;
case DOCT_HEX_ED: case DOCT_HEX_ED:
buf2=MStrPrint("%s%d,",buf,doc_e->len); buf2=MStrPrint("%s%d,",buf,doc_e->len);
Free(buf); buf=buf2; Free(buf); buf=buf2;
buf2=MStrPrint("%s%d,",buf,doc_e->hex_ed_width); buf2=MStrPrint("%s%d,",buf,doc_e->hex_ed_width);
break;
sub_switch_end:
Free(buf); buf=buf2; Free(buf); buf=buf2;
break; break;
case DOCT_FOREGROUND: case DOCT_FOREGROUND:
case DOCT_BACKGROUND: case DOCT_BACKGROUND:
case DOCT_DFT_FOREGROUND: case DOCT_DFT_FOREGROUND:
@@ -124,7 +117,7 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
case DOCT_NUM_TYPES-1: //nobound_switch case DOCT_NUM_TYPES-1: //nobound_switch
break; break;
} }
de_flags=doc_e->de_flags & DOCEG1_HAS_ARG; de_flags=doc_e->de_flags & DOCEG_HAS_ARG;
while (de_flags) { while (de_flags) {
j=Bsf(de_flags); j=Bsf(de_flags);
Btr(&de_flags,j); Btr(&de_flags,j);
@@ -158,6 +151,9 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
buf2=MStrPrint("%sT=\"%$$Q\",",buf,buf2); buf2=MStrPrint("%sT=\"%$$Q\",",buf,buf2);
} }
break; break;
case DOCEf_LEN:
buf2=MStrPrint("%sLEN=%d,",buf,doc_e->len);
break;
case DOCEf_AUX_STR: case DOCEf_AUX_STR:
buf2=MStrPrint("%sA=\"%$$Q\",",buf,doc_e->aux_str); buf2=MStrPrint("%sA=\"%$$Q\",",buf,doc_e->aux_str);
break; break;
@@ -244,17 +240,10 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st)
doc_e->de_flags=doldoc.dft_de_flags[i]; doc_e->de_flags=doldoc.dft_de_flags[i];
doc_e->type|=doldoc.dft_type_flags[i]; doc_e->type|=doldoc.dft_type_flags[i];
doc_e->raw_type=RT_I64; doc_e->raw_type=RT_I64;
doc_e->len=DOCE_LEN_DFT;
j=PrsDocFlags(cc,&doc_e->de_flags,&doc_e->type); j=PrsDocFlags(cc,&doc_e->de_flags,&doc_e->type);
cc->htc.hash_table_lst=old_hash_table_lst; cc->htc.hash_table_lst=old_hash_table_lst;
nobound_switch (i) { nobound_switch (i) {
case DOCT_DATA:
while (cc->token==',')
Lex(cc);
if (cc->token)
doc_e->len=LexExpressionI64(cc);
else
goto pd_err;
break;
case DOCT_CHECK_BOX: case DOCT_CHECK_BOX:
doc_e->raw_type=RT_I8; doc_e->raw_type=RT_I8;
break; break;
@@ -308,7 +297,7 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st)
Lex(cc); Lex(cc);
cc->htc.hash_table_lst=old_hash_table_lst; cc->htc.hash_table_lst=old_hash_table_lst;
j=PrsDocFlagSingle(cc,&doc_e->de_flags,&doc_e->type,TRUE); j=PrsDocFlagSingle(cc,&doc_e->de_flags,&doc_e->type,TRUE);
if (!(de_flags=~processed_flags & doc_e->de_flags & DOCEG1_HAS_ARG)) if (!(de_flags=~processed_flags & doc_e->de_flags & DOCEG_HAS_ARG))
break; break;
if (cc->token=='=') if (cc->token=='=')
Lex(cc); Lex(cc);
@@ -348,6 +337,12 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st)
goto pd_err; goto pd_err;
} }
break; break;
case DOCEf_LEN:
if (cc->token)
doc_e->len=LexExpression(cc);
else
goto pd_err;
break;
case DOCEf_AUX_STR: case DOCEf_AUX_STR:
if (cc->token==TK_STR) { if (cc->token==TK_STR) {
st2=LexExtStr(cc); st2=LexExtStr(cc);
@@ -474,8 +469,8 @@ pd_err:
doc_e->type=DOCT_ERROR; doc_e->type=DOCT_ERROR;
doc_e->de_flags=0; doc_e->de_flags=0;
} }
if (doc_e->de_flags & DOCEF_LST && if (doc_e->de_flags&DOCEF_LST && (doc_e->de_flags&DOCEF_REMALLOC_DATA ||
!(doc_e->de_flags & DOCEF_DATA_IS_PTR)) { !(doc_e->de_flags&DOCEF_DEREF_DATA))) {
DocDataScan(doc,doc_e); DocDataScan(doc,doc_e);
DocDataFmt(doc,doc_e); DocDataFmt(doc,doc_e);
} }
+15 -21
View File
@@ -22,7 +22,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
KeyDescSet("Char /'%s'",st); KeyDescSet("Char /'%s'",st);
Free(st); Free(st);
} else } else
EdInsChar(ch,sc,doc); EdCharIns(ch,sc,doc);
} else { } else {
doc_ce=doc->cur_entry; doc_ce=doc->cur_entry;
x=doc->x; y=doc->y; x=doc->x; y=doc->y;
@@ -189,7 +189,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc&SCF_SHIFT) if (sc&SCF_SHIFT)
EdCutToClipboard(doc); EdCutToClipboard(doc);
else else
EdDelChar(doc); EdCharDel(doc);
} }
} }
break; break;
@@ -435,11 +435,11 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
doc->cur_col=doc_ce->max_col; doc->cur_col=doc_ce->max_col;
if (doc->cur_col>doc_ce->min_col) if (doc->cur_col>doc_ce->min_col)
doc->cur_col--; doc->cur_col--;
EdDelChar(doc); EdCharDel(doc);
} }
} else { } else {
doc->cur_col--; doc->cur_col--;
EdDelChar(doc); EdCharDel(doc);
} }
} }
} }
@@ -448,12 +448,12 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc.u8[0]!=SC_TAB) { if (sc.u8[0]!=SC_TAB) {
if (sc&SCF_SHIFT) { if (sc&SCF_SHIFT) {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /Indent Out"); KeyDescSet("Dol /Unindent 2");
else else
DocPrint(doc,"$$ID,-2$$"); DocPrint(doc,"$$ID,-2$$");
} else { } else {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /Indent In"); KeyDescSet("Dol /Indent 2");
else else
DocPrint(doc,"$$ID,2$$"); DocPrint(doc,"$$ID,2$$");
} }
@@ -466,7 +466,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
else else
KeyDescSet("Char /Page Break"); KeyDescSet("Char /Page Break");
} else } else
EdInsChar(ch,sc,doc); EdCharIns(ch,sc,doc);
break; break;
case CH_CTRLK: case CH_CTRLK:
if (sc&SCF_SHIFT) { if (sc&SCF_SHIFT) {
@@ -556,21 +556,17 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (!(sc&SCF_SHIFT)) { if (!(sc&SCF_SHIFT)) {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /Sprite Graphic Resource"); KeyDescSet("Cmd /Sprite Graphic Resource");
else { else
if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) { if (!(doc->flags&DOCF_FORM) &&
!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))) {
DocUnlock(doc); DocUnlock(doc);
if (doc_ce->type_u8==DOCT_SPRITE) if (doc_ce->type_u8==DOCT_SPRITE)
EdSpriteEd(doc, EdSpriteEd(doc);
(doc_ce->x-doc->line_start_col+doc_ce->max_col)*
FONT_WIDTH,(doc_ce->y-doc->top_line_num)*FONT_HEIGHT);
else else
EdSpriteIns(doc, EdSpriteIns(doc);
(doc_ce->x+doc->cur_col-doc->line_start_col)*FONT_WIDTH,
(doc_ce->y-doc->top_line_num)*FONT_HEIGHT);
DocLock(doc); DocLock(doc);
} }
} }
}
break; break;
case CH_CTRLS: case CH_CTRLS:
if (sc&SCF_SHIFT) { if (sc&SCF_SHIFT) {
@@ -589,14 +585,12 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc&SCF_SHIFT) { if (sc&SCF_SHIFT) {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Edit/Single Entry Toggle Plain Text"); KeyDescSet("Edit/Single Entry Toggle Plain Text");
else else if (!(doc->flags&DOCF_FORM))
DocEntryToggle(doc); DocEntryToggle(doc);
} else { } else {
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Edit/Toggle Plain Text Display"); KeyDescSet("Edit/Toggle Plain Text Display");
else else if (!(doc->flags&DOCF_FORM))
if (!(doc->flags&DOCF_FORM) ||
doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_TABS))
DocFlagsToggle(doc,DOCF_PLAIN_TEXT); DocFlagsToggle(doc,DOCF_PLAIN_TEXT);
} }
break; break;
@@ -647,7 +641,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch=0,I64 sc=0)
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Edit/Delete Line"); KeyDescSet("Edit/Delete Line");
else else
EdDelLine(doc); EdLineDel(doc);
} }
break; break;
case CH_CTRLZ: case CH_CTRLZ:
+24 -37
View File
@@ -26,9 +26,8 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
ptr--; ptr--;
if (!ch) { if (!ch) {
if (j=ptr-ptr2) { if (j=ptr-ptr2) {
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; DOCT_TEXT|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
if (doc->flags & DOCF_NO_CURSOR) { if (doc->flags & DOCF_NO_CURSOR) {
src=MAlloc(j+1); src=MAlloc(j+1);
MemCpy(src,ptr2,j+1); MemCpy(src,ptr2,j+1);
@@ -46,9 +45,8 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
} else { } else {
if (j=ptr-ptr2) { if (j=ptr-ptr2) {
*ptr=0; *ptr=0;
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; DOCT_TEXT|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
if (doc->flags & DOCF_NO_CURSOR) { if (doc->flags & DOCF_NO_CURSOR) {
src=MAlloc(j+1); src=MAlloc(j+1);
MemCpy(src,ptr2,j+1); MemCpy(src,ptr2,j+1);
@@ -73,23 +71,20 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
} }
switch (ch) { switch (ch) {
case CH_CURSOR: case CH_CURSOR:
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; DOCT_CURSOR|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr++; ptr++;
break; break;
case CH_FORM_FEED: case CH_FORM_FEED:
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_PAGE_BREAK | doc->settings_root.dft_text_attr<<8; DOCT_PAGE_BREAK|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr++; ptr++;
break; break;
case '\t': case '\t':
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_TAB | doc->settings_root.dft_text_attr<<8; DOCT_TAB|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_TAB];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr++; ptr++;
break; break;
@@ -101,21 +96,19 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
if (*ptr) { if (*ptr) {
*ptr=0; //zero second dollar *ptr=0; //zero second dollar
if (ptr-1==ptr2 && *ptr2==CH_CURSOR) { if (ptr-1==ptr2 && *ptr2==CH_CURSOR) {
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; DOCT_CURSOR|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
ptr2++; ptr2++;
} }
if (ptr==ptr2) { if (ptr==ptr2) {
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr<<8; DOCT_TEXT|doc->settings_root.dft_text_attr<<8);
doc_e->max_col=1; doc_e->max_col=1;
if (doc->flags & DOCF_DBL_DOLLARS) if (doc->flags & DOCF_DBL_DOLLARS)
doc_e->tag=StrNew("$$$$",doc->mem_task); doc_e->tag=StrNew("$$$$",doc->mem_task);
else else
doc_e->tag=StrNew("$$",doc->mem_task); doc_e->tag=StrNew("$$",doc->mem_task);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
} else { } else {
st2=MAlloc(ptr-ptr2+1); st2=MAlloc(ptr-ptr2+1);
@@ -123,15 +116,12 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
ptr4=st2; ptr4=st2;
while (ch=*ptr3++) { while (ch=*ptr3++) {
if (ch==CH_CURSOR) { if (ch==CH_CURSOR) {
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_CURSOR | doc->settings_root.dft_text_attr<<8; DOCT_CURSOR|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_CURSOR];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
} else if (ch==CH_FORM_FEED) { } else if (ch==CH_FORM_FEED) {
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_PAGE_BREAK | DOCT_PAGE_BREAK|doc->settings_root.dft_text_attr<<8);
doc->settings_root.dft_text_attr<<8;
doc_e->de_flags=doldoc.dft_de_flags[DOCT_PAGE_BREAK];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
} else } else
*ptr4++=ch; *ptr4++=ch;
@@ -147,9 +137,8 @@ CDocEntry *DocPutS(CDoc *doc,U8 *st)
} }
break; break;
default: default:
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e=DocEntryNewBase(doc,
doc_e->type=DOCT_NEW_LINE | doc->settings_root.dft_text_attr<<8; DOCT_NEW_LINE|doc->settings_root.dft_text_attr<<8);
doc_e->de_flags=doldoc.dft_de_flags[DOCT_NEW_LINE];
DocInsEntry(doc,doc_e); DocInsEntry(doc,doc_e);
if (ch=='\r') if (ch=='\r')
while (*ptr=='\r') while (*ptr=='\r')
@@ -176,7 +165,7 @@ public CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...)
public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...) public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...)
{//Lets you print half a doc cmd, if you like. {//Lets you print half a doc cmd, if you like.
U8 *buf,*b,*src,*dst,*ptr,*ptr2; U8 *buf,*st,*src,*dst,*ptr,*ptr2;
Bool unlock; Bool unlock;
CDocEntry *doc_ce,*doc_ne; CDocEntry *doc_ce,*doc_ne;
I64 ch,i,j; I64 ch,i,j;
@@ -210,7 +199,7 @@ public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...)
doc_ce=doc->cur_entry; doc_ce=doc->cur_entry;
j=ptr-ptr2; j=ptr-ptr2;
if (IsEditableText(doc_ce)) { if (IsEditableText(doc_ce)) {
dst=b=MAlloc(doc_ce->max_col+j+1,doc->mem_task); dst=st=MAlloc(doc_ce->max_col+j+1,doc->mem_task);
src=doc_ce->tag; src=doc_ce->tag;
i=doc->cur_col; i=doc->cur_col;
doc->cur_col+=j; doc->cur_col+=j;
@@ -221,11 +210,9 @@ public U0 DocPrintPartial(CDoc *doc,U8 *fmt,...)
*dst++=*ptr2++; *dst++=*ptr2++;
while (*dst++=*src++); while (*dst++=*src++);
Free(doc_ce->tag); Free(doc_ce->tag);
doc_ce->tag=b; doc_ce->tag=st;
} else { } else {
dst=MAlloc(j+1,doc->mem_task); doc_ne=DocEntryNewTag(doc,doc_ce,ptr2);
MemCpy(dst,ptr2,j+1);
doc_ne=DocEntryNew(doc,doc_ce,dst);
doc_ne->type=DOCT_TEXT|doc->settings_root.dft_text_attr<<8; doc_ne->type=DOCT_TEXT|doc->settings_root.dft_text_attr<<8;
doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT]; doc_ne->de_flags=doldoc.dft_de_flags[DOCT_TEXT];
QueIns(doc_ne,doc_ce->last); QueIns(doc_ne,doc_ce->last);
+106 -71
View File
@@ -128,13 +128,33 @@ U0 DocRecalcXY(CDoc *doc,CDocEntry *doc_e,
*_y=y; *_y=y;
} }
CDocEntry *DocSplitTag(CDoc *doc,CDocEntry *doc_e,I64 i,I64 x,I64 y,I64 type_u8)
{//Split tag at i, insert DOCT_SOFT_NEW_LINE or DOCT_CURSOR
U8 *ptr;
CDocEntry *doc_e2=MAllocIdentical(doc_e,doc->mem_task);
doc_e2->tag=StrNew(doc_e->tag+i,doc->mem_task);
doc_e2->de_flags=doc_e->de_flags&~DOCEG_HAS_ALLOC|DOCEF_TAG;
QueIns(doc_e2,doc_e);
if (doc->cur_entry==doc_e && doc->cur_col>=i) {
doc->cur_entry=doc_e2;
doc->cur_col=doc->cur_col-i;
}
doc_e->tag[i]=0;
ptr=StrNew(doc_e->tag,doc->mem_task);
Free(doc_e->tag);
doc_e->tag=ptr;
doc_e2=DocEntryNewBase(doc,type_u8|doc_e->type & 0xFFFFFF00,
doc_e->de_flags&~DOCEG_HAS_ARG,x,y,doc_e->page_line_num);
MemCpy(&doc_e2->settings,&doc_e->settings,sizeof(CDocSettings));
QueIns(doc_e2,doc_e);
return doc_e2;
}
CDocEntry *DocWordWrapAdd(CDoc *doc,CDocEntry *doc_e, CDocEntry *DocWordWrapAdd(CDoc *doc,CDocEntry *doc_e,
I64 *_k,I64 left,I64 right_margin,I64 x,I64 y) I64 *_k,I64 left,I64 right_margin,I64 x,I64 y)
{ {
CDocEntry *doc_e2; CDocEntry *doc_e2;
U8 *ptr; I64 j,i=right_margin+1-(x+left), //Space left on line
I64 i,ii,j;
i=right_margin+1-(x+left); //Space left on line
ii=x+1-doc_e->settings.left_margin; ii=x+1-doc_e->settings.left_margin;
if (IsEditableText(doc_e)) { if (IsEditableText(doc_e)) {
if (doc->cur_entry==doc_e->next) { if (doc->cur_entry==doc_e->next) {
@@ -146,32 +166,12 @@ CDocEntry *DocWordWrapAdd(CDoc *doc,CDocEntry *doc_e,
} }
if (*_k>i) { if (*_k>i) {
for (j=i;j>8-ii && j>=0;j--) for (j=i;j>8-ii && j>=0;j--)
if (doc_e->tag[j]==CH_SPACE || if (doc_e->tag[j]==CH_SPACE || doc_e->tag[j]==CH_SHIFT_SPACE) {
doc_e->tag[j]==CH_SHIFT_SPACE) {
i=j+1; i=j+1;
break; break;
} }
if (*_k>i && i>0) { if (0<i<*_k) {
doc_e2=MAllocIdentical(doc_e,doc->mem_task); DocSplitTag(doc,doc_e,i,x,y,DOCT_SOFT_NEW_LINE);
doc_e2->tag=StrNew(doc_e->tag+i,doc->mem_task);
QueIns(doc_e2,doc_e);
if (doc->cur_entry==doc_e && doc->cur_col>=i) {
doc->cur_entry=doc_e2;
doc->cur_col=doc->cur_col-i;
}
doc_e->tag[i]=0;
ptr=StrNew(doc_e->tag,doc->mem_task);
Free(doc_e->tag);
doc_e->tag=ptr;
doc_e2=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
doc_e2->type=DOCT_SOFT_NEW_LINE | doc_e->type & 0xFFFFFF00;
doc_e2->de_flags=doc_e->de_flags
&~DOCEF_TAG|doldoc.dft_de_flags[DOCT_SOFT_NEW_LINE];
doc_e2->x=x;
doc_e2->y=y;
doc_e2->page_line_num=doc_e->page_line_num;
MemCpy(&doc_e2->settings,&doc_e->settings,sizeof(CDocSettings));
QueIns(doc_e2,doc_e);
*_k=StrLen(doc_e->tag); *_k=StrLen(doc_e->tag);
return NULL; return NULL;
} }
@@ -184,14 +184,9 @@ CDocEntry *DocWordWrapAdd(CDoc *doc,CDocEntry *doc_e,
if (doc_e2->type_u8!=DOCT_SOFT_NEW_LINE && if (doc_e2->type_u8!=DOCT_SOFT_NEW_LINE &&
doc_e2->type_u8!=DOCT_NEW_LINE && doc_e2->type_u8!=DOCT_NEW_LINE &&
doc_e2->type_u8!=DOCT_CURSOR_MOVEMENT) { doc_e2->type_u8!=DOCT_CURSOR_MOVEMENT) {
doc_e2=CAlloc(sizeof(CDocEntryBase),doc->mem_task); doc_e2=DocEntryNewBase(doc,DOCT_SOFT_NEW_LINE|doc_e->type&0xFFFFFF00,
doc_e2->type=DOCT_SOFT_NEW_LINE | doc_e->type & 0xFFFFFF00; DOCEF_WORD_WRAP|doc_e->de_flags&(DOCEF_HIGHLIGHT|DOCG_BL_IV_UL|
doc_e2->de_flags=DOCEF_WORD_WRAP|doldoc.dft_de_flags[DOCT_SOFT_NEW_LINE]| DOCEF_SKIP|DOCEF_FILTER_SKIP),x,y,doc_e->last->page_line_num);
doc_e->de_flags&(DOCEF_HIGHLIGHT|DOCG_BL_IV_UL|
DOCEF_SKIP|DOCEF_FILTER_SKIP);
doc_e2->x=x;
doc_e2->y=y;
doc_e2->page_line_num=doc_e->last->page_line_num;
MemCpy(&doc_e2->settings,&doc_e->settings,sizeof(CDocSettings)); MemCpy(&doc_e2->settings,&doc_e->settings,sizeof(CDocSettings));
QueIns(doc_e2,doc_e->last); QueIns(doc_e2,doc_e->last);
return doc_e2; return doc_e2;
@@ -245,19 +240,21 @@ I64 DocTempAttr(CDoc *doc,CDocEntry *doc_e,I64 cur_u8_attr)
} }
doc_e->type.u8[1]=temp_u32_attr.u8[1]; doc_e->type.u8[1]=temp_u32_attr.u8[1];
temp_u32_attr|=doc_e->type&0xFFFF0000; temp_u32_attr|=doc_e->type&0xFFFF0000;
if (doc_e==doc->cur_entry && doc_e->type_u8!=DOCT_TEXT) if (doc_e==doc->cur_entry && !(doc->flags&DOCF_DONT_HIGHLIGHT_CURSOR) &&
doc_e->type_u8!=DOCT_TEXT)
temp_u32_attr^=0xFF00; temp_u32_attr^=0xFF00;
doc_e->settings.final_u32_attr=temp_u32_attr; doc_e->settings.final_u32_attr=temp_u32_attr;
return temp_u32_attr; return temp_u32_attr;
} }
public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC) public Bool DocRecalc(CDoc *doc,I64 recalc_flags=RECALCt_NORMAL)
{//Recalc and fmt. Also used by WinMgr to draw on screen. {//Recalc and fmt. Also used by WinMgr to draw on screen.
I64 i,ii,j,k,x,x0,y,y0,D,d2,col,col2,best_col=0,best_d=MAX_I64,xx,yy,zz, I64 i,ii,j,k,x,x0,y,y0,D,d2,col,col2,best_col=0,best_d=MAX_I64,xx,yy,zz,
num_entries=0,ijif,cur_u8_attr,temp_u32_attr, num_entries=0,ijif,cur_u8_attr,temp_u32_attr,
cursor_y=MIN_I64,left_margin,right_margin,y_plot_top,y_plot_bottom, cursor_y=MIN_I64,left_margin,right_margin,y_plot_top,y_plot_bottom,
top,left,bottom,right,width,height,scroll_x,scroll_y,pix_top,pix_left; top,left,bottom,right,width,height,scroll_x,scroll_y,pix_top,pix_left;
CDocEntry reg *doc_e,reg *doc_e2,*best_doc_e,*next_clear_found=NULL; CDocEntry reg *doc_e,reg *doc_e2,*best_doc_e,*next_clear_found=NULL,
*added_cursor=NULL;
CDocBin *tempb; CDocBin *tempb;
CDocSettings *s; CDocSettings *s;
Bool del_cl,skipped_update,tree_collapsed,same_win,more=FALSE, Bool del_cl,skipped_update,tree_collapsed,same_win,more=FALSE,
@@ -273,7 +270,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
if (!doc || doc->doc_signature!=DOC_SIGNATURE_VAL) return FALSE; if (!doc || doc->doc_signature!=DOC_SIGNATURE_VAL) return FALSE;
if (recalc==DOC_RECALC_TO_SCREEN && doc->owning_task!=Fs) { if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN && doc->owning_task!=Fs) {
ijif=cnts.jiffies+JIFFY_FREQ/240; ijif=cnts.jiffies+JIFFY_FREQ/240;
while (Bt(&doc->locked_flags,DOClf_LOCKED)) { while (Bt(&doc->locked_flags,DOClf_LOCKED)) {
if (cnts.jiffies>=ijif) if (cnts.jiffies>=ijif)
@@ -292,13 +289,13 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
mem_task=doc->mem_task; mem_task=doc->mem_task;
blink_flag=Blink; blink_flag=Blink;
dc=NULL; dc=NULL;
nobound_switch (recalc) { nobound_switch (recalc_flags&RECALCG_MASK) {
case DOC_RECALC_FIND_CURSOR: case RECALCt_FIND_CURSOR:
find_cursor=TRUE; find_cursor=TRUE;
if (win_task) if (win_task)
dc=DCAlias(gr.dc2,win_task); //Necessary for sprites dc=DCAlias(gr.dc2,win_task); //Necessary for sprites
break; break;
case DOC_RECALC_TO_SCREEN: case RECALCt_TO_SCREEN:
if (doc->updates_cnt++%(ToI64(winmgr.fps/10)+1) && if (doc->updates_cnt++%(ToI64(winmgr.fps/10)+1) &&
!Bt(&doc->flags,DOCf_DO_FULL_REFRESH) && !Bt(&doc->flags,DOCf_DO_FULL_REFRESH) &&
!(doc->flags&DOCF_BWD_MOVEMENT)) !(doc->flags&DOCF_BWD_MOVEMENT))
@@ -347,12 +344,12 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
if (doc->flags&DOCF_BORDER_DOC) { if (doc->flags&DOCF_BORDER_DOC) {
doc->top_line_num=0; doc->top_line_num=0;
doc->line_start_col=0; doc->line_start_col=0;
has_cursor=FALSE; recalc_flags&=~RECALCF_HAS_CURSOR;
if (recalc==DOC_RECALC_TO_SCREEN) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN)
doc->settings_root.cur_text_attr= doc->settings_root.cur_text_attr=
doc->settings_root.dft_text_attr=win_task->border_attr; doc->settings_root.dft_text_attr=win_task->border_attr;
} else { } else {
if (has_cursor && full_refresh) { if (recalc_flags&RECALCF_HAS_CURSOR && full_refresh) {
if (Bt(&hss->flags,WSSf_SET_TO_POS)||Bt(&vss->flags,WSSf_SET_TO_POS)) { if (Bt(&hss->flags,WSSf_SET_TO_POS)||Bt(&vss->flags,WSSf_SET_TO_POS)) {
if (!(doc->flags&DOCF_NO_SCROLL_BARS)) { if (!(doc->flags&DOCF_NO_SCROLL_BARS)) {
if (Bt(&hss->flags,WSSf_SET_TO_POS)) { if (Bt(&hss->flags,WSSf_SET_TO_POS)) {
@@ -369,7 +366,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
find_cursor=TRUE; find_cursor=TRUE;
} }
} }
if (recalc==DOC_RECALC_TO_SCREEN) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN)
doc->settings_root.cur_text_attr= doc->settings_root.cur_text_attr=
doc->settings_root.dft_text_attr=win_task->text_attr; doc->settings_root.dft_text_attr=win_task->text_attr;
} }
@@ -381,7 +378,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
right ==doc->old_win_right && right ==doc->old_win_right &&
doc->cur_entry==doc->old_cur_entry && doc->cur_entry==doc->old_cur_entry &&
doc->cur_col==doc->old_cur_col; doc->cur_col==doc->old_cur_col;
if (recalc==DOC_RECALC_TO_SCREEN) { if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN) {
y_plot_top=y0-scroll_y/FONT_HEIGHT; y_plot_top=y0-scroll_y/FONT_HEIGHT;
y_plot_bottom=y0+height-1-scroll_y/FONT_HEIGHT; y_plot_bottom=y0+height-1-scroll_y/FONT_HEIGHT;
if (!(doc->flags&DOCF_BORDER_DOC) && if (!(doc->flags&DOCF_BORDER_DOC) &&
@@ -402,7 +399,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
cur_u8_attr=s->cur_text_attr; cur_u8_attr=s->cur_text_attr;
if (doc_e==doc->root.next) { if (doc_e==doc->root.next) {
doc->flags&=~DOCF_BWD_MOVEMENT; doc->flags&=~DOCF_BWD_MOVEMENT;
if (recalc==DOC_RECALC_TO_SCREEN && full_refresh) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN && full_refresh)
doc->flags&=~DOCF_HAS_SONG; doc->flags&=~DOCF_HAS_SONG;
} else } else
doc->flags=doc_e->de_flags& DOCEF_HIGHLIGHT | doc->flags=doc_e->de_flags& DOCEF_HIGHLIGHT |
@@ -480,8 +477,27 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
col2=0; col2=0;
temp_u32_attr=DocTempAttr(doc,doc_e,cur_u8_attr); temp_u32_attr=DocTempAttr(doc,doc_e,cur_u8_attr);
if (doc_e==doc->cur_entry) if (doc_e==doc->cur_entry) {
cursor_y=doc_e->y; cursor_y=doc_e->y;
if (recalc_flags&RECALCF_ADD_CURSOR && doc_e!=added_cursor) {
if (doc_e->type_u8==DOCT_TEXT && 0<doc->cur_col<k &&
!(doc_e->de_flags & ~(DOCEF_TAG|DOCG_BL_IV_UL|DOCEF_WORD_WRAP|
DOCEF_HIGHLIGHT|DOCEF_SKIP|DOCEF_FILTER_SKIP)) &&
!(doc_e->type&DOCG_BL_IV_UL)) {
added_cursor=DocSplitTag(doc,doc_e,doc->cur_col,x,y,DOCT_CURSOR);
k=StrLen(doc_e->tag);
} else {
added_cursor=doc_e2=DocEntryNewBase(doc,
DOCT_CURSOR|doc_e->type&0xFFFFFF00,
doc_e->de_flags&~DOCEG_HAS_ARG,x,y,doc->page_line_num);
MemCpy(&doc_e2->settings,&doc_e->settings,sizeof(CDocSettings));
if (doc_e->type_u8==DOCT_TEXT && doc->cur_col>=k)
QueIns(doc_e2,doc_e);
else
QueInsRev(doc_e2,doc_e);
}
}
}
if (doc_e->de_flags & DOCEF_REFRESH_DATA && if (doc_e->de_flags & DOCEF_REFRESH_DATA &&
(doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_CHECK_BOX || (doc_e->type_u8==DOCT_DATA || doc_e->type_u8==DOCT_CHECK_BOX ||
@@ -504,7 +520,9 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
if (*ptr=='<' && full_refresh && '0'<=ptr[1]<='9') { if (*ptr=='<' && full_refresh && '0'<=ptr[1]<='9') {
ptr=MStrPrint("<%d>",doc_e->bin_num); ptr=MStrPrint("<%d>",doc_e->bin_num);
Free(doc_e->tag); Free(doc_e->tag);
ptr=doc_e->tag=StrNew(ptr,mem_task); doc_e->tag=StrNew(ptr,mem_task);
Free(ptr);
ptr=doc_e->tag;
k=StrLen(ptr); k=StrLen(ptr);
} }
} else if (doc_e->type_u8==DOCT_CHECK_BOX) { } else if (doc_e->type_u8==DOCT_CHECK_BOX) {
@@ -530,7 +548,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
for (k=0;k<doc_e->scroll_len;k++) { for (k=0;k<doc_e->scroll_len;k++) {
ch=ptr[(ijif+k)%j]; ch=ptr[(ijif+k)%j];
if (!Bt(chars_bmp_displayable,ch)) ch='.'; if (!Bt(chars_bmp_displayable,ch)) ch='.';
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (doc_e->de_flags & DOCEF_BORDER_PLOT && if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
@@ -550,7 +568,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
if (doc_e->de_flags & DOCEF_BORDER_PLOT && if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) { !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
while (ch=*ptr++) { while (ch=*ptr++) {
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) !(doc_e->de_flags&DOCEF_DONT_DRAW))
TextChar(win_task,TRUE,x-x0,y-y0,temp_u32_attr+ch); TextChar(win_task,TRUE,x-x0,y-y0,temp_u32_attr+ch);
else else
@@ -569,7 +587,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
hl=DocHighlight(doc_e,ptr,k,temp_u32_attr); hl=DocHighlight(doc_e,ptr,k,temp_u32_attr);
else else
hl=NULL; hl=NULL;
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
//Technically we should do this for scrolling_x, too. //Technically we should do this for scrolling_x, too.
if (y>y_plot_bottom) if (y>y_plot_bottom)
@@ -610,7 +628,8 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
del_cl=TRUE; del_cl=TRUE;
break; break;
case DOCT_HEX_ED: case DOCT_HEX_ED:
if (doc_e->de_flags & DOCEF_DATA_IS_PTR) if (doc_e->de_flags&DOCEF_DEREF_DATA &&
!(doc_e->de_flags&DOCEF_REMALLOC_DATA))
bptr=doc_e->data; bptr=doc_e->data;
else else
bptr=&doc_e->data; bptr=&doc_e->data;
@@ -622,7 +641,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
StrPrint(buf,"%08tX ",bptr); StrPrint(buf,"%08tX ",bptr);
ptr=buf; ptr=buf;
while (ch=*ptr++) { while (ch=*ptr++) {
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (doc_e->de_flags & DOCEF_BORDER_PLOT && if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
@@ -644,7 +663,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
StrPrint(buf,"%02tX",*bptr++); StrPrint(buf,"%02tX",*bptr++);
ptr=buf; ptr=buf;
while (ch=*ptr++) { while (ch=*ptr++) {
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (doc_e->de_flags & DOCEF_BORDER_PLOT && if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
@@ -669,7 +688,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
for (j=0;j<k;j++) { for (j=0;j<k;j++) {
ch=*bptr++; ch=*bptr++;
if (!Bt(chars_bmp_displayable,ch)) ch='.'; if (!Bt(chars_bmp_displayable,ch)) ch='.';
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (doc_e->de_flags & DOCEF_BORDER_PLOT && if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
@@ -696,7 +715,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
if (doc_e->de_flags & DOCEF_BORDER_PLOT && if (doc_e->de_flags & DOCEF_BORDER_PLOT &&
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) { !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
while (x<k) { while (x<k) {
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) !(doc_e->de_flags&DOCEF_DONT_DRAW))
TextChar(win_task,TRUE,x-x0,y-y0,temp_u32_attr+CH_SPACE); TextChar(win_task,TRUE,x-x0,y-y0,temp_u32_attr+CH_SPACE);
if (find_cursor) { if (find_cursor) {
@@ -708,7 +727,7 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
} }
} else { } else {
k-=x; k-=x;
if (recalc==DOC_RECALC_TO_SCREEN && if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (y_plot_top<=y<=y_plot_bottom) if (y_plot_top<=y<=y_plot_bottom)
TextLenStr(win_task,x-x0,y-y0,k,temp_u32_attr," "); TextLenStr(win_task,x-x0,y-y0,k,temp_u32_attr," ");
@@ -728,13 +747,12 @@ public Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC)
break; break;
case DOCT_NEW_LINE: case DOCT_NEW_LINE:
case DOCT_SOFT_NEW_LINE: case DOCT_SOFT_NEW_LINE:
if (recalc==DOC_RECALC_TO_SCREEN &&!(doc_e->de_flags&DOCEF_DONT_DRAW)&& if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)&&
y_plot_top<=y<=y_plot_bottom) y_plot_top<=y<=y_plot_bottom)
TextLenAttr(win_task,x-x0,y-y0,width-(x-x0),cur_u8_attr<<8); TextLenAttr(win_task,x-x0,y-y0,width-(x-x0),cur_u8_attr<<8);
if (doc_e->de_flags&DOCEF_HIGHLIGHT) { if (doc_e->de_flags&DOCEF_HIGHLIGHT && s->state==DOCSS_CPP_Z_COMMENT)
if (s->state==DOCSS_CPP_Z_COMMENT)
s->state=DOCSS_NORMAL; s->state=DOCSS_NORMAL;
}
y++; y++;
doc->page_line_num++; doc->page_line_num++;
rc_start_of_line: rc_start_of_line:
@@ -919,6 +937,7 @@ rc_adjust_xy:
doc->cur_entry=doc_e->next; doc->cur_entry=doc_e->next;
doc->cur_col=doc->cur_entry->min_col; doc->cur_col=doc->cur_entry->min_col;
} }
if (doc_e!=added_cursor)
del_cl=TRUE; del_cl=TRUE;
break; break;
case DOCT_SPRITE: case DOCT_SPRITE:
@@ -930,7 +949,8 @@ rc_adjust_xy:
if (tempb && dc) { if (tempb && dc) {
DCRst(dc); DCRst(dc);
dc->flags&=~(DCF_DONT_DRAW|DCF_LOCATE_NEAREST); dc->flags&=~(DCF_DONT_DRAW|DCF_LOCATE_NEAREST);
if (recalc!=DOC_RECALC_TO_SCREEN || doc_e->de_flags&DOCEF_DONT_DRAW) if (recalc_flags&RECALCG_MASK!=RECALCt_TO_SCREEN ||
doc_e->de_flags&DOCEF_DONT_DRAW)
dc->flags|=DCF_DONT_DRAW; dc->flags|=DCF_DONT_DRAW;
bptr=tempb->data; bptr=tempb->data;
ii=SpriteTypeMask(bptr); ii=SpriteTypeMask(bptr);
@@ -953,7 +973,8 @@ rc_adjust_xy:
dc->color=i; dc->color=i;
if (find_cursor) if (find_cursor)
dc->flags|=DCF_LOCATE_NEAREST; dc->flags|=DCF_LOCATE_NEAREST;
if (recalc==DOC_RECALC_TO_SCREEN && doc->cur_sprite==bptr) { if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
doc->cur_sprite==bptr) {
dc->flags|=DCF_LOCATE_NEAREST; dc->flags|=DCF_LOCATE_NEAREST;
dc->cur_x=ip.pos.x; dc->cur_x=ip.pos.x;
dc->cur_y=ip.pos.y; dc->cur_y=ip.pos.y;
@@ -990,7 +1011,8 @@ rc_adjust_xy:
} }
Sprite3(dc,xx,yy,zz,bptr); Sprite3(dc,xx,yy,zz,bptr);
dc->depth_buf=NULL; dc->depth_buf=NULL;
if (recalc==DOC_RECALC_TO_SCREEN && doc->cur_sprite==bptr) if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
doc->cur_sprite==bptr)
doc->nearest_sprite_elem_num=dc->nearest_sprite_elem_num; doc->nearest_sprite_elem_num=dc->nearest_sprite_elem_num;
dc->flags&=~(DCF_LOCATE_NEAREST|DCF_DONT_DRAW|DCF_TRANSFORMATION); dc->flags&=~(DCF_LOCATE_NEAREST|DCF_DONT_DRAW|DCF_TRANSFORMATION);
if (dc->nearest_dist<=D) { if (dc->nearest_dist<=D) {
@@ -1000,7 +1022,8 @@ rc_adjust_xy:
} }
break; break;
case DOCT_SONG: case DOCT_SONG:
if (sys_focus_task==win_task && recalc==DOC_RECALC_TO_SCREEN && if (sys_focus_task==win_task &&
recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
!(doc_e->de_flags&DOCEF_DONT_DRAW)) { !(doc_e->de_flags&DOCEF_DONT_DRAW)) {
if (doc_e->aux_str && if (doc_e->aux_str &&
(!music.cur_song || StrCmp(music.cur_song,doc_e->aux_str))) { (!music.cur_song || StrCmp(music.cur_song,doc_e->aux_str))) {
@@ -1014,6 +1037,11 @@ rc_adjust_xy:
case DOCT_CLEAR: case DOCT_CLEAR:
next_clear_found=doc_e; next_clear_found=doc_e;
break; break;
case DOCT_HTML_CODE:
if (recalc_flags&RECALCF_TO_HTML &&
doc_e->de_flags&DOCEF_TAG && doc_e->tag)
x-=StrLen(doc_e->tag);
break;
case DOCT_NUM_TYPES-1: //nobound_switch case DOCT_NUM_TYPES-1: //nobound_switch
default: default:
break; break;
@@ -1119,6 +1147,12 @@ rc_skip:
} }
if (full_refresh) { if (full_refresh) {
if (doc->cur_entry==doc && recalc_flags&RECALCF_ADD_CURSOR) {
doc_e2=DocEntryNewBase(doc,DOCT_CURSOR,,x,y,doc->page_line_num);
MemCpy(&doc_e2->settings,s,sizeof(CDocSettings));
QueInsRev(doc_e2,doc);
}
if (doc->min_x>doc->max_x) { if (doc->min_x>doc->max_x) {
doc->max_x=0; doc->max_x=0;
doc->min_x=0; doc->min_x=0;
@@ -1200,8 +1234,8 @@ rc_skip:
doc->line=doc->y+1; doc->line=doc->y+1;
doc->col=doc->x+1; doc->col=doc->x+1;
if (has_cursor) { if (recalc_flags&RECALCF_HAS_CURSOR) {
if (recalc==DOC_RECALC_TO_SCREEN) { if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN) {
x=0; x=0;
y=0; y=0;
} else { } else {
@@ -1229,7 +1263,8 @@ rc_skip:
doc->line_start_col=doc->x+x; doc->line_start_col=doc->x+x;
} }
} }
if (recalc==DOC_RECALC_TO_SCREEN && has_cursor) { if (recalc_flags&RECALCG_MASK==RECALCt_TO_SCREEN &&
recalc_flags&RECALCF_HAS_CURSOR) {
x=doc->x-doc->line_start_col+left +scroll_x/FONT_WIDTH; x=doc->x-doc->line_start_col+left +scroll_x/FONT_WIDTH;
y=doc->y-doc->top_line_num+top+scroll_y/FONT_HEIGHT; y=doc->y-doc->top_line_num+top+scroll_y/FONT_HEIGHT;
if (0<=x<=right && 0<=y<=bottom && if (0<=x<=right && 0<=y<=bottom &&
@@ -1275,10 +1310,10 @@ rc_skip:
i=num_entries-doc->max_entries; i=num_entries-doc->max_entries;
if (next_clear_found) { if (next_clear_found) {
DocDelToEntry(doc,next_clear_found); DocDelToEntry(doc,next_clear_found);
DocRecalc(doc,has_cursor,recalc); DocRecalc(doc,recalc_flags);
} else if (i>1024) { } else if (i>1024) {
DocDelToNum(doc,i); DocDelToNum(doc,i);
DocRecalc(doc,has_cursor,recalc); DocRecalc(doc,recalc_flags);
} }
} }
DCDel(dc); DCDel(dc);
+12 -5
View File
@@ -89,7 +89,7 @@ public U0 DocTop(CDoc *doc=NULL)
DocUnlock(doc); DocUnlock(doc);
} }
public U0 DocCenter(CDoc *doc=NULL,I64 recalc=DOC_RECALC) public U0 DocCenter(CDoc *doc=NULL,I64 recalc_flags=RECALCt_NORMAL)
{//Center win on doc cursor, cur_entry. {//Center win on doc cursor, cur_entry.
Bool unlock; Bool unlock;
CTask *task; CTask *task;
@@ -97,7 +97,7 @@ public U0 DocCenter(CDoc *doc=NULL,I64 recalc=DOC_RECALC)
return; return;
unlock=DocLock(doc); unlock=DocLock(doc);
task=doc->win_task; task=doc->win_task;
DocRecalc(doc,FALSE,recalc); DocRecalc(doc,recalc_flags);
if (!(doc->flags&DOCF_BORDER_DOC)) if (!(doc->flags&DOCF_BORDER_DOC))
doc->top_line_num=doc->y-(task->win_height+1)>>1; doc->top_line_num=doc->y-(task->win_height+1)>>1;
if (unlock) if (unlock)
@@ -137,6 +137,13 @@ public Bool DocCursor(Bool show=OFF,CDoc *doc=NULL)
return !LBEqu(&doc->flags,DOCf_HIDE_CURSOR,!show); return !LBEqu(&doc->flags,DOCf_HIDE_CURSOR,!show);
} }
public Bool DocHighlightCursor(Bool show=OFF,CDoc *doc=NULL)
{//Highlight or Don't highlight cursor.
if (!doc && !(doc=DocPut))
return FALSE;
return !LBEqu(&doc->flags,DOCf_DONT_HIGHLIGHT_CURSOR,!show);
}
public Bool DocScroll(Bool val=OFF,CDoc *doc=NULL) public Bool DocScroll(Bool val=OFF,CDoc *doc=NULL)
{//Turn scroll bars OFF/ON. {//Turn scroll bars OFF/ON.
if (!doc && !(doc=DocPut)) if (!doc && !(doc=DocPut))
@@ -192,12 +199,12 @@ U0 DocUpdateTaskDocs(CTask *task)
if (task->border_src==BDS_ED_FILENAME_DRV) if (task->border_src==BDS_ED_FILENAME_DRV)
task->border_attr=DrvTextAttrGet(*doc->filename.name); task->border_attr=DrvTextAttrGet(*doc->filename.name);
if (task->title_src==TTS_ED_FILENAME) if (task->title_src==TTS_ED_FILENAME)
MemCpy(task->task_title,doc->filename.name,TASK_TITLE_LEN); MemCpy(task->task_title,doc->filename.name,STR_LEN-1);
DocRecalc(doc,TRUE,DOC_RECALC_TO_SCREEN); DocRecalc(doc,RECALCt_TO_SCREEN|RECALCF_HAS_CURSOR);
} }
if ((doc=DocBorder(task)) && !(doc->flags&DOCF_DONT_SHOW)) { if ((doc=DocBorder(task)) && !(doc->flags&DOCF_DONT_SHOW)) {
WinScrollNull(task,&saved_scroll); WinScrollNull(task,&saved_scroll);
DocRecalc(doc,FALSE,DOC_RECALC_TO_SCREEN); DocRecalc(doc,RECALCt_TO_SCREEN);
WinScrollRestore(task,&saved_scroll); WinScrollRestore(task,&saved_scroll);
} }
} }
+2 -1
View File
@@ -26,7 +26,8 @@ public CDoc *DocBorderNew(CDoc *pdoc)
doc_e->tag_cb=&EdDollarTypeCB; doc_e->tag_cb=&EdDollarTypeCB;
} }
DocPrint(bdoc,"$$CM+H+TY+NC,0,-1$$"); DocPrint(bdoc,"$$CM+H+TY+NC,0,-1$$");
doc_e=DocPrint(bdoc,"$$DA+H-TRM-P+BD+RD+CX+IV,140,A=\"%%s...\",SCX=15$$"); doc_e=DocPrint(bdoc,"$$DA+H-TRM-P+BD+RD+CX+IV,LEN=STR_LEN-1,"
"A=\"%%s...\",SCX=15$$");
doc_e->data=&Fs->task_title; doc_e->data=&Fs->task_title;
DocDataFmt(bdoc,doc_e); DocDataFmt(bdoc,doc_e);
DocPrint(bdoc,"$$CM+H+NC,1,0$$$$TX+H+BD+IV,\"%X\"$$",Fs); DocPrint(bdoc,"$$CM+H+NC,1,0$$$$TX+H+BD+IV,\"%X\"$$",Fs);
+140 -117
View File
@@ -31,12 +31,12 @@ I64 PopUpLinkType(Bool include_anchor)
class CEdFileLink class CEdFileLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n";
I64 book; I64 book;
U8 aux[512]; U8 aux[512];
I64 num; I64 num;
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -44,12 +44,12 @@ class CEdFileLink
class CEdFileAnchorLink class CEdFileAnchorLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n";
I64 book; I64 book;
U8 aux[512] fmtstr "$$DA-P,511,A=\"Anchor Label :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Anchor Label :%s\"$$\n";
I64 num; I64 num;
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -57,12 +57,12 @@ class CEdFileAnchorLink
class CEdFileFindLink class CEdFileFindLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n";
I64 book; I64 book;
U8 aux[512] fmtstr "$$DA-P,511,A=\"Str :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Str :%s\"$$\n";
I64 num fmtstr "$$DA-TRM,511,A=\"Occurrence Num:%04d\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Occurrence Num:%04d\"$$\n";
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -70,12 +70,12 @@ class CEdFileFindLink
class CEdFileLineLink class CEdFileLineLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n";
I64 book; I64 book;
U8 aux[512]; U8 aux[512];
I64 num fmtstr "$$DA-TRM,511,A=\"Line Num :%04d\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Line Num :%04d\"$$\n";
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -83,12 +83,12 @@ class CEdFileLineLink
class CEdManPageLink class CEdManPageLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512]; file[512];
I64 book; I64 book;
U8 aux[512] fmtstr "$$DA-P,511,A=\"Label :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Label :%s\"$$\n";
I64 num; I64 num;
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -96,12 +96,12 @@ class CEdManPageLink
class CEdAddrLink class CEdAddrLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512]; file[512];
I64 book; I64 book;
U8 aux[512] fmtstr "$$DA-P,511,A=\"Addr Exp :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Addr Exp :%s\"$$\n";
I64 num fmtstr "$$DA-TRM,511,A=\"Bin Size :%04d\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Bin Size :%04d\"$$\n";
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -109,12 +109,12 @@ class CEdAddrLink
class CEdPlaceAnchor class CEdPlaceAnchor
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512]; file[512];
I64 book; I64 book;
U8 aux[512] fmtstr "$$DA-P,511,A=\"Anchor Label :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Anchor Label :%s\"$$\n";
I64 num; I64 num;
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up, Bool pop_up,
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide fmtstr "$$CB,\"Hide\"$$\n"; hide fmtstr "$$CB,\"Hide\"$$\n";
@@ -122,13 +122,13 @@ class CEdPlaceAnchor
class CEdBibleLink class CEdBibleLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512]; file[512];
I64 book fmtstr "$$LS,D=\"ST_BIBLE_BOOKS\"$$\n"; I64 book fmtstr "$$LS,D=\"ST_BIBLE_BOOKS\"$$\n";
U8 aux[512] fmtstr "$$DA-P,511,A=\"Chapter Verse :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Chapter Verse :%s\"$$\n";
I64 num; I64 num;
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -136,12 +136,12 @@ class CEdBibleLink
class CEdDefLink class CEdDefLink
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512]; file[512];
I64 book; I64 book;
U8 aux[512] fmtstr "$$DA-P,511,A=\"Word :%s\"$$\n"; U8 aux[512] fmtstr "$$DA-P,LEN=511,A=\"Word :%s\"$$\n";
I64 num fmtstr "$$DA-TRM,511,A=\"Def Num :%4d\"$$\n"; I64 num fmtstr "$$DA-TRM,A=\"Def Num :%4d\"$$\n";
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -149,12 +149,12 @@ class CEdDefLink
class CEdProject class CEdProject
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
file[512] fmtstr "$$DA-P,511,A=\"File :%s\"$$\n"; file[512] fmtstr "$$DA-P,LEN=511,A=\"File :%s\"$$\n";
I64 book; I64 book;
U8 aux[512]; U8 aux[512];
I64 num; I64 num;
U8 html_link[512] fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; U8 html_link[512] fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n", Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n",
quote fmtstr "$$CB,\"Quote\"$$\n", quote fmtstr "$$CB,\"Quote\"$$\n",
hide; hide;
@@ -433,13 +433,13 @@ U0 EdInsColor()
class CEdPageSetting1 class CEdPageSetting1
{ {
U8 val[512] fmtstr "$$DA-P,511,A=\"Setting Val:%s\"$$\n"; U8 val[512] fmtstr "$$DA-P,LEN=511,A=\"Setting Val:%s\"$$\n";
Bool winrel; Bool winrel;
}; };
class CEdPageSetting2 class CEdPageSetting2
{ {
U8 val[512] fmtstr "$$DA-P,511,A=\"Setting Val:%s\"$$\n"; U8 val[512] fmtstr "$$DA-P,LEN=511,A=\"Setting Val:%s\"$$\n";
Bool winrel fmtstr "$$CB,\"Win Relative\"$$\n"; Bool winrel fmtstr "$$CB,\"Win Relative\"$$\n";
}; };
@@ -474,6 +474,9 @@ U0 EdInsPageSetting()
Free(e); Free(e);
} }
#define WIZ_HIGHLIGHT_ON (DOCT_ERROR+1)
#define WIZ_HIGHLIGHT_OFF (DOCT_ERROR+2)
I64 PopUpWidgetType() I64 PopUpWidgetType()
{ {
I64 i; I64 i;
@@ -492,7 +495,8 @@ I64 PopUpWidgetType()
"$$MU,\"Menu Val\",LE=DOCT_MENU_VAL$$\n" "$$MU,\"Menu Val\",LE=DOCT_MENU_VAL$$\n"
"$$MU,\"Data\",LE=DOCT_DATA$$\n" "$$MU,\"Data\",LE=DOCT_DATA$$\n"
"$$MU,\"Hex Edit\",LE=DOCT_HEX_ED$$\n" "$$MU,\"Hex Edit\",LE=DOCT_HEX_ED$$\n"
"$$MU,\"Syntax Highlighting\",LE=DOCT_HIGHLIGHT$$\n" "$$MU,\"Syntax Highlight ON\",LE=WIZ_HIGHLIGHT_ON$$\n"
"$$MU,\"Syntax Highlight OFF\",LE=WIZ_HIGHLIGHT_OFF$$\n"
"$$MU,\"HTML\",LE=DOCT_HTML_CODE$$\n" "$$MU,\"HTML\",LE=DOCT_HTML_CODE$$\n"
"$$MU,\"Song\",LE=DOCT_SONG$$\n" "$$MU,\"Song\",LE=DOCT_SONG$$\n"
"%s",ctrl_L_footer); "%s",ctrl_L_footer);
@@ -503,7 +507,7 @@ I64 PopUpWidgetType()
class CEdText class CEdText
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n";
Bool left_x fmtstr "$$CB,\"Left X\"$$\n", Bool left_x fmtstr "$$CB,\"Left X\"$$\n",
center_x fmtstr "$$CB,\"Center X\"$$\n", center_x fmtstr "$$CB,\"Center X\"$$\n",
right_x fmtstr "$$CB,\"Right X\"$$\n", right_x fmtstr "$$CB,\"Right X\"$$\n",
@@ -514,15 +518,15 @@ class CEdText
tree fmtstr "$$CB,\"Tree\"$$\n", tree fmtstr "$$CB,\"Tree\"$$\n",
collapsed fmtstr "$$CB,\"Collapsed\"$$\n"; collapsed fmtstr "$$CB,\"Collapsed\"$$\n";
U8 scroll_x [512] U8 scroll_x [512]
fmtstr "$$DA-P,511,A=\"Scroll X Length Expression:%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"Scroll X Length Expression:%s\"$$\n",
shift_x [512] shift_x [512]
fmtstr "$$DA-P,511,A=\"X Offset Expression :%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"X Offset Expression :%s\"$$\n",
shift_y [512] shift_y [512]
fmtstr "$$DA-P,511,A=\"Y Offset Expression :%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"Y Offset Expression :%s\"$$\n",
define_str[512] define_str[512]
fmtstr "$$DA-P,511,A=\"Define Str :%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"Define Str :%s\"$$\n",
html_link[512] html_link[512]
fmtstr "$$DA-P,511,A=\"Html Link :%s\"$$\n"; fmtstr "$$DA-P,LEN=511,A=\"Html Link :%s\"$$\n";
}; };
U0 EdInsText() U0 EdInsText()
@@ -566,8 +570,8 @@ U0 EdInsText()
class CEdSong class CEdSong
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
song[512] fmtstr "$$DA-P,511,A=\"Song :%s\"$$\n"; song[512] fmtstr "$$DA-P,LEN=511,A=\"Song :%s\"$$\n";
}; };
U0 EdInsSong() U0 EdInsSong()
@@ -578,22 +582,9 @@ U0 EdInsSong()
Free(e); Free(e);
} }
class CEdHighlight
{
Bool highlight_on fmtstr "$$CB,\"Highlight On\"$$\n";
};
U0 EdInsHighlight()
{
CEdHighlight *e=CAlloc(sizeof(CEdHighlight));
if (DocForm(e,,,,ctrl_L_footer))
"$$HL,%d$$",e->highlight_on;
Free(e);
}
class CEdHtmlCode class CEdHtmlCode
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Html Code:%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Html Code:%s\"$$\n";
}; };
U0 EdInsHtml() U0 EdInsHtml()
@@ -607,11 +598,11 @@ U0 EdInsHtml()
class CEdMacroMenu class CEdMacroMenu
{ {
U8 tag[512] U8 tag[512]
fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
left_macro[512] left_macro[512]
fmtstr "$$DA-P,511,A=\"Left Click Macro :%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"Left Click Macro :%s\"$$\n",
left_exp[512] left_exp[512]
fmtstr "$$DA-P,511,A=\"Left Click Expression :%s\"$$\n"; fmtstr "$$DA-P,LEN=511,A=\"Left Click Expression :%s\"$$\n";
Bool popup fmtstr "$$CB,\"PopUp\"$$\n", Bool popup fmtstr "$$CB,\"PopUp\"$$\n",
left_is_auto fmtstr "$$CB,\"Left is AutoStr\"$$\n", left_is_auto fmtstr "$$CB,\"Left is AutoStr\"$$\n",
left_x fmtstr "$$CB,\"Left X \"$$\n", left_x fmtstr "$$CB,\"Left X \"$$\n",
@@ -623,11 +614,11 @@ class CEdMacroMenu
underline fmtstr "$$CB,\"Underline\"$$\n", underline fmtstr "$$CB,\"Underline\"$$\n",
escape fmtstr "$$CB,\"Escape\"$$\n"; escape fmtstr "$$CB,\"Escape\"$$\n";
U8 scroll_x[512] U8 scroll_x[512]
fmtstr "$$DA-P,511,A=\"Scroll X Length Expression:%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"Scroll X Length Expression:%s\"$$\n",
shift_x[512] shift_x[512]
fmtstr "$$DA-P,511,A=\"X Offset Expression :%s\"$$\n", fmtstr "$$DA-P,LEN=511,A=\"X Offset Expression :%s\"$$\n",
shift_y[512] shift_y[512]
fmtstr "$$DA-P,511,A=\"Y Offset Expression :%s\"$$\n"; fmtstr "$$DA-P,LEN=511,A=\"Y Offset Expression :%s\"$$\n";
}; };
U0 EdInsMacroMenu(Bool is_macro) U0 EdInsMacroMenu(Bool is_macro)
@@ -682,16 +673,17 @@ U0 EdInsMacroMenu(Bool is_macro)
class CEdButton class CEdButton
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n";
Bool popup fmtstr "$$CB,\"PopUp\"$$\n", Bool popup fmtstr "$$CB,\"PopUp\"$$\n",
left_x fmtstr "$$CB,\"Left X \"$$\n", left_x fmtstr "$$CB,\"Left X \"$$\n",
center_x fmtstr "$$CB,\"Center X \"$$\n", center_x fmtstr "$$CB,\"Center X \"$$\n",
right_x fmtstr "$$CB,\"Right X \"$$\n", right_x fmtstr "$$CB,\"Right X \"$$\n",
margin_rel fmtstr "$$CB,\"Margin Rel X\"$$\n", margin_rel fmtstr "$$CB,\"Margin Rel X\"$$\n",
escape fmtstr "$$CB,\"Escape\"$$\n"; escape fmtstr "$$CB,\"Escape\"$$\n";
U8 left_macro[512] fmtstr "$$DA-P,511,A=\"Left Click Macro:%s\"$$\n"; U8 left_macro[512] fmtstr "$$DA-P,LEN=511,A=\"Left Click Macro:%s\"$$\n";
Bool left_is_auto fmtstr "$$CB,\"Left is AutoStr\"$$\n"; Bool left_is_auto fmtstr "$$CB,\"Left is AutoStr\"$$\n";
U8 left_exp[512] fmtstr "$$DA-P,511,A=\"Left Click Expression:%s\"$$\n"; U8 left_exp[512] fmtstr "$$DA-P,LEN=511,"
"A=\"Left Click Expression:%s\"$$\n";
Bool quote fmtstr "$$CB,\"Quote\"$$\n"; Bool quote fmtstr "$$CB,\"Quote\"$$\n";
}; };
@@ -742,8 +734,8 @@ U0 EdInsButton()
class CEdCursorMovement class CEdCursorMovement
{ {
U8 left_exp[512] fmtstr "$$DA-P,511,A=\"X Expression (LE):%s\"$$\n", U8 left_exp[512] fmtstr "$$DA-P,LEN=511,A=\"X Expression (LE):%s\"$$\n",
right_exp[512] fmtstr "$$DA-P,511,A=\"Y Expression (RE):%s\"$$\n"; right_exp[512] fmtstr "$$DA-P,LEN=511,A=\"Y Expression (RE):%s\"$$\n";
Bool left_x fmtstr "$$CB,\"Left X \"$$\n", Bool left_x fmtstr "$$CB,\"Left X \"$$\n",
center_x fmtstr "$$CB,\"Center X \"$$\n", center_x fmtstr "$$CB,\"Center X \"$$\n",
right_x fmtstr "$$CB,\"Right X \"$$\n", right_x fmtstr "$$CB,\"Right X \"$$\n",
@@ -785,56 +777,87 @@ U0 EdInsCursorMovement()
Free(e); Free(e);
} }
class CEdData class CEdDataNum
{ {
U8 fmt_str[512] fmtstr "$$DA-P,511,A=\"Format Str:%s\"$$\n"; U8 fmt_str[512] fmtstr "$$DA-P,LEN=511,A=\"Format Str:%s\"$$\n";
I64 len fmtstr "$$DA,512,A=\"Length:%d\"$$\n"; I64 len;
Bool term fmtstr "$$CB,\"Terminator\"$$\n", Bool term fmtstr "$$CB,\"Form Field Terminator\"$$\n",
str fmtstr "$$CB,\"Str\"$$\n", remalloc,
refresh fmtstr "$$CB,\"Refresh Data\"$$\n",
update fmtstr "$$CB,\"Update Data\"$$\n";
};
class CEdDataStr
{
U8 fmt_str[512] fmtstr "$$DA-P,LEN=511,A=\"Format Str:%s\"$$\n";
I64 len fmtstr "$$DA,A=\"Length:%d\"$$\n";
Bool term fmtstr "$$CB,\"Zero Terminator\"$$\n",
remalloc fmtstr "$$CB,\"Remalloc for Unlimited Length\"$$\n",
refresh fmtstr "$$CB,\"Refresh Data\"$$\n", refresh fmtstr "$$CB,\"Refresh Data\"$$\n",
update fmtstr "$$CB,\"Update Data\"$$\n"; update fmtstr "$$CB,\"Update Data\"$$\n";
I64 type fmtstr "$$LS,D=\"ST_RAW_TYPES\"$$\n";
}; };
U0 EdInsData() U0 EdInsData()
{ {
I64 i,type=RT_I64;
U8 *st,buf[512],raw_type[16]; U8 *st,buf[512],raw_type[16];
CEdData *e=CAlloc(sizeof(CEdData)); CEdDataNum *e=CAlloc(sizeof(CEdDataNum));
e->term=TRUE; e->term=TRUE;
e->len=512; e->len=DOCE_LEN_DFT;
e->type=RT_I64; if ((i=PopUpPickDefineSub("ST_NATURAL_TYPES"))>=0) {
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0; *buf=0;
if (e->type==RT_I64) i+=RT_I8;
if (i==RT_F32)
i=RT_F64;
if (i==RT_UF32) {//U8 *
i=DocForm(e(CEdDataStr *),,,,ctrl_L_footer);
if (e->remalloc) {
CatPrint(buf,"+M");
e->term=TRUE;
} else
CatPrint(buf,"-P");
} else {
type=i;
i=DocForm(e,,,,ctrl_L_footer);
}
if (i) {
if (type==RT_I64)
*raw_type=0; *raw_type=0;
else else
StrPrint(raw_type,",RT=%Z",e->type,"ST_RAW_TYPES"); StrPrint(raw_type,",RT=%Z",type,"ST_RAW_TYPES");
if (e->str) CatPrint(buf,"-P");
if (!e->term) CatPrint(buf,"-TRM"); if (!e->term) CatPrint(buf,"-TRM");
if (e->refresh) CatPrint(buf,"+RD"); if (e->refresh) CatPrint(buf,"+RD");
if (e->update) CatPrint(buf,"+UD"); if (e->update) CatPrint(buf,"+UD");
st=MStrPrint("%q",e->fmt_str); st=MStrPrint("%q",e->fmt_str);
"$$$$DA%s,%d%s,A=\\\"%Q\\\"$$$$",buf,e->len,raw_type,st; if (e->remalloc)
"$$$$DA%s,A=\\\"%Q\\\"$$$$",buf,st;
else if (e->len==DOCE_LEN_DFT)
"$$$$DA%s%s,A=\\\"%Q\\\"$$$$",buf,raw_type,st;
else
"$$$$DA%s,LEN=%d%s,A=\\\"%Q\\\"$$$$",buf,e->len,raw_type,st;
Free(st); Free(st);
} }
}
Free(e); Free(e);
} }
class CEdCheckBox class CEdCheckBox
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n";
Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n"; Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n";
I64 type fmtstr "$$LS,D=\"ST_RAW_TYPES\"$$\n"; I64 type fmtstr "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n";
}; };
U0 EdInsCheckBox() U0 EdInsCheckBox()
{ {
U8 *st,buf[512],raw_type[16]; U8 *st,buf[512],raw_type[16];
CEdCheckBox *e=CAlloc(sizeof(CEdCheckBox)); CEdCheckBox *e=CAlloc(sizeof(CEdCheckBox));
e->type=RT_I8; e->type=RT_I8-RT_I8;
if (DocForm(e,,,,ctrl_L_footer)) { if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0; *buf=0;
e->type+=RT_I8;
if (e->type==RT_I8) if (e->type==RT_I8)
*raw_type=0; *raw_type=0;
else else
@@ -849,19 +872,20 @@ U0 EdInsCheckBox()
class CEdLst class CEdLst
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Dft Select :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Dft Select :%s\"$$\n",
define_str[512] fmtstr "$$DA-P,511,A=\"Define Str :%s\"$$\n"; define_str[512] fmtstr "$$DA-P,LEN=511,A=\"Define Str :%s\"$$\n";
Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n"; Bool refresh fmtstr "$$CB,\"Refresh Data\"$$\n";
I64 type fmtstr "$$LS,D=\"ST_RAW_TYPES\"$$\n"; I64 type fmtstr "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n";
}; };
U0 EdInsLst() U0 EdInsLst()
{ {
U8 *st1,*st2,buf[512],raw_type[16]; U8 *st1,*st2,buf[512],raw_type[16];
CEdLst *e=CAlloc(sizeof(CEdLst)); CEdLst *e=CAlloc(sizeof(CEdLst));
e->type=RT_I64; e->type=RT_I64-RT_I8;
if (DocForm(e,,,,ctrl_L_footer)) { if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0; *buf=0;
e->type+=RT_I8;
if (e->type==RT_I64) if (e->type==RT_I64)
*raw_type=0; *raw_type=0;
else else
@@ -884,8 +908,8 @@ U0 EdInsLst()
class CEdHexEd class CEdHexEd
{ {
I64 cnt fmtstr "$$DA,512,A=\"Count:%d\"$$\n", I64 cnt fmtstr "$$DA,A=\"Count:%d\"$$\n",
cols fmtstr "$$DA,512,A=\"Columns:%d\"$$\n"; cols fmtstr "$$DA,A=\"Columns:%d\"$$\n";
Bool zero fmtstr "$$CB,\"Zero Based\"$$\n", Bool zero fmtstr "$$CB,\"Zero Based\"$$\n",
refresh fmtstr "$$CB,\"Refresh Data\"$$\n"; refresh fmtstr "$$CB,\"Refresh Data\"$$\n";
}; };
@@ -908,11 +932,12 @@ U0 EdInsHexEd()
class CEdBin class CEdBin
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,LEN=511,"
I64 bin_num fmtstr "$$DA,512,A=\"Bin Num:%d\"$$\n"; "A=\"Tag Text :%s\"$$\n";
U8 bin_ptr_link_file[512] fmtstr "$$DA-P,511,A=\"File:%s\"$$\n"; I64 bin_num fmtstr "$$DA,A=\"Bin Num:%d\"$$\n";
I64 bin_ptr_link_bin_num fmtstr "$$DA,512,A=\"File Bin Num:%d\"$$\n"; U8 bin_ptr_link_file[512] fmtstr "$$DA-P,LEN=511,A=\"File:%s\"$$\n";
U8 bin_ptr_link_tag[512] fmtstr "$$DA-P,511,A=\"File Bin Tag:%s\"$$\n"; I64 bin_ptr_link_bin_num fmtstr "$$DA,A=\"File Bin Num:%d\"$$\n";
U8 bin_ptr_link_tag[512] fmtstr "$$DA-P,LEN=511,A=\"File Bin Tag:%s\"$$\n";
}; };
U0 EdInsBin(I64 bin_num,I64 type) U0 EdInsBin(I64 bin_num,I64 type)
@@ -945,8 +970,8 @@ U0 EdInsBin(I64 bin_num,I64 type)
class CEdTree class CEdTree
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n"; U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n";
I64 indent fmtstr "$$DA,511,A=\"Indention:%d\"$$\n"; I64 indent fmtstr "$$DA,A=\"Indention:%d\"$$\n";
Bool collapsed fmtstr "$$CB,\"Collapsed\"$$\n"; Bool collapsed fmtstr "$$CB,\"Collapsed\"$$\n";
}; };
@@ -1015,8 +1040,11 @@ U0 EdInsWidgetWiz()
case DOCT_SONG: case DOCT_SONG:
EdInsSong; EdInsSong;
break; break;
case DOCT_HIGHLIGHT: case WIZ_HIGHLIGHT_ON:
EdInsHighlight; "$$HL,1$$";
break;
case WIZ_HIGHLIGHT_OFF:
"$$HL,0$$";
break; break;
case DOCT_HTML_CODE: case DOCT_HTML_CODE:
EdInsHtml; EdInsHtml;
@@ -1057,15 +1085,10 @@ I64 PopUpSpriteType()
return i; return i;
} }
class CEdJustSprite
{
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n";
};
class CEdMacroSprite class CEdMacroSprite
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
exp[512] fmtstr "$$DA-P,511,A=\"Macro :%s\"$$\n"; exp[512] fmtstr "$$DA-P,LEN=511,A=\"Macro :%s\"$$\n";
Bool escape fmtstr "$$CB,\"Escape\"$$\n", Bool escape fmtstr "$$CB,\"Escape\"$$\n",
popup fmtstr "$$CB,\"PopUp\"$$\n", popup fmtstr "$$CB,\"PopUp\"$$\n",
is_auto fmtstr "$$CB,\"AutoStr\"$$\n"; is_auto fmtstr "$$CB,\"AutoStr\"$$\n";
@@ -1073,9 +1096,11 @@ class CEdMacroSprite
class CEdMenuSprite class CEdMenuSprite
{ {
U8 tag[512] fmtstr "$$DA-P,511,A=\"Tag Text :%s\"$$\n", U8 tag[512] fmtstr "$$DA-P,LEN=511,A=\"Tag Text :%s\"$$\n",
exp[512] fmtstr "$$DA-P,511,A=\"Expression :%s\"$$\n"; exp[512] fmtstr "$$DA-P,LEN=511,A=\"Expression :%s\"$$\n";
Bool escape fmtstr "$$CB,\"Escape\"$$\n"; Bool escape fmtstr "$$CB,\"Escape\"$$\n",
popup,
is_auto;
}; };
U8 *EdSpriteLink(Bool *_pop_up,U8 **_html_link) U8 *EdSpriteLink(Bool *_pop_up,U8 **_html_link)
@@ -1100,9 +1125,7 @@ U8 *EdSprite(I64 bin_num)
*buf=0; *buf=0;
switch (type) { switch (type) {
case EST_SPRITE: case EST_SPRITE:
StrPrint(e->tag,"<%d>",bin_num); st1=MStrPrint("\"<%d>\"",bin_num);
if (DocForm(e,"CEdJustSprite",,,ctrl_L_footer))
st1=MStrPrint("\"%Q\"",e->tag);
break; break;
case EST_SPRITE_MACRO: case EST_SPRITE_MACRO:
e->escape=TRUE; e->escape=TRUE;
+1 -1
View File
@@ -7,7 +7,7 @@ class MakeSongSettings
I64 complexity fmtstr "$$LS,D=\"ST_RHYTHM_COMPLEXITY\"$$\n"; I64 complexity fmtstr "$$LS,D=\"ST_RHYTHM_COMPLEXITY\"$$\n";
Bool rests fmtstr "$$CB,\"Rests\"$$\n"; Bool rests fmtstr "$$CB,\"Rests\"$$\n";
Bool six_eight fmtstr "$$CB,\"Six Eight\"$$\n"; Bool six_eight fmtstr "$$CB,\"Six Eight\"$$\n";
I64 octave fmtstr "$$DA-TRM,32,A=\"Octave:%d\"$$\n"; I64 octave fmtstr "$$DA-TRM,A=\"Octave:%d\"$$\n";
}; };
U0 InsNote(MakeSongSettings *mss,U8 *buf,I64 k,I64 *j) U0 InsNote(MakeSongSettings *mss,U8 *buf,I64 k,I64 *j)
+1 -1
View File
@@ -88,7 +88,7 @@ Favorite animal? $FG,4$"Elephant two"$FG$
Favorite animal? $FG,4$"Bears"$FG$ Favorite animal? $FG,4$"Bears"$FG$
Favorite color? $FG,4$"Jude" (Jade Blue?)$FG$ Favorite color? $FG,4$"Jude" (Jade Blue?)$FG$
Favorite color? $FG,4$"Gold"$FG$ Favorite color? $FG,4$"Gold"$FG$
Favorite color? $FG,4$$TX,"\"Iceberg\" blue",HTML="http://en.wikipedia.org/wiki/Blue_iceberg"$$FG$ Favorite color? $FG,4$$TX,"\"Iceberg\" blue",HTML="https://upload.wikimedia.org/wikipedia/commons/3/38/Blue_ice_in_South_Greenland_-_Visit_Greenland.jpg"$$FG$
Money? $FG,4$"Enough vehemently better"$FG$ Money? $FG,4$"Enough vehemently better"$FG$
$FG,4$"Pride [or] money, choose_one"$FG$ $FG,4$"Pride [or] money, choose_one"$FG$
Favorite car? $FG,4$Beamer$FG$ Favorite car? $FG,4$Beamer$FG$
+1
View File
@@ -153,6 +153,7 @@ public class CSpritePtMeshU8s : CSpriteBase
public class CSprite public class CSprite
{ {
CSprite *next,*last; CSprite *next,*last;
Bool selected;
U0 start; U0 start;
union { union {
U8 type; U8 type;
+50 -18
View File
@@ -4,11 +4,16 @@ public Bool GrPlot0(CDC *dc=gr.dc,I64 x,I64 y)
{//2D. No clipping or transformation or pen width. {//2D. No clipping or transformation or pen width.
U8 *dst; U8 *dst;
I32 *db; I32 *db;
I64 d; I64 d,dist;
CColorROPU32 c,color=dc->color,bkcolor=dc->bkcolor; CColorROPU32 c,color=dc->color,bkcolor=dc->bkcolor;
if (dc->flags & DCF_LOCATE_NEAREST) if (dc->flags & DCF_LOCATE_NEAREST) {
dc->dist=DistSqrI64(x,y,dc->cur_x,dc->cur_y); dist=DistSqrI64(x,y,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_RECORD_EXTENTS) { if (dc->flags & DCF_RECORD_EXTENTS) {
if (x<dc->min_x) dc->min_x=x; if (x<dc->min_x) dc->min_x=x;
if (x>dc->max_x) dc->max_x=x; if (x>dc->max_x) dc->max_x=x;
@@ -65,7 +70,7 @@ public I64 GrPeek0(CDC *dc=gr.dc,I64 x,I64 y)
public I64 GrBlot(CDC *dc=gr.dc,I64 x,I64 y,CDC *img) public I64 GrBlot(CDC *dc=gr.dc,I64 x,I64 y,CDC *img)
{//2D. Clipping but not transformation.. {//2D. Clipping but not transformation..
I64 i,j,k,k1,kk,kk1,w1,h1,w2,h2, I64 i,j,k,k1,kk,kk1,w1,h1,w2,h2,dist,
leading_pixels,leading_pixel_mask,whole_I64s, leading_pixels,leading_pixel_mask,whole_I64s,
trailing_pixels,trailing_pixel_mask, trailing_pixels,trailing_pixel_mask,
reg bit_shift,win_z_buf_line_inc,win_z_buf_line_dec,win_z_num, reg bit_shift,win_z_buf_line_inc,win_z_buf_line_dec,win_z_num,
@@ -95,8 +100,13 @@ public I64 GrBlot(CDC *dc=gr.dc,I64 x,I64 y,CDC *img)
x+=win_task->pix_left; x+=win_task->pix_left;
y+=win_task->pix_top; y+=win_task->pix_top;
} }
if (dc->flags & DCF_LOCATE_NEAREST) if (dc->flags & DCF_LOCATE_NEAREST) {
dc->dist=DistSqrI64(x+img->width>>1,y+img->height>>1,dc->cur_x,dc->cur_y); dist=DistSqrI64(x+img->width>>1,y+img->height>>1,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_SCREEN_BITMAP) { if (dc->flags & DCF_SCREEN_BITMAP) {
if (x+w1<0) w1=-x; if (x+w1<0) w1=-x;
if (x+w2>win_task->pix_right+1) if (x+w2>win_task->pix_right+1)
@@ -632,7 +642,7 @@ public I64 GrPutChar(CDC *dc=gr.dc,I64 x,I64 y,U8 ch)
{//2D. Clipping but not transformation. {//2D. Clipping but not transformation.
U8 reg *src,reg *dst,*font_ptr; U8 reg *src,reg *dst,*font_ptr;
I64 i,m,leading_pixels,trailing_pixels,leading_pixel_mask,trailing_pixel_mask, I64 i,m,leading_pixels,trailing_pixels,leading_pixel_mask,trailing_pixel_mask,
j,k1,kk1,w1,h1,w2,h2,reg bit_shift,reg color_mask; j,k1,kk1,w1,h1,w2,h2,reg bit_shift,reg color_mask,dist;
CColorROPU32 color,c; CColorROPU32 color,c;
CTask *win_task; CTask *win_task;
@@ -657,8 +667,13 @@ public I64 GrPutChar(CDC *dc=gr.dc,I64 x,I64 y,U8 ch)
x+=win_task->pix_left; x+=win_task->pix_left;
y+=win_task->pix_top; y+=win_task->pix_top;
} }
if (dc->flags & DCF_LOCATE_NEAREST) if (dc->flags & DCF_LOCATE_NEAREST) {
dc->dist=DistSqrI64(x+w2>>1,y+h2>>1,dc->cur_x,dc->cur_y); dist=DistSqrI64(x+w2>>1,y+h2>>1,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_SCREEN_BITMAP) { if (dc->flags & DCF_SCREEN_BITMAP) {
if (x+w1<0) w1=-x; if (x+w1<0) w1=-x;
if (x+w2>win_task->pix_right+1) if (x+w2>win_task->pix_right+1)
@@ -910,7 +925,7 @@ public I64 GrVPrint(CDC *dc=gr.dc,I64 x,I64 y,U8 *fmt,...)
public I64 GrRect(CDC *dc=gr.dc,I64 x,I64 y,I64 w,I64 h) public I64 GrRect(CDC *dc=gr.dc,I64 x,I64 y,I64 w,I64 h)
{//2D. Width Height. Clipping but not transformation. {//2D. Width Height. Clipping but not transformation.
//Returns cnt of pixs changed. //Returns cnt of pixs changed.
I64 i,result=0,j,k1,kk1,w1,h1,w2,h2, I64 i,result=0,j,k1,kk1,w1,h1,w2,h2,dist,
leading_pixels,original_leading_pixels,whole_I64s, leading_pixels,original_leading_pixels,whole_I64s,
trailing_pixels,leading_pixel_mask,trailing_pixel_mask, trailing_pixels,leading_pixel_mask,trailing_pixel_mask,
win_z_buf_line_inc,win_z_buf_line_dec,win_z_num,color_mask; win_z_buf_line_inc,win_z_buf_line_dec,win_z_num,color_mask;
@@ -943,9 +958,13 @@ public I64 GrRect(CDC *dc=gr.dc,I64 x,I64 y,I64 w,I64 h)
} }
if (dc->flags & DCF_LOCATE_NEAREST) {//TODO:Untested if (dc->flags & DCF_LOCATE_NEAREST) {//TODO:Untested
if (x<=dc->cur_x<=x+w && y<=dc->cur_y<=y+h) if (x<=dc->cur_x<=x+w && y<=dc->cur_y<=y+h)
dc->dist=0; dist=0;
else else
dc->dist=DistSqrI64(x+w>>1,y+h>>1,dc->cur_x,dc->cur_y); dist=DistSqrI64(x+w>>1,y+h>>1,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
} }
if (dc->flags & DCF_SCREEN_BITMAP) { if (dc->flags & DCF_SCREEN_BITMAP) {
if (x+w1<0) w1=-x; if (x+w1<0) w1=-x;
@@ -1418,7 +1437,7 @@ gr_done:
I64 GrRayLen(CDC *dc,I64 *x1,I64 y,I64 z=0,I32 *db=NULL) I64 GrRayLen(CDC *dc,I64 *x1,I64 y,I64 z=0,I32 *db=NULL)
{ {
//Returns cnt of pixs changed //Returns cnt of pixs changed
I64 result=0,d,x=*x1,x2,x3,y3; I64 result=0,d,x=*x1,x2,x3,y3,dist;
Bool plot,dither,probability_dither, Bool plot,dither,probability_dither,
not_color=ToBool(dc->flags&DCF_FILL_NOT_COLOR); not_color=ToBool(dc->flags&DCF_FILL_NOT_COLOR);
U8 *dst,*dst2; U8 *dst,*dst2;
@@ -1494,8 +1513,13 @@ I64 GrRayLen(CDC *dc,I64 *x1,I64 y,I64 z=0,I32 *db=NULL)
if ((not_color && c!=dc->color2 || if ((not_color && c!=dc->color2 ||
!not_color && c==dc->color2) && plot) { !not_color && c==dc->color2) && plot) {
if (dc->flags & DCF_LOCATE_NEAREST) if (dc->flags & DCF_LOCATE_NEAREST) {
dc->dist=DistSqrI64(x3,y3,dc->cur_x,dc->cur_y); dist=DistSqrI64(x3,y3,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_RECORD_EXTENTS) { if (dc->flags & DCF_RECORD_EXTENTS) {
if (x3<dc->min_x) dc->min_x=x3; if (x3<dc->min_x) dc->min_x=x3;
if (x3>dc->max_x) dc->max_x=x3; if (x3>dc->max_x) dc->max_x=x3;
@@ -1566,8 +1590,13 @@ I64 GrRayLen(CDC *dc,I64 *x1,I64 y,I64 z=0,I32 *db=NULL)
if ((not_color && c!=dc->color2 || if ((not_color && c!=dc->color2 ||
!not_color && c==dc->color2) && plot) { !not_color && c==dc->color2) && plot) {
if (dc->flags & DCF_LOCATE_NEAREST) if (dc->flags & DCF_LOCATE_NEAREST) {
dc->dist=DistSqrI64(x3,y3,dc->cur_x,dc->cur_y); dist=DistSqrI64(x3,y3,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_RECORD_EXTENTS) { if (dc->flags & DCF_RECORD_EXTENTS) {
if (x3<dc->min_x) dc->min_x=x3; if (x3<dc->min_x) dc->min_x=x3;
if (x3>dc->max_x) dc->max_x=x3; if (x3>dc->max_x) dc->max_x=x3;
@@ -1692,7 +1721,10 @@ public I64 GrHLine(CDC *dc=gr.dc,I64 x1,I64 x2,I64 y,I64 z1=0,I64 z2=0)
else else
dist=SqrI64(dc->cur_x-x2); dist=SqrI64(dc->cur_x-x2);
dist+=SqrI64(y-dc->cur_y); dist+=SqrI64(y-dc->cur_y);
dc->dist=dist; if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
} }
if (dc->flags & DCF_DONT_DRAW) if (dc->flags & DCF_DONT_DRAW)
goto gr_done; goto gr_done;
+8 -3
View File
@@ -305,7 +305,7 @@ gr_done:
public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z) public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z)
{//3D. Clipping and transformation and pen width. {//3D. Clipping and transformation and pen width.
I64 _x,_y,_z,i,j,w; I64 _x,_y,_z,i,j,w,dist;
CColorROPU32 old_color=dc->color; CColorROPU32 old_color=dc->color;
Bool record,was_transform=FALSE,was_symmetry=FALSE; Bool record,was_transform=FALSE,was_symmetry=FALSE;
CTask *win_task; CTask *win_task;
@@ -382,8 +382,13 @@ public Bool GrPlot3(CDC *dc=gr.dc,I64 x,I64 y,I64 z)
x+=win_task->pix_left+win_task->scroll_x; x+=win_task->pix_left+win_task->scroll_x;
y+=win_task->pix_top+win_task->scroll_y; y+=win_task->pix_top+win_task->scroll_y;
} }
if (dc->flags & DCF_LOCATE_NEAREST) if (dc->flags & DCF_LOCATE_NEAREST) {
dc->dist=DistSqrI64(x,y,dc->cur_x,dc->cur_y); dist=DistSqrI64(x,y,dc->cur_x,dc->cur_y);
if (dist<dc->nearest_dist) {
dc->nearest_dist=dist;
dc->nearest_sprite_elem_num=dc->cur_sprite_elem_num;
}
}
if (dc->flags & DCF_RECORD_EXTENTS) { if (dc->flags & DCF_RECORD_EXTENTS) {
if (x-w<dc->min_x) dc->min_x=x-w; if (x-w<dc->min_x) dc->min_x=x-w;
if (y-w<dc->min_y) dc->min_y=y-w; if (y-w<dc->min_y) dc->min_y=y-w;
+6 -10
View File
@@ -31,9 +31,10 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
MemCpy(&old_sym,&dc->sym,sizeof(CGrSym)); MemCpy(&old_sym,&dc->sym,sizeof(CGrSym));
if (dc->flags & DCF_LOCATE_NEAREST) { if (dc->flags & DCF_LOCATE_NEAREST) {
dc->nearest_sprite_elem_num=0; dc->nearest_sprite_elem_num=0;
dc->dist=dc->nearest_dist=MAX_I64; dc->nearest_dist=MAX_I64;
} }
while (tempg->type) { while (tempg->type) {
dc->cur_sprite_elem_num=cur_sprite_elem_num;
switch (tempg->type) { switch (tempg->type) {
case SPT_COLOR: case SPT_COLOR:
dc->color=dc->color&~(COLORROP_COLORS_MASK|ROPF_DITHER)|tempg->c.color; dc->color=dc->color&~(COLORROP_COLORS_MASK|ROPF_DITHER)|tempg->c.color;
@@ -248,10 +249,6 @@ public U0 Sprite3(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,
} }
break; break;
} }
if (dc->flags & DCF_LOCATE_NEAREST && dc->dist<dc->nearest_dist) {
dc->nearest_dist=dc->dist;
dc->nearest_sprite_elem_num=cur_sprite_elem_num;
}
cur_sprite_elem_num++; cur_sprite_elem_num++;
if (just_one_elem) break; if (just_one_elem) break;
tempg(U8 *)+=SpriteElemSize(tempg); tempg(U8 *)+=SpriteElemSize(tempg);
@@ -276,15 +273,14 @@ public U0 Sprite3B(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems)
public U0 SpriteMat3B(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,I64 *m) public U0 SpriteMat3B(CDC *dc=gr.dc,I64 x,I64 y,I64 z,U8 *elems,I64 *m)
{//Plot rotated by matrix. {//Plot rotated by matrix.
I64 r[16],*old_r=dc->r,old_m[16], I64 r[16],*old_r=dc->r,new_m[16],
old_flags=dc->flags&DCF_TRANSFORMATION; old_flags=dc->flags&DCF_TRANSFORMATION;
MemCpy(old_m,m,16*sizeof(I64)); MemCpy(new_m,m,16*sizeof(I64));
dc->flags|=DCF_TRANSFORMATION; dc->flags|=DCF_TRANSFORMATION;
Mat4x4TranslationAdd(m,x,y,z); Mat4x4TranslationAdd(new_m,x,y,z);
dc->r=Mat4x4MulMat4x4Equ(r,old_r,m); dc->r=Mat4x4MulMat4x4Equ(r,old_r,new_m);
Sprite3(dc,0,0,0,elems); Sprite3(dc,0,0,0,elems);
dc->r=old_r; dc->r=old_r;
MemCpy(m,old_m,16*sizeof(I64));
dc->flags=dc->flags&~DCF_TRANSFORMATION|old_flags; dc->flags=dc->flags&~DCF_TRANSFORMATION|old_flags;
} }
+1 -15
View File
@@ -54,7 +54,6 @@ I64 PopUpSpriteBitMap(CColorROPU32 color,I64 width)
st1=buf; st1=buf;
st2=""; st2="";
} }
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite BitMap Menu\"$$\n" DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite BitMap Menu\"$$\n"
"$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/SpriteBitMap.TXT.Z\"$$\n" "$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/SpriteBitMap.TXT.Z\"$$\n"
"\n$$LTBLUE$$$$MU-UL,\"Color %s\",LE=GBM_COLOR$$\n" "\n$$LTBLUE$$$$MU-UL,\"Color %s\",LE=GBM_COLOR$$\n"
@@ -262,12 +261,10 @@ bm_menu:
case GBM_MAIN_MENU: case GBM_MAIN_MENU:
result=GE_CONT; result=GE_CONT;
goto bm_done; goto bm_done;
case GBM_COLOR: case GBM_COLOR:
i=PopUpColor(,,FALSE); i=PopUpColor(,,FALSE);
if (i>=0) color=i; if (i>=0) color=i;
goto bm_menu; goto bm_menu;
case GBM_FIND_AND_REPLACE: case GBM_FIND_AND_REPLACE:
i=PopUpColor("Find Color\n",,FALSE); i=PopUpColor("Find Color\n",,FALSE);
if (i>=0) { if (i>=0) {
@@ -278,12 +275,10 @@ bm_menu:
} }
} }
goto bm_menu; goto bm_menu;
case GBM_TRIM_TO_EXTENTS: case GBM_TRIM_TO_EXTENTS:
GrBitMapEdTrimToExtents(&img,&xx1,&yy1,&xx2,&yy2,bkcolor); GrBitMapEdTrimToExtents(&img,&xx1,&yy1,&xx2,&yy2,bkcolor);
GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img); GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img);
goto bm_menu; goto bm_menu;
case GBM_ADD_OUTLINE: case GBM_ADD_OUTLINE:
i=PopUpRangeI64(1,16,1,"Outline Width\n"); i=PopUpRangeI64(1,16,1,"Outline Width\n");
if (i>=0) { if (i>=0) {
@@ -291,7 +286,6 @@ bm_menu:
GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img); GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img);
} }
goto bm_menu; goto bm_menu;
case GBM_ETCH: case GBM_ETCH:
i=PopUpRangeI64(1,16,1,"Etch Width\n"); i=PopUpRangeI64(1,16,1,"Etch Width\n");
if (i>=0) { if (i>=0) {
@@ -299,39 +293,33 @@ bm_menu:
GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img); GrBitMapEdPrepPersistentDC(dc,xx1,yy1,img);
} }
goto bm_menu; goto bm_menu;
case GBM_SAVE_BMP: case GBM_SAVE_BMP:
*filename.name=0; *filename.name=0;
if (DocForm(&filename) && *filename.name) if (DocForm(&filename) && *filename.name)
BMPWrite(filename.name,img); BMPWrite(filename.name,img);
goto bm_menu; goto bm_menu;
case GBM_SAVE_GRA: case GBM_SAVE_GRA:
*filename.name=0; *filename.name=0;
if (DocForm(&filename) && *filename.name) if (DocForm(&filename) && *filename.name)
GRAWrite(filename.name,img,DCSF_COMPRESSED|DCSF_PALETTE_GET); GRAWrite(filename.name,img,DCSF_COMPRESSED|DCSF_PALETTE_GET);
goto bm_menu; goto bm_menu;
case GBM_DITHER_COLOR: case GBM_DITHER_COLOR:
i=PopUpColorDither; i=PopUpColorDither;
if (i>=0) color=i; if (i>=0) color=i;
goto bm_menu; goto bm_menu;
case GBM_WIDTH: case GBM_WIDTH:
i=PopUpRangeI64(1,16,1,"Pen Width\n"); i=PopUpRangeI64(1,16,1,"Pen Width\n");
if (i>=0) width=i; if (i>=0) width=i;
goto bm_menu; goto bm_menu;
case GBM_UNDO: case GBM_UNDO:
if (undo) { if (undo) {
Beep; DCFill(img,bkcolor);
img->color=ROP_EQU; img->color=ROP_EQU;
GrBlot(img,0,0,undo); GrBlot(img,0,0,undo);
DCDel(undo); DCDel(undo);
undo=NULL; undo=NULL;
} }
goto bm_menu; goto bm_menu;
case GBM_PT: case GBM_PT:
case GBM_LINE: case GBM_LINE:
case GBM_ARROW: case GBM_ARROW:
@@ -347,7 +335,6 @@ bm_menu:
case GBM_PASTE_TRANSPARENT: case GBM_PASTE_TRANSPARENT:
mode=i; mode=i;
break; break;
case GBM_TEXT: case GBM_TEXT:
case GBM_TEXT_BOX: case GBM_TEXT_BOX:
case GBM_TEXT_DIAMOND: case GBM_TEXT_DIAMOND:
@@ -358,7 +345,6 @@ bm_menu:
else else
goto bm_menu; goto bm_menu;
break; break;
} }
DCDel(undo); DCDel(undo);
undo=DCExtract(img,0,0,img->width-1,img->height-1); undo=DCExtract(img,0,0,img->width-1,img->height-1);
+188 -129
View File
@@ -1,5 +1,54 @@
#help_index "Graphics/Sprite;Sprites" #help_index "Graphics/Sprite;Sprites"
CSprite *SpriteSetSettings(CDC *dc=NULL,CSprite *root,I64 elem_num,
I64 x=0,I64 y=0,CColorROPU32 *_color=NULL,I64 *_width=NULL,
I64 *_xx=NULL,I64 *_yy=NULL)
{
CSprite *result=root->next;
I64 width=1,xx=0,yy=0;
CColorROPU32 color=BLACK;
if (dc) DCRst(dc);
while (elem_num-->0 && result!=root) {
switch (result->type) {
case SPT_COLOR:
color=result->c.color;
if (dc) dc->color=color;
break;
case SPT_DITHER_COLOR:
color=result->d.dither_color.u8[0]|
result->d.dither_color.u8[1]<<COLORROP_BITS|ROPF_DITHER;
if (dc) dc->color=color;
break;
case SPT_WIDTH:
width=result->w.width;
if (dc) dc->pen_width=width;
break;
case SPT_SHIFT:
xx+=result->p.x1;
yy+=result->p.y1;
x+=result->p.x1;
y+=result->p.y1;
break;
case SPT_PLANAR_SYMMETRY:
if (dc) {
if (DCSymmetry3Set(dc,result->pp.x1+x,result->pp.y1+y,0,
result->pp.x2+x,result->pp.y2+y,0,
result->pp.x2+x,result->pp.y2+y,1))
dc->flags|=DCF_SYMMETRY;
else
dc->flags&=~DCF_SYMMETRY;
}
break;
}
result=result->next;
}
if (_color) *_color=color;
if (_width) *_width=width;
if (_xx) *_xx=xx;
if (_yy) *_yy=yy;
return result;
}
Bool SpritePolyPtPlot(CSprite *root,I64 x,I64 y,I64) Bool SpritePolyPtPlot(CSprite *root,I64 x,I64 y,I64)
{ {
CSprite *tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PT)); CSprite *tempg=CAlloc(SpriteElemQuedBaseSize(SPT_PT));
@@ -10,23 +59,6 @@ Bool SpritePolyPtPlot(CSprite *root,I64 x,I64 y,I64)
return TRUE; return TRUE;
} }
CSprite *SpriteElemNum2QueEntry(CSprite *root,I64 elem_num,
I64 *_x=NULL,I64 *_y=NULL)
{
I64 xx=0,yy=0;
CSprite *result=root->next;
while (result!=root && elem_num--) {
if (result->type==SPT_SHIFT) {
xx+=result->p.x1;
yy+=result->p.y1;
}
result=result->next;
}
if (_x) *_x=xx;
if (_y) *_y=yy;
return result;
}
CSprite *Sprite2SpriteQue(U8 *elems) CSprite *Sprite2SpriteQue(U8 *elems)
{ {
I64 s; I64 s;
@@ -37,6 +69,7 @@ CSprite *Sprite2SpriteQue(U8 *elems)
tempg1=MAlloc(SpriteElemSize(tempg)+offset(CSprite.start)); tempg1=MAlloc(SpriteElemSize(tempg)+offset(CSprite.start));
s=SpriteElemSize(tempg); s=SpriteElemSize(tempg);
MemCpy(&tempg1->start,&tempg->start,s); MemCpy(&tempg1->start,&tempg->start,s);
tempg1->selected=FALSE;
QueIns(tempg1,result->last); QueIns(tempg1,result->last);
tempg(U8 *)+=s; tempg(U8 *)+=s;
} }
@@ -65,8 +98,9 @@ U8 *SpriteQue2Sprite(CSprite *root,I64 *_size=NULL)
return result; return result;
} }
U0 SpriteEdUpdate(CDoc *doc,CDocBin *tempb,CSprite *root) U0 SpriteEdUpdate(CDoc *doc,CDocEntry *doc_ce,CSprite *root)
{ {
CDocBin *tempb=doc_ce->bin_data;
I64 size; I64 size;
Bool unlock=DocLock(doc); Bool unlock=DocLock(doc);
Free(tempb->data); Free(tempb->data);
@@ -83,6 +117,7 @@ U0 SpriteSetOrigin(CSprite *root,I64 dx,I64 dy,I64 dz)
CD3I32 *p; CD3I32 *p;
CSprite *tempg=root->next; CSprite *tempg=root->next;
while (tempg!=root) { while (tempg!=root) {
if (tempg->selected)
switch (tempg->type) { switch (tempg->type) {
case SPT_ARROW: case SPT_ARROW:
case SPT_LINE: case SPT_LINE:
@@ -168,6 +203,7 @@ CSprite *SpriteTransformCircle(I64 *r,CSprite *tempg)
tempg1->pwha.height=ToI64(m2)/0x10000; tempg1->pwha.height=ToI64(m2)/0x10000;
tempg1->pwha.angle=-a1; tempg1->pwha.angle=-a1;
tempg1->selected=tempg->selected;
return tempg1; return tempg1;
} }
@@ -208,6 +244,7 @@ CSprite *SpriteTransformEllipse(I64 *r,CSprite *tempg)
if (tempg1->pwha.height<1) tempg1->pwha.height=1; if (tempg1->pwha.height<1) tempg1->pwha.height=1;
tempg1->pwha.angle=-a1; tempg1->pwha.angle=-a1;
tempg1->selected=tempg->selected;
return tempg1; return tempg1;
} }
@@ -249,12 +286,13 @@ CSprite *SpriteTransformRect(I64 *r,CSprite *tempg,F64
tempg1->ppa.y2=tempg1->ppa.y1+h; tempg1->ppa.y2=tempg1->ppa.y1+h;
tempg1->ppa.angle=-a1; tempg1->ppa.angle=-a1;
tempg1->selected=tempg->selected;
return tempg1; return tempg1;
} }
CSprite *SpriteTransformBitmap(I64 *r,CSprite *tempg) CSprite *SpriteTransformBitMap(I64 *r,CSprite *tempg)
{ {
CDC *img,*tempb; CDC *img,*dc3;
U8 *elems; U8 *elems;
I64 x,y,z,minx,maxx,miny,maxy,minz,maxz; I64 x,y,z,minx,maxx,miny,maxy,minz,maxz;
CSprite *tempg1; CSprite *tempg1;
@@ -292,7 +330,7 @@ CSprite *SpriteTransformBitmap(I64 *r,CSprite *tempg)
if (z<minx) minz=z; if (z<minx) minz=z;
if (z>maxx) maxz=z; if (z>maxx) maxz=z;
tempb=DCNew(maxx-minx+1,maxy-miny+1); dc3=DCNew(maxx-minx+1,maxy-miny+1);
img=CAlloc(sizeof(CDC)); img=CAlloc(sizeof(CDC));
img->width=tempg->pwhu.width; img->width=tempg->pwhu.width;
@@ -301,22 +339,22 @@ CSprite *SpriteTransformBitmap(I64 *r,CSprite *tempg)
img->body=&tempg->pwhu.u; img->body=&tempg->pwhu.u;
img->dc_signature=DCS_SIGNATURE_VAL; img->dc_signature=DCS_SIGNATURE_VAL;
tempb->color=TRANSPARENT; dc3->color=TRANSPARENT;
GrRect(tempb,0,0,maxx-minx+1,maxy-miny+1); GrRect(dc3,0,0,maxx-minx+1,maxy-miny+1);
Free(tempb->r); Free(dc3->r);
DCMat4x4Set(tempb,r); DCMat4x4Set(dc3,r);
tempb->flags|=DCF_TRANSFORMATION; dc3->flags|=DCF_TRANSFORMATION;
tempb->x=-minx; dc3->x=-minx;
tempb->y=-miny; dc3->y=-miny;
tempb->z=-minz; dc3->z=-minz;
GrBlot3(tempb,0,0,0,img); GrBlot3(dc3,0,0,0,img);
Free(img); Free(img);
elems=DC2Sprite(tempb); elems=DC2Sprite(dc3);
tempb->r=NULL; dc3->r=NULL;
DCDel(tempb); DCDel(dc3);
tempg1=CAlloc(offset(CSprite.start)+MSize(elems)); tempg1=CAlloc(offset(CSprite.start)+MSize(elems));
MemCpy(tempg1(U8 *)+offset(CSprite.start),elems,MSize(elems)); MemCpy(tempg1(U8 *)+offset(CSprite.start),elems,MSize(elems));
tempg1->type=tempg->type; tempg1->type=tempg->type;
@@ -342,6 +380,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
CD3I32 *p; CD3I32 *p;
CSprite *tempg=root->next,root2,*tempg1,*tempg2,*tempg3; CSprite *tempg=root->next,root2,*tempg1,*tempg2,*tempg3;
while (tempg!=root) { while (tempg!=root) {
if (tempg->selected)
switch (tempg->type) { switch (tempg->type) {
case SPT_WIDTH: case SPT_WIDTH:
tempg->w.width*=Sqrt(Mat4x4NormSqr65536(r))/65536; tempg->w.width*=Sqrt(Mat4x4NormSqr65536(r))/65536;
@@ -366,7 +405,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
tempg->p.y1=y; tempg->p.y1=y;
break; break;
case SPT_BITMAP: case SPT_BITMAP:
tempg1=SpriteTransformBitmap(r,tempg); tempg1=SpriteTransformBitMap(r,tempg);
QueIns(tempg1,tempg); QueIns(tempg1,tempg);
QueRem(tempg); QueRem(tempg);
Free(tempg); Free(tempg);
@@ -467,6 +506,7 @@ U0 SpriteTransform(I64 *r,CSprite *root)
tempg3->npu.num=num; tempg3->npu.num=num;
QueIns(tempg3,tempg); QueIns(tempg3,tempg);
QueRem(tempg); QueRem(tempg);
tempg3->selected=tempg->selected;
Free(tempg); Free(tempg);
tempg=tempg3; tempg=tempg3;
break; break;
@@ -513,6 +553,31 @@ U0 SpriteTransform(I64 *r,CSprite *root)
} }
} }
I64 SpriteQueSelectCnt(CSprite *root,Bool val=TRUE)
{
I64 result=0;
CSprite *tempg=root->next;
val=ToBool(val);
while (tempg!=root) {
if (ToBool(tempg->selected)==val)
result++;
tempg=tempg->next;
}
return result;
}
I64 SpriteQueSelectAll(CSprite *root,Bool val=TRUE)
{
I64 result=0;
CSprite *tempg=root->next;
while (tempg!=root) {
tempg->selected=val;
result++;
tempg=tempg->next;
}
return result;
}
CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num) CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
{//For the side-bar {//For the side-bar
CSprite *result=CAlloc(sizeof(CSprite)),*tempg; CSprite *result=CAlloc(sizeof(CSprite)),*tempg;
@@ -522,9 +587,10 @@ CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
QueInit(result); QueInit(result);
while (doc_e!=doc) { while (doc_e!=doc) {
if (doc_e->type_u8==DOCT_MENU_VAL && doc_e->left_exp>=0) { if (doc_e->type_u8==DOCT_MENU_VAL && doc_e->left_exp>=0) {
tempg=SpriteElemNum2QueEntry(root,doc_e->left_exp); tempg=SpriteSetSettings(,root,doc_e->left_exp);
if (tempg!=root) { if (tempg!=root) {
tempg=MAllocIdentical(tempg); tempg=MAllocIdentical(tempg);
tempg->selected=Bt(&doc_e->type,DOCEt_SELECTED);
if (*_cur_elem_num==doc_e->left_exp) { if (*_cur_elem_num==doc_e->left_exp) {
*_cur_elem_num=num; *_cur_elem_num=num;
found=TRUE; found=TRUE;
@@ -545,36 +611,36 @@ CSprite *SpriteSideBar2SpriteQue(CDoc *doc,CSprite *root,I64 *_cur_elem_num)
U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num) U0 SpriteSideBarPickNew(CDoc *doc,CSprite *root,I64 old_num)
{ {
CSprite *tempg; CSprite *tempg;
CDocEntry *doc_e=NULL; CDocEntry *doc_cur_e=NULL,*doc_e;
I64 cur_elem_num=0; I64 cur_elem_num=0;
U8 *st; U8 *st;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite SideBar\"$$\n" DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite SideBar\"$$\n"
"$$LK+PU+CX,\"Click for Help\"," "$$LK+PU+CX,\"Click for Help\","
"A=\"FI:::/Doc/SpriteSideBar.TXT.Z\"$$\n\n"); "A=\"FI:::/Doc/SpriteSideBar.TXT.Z\"$$\n\n");
tempg=root->next; tempg=root->next;
while (tempg!=root) { while (tempg!=root) {
st=SpriteElem2Summary(tempg); st=SpriteElem2Summary(tempg);
if (cur_elem_num==old_num) { if (cur_elem_num==old_num) {
DocPrint(doc,"$$LTRED$$"); DocPrint(doc,"$$LTRED$$");
doc_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++); doc_e=doc_cur_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++);
} else { } else {
DocPrint(doc,"$$LTBLUE$$"); DocPrint(doc,"$$LTBLUE$$");
DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++); doc_e=DocPrint(doc,"$$MU-UL,\"%Q\",LE=%d$$\n",st,cur_elem_num++);
} }
BEqu(&doc_e->de_flags,DOCEf_SELECTED,tempg->selected);
BEqu(&doc_e->type,DOCEt_SELECTED,tempg->selected);
Free(st); Free(st);
tempg=tempg->next; tempg=tempg->next;
} }
if (cur_elem_num==old_num) { if (cur_elem_num==old_num) {
DocPrint(doc,"$$LTRED$$"); DocPrint(doc,"$$LTRED$$");
doc_e=DocPrint(doc,"$$MU-UL,\"END\",LE=%d$$\n",cur_elem_num); doc_cur_e=DocPrint(doc,"$$MU-UL,\"END\",LE=%d$$\n",cur_elem_num);
} else { } else {
DocPrint(doc,"$$LTBLUE$$"); DocPrint(doc,"$$LTBLUE$$");
DocPrint(doc,"$$MU-UL,\"END\",LE=%d$$\n",cur_elem_num); DocPrint(doc,"$$MU-UL,\"END\",LE=%d$$\n",cur_elem_num);
} }
if (doc_e) if (doc_cur_e)
doc->cur_entry=doc_e; doc->cur_entry=doc_cur_e;
} }
U0 SpriteSideBarTask2(CTask *grand_parent) U0 SpriteSideBarTask2(CTask *grand_parent)
@@ -601,6 +667,7 @@ U0 SpriteSideBarTask(CTask *parent,CSprite **_root,I64 *_cur_elem_num)
doc->flags|=DOCF_MIN_SIZE|DOCF_FORM; doc->flags|=DOCF_MIN_SIZE|DOCF_FORM;
while (TRUE) { while (TRUE) {
SpriteSideBarPickNew(doc,*_root,*_cur_elem_num); SpriteSideBarPickNew(doc,*_root,*_cur_elem_num);
DocHighlightCursor(,doc);
View; View;
doc_e=doc->cur_entry; doc_e=doc->cur_entry;
if (doc_e->type_u8==DOCT_MENU_VAL) if (doc_e->type_u8==DOCT_MENU_VAL)
@@ -648,24 +715,26 @@ Bool SpriteEdText(CSprite **_root,I64 *_cur_elem_num)
return result; return result;
} }
#define GED_SHIFT_PTS 0 #define GED_SELECT_UNSELECT_ALL 0
#define GED_SHIFT_RECTS 1 #define GED_SELECT 1
#define GED_TEXT_ED 2 #define GED_UNSELECT 2
#define GED_TRANSFORM 3 #define GED_SHIFT_PTS 3
#define GED_SET_ORIGIN 4 #define GED_SHIFT_RECTS 4
#define GED_SHIFT_ORIGIN 5 #define GED_SHIFT_SELECTED 5
#define GED_SHIFT_SUB_ORIGIN 6 #define GED_TRANSFORM_SELECTED 6
#define GED_PICK_GRAPHICALLY 7 #define GED_SET_ORIGIN 7
#define GED_DELETE 8 #define GED_SHIFT_SUB_ORIGIN 8
#define GED_INS_CLIPBOARD 9 #define GED_TEXT_ED 9
#define GED_MAIN_MENU 10 #define GED_INS_CLIPBOARD 10
#define GED_EXIT 11 #define GED_MAIN_MENU 11
#define GED_EXIT 12
U0 GrInit3() U0 GrInit3()
{ {
DefineLstLoad("ST_SPRITE_ED_MENU","Shift Points\0Shift Rects\0" DefineLstLoad("ST_SPRITE_ED_MENU","Select/Unslesct All\0"
"Edit as Text\0Transform\0Set Origin\0Shift Origin\0Shift SubOrigin\0" "Select\0Unselect\0Shift Points\0Shift Rects\0Shift Selected\0"
"Pick Graphically\0Delete Object\0Insert Clipboard\0Main Menu\0"); "Transform Selected\0Set Origin\0Insert Shift SubOrigin\0"
"Edit as Text\0Insert Clipboard\0Main Menu\0");
} }
GrInit3; GrInit3;
@@ -677,18 +746,18 @@ I64 PopUpSpriteEd(CSprite **_root,I64 *_cur_elem_num)
CDoc *doc=DocNew; CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite Edit Menu\"$$\n" DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Sprite Edit Menu\"$$\n"
"$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/SpriteEd.TXT.Z\"$$\n\n" "$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/SpriteEd.TXT.Z\"$$\n\n"
"$$LTBLUE$$$$MU-UL,\"Shift Points\",LE=GED_SHIFT_PTS$$\n" "$$LTBLUE$$$$MU-UL,\"Select/Unselect All\",LE=GED_SELECT_UNSELECT_ALL$$\n"
"$$MU-UL,\"Select Elems\",LE=GED_SELECT$$\n"
"$$MU-UL,\"Unselect Elems\",LE=GED_UNSELECT$$\n\n"
"$$MU-UL,\"Shift Points\",LE=GED_SHIFT_PTS$$\n"
"$$MU-UL,\"Shift Points with Rects\",LE=GED_SHIFT_RECTS$$\n" "$$MU-UL,\"Shift Points with Rects\",LE=GED_SHIFT_RECTS$$\n"
"$$MU-UL,\"Edit as Text\",LE=GED_TEXT_ED$$\n" "$$MU-UL,\"Shift Selected Elems\",LE=GED_SHIFT_SELECTED$$\n"
"$$MU-UL,\"Transform\",LE=GED_TRANSFORM$$\n" "$$MU-UL,\"Transform Selected Elems\",LE=GED_TRANSFORM_SELECTED$$\n\n"
"$$MU-UL,\"Set Origin\",LE=GED_SET_ORIGIN$$\n" "$$MU-UL,\"Set Origin\",LE=GED_SET_ORIGIN$$\n"
"$$MU-UL,\"Shift Origin\",LE=GED_SHIFT_ORIGIN$$\n" "$$MU-UL,\"Insert Shift SubOrigin\",LE=GED_SHIFT_SUB_ORIGIN$$\n\n"
"$$MU-UL,\"Insert Shift SubOrigin\",LE=GED_SHIFT_SUB_ORIGIN$$\n" "$$MU-UL,\"Edit as Text\",LE=GED_TEXT_ED$$\n"
"$$MU-UL,\"Pick or Delete Objects Graphically\"," "$$MU-UL,\"Insert Clipboard Sprite's\",LE=GED_INS_CLIPBOARD$$\n\n"
"LE=GED_PICK_GRAPHICALLY$$\n" "$$PURPLE$$$$MU-UL,\"+] Sprite Main Menu\",LE=GED_MAIN_MENU$$$$LTBLUE$$\n"
"$$MU-UL,\"Delete\",LE=GED_DELETE$$\n"
"$$MU-UL,\"Insert Clipboard Sprite's\",LE=GED_INS_CLIPBOARD$$\n"
"\n$$PURPLE$$$$MU-UL,\"+] Sprite Main Menu\",LE=GED_MAIN_MENU$$$$LTBLUE$$\n"
"$$MU-UL,\"Exit Sprite\",LE=GED_EXIT$$\n" "$$MU-UL,\"Exit Sprite\",LE=GED_EXIT$$\n"
"$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$"); "$$MU-UL,\"Abort Sprite\",LE=DOCM_CANCEL$$");
st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_root,_cur_elem_num); st=MStrPrint("SpriteSideBarTask(0x%X,0x%X,0x%X);",Fs,_root,_cur_elem_num);
@@ -1007,72 +1076,64 @@ gs_done:
return result; return result;
} }
I64 SpriteEd(CDoc *doc,CDocEntry *doc_e,I64 x,I64 y, I64 SpriteEd(CDoc *doc,CDocEntry *doc_ce,I64 x,I64 y,
CSprite **_root,I64 *_cur_elem_num) CSprite **_root,I64 *_cur_elem_num)
{ {
CDocEntry *doc_e2; CDocEntry *doc_e2;
CDocBin *tempb; CDocBin *tempb;
Bool unlock,del_down; Bool unlock;
I64 i,r[16],msg_code,a1,a2,xx,yy, I64 i,r[16],msg_code,a1,a2,xx,yy,
old_de_flags; old_de_flags;
CSprite *cur_elem,*root2,*next,*last,*tempg,*insert_pt; CSprite *cur_elem,*root2,*next,*last,*tempg,*insert_pt;
old_de_flags=doc_e->de_flags; old_de_flags=doc_ce->de_flags;
tempb=doc_e->bin_data; tempb=doc_ce->bin_data;
DocUnlock(doc); DocUnlock(doc);
SpriteQueSelectAll(*_root,FALSE);
do { do {
if (winmgr.fps<10) if (winmgr.fps<10)
doc_e->de_flags|=DOCEF_DONT_DRAW; doc_ce->de_flags|=DOCEF_DONT_DRAW;
StrCpy(Fs->task_title,"Sprite Edit Menu"); StrCpy(Fs->task_title,"Sprite Edit Menu");
i=PopUpSpriteEd(_root,_cur_elem_num); i=PopUpSpriteEd(_root,_cur_elem_num);
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
if (0<=i<GED_EXIT) { if (0<=i<GED_EXIT) {
StrCpy(Fs->task_title,DefineSub(i,"ST_SPRITE_ED_MENU")); StrCpy(Fs->task_title,DefineSub(i,"ST_SPRITE_ED_MENU"));
switch (i) { switch (i) {
case GED_PICK_GRAPHICALLY: case GED_SELECT_UNSELECT_ALL:
RegOneTimePopUp(ARf_CSPRITE_PICK_GRAPHICALLY, if (!SpriteQueSelectCnt(*_root))
"You can delete elements by\n" SpriteQueSelectAll(*_root);
"holding $$GREEN$$Delete$$FG$$ and clicking.\n"); else
doc_e->de_flags=old_de_flags; SpriteQueSelectAll(*_root,FALSE);
break;
case GED_SELECT:
case GED_UNSELECT:
doc_ce->de_flags=old_de_flags;
doc->cur_sprite=tempb->data; doc->cur_sprite=tempb->data;
doc->nearest_sprite_elem_num=0;
del_down=FALSE;
do { do {
msg_code=GetMsg(&a1,&a2,
1<<MSG_IP_L_UP|1<<MSG_IP_R_UP|1<<MSG_KEY_DOWN|1<<MSG_KEY_UP);
if (a2.u8[0]==SC_DELETE&& !(a2&SCF_IP_L_DOWN)) {
if (msg_code==MSG_KEY_DOWN)
del_down=TRUE;
else if (msg_code==MSG_KEY_UP)
del_down=FALSE;
}
if (msg_code==MSG_IP_L_UP && kbd.scan_code&SCF_DELETE ||
msg_code==MSG_KEY_DOWN && a2&SCF_IP_L_DOWN &&
a2.u8[0]==SC_DELETE) {
*_cur_elem_num=doc->nearest_sprite_elem_num;
cur_elem=SpriteElemNum2QueEntry(*_root,*_cur_elem_num);
if (cur_elem!=*_root) {
QueRem(cur_elem);
Free(cur_elem);
SpriteEdUpdate(doc,tempb,*_root);
}
doc->cur_sprite=tempb->data;
doc->nearest_sprite_elem_num=0; doc->nearest_sprite_elem_num=0;
if (msg_code==MSG_KEY_DOWN) msg_code=GetMsg(&a1,&a2,1<<MSG_IP_L_DOWN|1<<MSG_IP_R_UP);
GetMsg(&a1,&a2,1<<MSG_IP_L_UP); WinMgrSync(2);
} if (msg_code==MSG_IP_L_DOWN) {
} while (del_down || msg_code!=MSG_IP_L_UP && msg_code!=MSG_IP_R_UP);
*_cur_elem_num=doc->nearest_sprite_elem_num; *_cur_elem_num=doc->nearest_sprite_elem_num;
cur_elem=SpriteSetSettings(,*_root,*_cur_elem_num);
cur_elem->selected=ToBool(i==GED_SELECT);
GetMsg(,,1<<MSG_IP_L_UP);
}
} while (msg_code!=MSG_IP_R_UP);
doc->cur_sprite=NULL; doc->cur_sprite=NULL;
break; break;
case GED_SET_ORIGIN: case GED_SET_ORIGIN:
doc_e->de_flags=old_de_flags; SpriteQueSelectAll(*_root);
doc_ce->de_flags=old_de_flags;
GetMsg(&a1,&a2,1<<MSG_IP_L_UP); GetMsg(&a1,&a2,1<<MSG_IP_L_UP);
SpriteSetOrigin(*_root,x-a1,y-a2,0); SpriteSetOrigin(*_root,x-a1,y-a2,0);
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
SpriteQueSelectAll(*_root,FALSE);
break; break;
case GED_SHIFT_ORIGIN: case GED_SHIFT_SELECTED:
doc_e->de_flags=old_de_flags; if (!SpriteQueSelectCnt(*_root))
SpriteQueSelectAll(*_root);
doc_ce->de_flags=old_de_flags;
GetMsg(&a1,&a2,1<<MSG_IP_L_DOWN); GetMsg(&a1,&a2,1<<MSG_IP_L_DOWN);
xx=a1; yy=a2; xx=a1; yy=a2;
do { do {
@@ -1080,8 +1141,10 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_e,I64 x,I64 y,
1<<MSG_IP_L_UP+1<<MSG_IP_MOVE); 1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
SpriteSetOrigin(*_root,a1-xx,a2-yy,0); SpriteSetOrigin(*_root,a1-xx,a2-yy,0);
xx=a1; yy=a2; xx=a1; yy=a2;
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
if (!SpriteQueSelectCnt(*_root,FALSE))
SpriteQueSelectAll(*_root,FALSE);
break; break;
case GED_SHIFT_PTS: case GED_SHIFT_PTS:
case GED_SHIFT_RECTS: case GED_SHIFT_RECTS:
@@ -1090,24 +1153,28 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_e,I64 x,I64 y,
"and rectangles with '$$GREEN$$p$$FG$$' and '$$GREEN$$r$$FG$$'.\n" "and rectangles with '$$GREEN$$p$$FG$$' and '$$GREEN$$r$$FG$$'.\n"
"Press '$$GREEN$$r$$FG$$' after one rectangle\n" "Press '$$GREEN$$r$$FG$$' after one rectangle\n"
"to OR another rectangle.\n"); "to OR another rectangle.\n");
doc_e->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
if (SpriteShiftPts(tempb->data,x,y,_cur_elem_num,i)) { if (SpriteShiftPts(tempb->data,x,y,_cur_elem_num,i)) {
QueDel(*_root); QueDel(*_root);
Free(*_root); Free(*_root);
*_root=Sprite2SpriteQue(tempb->data); *_root=Sprite2SpriteQue(tempb->data);
} else } else
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
break; break;
case GED_TRANSFORM: case GED_TRANSFORM_SELECTED:
if (!SpriteQueSelectCnt(*_root))
SpriteQueSelectAll(*_root);
if (PopUpTransform(r)) { if (PopUpTransform(r)) {
SpriteTransform(r,*_root); SpriteTransform(r,*_root);
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
} }
if (!SpriteQueSelectCnt(*_root,FALSE))
SpriteQueSelectAll(*_root,FALSE);
break; break;
case GED_SHIFT_SUB_ORIGIN: case GED_SHIFT_SUB_ORIGIN:
doc_e->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
insert_pt=SpriteElemNum2QueEntry(*_root,*_cur_elem_num); insert_pt=SpriteSetSettings(,*_root,*_cur_elem_num);
tempg=MAlloc(SpriteElemQuedBaseSize(SPT_SHIFT)); tempg=CAlloc(SpriteElemQuedBaseSize(SPT_SHIFT));
tempg->type=SPT_SHIFT; tempg->type=SPT_SHIFT;
tempg->p.x1=0; tempg->p.x1=0;
tempg->p.y1=0; tempg->p.y1=0;
@@ -1119,7 +1186,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_e,I64 x,I64 y,
1<<MSG_IP_L_UP+1<<MSG_IP_MOVE); 1<<MSG_IP_L_UP+1<<MSG_IP_MOVE);
tempg->p.x1=a1-xx; tempg->p.x1=a1-xx;
tempg->p.y1=a2-yy; tempg->p.y1=a2-yy;
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
} while (msg_code!=MSG_IP_L_UP); } while (msg_code!=MSG_IP_L_UP);
*_cur_elem_num+=1; *_cur_elem_num+=1;
break; break;
@@ -1130,7 +1197,7 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_e,I64 x,I64 y,
"'Insert shift sub-origin' after picking the\n" "'Insert shift sub-origin' after picking the\n"
"element to insert before. Or,\n" "element to insert before. Or,\n"
"use 'shift points'.\n"); "use 'shift points'.\n");
insert_pt=SpriteElemNum2QueEntry(*_root,*_cur_elem_num); insert_pt=SpriteSetSettings(,*_root,*_cur_elem_num);
unlock=DocLock(sys_clipboard_doc); unlock=DocLock(sys_clipboard_doc);
doc_e2=sys_clipboard_doc->root.next; doc_e2=sys_clipboard_doc->root.next;
while (doc_e2!=sys_clipboard_doc) { while (doc_e2!=sys_clipboard_doc) {
@@ -1155,24 +1222,16 @@ I64 SpriteEd(CDoc *doc,CDocEntry *doc_e,I64 x,I64 y,
} }
if (unlock) if (unlock)
DocUnlock(sys_clipboard_doc); DocUnlock(sys_clipboard_doc);
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
break;
case GED_DELETE:
cur_elem=SpriteElemNum2QueEntry(*_root,*_cur_elem_num);
if (cur_elem!=*_root) {
QueRem(cur_elem);
Free(cur_elem);
SpriteEdUpdate(doc,tempb,*_root);
}
break; break;
case GED_TEXT_ED: case GED_TEXT_ED:
if (SpriteEdText(_root,_cur_elem_num)) if (SpriteEdText(_root,_cur_elem_num))
SpriteEdUpdate(doc,tempb,*_root); SpriteEdUpdate(doc,doc_ce,*_root);
break; break;
} }
} }
} while (i!=DOCM_CANCEL && i!=GED_EXIT && i!=GED_MAIN_MENU); } while (i!=DOCM_CANCEL && i!=GED_EXIT && i!=GED_MAIN_MENU);
doc_e->de_flags=old_de_flags; doc_ce->de_flags=old_de_flags;
switch (i) { switch (i) {
case DOCM_CANCEL: return GE_ABORT; case DOCM_CANCEL: return GE_ABORT;
+939 -893
View File
File diff suppressed because it is too large. Load diff
+5 -3
View File
@@ -197,12 +197,14 @@ public I64 FileOcc(U8 *needle_str,
class CFind class CFind
{ {
U8 find_text[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"FIND :%s\"$$\n"; U8 find_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,"
U8 replace_text[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"REPLACE :%s\"$$\n"; "A=\"FIND :%s\"$$\n";
U8 replace_text[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,"
"A=\"REPLACE :%s\"$$\n";
Bool replace fmtstr "$$CB,\"REPLACE\"$$\n"; Bool replace fmtstr "$$CB,\"REPLACE\"$$\n";
Bool match_case fmtstr "$$CB,\"MATCH CASE\"$$\n"; Bool match_case fmtstr "$$CB,\"MATCH CASE\"$$\n";
Bool whole_labels fmtstr "$$CB,\"WHOLE LABELS\"$$\n"; Bool whole_labels fmtstr "$$CB,\"WHOLE LABELS\"$$\n";
U8 filemask[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"FILE MASK :%s\"$$\n"; U8 filemask[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"FILE MASK :%s\"$$\n";
Bool recurse fmtstr "$$CB,\"RECURSE\"$$\n"; Bool recurse fmtstr "$$CB,\"RECURSE\"$$\n";
}; };
+1 -1
View File
@@ -1,7 +1,7 @@
#help_index "Debugging/Heap" #help_index "Debugging/Heap"
#help_file "::/Doc/HeapDbg" #help_file "::/Doc/HeapDbg"
#define HL_CALLER_DEPTH 4 #define HL_CALLER_DEPTH 5 //Feel free to change this.
#define HL_HASH_SIZE 0x1000 #define HL_HASH_SIZE 0x1000
class CHeapLog class CHeapLog
-1
View File
@@ -10,6 +10,5 @@ Cd(__DIR__);;
#include "Profiler" #include "Profiler"
#include "StrUtils" #include "StrUtils"
#include "ToDolDoc" #include "ToDolDoc"
#include "ToHtml"
#include "ToTXT" #include "ToTXT"
Cd("..");; Cd("..");;
-4
View File
@@ -227,9 +227,5 @@ public U0 MemRep()
MemRepTask(c->idle_task,TRUE); MemRepTask(c->idle_task,TRUE);
"$$ID,-2$$"; "$$ID,-2$$";
} }
"$$GREEN$$Independent Heaps$$FG$$\n$$ID,2$$";
"$$BLACK$$dev.uncached_heap:%010X Used:%010X$$FG$$\n",
dev.uncached_heap->bp->alloced_u8s,dev.uncached_heap->used_u8s;
"$$ID,-2$$\n"; "$$ID,-2$$\n";
} }
+4 -2
View File
@@ -28,7 +28,8 @@ public CTaskSettings *SettingsPush(CTask *task=NULL,I64 flags=0)
task->animate_task=NULL; task->animate_task=NULL;
if (doc=DocPut(task)) { if (doc=DocPut(task)) {
tempse->cursor=!Bt(&doc->flags,DOCf_HIDE_CURSOR); tempse->hide_cursor=!Bt(&doc->flags,DOCf_HIDE_CURSOR);
tempse->highlight_cursor=!Bt(&doc->flags,DOCf_DONT_HIGHLIGHT_CURSOR);
tempse->scroll=!Bt(&doc->flags,DOCf_NO_SCROLL_BARS); tempse->scroll=!Bt(&doc->flags,DOCf_NO_SCROLL_BARS);
} }
@@ -63,7 +64,8 @@ U0 SettingsPop2(CTask *task,CTaskSettings *tempse)
CDoc *doc; CDoc *doc;
if (doc=DocPut(task)) { if (doc=DocPut(task)) {
LBEqu(&doc->flags,DOCf_HIDE_CURSOR,!tempse->cursor); LBEqu(&doc->flags,DOCf_HIDE_CURSOR,!tempse->hide_cursor);
LBEqu(&doc->flags,DOCf_DONT_HIGHLIGHT_CURSOR,!tempse->highlight_cursor);
LBEqu(&doc->flags,DOCf_NO_SCROLL_BARS,!tempse->scroll); LBEqu(&doc->flags,DOCf_NO_SCROLL_BARS,!tempse->scroll);
} }
+4 -5
View File
@@ -316,10 +316,10 @@ CDoc *WinCursorPosSet(CTask *task,I64 ipx,I64 ipy,Bool set_cursor=TRUE)
else { else {
x0=result->line_start_col; x0=result->line_start_col;
y0=result->top_line_num; y0=result->top_line_num;
DocRecalc(result,TRUE); DocRecalc(result,RECALCF_HAS_CURSOR);
result->x=(ipx-task->pix_left-task->scroll_x)/FONT_WIDTH +x0; result->x=(ipx-task->pix_left-task->scroll_x)/FONT_WIDTH +x0;
result->y=(ipy-task->pix_top -task->scroll_y)/FONT_HEIGHT+y0; result->y=(ipy-task->pix_top -task->scroll_y)/FONT_HEIGHT+y0;
DocRecalc(result,FALSE,DOC_RECALC_FIND_CURSOR); DocRecalc(result,RECALCt_FIND_CURSOR);
task->scroll_x=0; task->scroll_x=0;
task->scroll_y=0; task->scroll_y=0;
task->scroll_z=0; task->scroll_z=0;
@@ -440,10 +440,9 @@ U0 WinMgrTask(I64)
while (TRUE) { while (TRUE) {
try { try {
wmt_start: wmt_start:
if (Bt(&sys_run_level,RLf_ADAM_SERVER))
TaskKillDying;
WinMgrSleep; WinMgrSleep;
//We delay freeing in case lingering
//references are made to task's.
TaskFinishOffDying;
task=Fs->last_task; task=Fs->last_task;
while (TRUE) { while (TRUE) {
+5 -5
View File
@@ -23,11 +23,11 @@ U0 BgtIns(CBgtEntry *tempb)
class CBgtEntryForm class CBgtEntryForm
{ {
U8 date[512] fmtstr "$$DA-P,511,A=\"Date :%s\"$$\n"; U8 date[512] fmtstr "$$DA-P,LEN=511,A=\"Date :%s\"$$\n";
F64 amount fmtstr "Amount $$$$$$DA,511,A=\"%6.2f\"$$\n"; F64 amount fmtstr "Amount $$$$$$DA,A=\"%6.2f\"$$\n";
U8 credit[512] fmtstr "$$DA-P,511,A=\"Credit Acct:%s\"$$\n"; U8 credit[512] fmtstr "$$DA-P,LEN=511,A=\"Credit Acct:%s\"$$\n";
U8 debit [512] fmtstr "$$DA-P,511,A=\"Debit Acct:%s\"$$\n"; U8 debit [512] fmtstr "$$DA-P,LEN=511,A=\"Debit Acct:%s\"$$\n";
U8 desc [512] fmtstr "$$DA-P,511,A=\"Desc :%s\"$$\n"; U8 desc [512] fmtstr "$$DA-P,LEN=511,A=\"Desc :%s\"$$\n";
}; };
CBgtEntry *BgtEntryPmt(CBgtEntry *dft=NULL) CBgtEntry *BgtEntryPmt(CBgtEntry *dft=NULL)
+3 -3
View File
@@ -44,9 +44,9 @@ class CBgtTemplate
U0 start; U0 start;
U16 type fmtstr "$$LS,RT=U16,D=\"ST_BGT_TEMPLATE_TYPES\"$$\n"; U16 type fmtstr "$$LS,RT=U16,D=\"ST_BGT_TEMPLATE_TYPES\"$$\n";
U16 flags; U16 flags;
U8 start_date[16] fmtstr "$$DA-P,15,A=\"Start Date:%s\"$$\n"; U8 start_date[16] fmtstr "$$DA-P,LEN=15,A=\"Start Date:%s\"$$\n";
U8 end_date[16] fmtstr "$$DA-P,15,A=\"End Date :%s\"$$\n"; U8 end_date[16] fmtstr "$$DA-P,LEN=15,A=\"End Date :%s\"$$\n";
F64 period fmtstr "$$DA,511, A=\"Period :%6.2f\"$$\n"; F64 period fmtstr "$$DA,A=\"Period :%6.2f\"$$\n";
U0 end; U0 end;
CBgtEntry b; CBgtEntry b;
+3 -3
View File
@@ -13,9 +13,9 @@ class Ball
class BallDefineStruct class BallDefineStruct
{ {
F64 radius fmtstr "$$DA-TRM,32,RT=F64,A=\"Radius :%8.3f\"$$\n"; F64 radius fmtstr "$$DA-TRM,RT=F64,A=\"Radius :%8.3f\"$$\n";
I64 n_longitude fmtstr "$$DA-TRM,32,A=\"Longitude Faces:%5d\"$$\n"; I64 n_longitude fmtstr "$$DA-TRM,A=\"Longitude Faces:%5d\"$$\n";
I64 n_lattitude fmtstr "$$DA-TRM,32,A=\"Lattitude Rings:%5d\"$$\n"; I64 n_lattitude fmtstr "$$DA-TRM,A=\"Lattitude Rings:%5d\"$$\n";
}; };
U0 BDInit(BallDefineStruct *bd) U0 BDInit(BallDefineStruct *bd)
+28 -28
View File
@@ -14,66 +14,66 @@ class Man
class ManDefineStruct class ManDefineStruct
{ {
F64 head_rad fmtstr F64 head_rad fmtstr
"$$DA-TRM,32,RT=F64,A=\"Head Radius :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Head Radius :%8.3f\"$$\n";
F64 torso_len fmtstr F64 torso_len fmtstr
"$$DA-TRM,32,RT=F64,A=\"Torso Length :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Torso Length :%8.3f\"$$\n";
F64 arm_len fmtstr F64 arm_len fmtstr
"$$DA-TRM,32,RT=F64,A=\"Arm Length :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Arm Length :%8.3f\"$$\n";
F64 hand_len fmtstr F64 hand_len fmtstr
"$$DA-TRM,32,RT=F64,A=\"Hand Length :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Hand Length :%8.3f\"$$\n";
F64 leg_len fmtstr F64 leg_len fmtstr
"$$DA-TRM,32,RT=F64,A=\"Leg Length :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Leg Length :%8.3f\"$$\n";
F64 foot_len fmtstr F64 foot_len fmtstr
"$$DA-TRM,32,RT=F64,A=\"Foot Length :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Foot Length :%8.3f\"$$\n";
F64 torso_width fmtstr F64 torso_width fmtstr
"$$DA-TRM,32,RT=F64,A=\"Torso Width :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Torso Width :%8.3f\"$$\n";
F64 torso_depth fmtstr F64 torso_depth fmtstr
"$$DA-TRM,32,RT=F64,A=\"Torso Depth :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Torso Depth :%8.3f\"$$\n";
F64 arm_rad fmtstr F64 arm_rad fmtstr
"$$DA-TRM,32,RT=F64,A=\"Arm Radius :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Arm Radius :%8.3f\"$$\n";
F64 hand_rad fmtstr F64 hand_rad fmtstr
"$$DA-TRM,32,RT=F64,A=\"Hand Radius :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Hand Radius :%8.3f\"$$\n";
F64 leg_rad fmtstr F64 leg_rad fmtstr
"$$DA-TRM,32,RT=F64,A=\"Leg Radius :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"Leg Radius :%8.3f\"$$\n";
F64 foot_rad fmtstr F64 foot_rad fmtstr
"$$DA-TRM,32,RT=F64,A=\"Foot Radius :%8.3f\"$$\n\n"; "$$DA-TRM,RT=F64,A=\"Foot Radius :%8.3f\"$$\n\n";
F64 r_shoulder_a1 fmtstr F64 r_shoulder_a1 fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Shoulder Front/Back Angle:%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Shoulder Front/Back Angle:%8.3f\"$$\n";
F64 l_shoulder_a1 fmtstr F64 l_shoulder_a1 fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Shoulder Front/Back Angle:%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Shoulder Front/Back Angle:%8.3f\"$$\n";
F64 r_hip_a1 fmtstr F64 r_hip_a1 fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Hip Front/Back Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Hip Front/Back Angle :%8.3f\"$$\n";
F64 l_hip_a1 fmtstr F64 l_hip_a1 fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Hip Front/Back Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Hip Front/Back Angle :%8.3f\"$$\n";
F64 r_shoulder_a2 fmtstr F64 r_shoulder_a2 fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Shoulder Side Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Shoulder Side Angle :%8.3f\"$$\n";
F64 l_shoulder_a2 fmtstr F64 l_shoulder_a2 fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Shoulder Side Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Shoulder Side Angle :%8.3f\"$$\n";
F64 r_hip_a2 fmtstr F64 r_hip_a2 fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Hip Side Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Hip Side Angle :%8.3f\"$$\n";
F64 l_hip_a2 fmtstr F64 l_hip_a2 fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Hip Side Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Hip Side Angle :%8.3f\"$$\n";
F64 r_elbow_a fmtstr F64 r_elbow_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Elbow Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Elbow Angle :%8.3f\"$$\n";
F64 l_elbow_a fmtstr F64 l_elbow_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Elbow Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Elbow Angle :%8.3f\"$$\n";
F64 r_knee_a fmtstr F64 r_knee_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Knee Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Knee Angle :%8.3f\"$$\n";
F64 l_knee_a fmtstr F64 l_knee_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Knee Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Knee Angle :%8.3f\"$$\n";
F64 r_wrist_a fmtstr F64 r_wrist_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Wrist Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Wrist Angle :%8.3f\"$$\n";
F64 l_wrist_a fmtstr F64 l_wrist_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Wrist Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Wrist Angle :%8.3f\"$$\n";
F64 r_ankle_a fmtstr F64 r_ankle_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"R.Ankle Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"R.Ankle Angle :%8.3f\"$$\n";
F64 l_ankle_a fmtstr F64 l_ankle_a fmtstr
"$$DA-TRM,32,RT=F64,A=\"L.Ankle Angle :%8.3f\"$$\n"; "$$DA-TRM,RT=F64,A=\"L.Ankle Angle :%8.3f\"$$\n";
}; };
+1 -1
View File
@@ -388,7 +388,7 @@ $SP,"<17>",BI=17$
U0 PsmMenu(I64 psm_octave) U0 PsmMenu(I64 psm_octave)
{ {
DocClear; DocClear;
"$$BD,WHITE$$$$FD,GREEN$$$$CM,0,12$$\n"; "$$BG,WHITE$$$$FD,GREEN$$$$CM,0,12$$\n";
Sprite($IB,"<17>",BI=17$); Sprite($IB,"<17>",BI=17$);
'\n\n\n\n\n'; '\n\n\n\n\n';
+4 -2
View File
@@ -336,6 +336,7 @@ U0 Init()
ls[1].img=landscape_imgs[LANDSCAPE_TYPES-2]; //mountain ls[1].img=landscape_imgs[LANDSCAPE_TYPES-2]; //mountain
ls[2].img=landscape_imgs[LANDSCAPE_TYPES-1]; //castle ls[2].img=landscape_imgs[LANDSCAPE_TYPES-1]; //castle
MemSet(m,0,sizeof(m));
for (i=0,tempm=m;i<MAX_MAN;i++,tempm++) { for (i=0,tempm=m;i<MAX_MAN;i++,tempm++) {
if (i<MAX_FRIENDLY) { if (i<MAX_FRIENDLY) {
tempm->friendly=TRUE; tempm->friendly=TRUE;
@@ -353,9 +354,10 @@ U0 Init()
tempm->dead=FALSE; tempm->dead=FALSE;
tempm->x=xx+64*RandI32/MAX_I32+100; tempm->x=xx+64*RandI32/MAX_I32+100;
tempm->y=yy+64*RandU32/MAX_I32-64+100; tempm->y=yy+64*RandU32/MAX_I32-64+100;
tempm->corpse_timeout=0;
tempm->phase=2*ã*Rand;
tempm->best_dd=MAX_I64; tempm->best_dd=MAX_I64;
tempm->é=0;
tempm->phase=2*ã*Rand;
tempm->corpse_timeout=0;
} }
for (i=0;i<MAX_BULLETS;i++) for (i=0;i<MAX_BULLETS;i++)
b[i].dead=TRUE; b[i].dead=TRUE;
+4
View File
@@ -207,6 +207,10 @@ U0 CmpLoadDefines()
DefineLstLoad("ST_RAW_TYPES", DefineLstLoad("ST_RAW_TYPES",
" \0 \0I0\0U0\0I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0" " \0 \0I0\0U0\0I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0"
"F32\0UF32\0F64\0UF64\0"); "F32\0UF32\0F64\0UF64\0");
DefineLstLoad("ST_NATURAL_TYPES",
"I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0F64\0String\0");
DefineLstLoad("ST_INT_SIZE_TYPES",
"I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0");
DefineLstLoad("ST_TY_TYPES","NULL\0IMM\0REG\0DISP\0SIB\0RIP\0STK\0"); DefineLstLoad("ST_TY_TYPES","NULL\0IMM\0REG\0DISP\0SIB\0RIP\0STK\0");
DefineLstLoad("ST_U8_REGS","AL\0CL\0DL\0BL\0AH\0CH\0DH\0BH\0" DefineLstLoad("ST_U8_REGS","AL\0CL\0DL\0BL\0AH\0CH\0DH\0BH\0"
"R8u8\0R9u8\0R10u8\0R11u8\0R12u8\0R13u8\0R14u8\0R15u8\0"); "R8u8\0R9u8\0R10u8\0R11u8\0R12u8\0R13u8\0R14u8\0R15u8\0");
Binary file not shown.
+104 -97
View File
@@ -41,7 +41,7 @@ $LK,"ICU32",A="FL:::/Compiler/BackLib.CPP.Z,47",BI=32$
$LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=33$ $LK,"ICU24",A="FL:::/Compiler/BackLib.CPP.Z,41",BI=33$
$LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=34$ $LK,"ICU16",A="FL:::/Compiler/BackLib.CPP.Z,35",BI=34$
$LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,260"$ $LK,"SLASH_OP_DIV",A="FL:::/Compiler/BackLib.CPP.Z,260"$
$LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,236",BI=35$ $LK,"CmpFillTables",A="FL:::/Compiler/CInit.CPP.Z,240",BI=35$
$LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=36$ $LK,"AOTStoreCodeU32",A="FL:::/Compiler/AsmLib.CPP.Z,30",BI=36$
$LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=37$ $LK,"ICU64",A="FL:::/Compiler/BackLib.CPP.Z,53",BI=37$
$LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,254"$ $LK,"SLASH_OP_INC",A="FL:::/Compiler/BackLib.CPP.Z,254"$
@@ -334,102 +334,109 @@ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=262$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$ $LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,344",BI=264$ $LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,344",BI=264$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$
H2@o#o#x#~#™#ž#É#Ë#þ#è#$$&$9$¨+†j†jœj¤j¯j»jÆjåjÈjñj÷j÷jk+kVkokok™k»kÓkÀkßklòkl&lQlQlXlvl‰l‰l‰l“lH<J^õ^õxõ‚õ†õŠõ�õ‘õ­õÉõÉõÓõ|ªÅvùvù ù¢ù©ù¯ùµù·ù½ùÃùÊù×ùäù÷ùúúúú ú*ú:úMú]ú{ú�ú8~ß~߇ߌߗߠߧߩ߮ßd`µnÓnÓŒÓ�Ó�ÓŸÓ¬Ó®ÓºÓºÓÇÓÉÓÖÓØÓäÓäÓúÓÔÔÔÔ$Ô/Ô5Ô:Ô<ÔHÔOÔ^ÔiÔoÔtÔvÔ‚Ô²ÔØÔèÔøÔÕ H2@÷#÷#$$!$&$Q$S$†$p$–$�$®$Á$¨+kk$k,k7kCkNkmkPkykkk¦k³kÞk÷k÷k!lCl[lHlgl�lzl¡l®lÙlÙlàlþlmmmmH<Jæõæõö
ÕÕ*Õ:Õ:Õ?ÕYÕ`ÕgÕgÕgÕgÕnÕ„Õ�Ֆ՜բզզզÕÓÕÚÕðÕüÕÖÖÖÖÖÖDÃÖÖ4Ö7Ö:ÖGÖMÖZÖ]Ö`ÖfÖhÖrÖ,cj(‡(‡6‡@‡K‡V‡\‡b‡ jnVVdy ööööö5öQöQö[ö|ªÅþùþù(ú*ú1ú7ú=ú?úEúKúRú_úlúú�úœú¡ú£ú¨ú²úÂúÕúåúûû8àààà à(à/à1à6àd`µöÓöÓÔÔ%Ô'Ô4Ô6ÔBÔBÔOÔQÔ^Ô`ÔlÔlÔ‚Ô‹Ô‹Ô–Ô�Ô¬Ô·Ô½ÔÂÔÄÔÐÔ×ÔæÔñÔ÷ÔüÔþÔ
P ç5ç5õ566"64646?6H6N6U6[6 œ;^vEvE~E‚E›E®EÁEÞEÿEFF@FWFWFyFˆF‘FžF¥F×FäFèFðFðFGGGG Œ×öÆÆæîò  9OcqˆŽšŸ­ÌÕåçîîôô |1Ï"Ï"å"î"ù"###$#*#3#5#;#D#F#L#V#]#`#`#j#0 'p…p…~…ž…¤…ª…ª…°…„•²ÀœÀœÔœÛœâœæœ Õ:Õ`ÕpÕ€Õ�Õ’Õ¢Õ²ÕÂÕÂÕÇÕáÕèÕïÕïÕïÕïÕöÕ ÖÖÖ$Ö*Ö.Ö.Ö.Ö[ÖbÖxÖ„ÖŠÖ�Ö–Ö˜Ö˜Ö¦ÖDæּֿ֦ÖÂÖÏÖÕÖâÖåÖèÖîÖðÖúÖ,cj°‡°‡¾‡È‡Ó‡Þ‡ä‡ê‡ jnÞÞì
��$�5�Z�e�p�r�}�¢�­�¸�º�Á�Ê�Ì�×�Þ�ž("ÜÜÜ0ÜHÜHÜNÜ ¶Û¶ÛÅÛØÛÞÛƒ¯¯5¯<¯S¯_¯j¯|¯�¯~¯|¯­¯È¯Ô¯Û¯á¯í¯÷¯þ¯° ° °°°'°.°5°9°9°C°H°S°e°v°g°e°–°·°Ã°Ê°Ð°Ü°æ°í°ô°ø°ú°± ±±±$±(±(±5±C±S±e±v±g±e±–±·±Ã±Ê±Ð±Ü±æ±í±ô±ø±ú±² ²²²$²(²(²2²B²T²e²V²T²…²Œ²’²ž²¨²¯²¶²º²¼²Â²Î²Ø²ß²æ²ê²ê²ô²³ ³$³0³4³4³7³@³¶³ì{{+{É 3{E{a{l{~{…{–{ž{¦{©{·{ã{ã{ø{ú{ú{||| | |+|3|7|D|D|D|`|k|||||�|™|¨|­|³|¾|Ã|Ã|È|à|ï|ô|ú|} P o6o6}6Œ6¤6ª6¼6¼6Ç6Ð6Ö6Ý6ã6 œ;^þEþEF
} F#F6FIFfF‡F�F¡FÈFßFßFGGG&G-G_GlGpGxGxG‹G›GŸG£G Œ×öNNnvzˆŽ””Á×ëù"'5T]movv||Œ |1W#W#m#v#�#š#š#�#¬#²#»#½#Ã#Ì#Î#Ô#Þ#å#è#è#ò#0 'ø…ø…†&†,†2†2†8†„•²H�H�\�c�j�n�’�¥�¬�½�â�í�ø�ú�ž*ž5ž@žBžIžRžTž_žfž�ž("–ܖܥܸÜÐÜÐÜÖÜ >Ü>ÜMÜ`Üf܃˜¯˜¯½¯Ä¯Û¯ç¯ò¯°°°°5°P°\°c°i°u°°†°�°‘°“°™°¥°¯°¶°½°Á°Á°Ë°Ð°Û°í°þ°ï°í°±?±K±R±X±d±n±u±|±€±‚±ˆ±”±ž±¥±¬±°±°±½±Ë±Û±í±þ±ï±í±²?²K²R²X²d²n²u²|²€²‚²ˆ²”²ž²¥²¬²°²°²º²Ê²Ü²í²Þ²Ü² ³³³&³0³7³>³B³D³J³V³`³g³n³r³r³|³Š³“³¬³¸³¼³¼³¿³È³>´ì–{–{³{Q¡»{Í{é{ô{| ||&|.|1|?|k|k|€|‚|‚|Ž|–|š|§|§|³|»|¿|Ì|Ì|Ì|è|ó|}} }!}0}5};}F}K}K}P}h}w}|}‚}�}’}’} }©}µ}½}Å}Í}Ð}Ö}Û}ä}ö}ÿ}~ ~ ~%~-~5~8~>~>~C~C~C~I~L~S~^~s~˜~¯~¼~Ä~Ì~Ø~ä~ê~ñ~ú~þ~   -==JJRZcrww~‰�—�¨­­¼ÇÙßçíòý€€€#€(€(€<€B€M€S€U€e€k€k€�€´€¹€¹€Í€Ó€é€ú€���$�4�<�D�J�O�O�c�i����–�›�´�º�Ê�Ò�Ú�à�å�å�û�‚‚(‚.‚3‚B‚H‚Y‚a‚i‚o‚v‚{‚{‚‘‚—‚­‚¾‚ĂƂՂۂå‚í‚õ‚û‚ƒƒƒƒƒ.ƒ>ƒ>ƒCƒCƒQƒYƒjƒ}ƒ„ƒŠƒ’ƒ˜ƒ¨ƒ®ƒ¶ƒ¼ƒ¼ƒ¼ƒÁƒÁƒÁƒÁƒÁƒàƒìƒñƒñƒ„„„$„/„:„?„?„U„[„q„‚„ˆ„�„Ÿ„¥„ª„Äá„á„æ„æ„ò„ú„ý„… ………2…:…B…R…X…^…^…o…�…�…’…’…ž…¦…©…°…¶…»…»…Û…ã…ó…ù…††-†5†M†U†X†_†e†}†…†�†¥†¨†¯†µ†µ†µ†Ô†ä†ð†ø†û†‡‡‡'‡3‡N‡V‡Y‡`‡f‡~‡Ї¥‡­‡°‡·‡½‡½‡½‡½‡‡‡ˇÛ‡ñ‡÷‡ˆ"ˆ(ˆ-ˆ?ˆEˆJˆfˆlˆxˆ€ˆƒˆŠˆ�ˆ¹ˆÁˆш׈ÞˆÞˆÞˆãˆãˆìˆ‰‰ ‰8‰K‰Q‰V‰�‰‡‰š‰щã‰ÿ‰Š ŠŠŠ,Š8ŠDŠOŠOŠTŠTŠnŠzІББЖЖамŠÈŠÓŠÓŠØŠØŠîŠôŠ‹‹ ‹‹#‹(‹7‹C‹O‹U‹[‹b‹u‹€‹‰‹•‹�‹ ‹¦‹¬‹±‹Å‹Ô‹Ü‹ô‹ü‹ÿ‹Œ Œ#Œ+ŒKŒeŒmŒpŒvŒ|Œ|Œ�Œ–Œ¢ŒªŒ­Œ´ŒºŒ¿ŒÑŒàŒèŒ�� ���0�8�W�q�y�|�ƒ�‰�‰�™�¢�®��¹�¿�Å�Ê�Þ�í�õ�ŽŽŽ Ž&Ž>ŽFŽhŽ„ŽŒŽ�ޕޛޛެ޵ŽÁŽÉŽÌŽÓŽÙŽÞŽðŽÿŽ�"�*�-�4�:�R�Z�|�™�¡�¤�«�±�±�±�±�±���Ì�Ò�Þ�ä�é�û���� �)�5�=�@�G�M�R�d�s�{�“�›�ž�¥�«�Ã�Ë�ê�‘ ‘‘‘‘‘‘-‘6‘B‘J‘M‘T‘Z‘_‘q‘€‘Œ‘§‘¯‘²‘¹‘¿‘בã‘’"’*’-’4’:’:’:’:’:’?’?’R’m’s’~’ƒ’ƒ’–’¬’²’½’¿’¿’Ò’õ’û’“““!“2“7“I“Y“Y“^“^“q“‡“�“›“ª“¯“¯““ؓޓì“û“””””9”Q”Q”{”�”†”’”›”ª”ª”¯”¯”Ŕ˔蔕•*•0•5•A•J•Y•Y•^•^•t•z•—•¯•¯•Ù•ß•ä•ð•ù•–– – –#–)–F–^–^–ˆ–Ž–�–œ–¥–°–°–°–°–µ–ÖÌ–Ý–ß–ñ–þ–þ–þ–——#—G—S—T—Y—n—‹—›—¿—Ï—Õ—Õ—Õ—Ú—ß—ô—˜E˜U˜[˜]˜b˜s˜‚˜´˜¼˜˜ĘɘИИÙ˜ë˜þ˜™™™™ ™/™8™C™E™N™Y™Y™z™�™‡™�™š™ ™°™¶™¾™É™Ï™Ï™Ô™Ù™à™ç™î™õ™þ™ š š šššš$š)š)š;šFšNšVš\š\š\šašašlš}š€šŒš•š¡š¨š®š³š³š¾šÏšÒšÞšçšóšúš›››››
}}!}-}5}=}E}H}N}S}\}n}w}ˆ}˜}˜}�}¥}­}°}¶}¶}»}»}»}Á}Ä}Ë}Ö}ë}~'~4~<~D~P~\~b~i~r~v~y~…~‹~’~—~—~¥~µ~µ~Â~Â~Ê~Ò~Û~ê~ï~ï~ö~ %%4?QW_eju‡�•›  ´ºÅËÍÝãã€,€1€1€E€K€a€r€x€}€–€œ€¬€´€¼€€Ç€Ç€Û€á€÷€���,�2�B�J�R�X�]�]�s�y��� �¦�«�º�À�Ñ�Ù�á�ç�î�ó�ó� ‚‚%‚6‚<‚>‚M‚S‚]‚e‚m‚s‚z‚z‚z‚Œ‚•‚¦‚¶‚¶‚»‚»‚ɂтâ‚õ‚ü‚ƒ ››››››&›/›2›2›=›?›Q›X›^›m›x›ƒ›‰›’›–›–›¢›«›®›®›¹›»›Í›Ô›Ú›â›í›ø›þ›œ œœœœœ!œ#œ.œ2œ;œ>œ>œIœKœcœjœuœ€œƒœ‰œŽœŽœ•œ™œ™œ¥œ®œ±œ±œ¼œ¾œМלÝœìœ÷œ�����!�*�-�-�8�:�L�S�Y�a�l�w�}�‡�Š�Ž�Ž�–��� �¢�­�±�º�½�½�È�Ê�â�é�ô�ÿ�žž ž ž ž#ž#ž/ž8ž;ž;žFžHžZžažgžyž„ž�ž•žšžšž¥žªžªžµžºžºžÅžÈžÌžÓžØžÝžâžâžöžûžûžŸ ŸŸ%Ÿ)Ÿ=ŸDŸHŸHŸUŸaŸiŸoŸŸƒŸ”Ÿ¦Ÿ±ŸµŸµŸŸÊŸÒŸØŸØŸØŸØŸØŸÚŸÚŸèŸïŸüŸ                                                                                                             / 7 C C d r Š Œ ˜ ¥ ¥ È Õ à é ò ý ¡¡¡¡¡#¡A¡M¡M¡|£x¿Ù_4_4q4s4w4€4Œ4˜4­4­4Ù4Ý4â4î45 5555$5.5°›ÃŽŒŽŒ¤Œ«Œ¼ŒÁŒÖŒÃŒâŒèŒèŒôŒ �ùŒ���+�0�E�2�Q�T�T�`�u�b���‡�‡�š�­�À�Ó�æ�ð�„ž.x.xLx^xdxkxrxtxwx~x…x…x¡x¥x«x«xÃx×xèxèxðxy4yUyZy{y€yŒy—yœy©y¬yãyôyùyÿyzz
ƒƒ ƒ&ƒ.ƒ4ƒ4ƒ4ƒ9ƒ9ƒ9ƒ9ƒ9ƒXƒdƒiƒiƒƒˆƒ“ƒœƒ§ƒ²ƒ·ƒ·ƒ̓Óƒéƒúƒ„„„„"„;„Y„Y„^„^„j„r„u„{„�„†„†„ª„²„º„Ê„ЄÖ„Ö„ç„…… zz z#z+z4zOzoz†z™zžz¢zÄz×zÜzóz{ {{1{L{l{{„{•{š{�{Ÿ{¥{«{¼{Á{Ç{Ï{Ï{Ù{â{ù{ |||7|R|r|…|Š|¥|Å|Ü|ï|ô|ø|}-}-}H}H}H}V}n}p}p}p}~}–}˜}˜}¦}¾}¾}Ð}Ð}Ù}æ}ü}~6~=~G~Z~^~^~^~e~k~…~Œ~–~®~°~¶~Ð~×~á~ï~ú~ú~H‰—PƒPƒgƒ}ƒ�ƒ”ƒ«ƒÆƒØƒÜƒ „Líü^�^�r�~�”�€� �¢�µ�È�Ó�Þ�æ�4IR~Ó~Ó‡Ó‡ÓŠÓ˜Ó¦Ó©Ó®Óä;ÖóÖóþóô ô6ôGôGôbôhômômôˆôŽô“ô“ôœôªô¶ô½ôÃôÈô õõõ"õ$õ$õ7õ=õ=õ=õMõBõ^õmõõ„õ„õ„õ‹õ’õ™õ®õµõÑõÑõãõÐL¼¢¢¢%¢0¢9¢A¢D¢K¢O¢X¢i¢m¢s¢�¢ž¢«¢º¢¿¢Ë¢Ð¢×¢ã¢è¢ë¢õ¢í¢££ £££-£6£<£<£J£M£a£j£s£z£~£ƒ£š£²£»£É£å£ñ£ñ£ ¤¤¤!¤=¤I¤Q¤d¤k¤¤ˆ¤�¤“¤ž¤£¤ª¤Ç¤ô¤û¤ÿ¤¥ ¥¥¥1¥3¥D¥N¥Y¥c¥r¥�¥�¥�¥ ¥¨¥­¥/¦Xs…vHvH“H¤H±H»HÒHïH III*I0I3I?IŒ à_à_ð_`` ` ` ` `(`(`/`I`Z`b`b`m`m`{`‹`‹`™`Ÿ`Ÿ`·`·`½`ã`(kqð‡ð‡þ‡
… ˆˆ!ˆ'ˆ @Ua®æ®æ¼æÄæËæêæ÷æ÷æúæüæç $/4.Ý.Ý;ÝIÝNÝTÝ!$).ÝÝÝ!Ý&Ý,Ý"$#(ÖÜÖÜåÜôÜùÜÿÜ#4ðy__k{‘™£»ÀÐæîø  % 5 K S ] u � ‰ “ £ ¨ ¾ È Ò Ü æ ð ú    " , 6 @ V ` j t ~ ˆ ’ œ ¦ ¼ Æ Ð æ ð ú !!!"!,!6!@!J!T!^!h!r!|!†!�!š!¤!®!¸!Â!Ì!Ö!à!ê!ô!þ!""""$¨DH™H™^™e™l™z™‹™�™Ÿ™¦™¬™¼™Ç™Ñ™Ü™ó™ö™ø™
………!…(….…3…3…S…[…k…q…x…–…¥…­…Å…Í…Ð…×…Ý…õ…ý…†† †'†-†-†-†L†\†h†p†s†z†€†�†Ÿ†«†ƆΆц؆Þ†ö†‡‡%‡(‡/‡5‡5‡5‡5‡:‡:‡C‡S‡i‡o‡‡‡š‡ ‡¥‡·‡½‡‡Þ‡ä‡ð‡ø‡û‡ˆˆ1ˆ9ˆIˆOˆVˆVˆVˆ[ˆ[ˆdˆ|ˆ’ˆ˜ˆ°ˆÈɈΈùˆÿˆ‰I‰[‰w‰‰…‰ЉЉ¤‰°‰¼‰ljlj̉̉æ‰ò‰þ‰ Š ŠŠŠ(Š4Š@ŠKŠKŠPŠPŠfŠlŠxŠ~ŠƒŠ•Š›Š Š¯Š»ŠÇŠÍŠÓŠÚŠíŠøŠ‹ ‹‹‹‹$‹)‹=‹L‹T‹l‹t‹w‹}‹ƒ‹›‹£‹ËÝ‹å‹è‹î‹ô‹ô‹ŒŒŒ"Œ%Œ,Œ2Œ7ŒIŒXŒ`ŒxŒ€ŒƒŒŠŒ�Œ¨Œ°ŒÏŒéŒñŒôŒûŒ����&�.�1�7�=�B�V�e�m�‡���’�˜�ž��¾�à�ü�ŽŽ ŽŽŽ$Ž-Ž9ŽAŽDŽKŽQŽVŽhŽwŽŽšŽ¢Ž¥Ž¬Ž²ŽÊŽÒŽôŽ���#�)�)�)�)�)�.�.�D�J�V�\�a�s�y�~�Œ�˜�¡�­�µ�¸�¿�Å�Ê�Ü�ë�ó� ����#�;�C�b�|�„�‡�Ž�”�”�”�¥�®�º�Â�Å�Ì�Ò�×�é�ø�‘ ‘'‘*‘1‘7‘O‘[‘}‘𑢑¥‘¬‘²‘²‘²‘²‘²‘·‘·‘Ê‘å‘ë‘ö‘û‘û‘’$’*’5’7’7’J’m’s’~’~’�’™’ª’¯’Á’Ñ’Ñ’Ö’Ö’é’ÿ’““"“'“'“:“P“V“d“s“x“x“Ž“”“±“ɓɓó“ù“þ“ šš š*š4š;šFš[šcšcšyšyšyš�š%$5:VÝVÝdÝsÝxÝ~Ý&¨Ek�š�š¦š­š´šÂšÓšåšçšîšôš›››$›;›>›@›R›Y›i›s›}›„›�›£›«›«›Á›Á›Á›Ö›'(&,0000&0,020(0_g¦G¦G¼GÏGÞGäGçGïG)  ßž ž À È Î Û â þ       ( / ; F L V ] n n y ƒ ƒ • › « ± ½ ½ Þ ä ó ! !!!!!!#!%!%!%!6!@!E!E!Z!d!d!x!�!‡!�!£!¨!¯!Â!Æ!Æ!Î!Ô!Ú!ä!ë!ò!û! " "2"6"<"B"Q"d"j"n"t"z"€"€"‚"†"Œ"’"˜"�"�"�"�"È"Ù"Ù"ð"ý"# ##>#>#D#G#K#Q#Q#c#t#‰#�#¥#¶#º#Ë#Ï#Õ#î#ð#ö#$$$/$5$@$c$n$t$z$€$‰$�$¤$²$º$¾$Ï$Ó$Ù$ò$ô$ú$% %%3%9%?%E%N%T%q%d%‹%”%š%š%¯%´%´%»%Â%Ô%Ù%Ù%Ù%ó%õ%&&+&1&9&=&D&g&m&s&&–&�&£&®&³&³&º&¾&Å&Ó&Õ&Ý&â&ê&õ&û&' ''' '$'3'N'^'k'z'–'˜'´'´'»'Ð'Õ'Þ'ë'ð'ö'û'û'(( (((%()(-(7(C(J(N(V(^(f(u(ƒ(ˆ(”(”(œ(œ(¿(¿(Í(Ó(Ø(Ü(á(á(á(á(ç(é(é( ))) )5)7)7)7)B)B)B)G)p**4+tFÅFÅ`ÅdÅ|ńŌŖŚšŧŻÅÃÅÈÅËÅÖÅáÅéÅôÅÿÅÆÆÆ%Æ0Æ;Æ=ÆHÆSÆUÆaÆjÆjƀƊơƧƭƾÆÄÆÍÆßÆåÆåÆíÆñÆüÆÇÇÇ"Ç0Ç2Ç6ÇEÇEÇEÇVÇVÇ[ÇmÇsÇáÇ+Ô@6á6áLáSáVázázá—áªá½áÐáÕáÕáóáââ'â/â/â1â1â1âDâFâFâFâMâ`âsâsâsâ†â‘â¤âºâ¿âÃâÊâßâòâùâùâüâ!ã,LAPÇ$Ç$Õ$æ$ò$ %%2%4%O%j%j%r%y% %-P~Žxˆxˆ†ˆ“ˆ¡ˆ³ˆ¾ˆÌˆÙˆçˆùˆ‰‰‰‰.4
””"”"”'”'”=”C”`”x”x”¢”¨”­”¹””єє֔֔ì”ò”•'•'•Q•W•\•h•q•€•€•…•…•›•¡•¾•Ö•Ö•–––––(–(–(–(–-–;–D–U–W–i–v–v–v–†–––›–¿–Ë–Ì–Ñ–æ–——7—G—M—M—M—R—W—l——½—Í—Ó—Õ—Ú—ë—ú—,˜4˜:˜<˜A˜H˜H˜Q˜c˜v˜˜Ž˜Ž˜“˜˜˜§˜°˜»˜½˜Ƙјјò˜ù˜ÿ˜™™™(™.™6™A™G™G™L™Q™X™_™f™m™v™…™…™…™Š™Š™Š™œ™¡™¡™³™¾™Æ™ΙÔ™Ô™Ô™Ù™Ù™ä™õ™ø™š šš š&š+š+š6šGšJšVš_škšršxš}š}š}š}š‚š‡š‡šŽš’š’šžš§šªšªšµš·šÉšКÖšåšðšûš› 66%616B6T6]6g6m6/|¼Wîî&1WW`bbi�——¦µÑÜÜèïÿ#.0IOZj|…�•›¢ÇÌÚããêù %9@GLW]e‹”› «·ÆÚßçó   # + ; M S \ \ k q … Ž ž ­ ¿ È Ø ë ó 
››››#›&›&›1›3›E›L›R›Z›e›p›v›€›ƒ›‡›‡›�›–›™›››¦›ª›³›¶›¶›Á›ÛÛ›â›í›ø›û›œœœ œœœœ&œ)œ)œ4œ6œHœOœUœdœoœzœ€œ‰œ�œ�œ™œ¢œ¥œ¥œ°œ²œÄœËœÑœÙœäœïœõœÿœ�������%�)�2�5�5�@�B�Z�a�l�w�z�€�…�…�—�›�›�§�°�³�³�¾�À�Ò�Ù�ß�ñ�ü�ž žžžž"ž"ž-ž2ž2ž=ž@žDžKžPžUžZžZžnžsžsž€ž„ž•ž�ž¡žµž¼žÀžÀžÍžÙžážçž÷žûž ŸŸ)Ÿ-Ÿ-Ÿ:ŸBŸJŸPŸPŸPŸPŸPŸRŸRŸ`ŸgŸtŸ€ŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸŽŸ�Ÿ�Ÿ§Ÿ¯Ÿ»Ÿ»ŸÜŸêŸ     @ M X a j u | | † † ‰ › ¹ Å Å ô¢x¿Ù×3×3é3ë3ï3ø344%4%4Q4U4Z4f4y4ƒ4†4‘4”4œ4¦4°›ÃŒŒŒ#Œ4Œ9ŒNŒ;ŒZŒ`Œ`ŒlŒ„ŒqŒ�Œ“Œ•Œ£Œ¨Œ½ŒªŒÉŒÌŒÌŒØŒíŒÚŒùŒÿŒÿŒ�%�8�K�^�h�„ž¦w¦wÄwÖwÜwãwêwìwïwöwýwýwxx#x#x;xOx`x`xhxŒx¬xÍxÒxóxøxyyy!y$y[ylyqywyyyy‚y“y˜y›y£y¬yÇyçyþyzzz<zOzTzkz~zƒz‡z©zÄzäz÷züz {{{{{#{4{9{?{G{G{Q{Z{q{„{‰{�{¯{Ê{ê{ý{||=|T|g|l|p|’|¥|¥|À|À|À|Î|æ|è|è|è|ö|}}}}6}6}H}H}Q}^}t}”}®}µ}¿}Ò}Ö}Ö}Ö}Ý}ã}ý}~~&~(~.~H~O~Y~g~r~r~Œ~H‰—ȂȂ߂õ‚ƒ ƒ#ƒ>ƒPƒTƒ—ƒLíüÖŽÖŽêŽöŽ �øŽ��-�@�K�V�^�4IRöÒöÒÿÒÿÒÓÓÓ!Ó&Óä;NóNóvóyó—ó®ó¿ó¿óÚóàóåóåóôô ô ôô"ô.ô5ô;ô@ôƒô�ô”ôšôœôœô¯ôµôµôµôÅôºôÖôåô÷ôüôüôüôõ (
õõ&õ-õIõIõ[õÐL¼x¡x¡’¡�¡¨¡±¡¹¡¼¡Ã¡Ç¡Ð¡á¡å¡ë¡ù¡¢#¢2¢7¢C¢H¢O¢[¢`¢c¢m¢e¢}¢†¢—¢•¢�¢¥¢®¢´¢´¢Â¢Å¢Ù¢â¢ë¢ò¢ö¢û¢£*£3£A£]£i£i£�£’£’£™£µ£Á£É£Ü£ã£÷£¤¤ ¤¤¤"¤?¤l¤s¤w¤y¤„¤�¤”¤©¤«¤¼¤Æ¤Ñ¤Û¤ê¤ù¤¥¥¥ ¥%¥§¥Xs…îGîG HH)H3HJHgH…H‹H”H¢H¨H«H·HŒ X_X_h_‰_‰_—_—_—_—_ _ _§_Á_Ò_Ú_Ú_å_å_ó_`````/`/`5`[`(kqh‡h‡v‡‚‡’‡™‡Ÿ‡ @Ua&æ&æ4æ<æCæbæoæoærætæzæ $/4¦Ü¦Ü³ÜÁÜÆÜÌÜ!$).~Ü~܋ܙܞܤÜ"$#(NÜNÜ]ÜlÜqÜwÜ#4ìu××ãó 38H^fpˆ��­ÃËÕíù  6 @ J T ^ h r | † � š ¤ ® ¸ Î Ø â ì ö ?
  4 > H ^ h r | † � š ¤ ® ¸ Â Ì Ö à ê ô þ !!!&!0!:!D!N!X!b!l!v!€!Š!š!$¨DÀ˜À˜Ö˜Ý˜ä˜ò˜™™™™$™4™?™I™T™k™n™p™‚™ˆ™˜™¢™¬™³™¾™Ó™Û™Û™ñ™ñ™ñ™š%$5:ÎÜÎÜÜÜëÜðÜöÜ&¨Ekššš%š,š:šKš]š_šfšlš|š‡š‘šœš³š¶š¸šÊšÑšášëšõšüš››#›#›9›9›9›N›'(&,//�/”/ž/¤/ª/(0_gGG4GGGVG\G_GgG)  ß  8 @ F S Z v | | | ‰ ‹ –   § ³ ¾ Ä Î Õ æ æ ñ û û   # ) . 5 5 V \ k ~ „ ‡ � � � • › � � � ® ¸ ½ ½ Ò Ü Ü ð ù ÿ !! !'!:!>!>!F!L!R!\!c!j!s!…!…!ª!®!´!º!É!Ü!â!æ!ì!ò!ø!ø!ú!þ!" C
""""""@"Q"Q"h"u"y"�"–"¶"¶"¼"¿"Ã"É"É"Û"ì"###.#2#C#G#M#f#h#n#{#}#‰#§#­#¸#Û#æ#ì#ò#ø#$$$*$2$6$G$K$Q$j$l$r$$�$�$«$±$·$½$Æ$Ì$é$Ü$% %%%'%,%,%3%:%L%Q%Q%Q%k%m%‡%‰%£%©%±%µ%¼%ß%å%ë%÷%&&&&&+&+&2&6&=&K&M&U&Z&b&m&s&&„&Š&�&—&œ&«&Æ&Ö&ã&ò&'',','3'H'M'V'c'h'n's's'z'~'…'“'•'�'¡'¥'¯'»'Â'Æ'Î'Ö'Þ'í'û'( ( (((7(7(E(K(P(T(Y(Y(Y(Y(_(a(a(„(Š(�(—(­(¯(¯(¯(º(º(º(¿(è)*4+t¾Ä¾ÄØÄÜÄôÄüÄÅÅÅÅ Å3Å;Å@ÅCÅNÅYÅaÅlÅwÅyÅ�Å–Å�ŨųŵÅÀÅËÅÍÅÙÅâÅâÅøÅÆÆ Æ%Æ6Æ<ÆEÆWÆ]Æ]ÆeÆiÆtÆyƋƖƚƨƪƮƽƽƽÆÎÆÎÆÓÆåÆëÆYÇ+Ô@®à®àÄàËàÎàòàòàá"á5áHáMáMákáyáŒáŸá§á§á©á©á©á¼á¾á¾á¾áÅáØáëáëáëáþá ââ2â7â;âBâWâjâqâqâtâ™â,LAP?$?$M$^$j$…$Š$ª$¬$Ç$â$â$ê$ñ$%-P~Žð‡ð‡þ‡ ˆˆ+ˆ6ˆDˆQˆ_ˆqˆ|ˆŠˆ�ˆ–ˆ.4 O
�5�5�5©5º5Ì5Õ5ß5å5/|¼Wffˆ�ž©ÏÏØÚÚá-ITT`gw}›¦¨ÁÇÒâôý ?DR[[bqˆˆ—�±¸¿ÄÏÕÝ #/>RW_k}}”›£³ÅËÔÔãéý  % 7 @ P c k    · » Ç Þ ú  f
 ‚
 ”
) š
9 ¥
I ±
N Á
W Ñ
W Ö
i ß
m ß
y ñ
� õ
¬   4 F L W c s ƒ • › ›   ¢ ¢ § §  ¼   Æ ?0�ÄäþÖþÖ×&×*×.×5×<×K×V×\×a×c×o×v×~ׄ׊׎׎×�×¤×¬×²×¸×º×º×Æ×18 ?/?/M/S/_/j/{/…/Œ/’/2@}‰öçöçèèè5èBèBèEèGèMè3ðh 66\ow~…‹�”›žž°°ÃÎê#+0AWgy~˜°´´¹åú>FOW\m�¡£½ÕÙÙõ%.6;Lbr„‰£»¿ÒÒÒê×
¾ ÷#)AY^s�·¿ÈÐÕæø6NRRn–ž§¯´ÅÛëý48KKKPp�œ¢ºÒÒÒÞäïú 3JaxxŒ¨¨¨ÉÙççðû $ 3 : J L R i x q Ž Ÿ º º Ó 4D}ŠffvŠ“™««¯²º5\Ob‡‡(‡7‡@‡I‡M‡Q‡]‡b‡g‡g‡x‡|‡ƒ‡›‡ž‡ª‡60ýÞßÞßçßìßõßüßþßà7Ð1>>\cju}––ªÃÃÎÒÝä'5KOTfŽ¥ª²»âøüü I(Urr‘œ¢¸ÉÎà $,02Yos�·¿ÄÈÍÞô4EI[[[[`|¼›Èåðö ">fnsw|�Ÿ­ÁÃÜíññ+BGOSU|’–££££¼ÆÍà÷÷#11GWe|�”š°¿¸Ôäëù<eeer«°»ÁÌëò$2J`dt“¿¯Ëè.?DZpt�¸ÀÅÉÎßõ5FJ\\\\a}œË»×ôÿ,1Mu}‚†‹œ®¼ÐÒëü 5KO\\\ou†™°°°ÌÜêê%9LQWm|u‘¡¯ÌÌèèõ58Do|2;ASSWZb9°Äìö�ö� ŽŽ$Ž)Ž>Ž+ŽJŽPŽPŽ\ŽtŽaŽ€ŽƒŽ…Ž“Ž˜Ž­ŽšŽ¹Ž¼Ž¼ŽÈŽÝŽÊŽéŽïŽïŽ��(�;�N�X�:<‹–¾¾Îßèîòý;”)æéæéîéòéþéêê!ê,ê>êIêTêcêtê{ê”ê˜ê¥ê¥ê¯ê¶êÉêÒêàêôêëë2ë<d(=8†8†D†X†[†o†w†{†…†�†—†š† †=$t¹ÀEÀEäEçEëEøEF FF F*FRFRF^F`F`FlFqFqF}F‚F‚FŽF“F“FŸF¤F¤F°FµFµFÁFÆFÆFÒF×F×F×FÚFÚFóFGG%G%G'G'G3G9G>G>GDGPGPG[GgGtG‰G‘G—G—G¨G¨G±G´GH>è w~£~£›£££¦£´££×£à£ø£¤ ¤+¤<¤@¤R¤U¤`¤i¤u¤ˆ¤¹¤®¤”¤ɤݤî¤ú¤¥&¥8¥\¥m¥o¥�¥v¥«¥«¥®¥³¥¶¥¶¥½¥Ô¥Û¥è¥í¥ü¥ ¦¦¦0¦4¦a¦a¦y¦~¦~¦ަ–¦¦¦°¦À¦ʦÚ¦æ¦ë¦ë¦û¦§§§-§7§G§S§X§X§X§z§ˆ§’§—§¤§¹§¹§¾§ȧ×§ܧâ§ç§ç§ì§ö§¨
Ä ¨¨¨¨¨!¨&¨&¨5¨H¨T¨a¨m¨€¨ˆ¨ލ—¨®¨¨Ó¨à¨å¨ý¨©'©4©<©O©W©]©f©o©o©t©t©t©t©t©€©€©€©‰©¢©·©¿©Ú©ë©ø©ú©ªªªªª,ª1ª1ª8ªFªKªcªoª�ª�ª“ª¢ª¦ª¯ª¸ªÕªáªçªíª«««=«N«[«]«k«k«p«p«w«…«Š«�«©«µ«»«¿«È«Í«Í«Í«Í«Í«å«ê«ê«ê«ê«ê«û«û«û«û«û«û«û«û«û«û«¬¬2¬:¬U¬f¬s¬u¬‰¬•¬š¬š¬š¬£¬½¬ɬάð¬ü¬ü¬­­­­­­­­­­­­,­7­<­<­G­Y­q­ƒ­¤­Ä­Ï­à­å­å­å­î­®®*®.®F®V®^®f®q®›®¤®¨®À®ЮЮЮЮЮò®+¯4¯8¯>¯C¯L¯U¯Z¯Z¯Z¯Z¯i¯}¯›¯¦¯«¯±¯¶¯¶¯ɯݯ°°°°°!°!°0°D°b°m°r°x°}°}°�°¤°ʰÕ°ݰã°ã°è°è°è°ñ°
Ï ± ±'±B±S±`±b±q±s±s±s±s±s±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±‡±–±¥±°±²±²±»±½±½±ѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱѱÓ±Ó±ê±ò±þ±þ±²²²2²G²V²b²x²’²•²Ÿ²«²Ѳñ²³5³7³J³x³P³“³“³–³¦³®³ɳÚ³ݳ÷³´´)´)´T´W´f´z´›´¬´È´´´ä´ö´µGµEµ:µ/µ µUµUµUµXµ]µ`µzµˆµ¶µصص)¶J¶[¶w¶c¶“¶“¶±¶ä¶â¶×¶̶½¶ò¶ò¶ò¶õ¶ú¶ú¶··2·>·“º?°«ÓfÀfÀ|À€À‹À’À�À±À±À¼ÀÍÀÔÀáÀíÀúÀÁÁÁÁ!Á)Á9ÁGÁVÁaÁtÁtÁ‡Á‡Á�ÁÉÁÉÁÝÁßÁßÁéÁñÁñÁûÁ Â&Â+Â+Â/Â7Â;ÂAÂFÂFÂRÂgÂwÂ�”™¡¡¦¦­¹ÂÎÂÞÂèÂðÂö ÃÃÃÃÃ!Ã(Ã3Ã[ÃfÃuÃÇÃ�ßåêêêêêêêêêõÃÁÃÎÃÞÃäÃìÃÿÃÄ ÄÄÄÄÄÄ&Ä.Ä7Ä?ÄDÄLÄQÄXÄcċĖĞĭķÄÉÄÎÄÔÄÙÄÙÄàÄòÄúÄ ÅÅÅ2Å4Å?ÅGÅ\Å\ÅdÅxŀŇÅ�őŕŤũŵÅËÅ×ÅßÅôÅÆÆÆÆ!Æ!Æ!ÆBÆ\ÆaÆiÆxƀƈÆ�ƢƭƵÆÊÆÏÆÏÆÛÆñÆýÆÇÇ&Ç+Ç7ÇBÇGÇGÇGÇGÇGÇGÇRÇRÇRÇRÇRÇRÇRÇRÇRÇRÇRÇRÇ]Ç}ǚǪǰǸÇËÇÐÇØÇàÇâÇêÇýÇÈ ÈÈÈ5È=ÈFÈNÈVÈ[È`ÈgÈrÈšÈ¥È­È¼ÈÆÈßÈäÈìÈñÈñÈñÈúÈÉÉÉÉ0É2ÉDÉVÉVÉVÉaÉfɃɈɈɑɖɖɖɖɖɖɖɖɖɖɖɖɖɖɖɖɡɭɹÉÙÉìÉôÉÊÊ!Ê(Ê5Ê=ÊFÊNÊUÊZÊZÊbÊjʆʎʑʓʣʭʭʭʯÊÂÊÓÊÖÊÙÊáÊæÊæÊïÊôÊüÊËË)Ë0Ë5ËMËWËrˋ˓ˠ˹ËÀËÀËÅËÅËÅËÅËÅËÅËÅËÍËØËãËòË÷Ë÷ËÿËÌÌÌÌÌÌ"Ì"Ì2Ì7Ì7Ì7ÌCÌJÌPÌ`ÌqÌ�̠̦̮ÌÃÌÊÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÒÌÔÌÔÌïÌùÌÍÍ ÍÍÍ:ÍGÍGÍGÍKÍVÍtÍ‚ÍzÏ@ü|~Ï~ϔϟϦϱϼÏÓÏÞÏåÏõÏÐÐÐ.ÐHÐOÐXÐ_ÐbÐnÐwÐ~Ð�ІМЦиоÐÊÐßÐæÐîÐúÐÑÑÑÑ$Ñ2Ñ<Ñ?ÑMÑWÑZÑlÑqÑvцщюўѡѥѮѶÑÈÑÐÑÐÑÐÑæÑðÑÒÒÒ)Ò0Ò8ÒJÒPÒ_ÒpÒpÒwÒwÒwÒ…Ò“Ò�Ò Ò®Ò¸Ò»ÒÍÒÒÒ×ÒçÒêÒïÒÿÒÓÓÓÓ)Ó1Ó1Ó=ÓJÓRÓRÓUÓ`Ó~ÓŒÓÕÓAhoÅ6Ø6ØPØcØjØqØ|Ø�ؒ؛آإصØÃØÎØÙØÜØòØþØÙÙ)Ù4Ù?ÙJÙaÙmلٌٕÙ�ÙªÙÅÙÈÙÎÙÓÙæÙìÙôÙÚ ÚÚÚ#Ú5ÚBÚUÚ[ÚcÚvÚ|Ú„Ú„Ú­Ú²ÚÑÚÔÚÔÚÛÚèÚìÚ÷ÚÛÛ-ÛMÛiÛ}Û…Û�Û®ÛÂÛÂÛ8ÜB >+>+H+P+U+CÉÇnSnS‹S–S©S–SÃSÑSÑSáSêSñSõSþSþST
Û T(T4T@TFTQTsTsT†T‘T—TžT£T£T¶TÁTÌTÓTÛTèTèTúTÿTÿTUUUU'U,U?UEULUaUuUuUzUzUŠU�U�U”U›U£UªU¬U´U»U»UÊUÐUÝUäUçU V VV V+V2V4VHVWV\VaVaVaVtVyVˆV�V–V«V¿V¿VÄVÄVÌVâVçVûVWWWW"W4WCWVWZWiWwW…W”W±W¼WÁWÐWäWëWòWXXX"X$X2X?XOXVXkXrX~X�X¦X¨X´X¿XÁXÁXÌXàXíXõX÷X YY$Y4Y@YaYhYtY’Y’Y’YšY¥Y©Y±YµY½YÄYÔYßYùYþYZZZ!Z&Z&Z5ZBZPZ[ZfZtZzZ€Z†Z�Z•Z¤Z±Z¹ZÅZÓZêZìZõZ[[[,[2[8[>[G[X[[‡[‘[ž[¶[½[É[Ø[í[í[ú[ÿ[\\\\\Ó\DD�šŒŒ2Œ>ŒTŒ@Œ`ŒbŒtŒ†ŒŽŒEìˆÿöYöYZ"ZUZdZzZžZ£Z§Z¯Z¸ZÇZÎZ×ZÜZñZ[![)[+[J[R[a[h[t[y[€[ˆ[Ž[�[¬[±[Ç[³[Ó[Ù[Ù[á[ê[ù[\ \!\@\G\G\G\[\o\s\�\”\Œ\¬\±\¼\Ã\Ë\Ñ\Ó\ï\ô\
ë ]ö\]]]8]=]V]B]b]h]m]‰]Ž]¤]�]°]¶]½]Å]Ë]Í]é]î]^ð]^^^^^'^'^1^1^I^y^�^‘^Ÿ^²^ª^Ê^Ê^Ü^FüE€¾Ý¾ÝÝÝùÝþÝ Þ=ÞLÞjÞ~Þ–Þ�Þ¢ÞÃÞáÞðÞ ßß5ß9ß9ß=ßBßGßQßTß^ßdß�߄߄߄߉ß�߫߹ßÅßÎßâßêßóßàà&à/àCàCàRàWàWàeàGl¬ÃvDvD„DžD‹D½DªDÉDÞDËDýDêD EE E*E,E7EBEBEaEgEHP‡—óó*ó7óFóRóXó‚ó˜ó„ó¯ó¤óÇóÏóIŒg†¦ñ¦ñØñûñûñòò1òEòJòJòWò_ògò|òˆò™òžò¯òÃòÈòÊòÊòÊòãòûòûòóJP�­6767_7a7o7u7“7¢7±7À7Î7Ù7Ü7ì7Kì8>0>0h0k0n0t0y0�0§0¾0Ð0ö01 191P1b1o1‚1•1š1¢1¬1´1´1»1Ä1Ä1Ï1÷12202I2K2e2k2„2�2¥2°2°2º2º2Ì2
û 3 313L$ty†d†d±dšd»dÃdMLu„æÇæÇøÇ ÈÈ/È6È>ÈNÈVÈgÈmÈŸÈNTHY�b�b¢b¤b­b¶bÄbÉbÒbÕbÚbèbòbõbÿbO¨!Gè`è`ø`aa!a-a9aEaQahahawa‚a‹a’a›a²aÅaÊaÜaëa÷a b bb2b2b4bGbIbcbobrb‰bPxîˆ0m0mImTmdm­m´mÈmÏm×mßmèmðmømúmn
        . 4 : : > · 0�ÄävÖvÖ’ÖžÖ¢Ö¦Ö­Ö´ÖÃÖÎÖÔÖÙÖÛÖçÖîÖöÖüÖ×××××$×*×0×2×2×>×18 ·.·.Å.Ë.×.â.ó.ý./ nnn7nOnXnXn�n·nÀnânünoCoOoqosozo�o�o¤o½oäoýo$p=pdp}p¤p½päpýp$q$q3q@qEqEqTqaqfqfqmqxqŠq£q¼qÕq×q×q×qÞqÞqëqðqðqðqrr"r7rqrxrxrxr€r�r«rÉrÒrÛrèrörs,s,s,s?sMsis‡s‡s‡s’s•sÂsÄsÛsásòsûsýs
/2@}‰nçnç|ç‡çŽç­çºçºç½ç¿çÅç3ðh ®®Ôçïöý ((;FbŠ’›£¨¹Ïßñö(,,1]r޾ÇÏÔå÷5MQQm•�¦®³ÄÚêü37JJJbO‚o�›¡¹ÑÖë/7@HM^p€’”®ÆÊÊæ ',=Scuz”¬°ÃÃÃÈè2JJJV\gr„”«ÂÙðð   AQ__hs�œ«²ÂÄÊáðé  2 2 K 4D}ŠÞÞî ##'*25\Ob€†€† †¯†¸†Á†Å†É†Õ†Ú†ß†ß†ð†ô†û†‡‡"‡60ýVßVß_ßdßmßtßvß{ß7Ð1ÔÛâíõ";;FJU}\‰Ÿ­ÃÇÌÞ"*.3Zptt„Á Íêê 0AFX€—œ¤¨ªÑçë/7<@EVlzŽ“¬½ÁÓÓÓÓØô4@]hn„•šÞæëïô%9;Teii{£º¿ÇËÍô t ttt(t(tLtNtUtftotqtt�t�t‘tŸtŸt¿t¿t¿t¿tÌtßtòtu u9uAuEuMuQu_umuouwu{uu‡u•u£u£u½uÈuÞuðuv'v2v<vCv\vhvovˆvˆvšvŸv¡v§v¸vÉvØvßvðvùvûv w www)w)w)wMwMwjwqwxw{w‡wŠw˜wœwªw®w¼wÀwÀwÙwàwåwówx x!xAxTxcxextxvx…x�x�x�x¦x¼xÃxèxíxyFyKyYy[yiyryŒyŽy�y—y¨y±y³yÁyÃyÑyÓyáyáyzzzzz z z z+zGzlz…zŠzŠzŠz¬z±z±z±zÑzÖzÖzÖzõzúzúz{{{ { { {{{{{;{Q{v{’{¦{«{«{Æ{Ó{Õ{ä{í{| | || |/|1|1|9|4|r|r|r|‘|‘|‘|²|·|·|·|Ù|Þ|Þ|Þ|þ|}}}"}'}'}B}P}R}a}j}„}†}†}‹}†}¬}®}®}¶}±}ï}ï}ï}ú}ú}$~$~N~f~~~‰~Ÿ~¯~Ä~Ü~ð~
.4>EXoo‹›©©¿ÏÝô (70L\cq�‡´ÝÝÝê#(39Dczj†œªÂØÜì 7'C`Š�¦·¼Òèì08=AFWm{�”­¾ÂÔÔÔÔÙõC3Olw}“¤©Åíõúþ&4HJctxx—­ÃÇÔÔÔçí÷þ(((DTbbxˆ�–±ÄÉÏåôí 'DD``m���­8Do|††–ª³¹ËËÏÒÚ9°Äìn�n�„�‹�œ�¡��£�Â�È�È�Ô�ì�Ù�ø�û�ý� ŽŽ%ŽŽ1Ž4Ž4Ž@ŽUŽBŽaŽgŽgŽzŽ�ޠ޳ޯŽÐŽ:<‹–66FW`fju;”)^é^éféjévé‡é‰é™é¤é¶éÁéÌéÛéìéóé êêêê'ê.êAêJêXêlêˆê�êªê<d(=°…°…¼…Ð…Ó…ç…ï…ó…ý…††††=$t¹8E8E\E_EcEpEyE„E�E˜E¢EÊEÊEÖEØEØEäEéEéEõEúEúEF F FFFF(F-F-F9F>F>FJFOFOFOFRFRFkFyF�F�F�FŸFŸF«F±F¶F¶F¼FÈFÈFÓFßFìFG GGG G G)G,G“G>è wö¢ö¢£££,£:£O£X£p£†£˜£££´£¸£Ê£Í£Ø£á£í£¤1¤&¤ ¤A¤U¤f¤r¤€¤ž¤°¤Ô¤å¤ç¤¥î¤#¥#¥&¥+¥.¥.¥5¥L¥S¥`¥e¥t¥�¥”¥”¥¨¥¬¥Ù¥Ù¥ñ¥ö¥ö¥¦¦¦(¦8¦B¦R¦^¦c¦c¦s¦{¦‹¦•¦¥¦¯¦¿¦˦ЦЦЦò¦§  7NUMƒQ|.ää2äFäQäfä„ä�ä­ä­ä­äºäÒäÔäÔäÔäáäùäûäûä åå.å.å?åSåRçeÆ×Æ×à×é× Ø ØØØ Ø'Ø/Ø5ØBØBØ_ØdØdØjØoØoØuØzØz؀؅؅Ø�ذضػػØÄØäØäØäØëØíØíØôØöØöØüØüØÙÙÙ Ù ÙÙÙÙÙÙ!Ù!Ù)Ù/Ù5Ù=Ù=Ù=Ù=ÙIÙQÙYÙaÙiÙqÙyÙٗ٦ٰٳٳٽÙÃÙÉÙÉÙÍÙÕÙÜÙàÙèÙðÙöÙþÙÚ ÚÚÚ Ú*Ú0Ú=ÚIÚOÚWÚ[ÚbÚjÚrÚvÚ|Ú„Ú‹Ú“Ú›ÚŸÚ¥Ú°ÚµÚËÚÜÚáÚäÚŠÛSL˜§ „ „9„;„B„X„h„n„†„ž„¡„³„û„TÔ*[6ë6ëJë_ënërë€ë†ë•ë•ë¤ë¯ëºëÅëÌëÜëóëì ììì%ì%ì;ì=ìGìhìsìuìŽì’ì ì¥ì¥ì¬ì¸ìÀìÓì=íU$nsFdFdqdZd{dƒdVl  NHNH\HvHcH•H‚H¡H¶H£HÕHÂHáHïH÷HIIIII9I?IW,>Ò>ÒGÒMÒUÒdÒsÒxÒXTÒž¡ž¡¿¡Ñ¡Ü¡å¡¢¢ ¢9¢F¢F¢P¢P¢W¢j¢h¢x¢x¢ƒ¢�¢“¢™¢œ¢ª¢±¢É¢ТÓ¢å¢ê¢õ¢££5£I£f£ˆ£�£“£™£¤£±£Ï£·£Ø£Ü£â£ê£ï£¤÷£¤¤"¤*¤/¤/¤<¤B¤]¤I¤i¤m¤s¤{¤€¤€¤¡¤¥¤«¤³¤¤ݤɤé¤í¤ó¤û¤¥¥!¥%¥+¥3¥3¥8¥E¥c¥K¥l¥p¥v¥~¥ž¥†¥§¥«¥±¥¹¥¹¥Æ¥ä¥Ì¥í¥ñ¥÷¥ÿ¥ ¦¦(¦,¦2¦:¦:¦:¦P¦P¦P¦P¦[¦e¦n¦ަ𦍦­¦»¦ϦÔ¦Ô¦ߦç¦ï¦ø¦§§%§4§C§]§b§b§m§u§‚§�§š§¥§¿§ѧã§î§ó§ó§þ§¨!¨)¨5¨C¨H¨V¨j¨j¨r¨j¨Ѝ�¨�¨ž¨£¨£¨²¨·¨·¨ȨͨͨÞ¨ã¨ã¨ö¨©
§§§1§1§6§@§O§T§Z§_§_§d§n§}§‚§ˆ§�§�§“§™§ž§ž§­§À§̧Ù§å§ø§¨¨¨&¨:¨K¨X¨]¨u¨ˆ¨Ÿ¨¬¨´¨ǨϨÕ¨Þ¨ç¨ç¨ì¨ì¨ì¨ì¨ì¨ø¨ø¨ø¨©©/©7©R©c©p©r©†©‹©‹©‹©–©¤©©©©©°©¾©éÛ©ç©ù©ª ªªª'ª0ªMªYª_ªeªxª€ªˆªµªƪÓªÕªãªãªèªèªïªýª««!«-«3«7«@«E«E«E«E«E«]«b«b«b«b«b«s«s«s«s«s«s«s«s«s«s«|«•«ª«²«Í«Þ«ë«í«¬ ¬¬¬¬¬5¬A¬F¬h¬t¬t¬y¬y¬y¬y¬y¬y¬y¬y¬ެ“¬“¬“¬¤¬¯¬´¬´¬¿¬Ѭé¬û¬­<­G­X­]­]­]­f­ˆ­‘­¢­¦­¾­έÖ­Þ­é­®® ®8®H®H®H®H®H®j®£®¬®°®¶®»®Ä®Í®Ò®Ò®Ò®Ò®á®õ®¯¯#¯)¯.¯.¯A¯U¯{¯†¯ޝ”¯”¯™¯™¯¨¯¼¯Ú¯å¯ê¯ð¯õ¯õ¯°°B°M°U°[°[°`°`°`°i°‚°—°Ÿ°º°˰ذÚ°é°ë°ë°ë°ë°ë°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°ÿ°±±(±*±*±3±5±5±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±I±K±K±b±j±v±v±z±±�±ª±¿±αڱ𱠩
² ²²#²I²i²‰²­²¯²²ð²Ȳ ³ ³³³&³A³R³U³o³}³‰³¡³¡³̳ϳÞ³ò³´$´@´,´\´n´Œ´¿´½´²´§´˜´Í´Í´Í´дÕ´Ø´ò´µ.µPµPµ{µ~µ�µ¡µµÓµïµÛµ  )¶\¶Z¶O¶D¶5¶j¶j¶j¶m¶r¶r¶y¶‰¶ª¶¶¶ º?°«ÓÞ¿Þ¿ô¿ø¿À ©©,©1©?©1©S©X©f©X©z©©�©©¡©¦©´©¦©È©Í©Í©ê©ï©ªª$ªª8ª=ª=ªZª_ª�ª†ª”ª†ª¨ª­ª­ªʪϪñªöª«öª«««:«?«a«f«t«f«ˆ«�«�«¨«­«­«È«Í«Í«è«í«í«¬ ¬ ¬(¬-¬-¬H¬M¬M¬h¬m¬m¬ˆ¬�¬�¬ž¬£¬£¬´¬¹¬¹¬ŬЬå¬ê¬ê¬ö¬­­7­>­H­M­^­h­}­ˆ­�­ž­©­±­¶­¶­º­¾­Å­Ï­Ù­Ù­ì­ñ­ñ­ñ­õ­ ®®®7®<®<®D®X®a®{®ˆ®“®ž®©®»®Ç®Юծծծ殯¯¯#¯(¯3¯;¯@¯@¯K¯S¯\¯g¯w¯�¯§¯»¯À¯À¯˯Þ¯è¯ó¯° °.°3°A°E°J°J°Z°e°m°r°}°а•°¯°Á°Ó°Þ°ã°î°ö°û°±±±8±J±\±\±\±\±a±f±f±r±ƒ±ƒ±©±«±DZDZѱå±ï±ñ±ý±²"²3²=²H²k²|²�²ž²©²Á²ѲÖ²Ö²á²æ²æ²î²ù²þ²þ²³³³³³<³&³T³Y³Y³a³³i³—³œ³°³œ³ȳͳͳڳ߳߳ç³ì³ì³ø³ ´´ ´ ´4´ ´L´Q´Q´Y´^´^´q´v´v´‰´Ž´Ž´¨´¸´½´½´×´ç´ì´ì´µµµµ5µEµJµaµJµyµ~µ~µ‰µ޵ʵ¸µ¦µ޵âµçµ#¶ÿµçµ;¶@¶@¶O¶_¶d¶d¶s¶ƒ¶ˆ¶ˆ¶—¶¥¶ª¶Ò¶À¶ª¶ê¶ï¶··ï¶/·4·\·J·4·t·y·y·–·€·À·зÕ·Õ·ð·Ü·¸*¸/¸/¸;¸@¸@¸L¸Q¸Q¸d¸t¸y¸y¸Œ¸œ¸¡¸¡¸´¸ĸɸɸܸì¸ñ¸ñ¸ù¸þ¸þ¸¹ ¹ ¹¹¹¹ ¹%¹%¹8¹=¹=¹P¹U¹£¹‘¹¹m¹U¹°¹µ¹ºñ¹ß¹͹µ¹ººº$º?ºDºDºUºpºuºuº†º”º™º™º¡º¦º¦º®º³º³º»ºÀºÀºøºæºÔºǺ»2»7»7»o»]»K»>»Ž»©»®»à»λÆ»®»ø»ý»/¼¼¼ý»G¼L¼f¼P¼L¼~¼ƒ¼ ¼мƒ¼¸¼½¼½¼ɼâ¼ò¼½½)½+½A½G½G½c½p½¡½ã½Ò½À½ï½÷½÷½÷½¾¾¾¾&¾0¾5¾@¾J¾O¾O¾i¾n¾n¾v¾{¾�¾{¾›¾¦¾«¾¿¾«¾˾Ö¾Û¾Û¾æ¾ô¾ù¾ù¾¿¿¿¿%¿*¿*¿;¿@¿@¿Z¿e¿j¿r¿j¿~¿ƒ¿—¿ƒ¿£¿¨¿°¿¨¿¼¿Á¿Õ¿Á¿á¿æ¿æ¿ú¿æ¿ÀÀÀ ÀÀ À*À/À/À;À/ÀNÀSÀSÀ_ÀSÀrÀwÀwÀƒÀwÀ–À›À¯À›À»ÀÇÀÒÀÝÀâÀöÀâÀÁÁÁ$Á)Á=Á)ÁQÁIÁZÁ_Á_ÁgÁlÁlÁuÁzÁzÁƒÁˆÁˆÁ‘Á–Á–Á¡Á¦Á¦Á±Á¶Á¶ÁÁÁÆÁÆÁÑÁÖÁÖÁáÁæÁæÁñÁöÁöÁÂÂÂÂ&Â1Â<ÂGÂLÂLÂVÂ[Â[ÂeÂjÂjÂtÂyÂyƒˆˆÂ�••¢§§´¹¹¹¹¹ÂÁÂÆÂÆÂÎÂÓÂÓÂÛÂàÂàÂèÂíÂíÂõÂúÂÃúÂÃ+Ã0Ã0ÃBÃMÃmÃrÈÓìØøÃÃÃÎÃÓÃÓÃåÃðÃÄÄ+Ä6ÄOÄ;Ä[ÄfÄqÄvÄvĈēijĸÄÎÄÙÄòÄÞÄþÄ ÅÅÅÅ?Å+ÅKÅkÅpņőŖűÅ�ÅÑŽÅÝÅóÅßÅÆÿÅ Æ*Æ/Æ/ÆUÆAÆaÆ�ƆƜƧƬÆÇƳÆçÆÓÆóÆ ÇõÆ)ÇÇ5Ç@ÇEÇEÇkÇWÇwǗǜDzǽÇÂÇÝÇÉÇýÇéÇ È È È?È+ÈKÈVÈ[È[ÈjÈoÈoÈ~ȃȃȃȉȎȎȎȘȚȚȤȱÈÑÈÓÈÓÈÝÈÝÈÝÈÝÈÝÈßÈßÈöÈýÈÉÉÉÉ"É-É8ÉCÉNÉYÉSÉ|ÉtɔɢɜÉÅɽÉÝÉÝÉÝÉæÉîÉÊÊÊ(Ê(Ê@ÊJÊ^ÊxÊxÊxʙʩʾÊÐÊàÊàÊËËË0Ë0Ë4Ë9Ë@ËPËoËoËsˊˑ˖˖˚˥˱˿ËìËõËÌÌGÌSÌXÌn̡̜̯̂̎ÌËÌöÌÍ Í/Í1Í1Í5ÍTÍ_Í_ÍbÍp͛ͻͻͻ;ÍçÏY, ~Ò~ҌҒҖҥҴҺÒZ`àô.™.™D™f™s™w™†™Ÿ™£™©™¼™Ù™Û™Û™ šú™Û™+š5š[8cmÖcÖc÷cäcddd$d/d;dAd\\�”�œ�œžœ œ«œ³œ¾œÉœÔœÖœìœìœþœ
ÀÀ)À)À4ÀEÀLÀYÀeÀrÀzÀ‹À‹À”À™À¡À±À¿ÀÎÀÙÀìÀìÀÿÀÿÀÁAÁAÁUÁWÁWÁaÁiÁiÁsÁ{Á{Á{ÁŒÁŒÁŒÁ�Á˜ÁžÁ£Á£Á§Á¯Á³Á¹Á¾Á¾ÁÊÁßÁïÁùÁ ÂÂÂÂÂÂ%Â1ÂFÂVÂ`ÂhÂnÂ�†Ž””™ «ÂÓÂÞÂíÂ÷ÂÿÂÃÃÃ"Ã"Ã"Ã"Ã"Ã"Ã"Ã"Ã"Ã-Ã9ÃFÃVÃ\ÃdÃwÃ|ÄÉÑÖÖÖÞæï÷üÃÄÃÉÃÐÃÛÃÄÄÄ%Ä/ÄAÄFÄLÄQÄQÄXÄjÄrÄ…Ä�ĕĪĬķĿÄÔÄÔÄÜÄðÄøÄÿÄÅ Å ÅÅ!Å-ÅCÅOÅWÅlÅxÅ}ʼnŔřřřźÅÔÅÙÅáÅðÅøÅÆÆÆ%Æ-ÆBÆGÆGÆSÆiÆuÆ}ƒƞƣƯƺƿƿƿƿƿƿÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÊÆÕÆõÆÇ"Ç(Ç0ÇCÇHÇPÇXÇZÇbÇuÇ{ǃNjÇ�Ç­ÇµÇ¾ÇÆÇÎÇÓÇØÇßÇêÇÈÈ%È4È>ÈWÈ\ÈdÈiÈiÈiÈrÈ{È~ȈȖȨȪȼÈÎÈÎÈÎÈÙÈÞÈûÈÉÉ ÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉ%É1ÉQÉdÉlÉŒÉ‘É™É É­ÉµÉ¾ÉÆÉÍÉÒÉÒÉÚÉâÉþÉÊ Ê ÊÊ%Ê%Ê%Ê'Ê:ÊKÊNÊQÊYÊ^Ê^ÊgÊlÊtÊ{ʈʡʨʭÊÅÊÏÊêÊË ËË1Ë8Ë8Ë=Ë=Ë=Ë=Ë=Ë=Ë=ËEËPË[ËjËoËoËwËˌˑˑˑ˕˚˚˪˯˯˯˻ËÂËÈËØËéËÌÌÌ&Ì;ÌBÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌJÌLÌLÌgÌqÌÌÌ„Ì�̖̲̿̿̿ÌÃÌÎÌìÌúÌòÎ@ü|öÎöÎ ÏÏÏ)Ï4ÏKÏVÏ]ÏmπϊϊϦÏÀÏÇÏÐÏ×ÏÚÏæÏïÏöÏùÏþÏÐÐ0Ð6ÐBÐWÐ^ÐfÐrЇЎЎЎМЪдзÐÅÐÏÐÒÐäÐéÐîÐþÐÑÑÑÑÑ&Ñ.Ñ@ÑHÑHÑHÑ^ÑhÑzрьѡѨѰÑÂÑÈÑ×ÑèÑèÑïÑïÑïÑýÑ ÒÒÒ&Ò0Ò3ÒEÒJÒOÒ_ÒbÒgÒwÒzÒ~Ò‡Ò�Ò¡Ò©Ò©ÒµÒÂÒÊÒÊÒÍÒØÒöÒÓMÓAhoÅ®×®×È×Û×â×é×ôר ���E�]ܳf¾é¾éðéùéê)ê)ê:êGêeêmêšêŸêÈêåêëë ë.ëTëYë‚ëœëÂëÙëßëãëüëì ìì"ìAìGìKìdìlì‹ì�ì¡ì©ìÈìÍìÕìÛìßìãìõìýì í í$í6í;íLíQícílí€í‹í°íàíî
ØØØØ-Ø;ØFØQØTØjØv؋ؖءجطØÂØÙØåØüØÙ ÙÙ"Ù=Ù@ÙFÙKÙ^ÙdÙlÙÙ…Ù�Ù�ٛ٭ٺÙÍÙÓÙÛÙîÙôÙüÙüÙ%Ú*ÚIÚLÚLÚSÚ`ÚdÚoÚ‰Ú•Ú¥ÚÅÚáÚõÚýÚÛ&Û:Û:Û°ÛB ¶*¶*À*È*Í*CÉÇæRæRSS!SS;SISISYSbSiSmSvSvS~S‚S S¬S¸S¾SÉSëSëSþS TTTTT.T9TDTKTST`T`TrTwTwT‡TŒTŒTŒTŸT¤T·T½TÄTÙTíTíTòTòTUUU UUU"U$U,U3U3UBUHUUU\U_U�U�U‰U˜U£UªU¬UÀUÏUÔUÙUÙUÙUìUñUVVV#V7V7V<V<VDVZV_VsVzVVV‹VšV¬V»VÎVÒVáVïVýV W)W4W9WHW\WcWjWzW|WŠWšWœWªW·WÇWÎWãWêWöWXX X,X7X9X9XDXXXeXmXoXƒX•XœX¬X¸XÙXàXìX î
Y î
Y îî!î/î<î^î^îuîzîzî‘î“î“î§î©î©îÀîÂîÂîÙîÛîÛîòîòîïïïï=ïOïTïTïTïTïlï�ï¢ïÀïÀïÀïÍïäïæïæïæïóï
YYY!Y)Y-Y5Y<YLYWYqYvY}YˆY‘Y™YžYžY­YºYÈYÓYÞYìYòYøYþYZ ZZ)Z1Z=ZKZbZdZmZxZzZ†Z¤ZªZ°Z¶Z¿ZÐZ÷ZÿZ [[.[5[A[P[e[e[r[w[‰[�[�[�[�[K\DD�š–‹–‹ª‹¶‹Ì‹¸‹Ø‹Ú‹ì‹þ‹ŒEìˆÿnYnY�YšYÍYÜYòYZZ Z'Z0Z?ZFZOZTZiZzZ™Z¡Z£ZÂZÊZÙZàZìZñZøZ[[[$[)[?[+[K[Q[Q[Y[b[q[�[—[™[¸[¿[¿[¿[Ó[ç[ë[ù[ \\$\)\4\;\C\I\K\g\l\‚\n\Ž\”\”\°\µ\Î\º\Ú\à\å\]]]](].]5]=]C]E]a]f]|]h]ˆ]Ž]Ž]Ž]–]Ÿ]Ÿ]©]©]Á]ñ]^ ^^*^"^B^B^T^FüE€6Ý6ÝUÝqÝvݗݵÝÄÝâÝöÝÞÞÞ;ÞYÞhÞ…Þ–Þ­Þ±Þ±ÞµÞºÞ¿ÞÉÞÌÞÖÞÜÞùÞüÞüÞüÞßß#ß1ß=ßFßZßbßk߇ߒߞߧ߻߻ßÊßÏßÏßÝßGl¬ÃîCîCüCDD5D"DADVDCDuDbD�D�D—D¢D¤D¯DºDºDÙDßDHP‡—ŽòŽò¢ò¯ò¾òÊòÐòúòóüò'óó?óGóIŒg†ññPñsñsñ†ñŠñ©ñ½ñÂñÂñÏñ×ñßñôñòòò'ò;ò@òBòBòBò[òsòsò�òJP�­®6®6×6Ù6ç6í6 77)787F7Q7T7d7Kì8¶/¶/à/ã/æ/ì/ñ/0 060H0n0•0˜0±0È0Ú0ç0ú0 111$1,1,131<1<1G1o1‰1�1¨1Á1Ã1Ý1ã1ü122(2(22222D2‚2—2©2L$tyþcþc)dd3d;dMLu„^Ç^ÇpÇ…Ç–Ç§Ç®Ç¶ÇÆÇÎÇßÇåÇÈNTHYbbbb%b.b<bAbJbMbRb`bjbmbwbO¨!G````p`y`Œ`™`¥`±`½`É`à`à`ï`ú`a ð ð ðð0ð0ðGðIðcð�ð�ð�ð…ð‡ð‡ð‡ðŒðŽðŽð“ð“ð�ð¢ð¢ðÀðÀðÀðÈðÊðÊðÊðÒðÔðÔðÜðÜðÞðåðñññ.ñ.ñ.ñ.ñ.ñAñYñañañ¤ñ^`
aa*a=aBaTacaoa�a�aŠaªaªa¬a¿aÁaÛaçaêabPxl¨lÁlÌlÜl%m,m@mGmOmWm`mhmpmrmzm‚m‰m�m¯mÇmÐmÐmn/n8nZntn‘n»nÇnénënònùnùno5o\ouoœoµoÜoõop5p\pupœpœp«p¸p½p½pÌpÙpÞpÞpåpðpqq4qMqOqOqOqVqVqcqhqhqhqyq‡qšq¯qéqðqðqðqøqr#rArJrSr`rnrˆr¤r¤r¤r·rÅrárÿrÿrÿr æTæTøTU"U>UKUbUuU€U•U‚U¡U©U´UÇUÀUßUåU_ôW¶=¶=Ô=×=é=ð=÷=ü=þ=> >>">T>n>[>†>‹>¬>¬>¸>À>Ï> ??;?C?H?Q?\?d?k?Š?�?¯?±?Ð?Û?ò?@@@@$@'@+@<@\@n@`$fÜfÜuÜ�Ü�Ü“Üaxb|çç&çHçHçRçWçWçvçƒç…ç…ç…ç…ç’çšç­çÁçÃçÃçËçÞçÞçðçb”"†/†/¨/²/¾/Ã/Ó/Ù/î/00 0-0D0L0V0e0m0z0‚0…0…0…0‡0–0 0©0±0´0Æ0cHϾ9¾9æ9ó9ö9ÿ9::3:J:\:Š:¦:À:Å:Ê:Õ:ì:þ: ;;4;H;M;X;x;};€;š;´;¼;Ä;É;ã;ý;< <<,<4<9<Y<^<a<{<•<�<¥<§<Á<Û<ã<ë<í<=====$=$=/=/=;=;=M=�=£=£=³=dd¤¹Ð‰Ð‰à‰ç‰ó‰ù‰ŠŠ"Š.ŠEŠRŠRŠUŠcŠsŠŠŠŽŠ–Šeºû++-+2+F+u+�+Ž+˜+¨+¨+¿+Æ+Ý+ä+í+,,,,0,0,F,F,\,\,r,r,ˆ,ˆ,ž,ž,´,´,Ë,Ë,â,â,ù,ù,--'-'->->-U-U-m-m-…-�-˜-©-´-Å-È-Ê-á-è-ô.f¬÷ŽŽ¨®µ½ÅÈÓååù  "*@CQTW^bjxŠš�ìg(EK–’–’½’ª’É’Ø’à’hCNKNKqK†K‹K“K›K£K°K¶K¿KÅKÊKÒKîKôKöKøKLLLL#L)L+L-L:L:L:L?LHLPLYLaLcLkLsL{LˆLŽL™L L°L»LÇLåLìL÷LýLMMMM.M>MFMIM¯Mi8-77070K0O0T0_0j0m0q0y0j¤õš6š6šTšxš~š…š…šŒš¬š±šÇšãšÏšïš›››%›/›M›_›h›p›z›“››Ÿ›±›»›ÛÈ›ã›Ï›œï›œ%œœEœ1œQœcœmœuœuœ~œ†œœœµœÇœÖœÚœÚœáœæœ�� ��,�,�,�0�<�]�k�u�‚�£�±�»�½�½�×�ê�ø�û�ž ž>žBžežižˆžŒžŒžŒž’ž žªžÞÉžÔžàžâžêžðž ŸŸ"Ÿ,ŸEŸHŸPŸ\Ÿ^ŸfŸiŸ‚Ÿ„Ÿ�Ÿ’ŸšŸ Ÿ¹ŸÑŸÝŸòŸ÷Ÿ   1 B B M X p | ‘ – ¨ · Рá á ç ò ú ¡¡!¡kfäŽÛŽÛ¨Û±ÛÑÛÑÛ×ÛßÛçÛïÛ÷ÛýÛ
s s:s<sSsYsjsssus‚s„s‘s“s s sÄsÆsÍsÞsçsés÷sùst ttt7t7t7t7tDtWtjt‹t˜t±t¹t½tÅtÉt×tåtçtïtót÷tÿt uuu5u@uVuhuˆuŸuªu´u»uÔuàuçuvvvvv v0vAvPvWvhvqvsv�vƒv‘v“v¡v¡v¡vÅvÅvâvévðvóvÿvwww"w&w4w8w8wQwXw]wkw|wƒw™w¹wÌwÛwÝwìwîwýwxxxx4x;x`xexŽx¾xÃxÑxÓxáxêxyyyy y)y+y9y;yIyKyYyYyyyyyyyyyyy˜y˜y˜y£y¿yäyýyzzz$z)z)z)zIzNzNzNzmzrzrzyz{z{zƒz…z…zŒzŒz�z”z³zÉzîz Ü
{{#{#{>{K{M{\{e{{�{�{†{�{§{©{©{±{¬{ê{ê{ê{ | | |*|/|/|/|Q|V|V|V|v|{|{|{|š|Ÿ|Ÿ|º|È|Ê|Ù|â|ü|þ|þ|}þ|$}&}&}.})}g}g}g}r}r}œ}œ}Æ}Þ}ö}~~'~<~T~h~‚~„~•~¯~Æ~Í~Å‚Q|.†ã†ãªã¾ãÉãÞãüãä%ä%ä%ä2äJäLäLäLäYäqäsäsä�äŽä¦ä¦ä·äËäRçe>×>×X×a×�×�ׇ×�חןק׭׺׺×××Ü×Ü×â×ç×ç×í×ò×ò×ø×ý×ýר(Ø.Ø3Ø3Ø<Ø\Ø\Ø\ØcØeØeØlØnØnØtØtØ{Ø}Ø}؃؃؊،،ؙؙؒؒءاحصصصصØÁØÉØÑØÙØáØéØñØ÷ØÙÙ(Ù+Ù+Ù5Ù;ÙAÙAÙEÙMÙTÙXÙ`ÙhÙnÙvÙ}Ù…Ù�ّٗ٢٨ٵÙÁÙÇÙÏÙÓÙÚÙâÙêÙîÙôÙüÙÚ ÚÚÚÚ(Ú-ÚCÚTÚYÚ\ÚÛSL˜§˜ƒ˜ƒ±ƒ³ƒºƒÐƒàƒæƒþƒ„„+„s„TÔ*[®ê®êÂê×êæêêêøêþê ë ëë'ë2ë=ëDëTëkë~ë„ë‰ë�ë�ë�ë³ëµë¿ëàëëëíëì ÜÜÜÜ#Ü(Ü(Ü.Ü3Ü3Ü9Ü>Ü>ÜVÜiÜoÜtÜtÜ}Ü�Ü�Ü�ܤܦܦܭܯܯܼܾܾܵܵÜÄÜÄÜËÜÍÜÍÜÓÜÓÜÚÜÚÜâÜèÜîÜöÜöÜöÜöÜÝ
ìììì$ì0ì8ìKìµìU$ns¾c¾cécÒcócûcVl  ÆGÆGÔGîGÛG HúGH.HHMH:HYHgHoHzH|H‡H’H’H±H·HW,¶Ñ¶Ñ¿ÑÅÑÍÑÜÑëÑðÑXTÒ¡¡7¡I¡T¡]¡¡‰¡—¡±¡¾¡¾¡È¡È¡Ï¡â¡à¡ð¡ð¡û¡¢ ¢¢¢"¢)¢A¢H¢K¢]¢b¢m¢x¢’¢­¢Á¢Þ¢££ £££)£G£/£P£T£Z£b£g£‡£o£�£”£š£¢£§£§£´£º£Õ£Á£á£å£ë£ó£ø£ø£¤¤#¤+¤:¤U¤A¤a¤e¤k¤s¤x¤x¤™¤�¤£¤«¤«¤°¤½¤Û¤ää¤è¤î¤ö¤¥þ¤ ¥#¥)¥1¥1¥>¥\¥D¥e¥i¥o¥w¥—¥¥ ¥¤¥ª¥²¥²¥²¥È¥È¥È¥È¥Ó¥Ý¥æ¥¦¦ ¦%¦3¦G¦L¦L¦W¦_¦g¦p¦|¦�¦�¦¬¦»¦Õ¦Ú¦Ú¦å¦í¦ú¦§§§7§I§[§f§k§k§v§Œ§™§¡§­§»§À§Χâ§â§ê§â§¨¨¨¨¨¨*¨/¨/¨@¨E¨E¨V¨[¨[¨n¨}¨‚¨‚¨•¨¤¨©¨·¨©¨˨ШÞ¨Шò¨÷¨©÷¨©©,©©@©E©E©b©g©‰©Ž©œ©Ž©°©µ©µ©Ò©שù©þ© ªþ© ª%ª%ªBªGªiªnª|ªnª�ª•ª•ª²ª·ªÙªÞªìªÞª««« «%«%«@«E«E«`«e«e«€«…«…« «¥«¥«À«Å«Å«à«å«å«¬¬¬¬¬¬,¬1¬1¬=¬H¬]¬b¬b¬n¬‡¬Œ¬¯¬¶¬À¬ŬÖ¬à¬õ¬­­­!­)­.­.­2­6­=­G­Q­Q­d­i­i­i­m­ƒ­Œ­Œ­¯­´­´­¼­ЭÙ­ó­® ®®!®3®?®H®M®M®M®^®{®†®�®›® ®«®³®¸®¸®îˮԮ߮ﮯ ¯3¯8¯8¯C¯V¯`¯k¯Œ¯˜¯¦¯«¯¹¯½¯¯¯Ò¯ݯå¯ê¯õ¯° °'°9°K°V°[°f°n°s°~°‹°–°°°°Ô°Ô°Ô°Ô°Ù°Þ°Þ°ê°û°û°!±#±?±?±I±]±g±i±u±}±š±«±µ±À±ã±ô±²²!²9²I²N²N²Y²^²^²f²q²v²v²~²‰²޲޲–²´²ž²̲ѲѲÙ²÷²á²³³(³³@³E³E³R³W³W³_³d³d³p³�³“³˜³˜³¬³˜³ijɳɳѳÖ³Ö³é³î³î³´´´ ´0´5´5´O´_´d´d´~´Ž´“´“´­´½´´Ù´´ñ´ö´ö´µµBµ0µµµZµ_µ›µ‰µwµ_µ³µ¸µ¸µǵ×µܵܵëµûµ"¶J¶8¶"¶b¶g¶�}¶g¶§¶¬¶Ô¶¶¬¶ì¶ñ¶ñ¶·ø¶8·H·M·M·h·T·’·¢·§·§·³·¸·¸·Ä·É·É·Ü·ì·ñ·ñ·¸¸¸¸,¸<¸A¸A¸T¸d¸i¸i¸q¸v¸v¸~¸ƒ¸ƒ¸‹¸�¸�¸˜¸�¸�¸°¸µ¸µ¸ȸ͸¹ ¹÷¸å¸͸(¹-¹{¹i¹W¹E¹-¹ˆ¹�¹�¹œ¹·¹¼¹¼¹͹è¹í¹í¹þ¹ ºººººº&º+º+º3º8º8ºpº^ºLº?º�ºªº¯º¯ºçºÕºú¶º»!»&»X»F»>»&»p»u»§»•»�»u»¿»Ä»Þ»È»Ä»ö»û»¼¼û»0¼5¼5¼A¼Z¼j¼{¼{¼¡¼£¼¹¼¿¼¿¼Û¼è¼½[½J½8½g½o½o½o½{½€½€½“½ž½¨½­½¸½½ǽǽá½æ½æ½î½ó½¾ó½¾¾#¾7¾#¾C¾N¾S¾S¾^¾l¾q¾q¾|¾‡¾Œ¾Œ¾�¾¢¾¢¾³¾¸¾¸¾Ò¾ݾâ¾ê¾â¾ö¾û¾¿û¾¿ ¿(¿ ¿4¿9¿M¿9¿Y¿^¿^¿r¿^¿~¿~¿~¿ƒ¿�¿ƒ¿¢¿§¿§¿³¿§¿Æ¿Ë¿Ë¿׿Ë¿ê¿ï¿ï¿û¿ï¿ÀÀ'ÀÀ3À?ÀJÀUÀZÀnÀZÀzÀ†À‘ÀœÀ¡ÀµÀ¡ÀÉÀÁÀÒÀ×À×ÀßÀäÀäÀíÀòÀòÀûÀÁÁ ÁÁÁÁÁÁ)Á.Á.Á9Á>Á>ÁIÁNÁNÁYÁ^Á^ÁiÁnÁnÁyÁ~Á’Á~ÁžÁ©Á´Á¿ÁÄÁÄÁÎÁÓÁÓÁÝÁâÁâÁìÁñÁñÁûÁ  Â  Â,Â1Â1Â1Â1Â1Â9Â>Â>ÂFÂKÂKÂSÂXÂXÂ`ÂeÂeÂmÂr†Âr’£¨¨ºÂÅÂåÂêÂà Ã$ÃÃ0Ã;ÃFÃKÃKÃ]ÃhÈÃ�ãîÃÇóÃÓÃÞÃéÃîÃîÃÄ Ä+Ä0ÄFÄQÄjÄVÄvÄ�ČđđķģÄÃÄãÄèÄþÄ ÅÅ)ÅÅIÅ5ÅUÅkÅWÅ‹ÅwŗŢŧŧÅÍŹÅÙÅùÅþÅÆ Æ$Æ?Æ+Æ_ÆKÆkÆ�ÆmÆ¡Æ�ƭƸƽƽÆãÆÏÆïÆÇÇ*Ç5Ç:ÇUÇAÇuÇaÇ�ǗǃǷǣÇÃÇÎÇÓÇÓÇâÇçÇçÇöÇûÇûÇûÇÈÈÈÈÈÈÈÈ)ÈIÈKÈKÈUÈUÈUÈUÈUÈWÈWÈnÈuȀȀÈ�È“ÈšÈ¥È°È»ÈÆÈÑÈËÈôÈìÈ ÉÉÉ=É5ÉUÉUÉUÉ^ÉfÉyÉÉ�ɠɠɸÉÂÉÖÉðÉðÉðÉÊ!Ê6ÊHÊXÊXʀʇʖʨʨÊLine truncated ÝÝÝ"Ý*Ý2Ý8ÝPÝ_ÝiÝlÝlÝvÝ|݂݂݆ݎݕÝ�Ý¥Ý©Ý¯Ý·Ý¾ÝÆÝÎÝÒÝØÝãÝéÝöÝÞÞÞÞÞ#Þ+Þ/Þ5Þ=ÞDÞLÞTÞXÞ^ÞiÞnÞ„Þ•ÞšÞ�ÞCßl`'"'"0"7"K"_"d"‚"‡"¥"§"Å"Ç"Þ"ò"û"ý"#!#R#m|2ÍØ‘Ø‘î‘ÿ‘’!’2’C’V’^’l’Š’•’›’¨’½’½’Ð’á’ç’ü’““,“1“9“A“G“_“r“}“�“‹“ “¦“¨“µ“·“ɓɓГؓê“ê“ù“”””(”,”8”<”H”L”X”\”\”o”‚”ˆ”Œ”–”𔩔­”¼”À”Ӕההההܔî”ý” ••5•E•U•Z•Z•Z•f•n•v•|•‘•™•§•±•¿•ŕǕǕǕǕǕǕǕǕǕӕەã•é•þ•–
ÒÒÒ,Ò2ÒZ`àô¦˜¦˜¼˜Þ˜ë˜ï˜þ˜™™!™4™Q™S™S™„™r™S™£™­™[8cmNcNcoc\c{c†c‘cœc§c³c¹c\\�”œœœœ#œ+œ6œAœLœNœdœdœvœ‚œ‹œŽœ½œ]ܳf6é6éhéqéé¡é¡é²é¿éÝéåéêê@ê]êyêêƒê¦êÌêÑêúêë:ëQëWë[ëtë|ë�ë’ëšë¹ë¿ëÃëÜëäëììì!ì@ìEìMìSìWì[ìmìuì�ì—ìœì®ì³ìÄìÉìÛìäìøìí(íXí}í‚í‚í‚í’í™í§í´íÖíÖíííòíòí î î î î!î!î8î:î:îQîSîSîjîjî{î€î€î�îµîÇîÌîÌîÌîÌîäîïï8ï8ï8ïEï\ï^ï^ï^ïkï‚ï„ï„ï‘ï¨ï¨ï¿ïÁïÛïùïùïùïýïÿïÿïÿïððð ð ðððð8ð8ð8ð@ðBðBðBðJðLðLðTðTðVð]ð{ð}ð�ð¦ð¦ð¦ð¦ð¦ð¹ðÑðÙðÙðñ^` –– –&–&–&–8–>–J–P–]–x–ˆ–”–š–§–¹–Ç–æ–@˜nÔ¼íPkPkbksk~k‰kŸk±kÉkÎk×kÞkëkòkll l llll3lMlcl{l€l‰l�l�l±lÌlÓlÕlØlÝlmm*mo$hm×&×&å&ù&''p¤b‡žXžX²X¹XßXËXëXðX÷X÷XY-YY9Y_YKYkYpYwYwYY†Y‘YœY¤Y¬Y·YÂYÕYÍYíYõYq?|¦l¦lÂlÉlálùlmmmmm*m5mCmSmcmjmpm…mšmšm®m¶mÆmÓmâmïmnn n-n4n:nOndndnxn…n–n¦n¬n½n½nÃnÑnânïnÿnaor8¬þJþJKK KK+K4K9K>K@Ks88B00“0—0œ0§0±0´0¸0À0t0†ŽFIFI\IoI|I‚I…I�IuÜtþþ +6?Oagms‰x�ª­µÇÍÒõ )/?EQ_dr‹™¢²´»ÀÈçõ:AKZ`flrˆ©½Éàëú#3AXdiw–¨¿ÈÎÙÞäû(79GVhhp“žÒv`Ëߘ˜4˜V˜c˜g˜v˜•˜™˜Ÿ˜²˜Ϙјј™ð˜ј!™+™wT�Þfàfà~à†à“à³àÅàÌàÖàÜàâàæàêà á áááá*á.á[á_ádádákánásáá�á‘á¢á±áµá·áÆáÊáìáðáõáõá â ââ"â)âOâZâ^âcâ™â°â»â¿âÐâÛâßâáâìâðâðâ
^T^TpT|TšT¶TÃTÚTíTøT UúTU!U,U?U8UWU]U_ôW.=.=L=O=a=h=o=t=v=}=„=ˆ=š=Ì=æ=Ó=þ=>$>$>0>8>G>�>†>³>»>À>É>Ô>Ü>ã>??'?)?H?S?j?‰?�?–?–?œ?Ÿ?£?´?Ô?æ?`$ÞÛÞÛíÛÜÜ Üaxb|~æ~æžæÀæÀæÊæÏæÏæîæûæýæýæýæýæ ããããã ã9ã=ã=ã=ãAãdãxˆßýfãfãzã�ã�ã�ã’ã’ã™ã›ã›ã¢ã¤ã¤ã±ã³ã³ãÀãÇãÉãÉãÖãÝãßãßã÷ãüãüã äy°‰±>e>eVe^eieÃe®e£eŽeweÉeÛeËeöeöeff<fAfMfXfmfZfyff†f§f™f�f»f½fÖfÖfãf
çç%ç9ç;ç;çCçVçVçhçb”"þ.þ. /*/6/;/K/Q/f/z/‰/—/¥/¼/Ä/Î/Ý/å/ò/ú/ý/ý/ý/ÿ/00!0)0,0>0cHÏ6969^9k9n9w9}9”9«9Â9Ô9::8:=:B:M:d:v:ƒ:–:¬:À:Å:Ð:ð:õ:ø:;,;4;<;A;[;u;};…;Š;¤;¬;±;Ñ;Ö;Ù;ó; <<< <9<S<[<c<e<<‡<‡<Œ<‘<œ<œ<§<§<³<³<Å<===+=dd¤¹H‰H‰X‰_‰k‰q‰y‰‡‰š‰¦‰½‰Ê‰Ê‰Í‰Û‰ë‰ŠŠŠeºû�*�*¥*ª*¾*í*ù*++ + +7+>+U+\+e+|+|+’+’+¨+¨+¾+¾+Ô+Ô+ê+ê+,,,,,,,,C,C,Z,Z,q,q,ˆ,ˆ,Ÿ,Ÿ,¶,¶,Í,Í,å,å,ý,--!-,-=-@-B-Y-`-l.f¬÷ &-5=@K]]qx{}†——𢏻ÉÌÏÖÚâðdg(EK’’5’"’A’P’X’hCÆJÆJéJþJK KKK(K.K7K=KBKJKfKlKnKpK}K}KŠKK›K¡K£K¥K²K²K²K·KÀKÈKÑKÙKÛKãKëKóKLLLL(L3L?L]LdLoLuL†LŠL’L’L¦L¶L¾LÁL'Mi8-7¯/¯/Ã/Ç/Ì/×/â/å/é/ñ/j¤õš®™®™Ì™ð™ö™ý™ý™š$š)š?š[šGšgšzšŒš•š�š§šÅšךàšèšòš ›÷š›)›3›;›@›[›G›{›g›‡›�›‰›½›©›É›Û›å›í›í›ö›þ›œ-œ?œNœRœRœYœ^œ|œ~œƒœŽœ¤œ¤œ¤œ¨œ´œÕœãœíœúœ�)�3�5�5�O�b�p�s�“�—��º�Ý�á�žžžž g
žž"ž;žAžLžXžZžbžhž�žŒžšž¤ž½žÀžÈžÔžÖžÞžážúžüžŸ g
ŸŸŸ1ŸIŸUŸjŸoŸ�Ÿ�Ÿ©ŸºŸºŸÅŸПèŸôŸ     / H Y Y _ j r € ‡ ™ kfäÛÛ Û)ÛIÛIÛOÛWÛ_ÛgÛoÛuÛ‚Û‚Û�Û•Û•Û›Û Û Û¦Û«Û«Û±Û¶Û¶ÛÎÛáÛçÛìÛìÛõÛÜÜÜÜÜÜ%Ü'Ü'Ü-Ü-Ü4Ü6Ü6Ü<Ü<ÜCÜEÜEÜKÜKÜRÜRÜZÜ`ÜfÜnÜnÜnÜnÜz܂܊ܒܚܢܪܰÜÈÜ×ÜáÜäÜäÜîÜôÜúÜúÜþÜÝ ÝÝÝ!Ý'Ý/Ý6Ý>ÝFÝJÝPÝ[ÝaÝnÝz݈݀݌ݓݛݣݧݭݵݼÝÄÝÌÝÐÝÖÝáÝæÝüÝ ÞÞÞ»Þl`Ÿ!Ÿ!¨!¯!Ã!×!Ü!ú!ÿ!" "="?"V"j"s"u"‰"™"Ê"m|2ÍP‘P‘f‘w‘ˆ‘™‘ª‘»‘Α֑ä‘’ ’’ ’5’5’H’Y’_’t’�’�’¤’©’±’¹’¿’×’ê’õ’ù’“““ “-“/“A“A“H“P“b“b“q““’“–“ “¤“°“´“À“ēГԓԓç“ú“””””!”%”4”8”K”O”O”O”O”T”f”u”„”’”­”½”͔ҔҔҔޔæ”î”ô” •• •)•7•=•?•?•?•?•?•?•?•?•?•K•S•[•a•v•~•‚•Š•˜•ž•ž•ž•°•¶••ȕՕ𕖠–– –1–?–^–¸—nÔ¼íÈjÈjÚjëjöjkk)kAkFkOkVkckjkxkk�k„k‰k‹k‘k«kÅkÛkókøklll)lDlKlMlPlUlxl–l¢lo$hmO&O&]&q&x&’&p¤b‡XX*X1XWXCXcXhXoXoX�X¥X‘X±X×XÃXãXèXïXïX÷XþX YYY$Y/Y:YMYEYeYmYq?|ll:lAlYlql{l†l†l‹l–l¢l­l»lËlÛlâlèlýlmm&m.m>mKmZmgmxm‰m—m¥m¬m²mÇmÜmÜmðmýmnn$n5n5n;nInZngnwnÙnr8¬vJvJzJJ„J•J£J¬J±J¶J¸Js88B÷/÷/ 000 0)0,00080t0†Ž¾H¾HÔHçHôHúHýHIuÜtvv˜£®·ÇÙßåëð"%-?EJm€„Š¡§·½É×Üê*,38@_my“²¹ÃÒØÞäê!5AXcrŽ›«¹ÐÜáï 7@FQV\s~‹’’ ¯±¿Îààè Jv`Ëß–—–—¬—ΗÛ—ß—î— ˜˜˜*˜G˜I˜I˜z˜h˜I˜™˜£˜wT�ÞÞßÞßößþß à+à=àDàNàTàZà^àbà„à„à‹àŽà“à¢à¦àÓà×àÜàÜàãàæàëà÷àá áá)á-á/á>áBádáhámámá�á„á�ášá¡áÇáÒáÖáÛáâ(â3â7âHâSâWâYâdâhâhâ‚â†âˆâˆâ“â—â±âµâµâµâ¹âÜâxˆßýÞâÞâòâããã ggz †*F´F´c´j´r´}´”´ž´ž´µ´¿´Ú´ð´þ´µ"µ6µJµQµUµnµxµ‰µ–µ–µ�µ¤µ©µ®µ³µºµÁµÛµâµòµöµöµ+¶>¶Q¶Q¶W¶b¶i¶q¶|¶ƒ¶‹¶–¶��¨¶Æ¶Ê¶â¶Ó¶ý¶ý¶·
ã ··!·/·6·:·<·N·N·N·`·h·Ž·œ·œ· ·µ·½·Í·Ø·í·ò·¸¸¸%¸0¸4¸9¸A¸E¸T¸V¸e¸g¸v¸x¸‡¸Ž¸’¸¦¸®¸¼¸Ã¸Ç¸×¸â¸ç¸¹ ¹¹"¹&¹.¹<¹C¹G¹O¹c¹k¹v¹z¹z¹z¹…¹�¹ ¹¬¹Â¹Ê¹Õ¹ä¹ì¹÷¹ü¹ººº º*º/ºAºIºTºTºTºTºbºqºŽºšº¢º²ºÂºàºäº»»ùº#»#»-»4»C»R»Z»h»o»s»u»„»Œ»š»¡»¥»¥»§»¹»¹»Ë»Ë»Ë»Ñ»Ý»ï»÷»¼;¼I¼M¼k¼r¼y¼„¼š¼œ¼£¼¶¼¾¼Ì¼Ó¼×¼Ù¼ì¼ô¼½ ½ ½ ½ ½ ½½&½5½=½K½V½Z½Z½_½g½k½z½|½‹½�½œ½ž½­½´½¸½Ì½Ô½â½é½í½ý½¾ ¾+¾3¾A¾H¾L¾T¾b¾i¾m¾u¾‰¾‘¾œ¾ ¾ ¾ ¾«¾²¾À¾Ú¾ê¾õ¾
ããããããã)ã+ã+ã8ã?ãAãAãNãUãWãWãoãtãtã„ãy°‰±¶d¶dÎdÖdád;e&eeeïdAeSeCenene‡e{e´e¹eÅeÐeåeÒeñe÷eþe fff3f5fNfNf[f‚f‚f‚fŽfz †*¾³¾³Û³â³ê³õ³ ´´´-´7´R´h´v´z´š´®´Â´É´Í´æ´ð´µµµµµ!µ&µ+µ2µ9µSµZµjµnµnµxµŽµ’µ’µ£µ¶µÉµÉµÏµÚµáµéµôµûµ>¶B¶Z¶K¶u¶u¶{¶‚¶‘¶™¶§¶®¶²¶´¶Æ¶Æ¶Æ¶Ø¶à¶····-·5·E·P·e·j·x·‡·�·�·¨·¬·±·¹·½·Ì·Î·Ý·ß·î·ð·ÿ·¸ ¿¿¿*¿6¿L¿T¿_¿n¿v¿�¿†¿Ž¿™¿¥¿©¿´¿¹¿Ë¿Ó¿Þ¿Þ¿Þ¿Þ¿ò¿ÀÀ$À(À<ÀMÀbÀoÀsÀ�À–À¦À½ÀÖÀïÀñÀüÀÁÁ Á*Á;ÁRÁkÁyÁ„Á�Á˜ÁšÁ¥Á­Á­Á­ÁÇÁÕÁãÁøÁÂÂ+ÂIÂPÂPÂ`ÂtŽŽ’¨·ÂÒÂÝÂôÂüÂüÂÃÃ1ÃLÃUÃjÄÓàþÃÌÃâÃûà Ä#Ä#Ä;Ä;ÄGÄ_ÄwĀĀĀČÄ�ĵľľÄÅÄÎÄÔÄàÄFÅ{ÌL»¶ö¶öÔößöêö÷÷÷ ÷*÷0÷A÷P÷_÷l÷l÷r÷w÷|÷�÷¢÷­÷±÷Ã÷Ð÷Ø÷ã÷ß÷ú÷øøøø.øø?ø6øIøKøgøSøoø}ø}øø›ø›ø¢ø¨ø±ø¸ø»øÝøñøäøùøÿøùùùù ù ù(ù(ù3ùHùQùQùQùQùmù„ùŠù�ù�ù¤ùªù¯ù¯ù»ùØùøùýùúúú+ú:úIúQúVú\úaúaúhúoú’ú¯ú±úÎúãúãúéúéúöúÿúÿúû,û7û<ûIûTû\ûdûtû‹û‹û›û›û­û³ûÛûäûäûæûíûòûòûÿû
¸¸&¸4¸;¸?¸O¸Z¸_¸}¸…¸“¸š¸ž¸¦¸´¸»¸¿¸Ç¸Û¸ã¸î¸ò¸ò¸ò¸ý¸¹¹$¹:¹B¹M¹\¹d¹o¹t¹|¹‡¹“¹—¹¢¹§¹¹¹Á¹Ì¹Ì¹Ì¹Ì¹Ú¹é¹ººº*º:ºXº\º‹º€ºqº›º›º¥º¬º»ºÊºÒºàºçºëºíºüº»»»»» »1»1»C»C»C»I»U»g»o»‡»³»Á»Å»ã»ê»ñ»ü»¼¼¼.¼6¼D¼K¼O¼Q¼d¼l¼z¼�¼…¼…¼…¼…¼“¼ž¼­¼µ¼Ã¼Î¼Ò¼Ò¼×¼ß¼ã¼ò¼ô¼½½½½%½,½0½D½L½Z½a½e½u½€½…½£½«½¹½À½Ä½Ì½Ú½á½å½í½¾ ¾¾¾¾¾#¾*¾8¾R¾b¾m¾‚¾‡¾’¾¢¾®¾Ä¾Ì¾×¾æ¾î¾ù¾þ¾¿¿¿!¿,¿1¿C¿K¿V¿V¿V¿V¿j¿z¿�¿œ¿ ¿´¿Å¿Ú¿ç¿ë¿ù¿ÀÀ5ÀNÀgÀiÀtÀ|À|À…À¢À³ÀÊÀãÀñÀüÀÁÁÁÁ%Á%Á%Á?ÁMÁ[ÁpÁ‡Á–Á£ÁÁÁÈÁÈÁØÁìÁ üüüü,ü9üKüVüdümürü™ü¢ü­ü²ü¹üÁüÔüéüîüõüý ýý0ý7ý=ýFýFýOýiýpýuýƒý“ý¡ý¡ý§ý®ý·ý·ýÊýÜýßýßýðýøýþ þ)þ0þ=þ?þFþZþiþiþiþ�þ�þ�þ�þ�þ²þ½þÏþÜþçþõþÿÿÿÿ0ÿCÿEÿTÿiÿkÿyÿŽÿŽÿ”ÿ�ÿ�ÿªÿ°ÿÂÿÂÿÏÿÒÿÝÿïÿöÿ %:<Vkkkmtz‹™««±¸ÁÆçððöÿÿ+.4=EPbhss€ƒ‰’𥷽ÈÈÕØÞçé 39DV\ddddoê|”�¾g3g3{33ˆ3‹3”3�3¯3¯3Ø3Ü3á3ä3í3ý34444 4'4/474>4N4N4Z4}Œ >æUæUúUV1VV=VBVIVIViVVkV‹V»V§VÇVÌVÓVÓVÛVâVíVõVWW W+W3W~À-ee6eFePePeZeZedeveƒe†eˆe‘ežeže¬eÀeÀeäeñeñefff1f>f>fTfwf�f°f¹fÆfÆféfófóf&gYg_g_g_gqg¸ºä˜Š˜Š°Š²Š¾ŠÂŠÏŠÒŠìŠìŠìŠòŠöŠþŠ ‹‹)‹+‹+‹4‹6‹6‹?‹A‹A‹J‹L‹L‹U‹U‹^‹d‹g‹q‹‚‹ˆ‹”‹”‹ü‹€œWzþ)þ)*-*P*W*p*h*ˆ*¨*”*´*Å*Ê*ë*×*+++2+K+C+c+ƒ+o+�+ +¶+¢+Î+Û+Û+ó+ó+ý+�œX{Ö-Ö-â-ò-ý-'.W.d.u.‡.Ž.•.©.°.¾.Ö.å.ò.õ.///-/9/E/I/P/†/‚x¬p¬p¬†¬�¬”¬³¬Â¬Ñ¬à¬ï¬þ¬­­ ­­'­6­;­V­p­p­†­˜­œ­ª­±­¶­¶­½­Ï­Ø­Ú­è­ú­ú­ú­ ®®)®4®A®F®V®[®k®w®|®‰®Ž®ž®£®³®µ®Å®Ç®×®Ù®ê®ó®ó®õ®¯ ¯¯¯7¯I¯[¯m¯}¯}¯}¯€¯“¯ƒ\åøŒŒŒ"Œ'Œ5ŒJŒQŒ[ŒiŒlŒnŒxŒŠŒŠŒ‘ŒÇŒ„0ÎÖÖÖî0$øöDL…`Ê——$—F—S—]—l—…—‰—�—¢—¿—Á—Á—ò—à—Á—˜˜†L4CN,N,\,n,t,|,Ž,”,�,¯,µ,¸,ô,‡(–œ7373E3T3X3[3a3ˆ\DWö,ö,---$-6-<-E-W-]-f-x-~-�-Ï-‰, ÒÒ$Ò+Ò3Ò8Ò>ÒŠ¬!HÖ Ö ô 
 Â/ÂJÂUÂlÂtÂt––©ÂÄÂÍÂâÂü ÃÃ6ÃDÃZÃsÃÛÛóóÿÃ×ÃïÃøÃøÃøÃÄÄ-Ä6Ä6Ä=ÄFÄLÄXľÄ{ÌL».ö.öLöWöböˆöˆöŠö—ö¢ö¨ö¹öÈö×öäöäöêöïöôö÷÷%÷)÷;÷H÷P÷[÷W÷r÷€÷€÷€÷‹÷¦÷‘÷·÷®÷Á÷Ã÷ß÷Ë÷ç÷õ÷õ÷÷÷øøø ø)ø0ø3øUøiø\øqøwø€ø€ø€ø“ø˜ø˜ø ø ø«øÀøÉøÉøÉøÉøåøüøùùùù"ù'ù'ù3ùPùpùuùzùzù†ù£ù²ùÁùÉùÎùÔùÙùÙùàùçù
ú'ú)úFú[ú[úaúaúnúwúwú’ú¤ú¯ú´úÁúÌúÔúÜúìúûûûû%û+ûSû\û\û^ûeûjûjûwû‚ûˆû‘û‘û¤û±ûÃûÎûÜûåûêûüü%ü*ü1ü9üLüaüfümüzü�ü“ü¨ü¯üµü¾ü¾üÇüáüèüíüûü ýýý ý&ý/ý/ýBýTýWýWýhýpýxý„ý¡ý¨ýµý·ý¾ýÒýáýáýáýþþþþþ*þ5þGþTþ_þmþxþ‡þŽþŽþ¨þ»þ½þÌþáþãþñþÿÿ ÿÿÿ"ÿ(ÿ:ÿ:ÿGÿJÿUÿgÿnÿyÿ~ÿ†ÿ�ÿ˜ÿ�ÿ²ÿ´ÿÎÿãÿãÿãÿåÿìÿòÿ##)09>_hhnww––£¦¬µ½ÈÚàëëøû
/5@@MPV_aƒ–«±¼ÎÔÜÜÜÜçb|”�¾ß2ß2ó2÷233 33'3'3P3T3Y3\3e3u3|33‡3Š3—3Ÿ3§3¯3¶3Æ3Æ3Ò3}Œ >^U^UrUyU©U•UµUºUÁUÁUáU÷UãUV3V V?VDVKVKVSVZVeVmVxV‹VƒV£V«V~À-�d�d®d¾dÈdÈdÒdÒdÜdîdûdþde eee$e8e8e\eieieye†e†e©e¶e¶eÌeïef(f1f>f>fafkfkfžfÑf×f×f×féf¸ºäŠŠ(Š*Š6Š:ŠGŠJŠdŠdŠdŠjŠnŠvŠ�ЕСУУЬЮЮзййŠÂŠÄŠÄŠÍŠÍŠÖŠÜŠßŠéŠúŠ‹ ‹ ‹t‹€œWzv)v)”)¥)È)Ï)è)à)* * *,*=*B*c*O*{*£*ª*Ã*»*Û*û*ç*++.++F+S+S+k+k+u+�œX{N-N-Z-j-u-Ÿ-Ï-Ü-í-ÿ-. .!.(.6.N.].j.m.†.‰.Ž.¥.±.½.Á.È.þ.‚x¬è«è«þ«¬ ¬+¬:¬I¬X¬g¬v¬€¬€¬…¬Œ¬Ÿ¬®¬³¬Î¬è¬è¬þ¬­­"­)­.­.­5­G­P­R­`­r­r­r­„­�­¡­¬­¹­¾­Î­Ó­ã­ï­ô­®®®®+®-®=®?®O®Q®b®k®k®m®}®„®”®”®¯®Á®Ó®å®õ®õ®õ®ø® ¯ƒ\åøx‹x‹“‹š‹Ÿ‹­‹Â‹É‹Ó‹á‹ä‹æ‹ð‹ŒŒ Œ?Œ„0ÎÖNNf¨œpn¼Ä…`ʆ–†–œ–¾–Ë–Õ–ä–ý–———7—9—9—j—X—9—‰—“—†L4CÆ+Æ+Ô+æ+ì+ô+, ,,',-,0,l,‡(–œ¯2¯2½2Ì2Ð2Ó2Ù2ˆ\DWn,n,|,Ž,”,œ,®,´,½,Ï,Õ,Þ,ð,ö,ù,G-‰, ŽÑŽÑœÑ£Ñ«Ñ°Ñ¶ÑЬ!HN N l ~ … Œ ›   ¿ ¿ Ä ã è ï þ 
 
 
> #
S (
@ G
_ G
n L
k
p p
� w
� †
� ˆ
� §
ž §
· Æ
° Û
Ï È
Ù ç
‹@? aa+a3a:a_aqawa‚a™a¨a³a·aÂaÎaÙaåaüab&b=bRbbbbbtbzb‹b‘b¡b¡b¹b¹bÞbÞbãbãbébõbcc#c:cIcTcfcrc‰c¡cÂcÂcËcÐcÐcÐcÐcàcécñcöcdd"d'd'd5d5d:d:dDdOdadgdsdƒdŽd˜dœd¥d¾dÁdÑdØdödÿdÿdee.e5e;eGeOeZeaeeexe~e‹e–eœe¬e¼e¼eée ff f*f1f<f>fIfIfYf^f^fhfsf…f‹f™f¦f³f½fÁfÊfãfæföfýfggggg g/g8gJgPgRgRg`gfglg}gƒg�gŸgŸgŸg¤g¼g¼gËgÎgâgh h4hFhQhchghlhsh…h•h­h´h¸h¾hÆhÑhÔiŒ<KVÆ(Æ(à(ì(þ()5)")M)e)e)o)�`l€P›P›p›w››Š›”›Ÿ›§›¶›À›Ã›ç›é›ù›ù›œŽXnvÔvԜԮԳÔÊÔÜÔæÔðÔþÔÕÕ+Õ-Õ6ÕLÕZÕbÕjÕlÕwՂՂՊՒ՜դծշտÕÂÕËÕæÕ÷Õ Ö ÖÖ$Ö<ÖPÖXÖXÖjÖmÖrÖ…Ö�Ö±Ö¹Ö¹ÖÚÖÝÖâÖõÖûÖ×&×(×=×S×[×[×fׅ׌ח׮×�83=ŽÒŽÒ—Ò—Ò¥Ò©Ò·ÒºÒ¿Ò�8>HÆÒÆÒÏÒÏÒÝÒáÒèÒëÒðÒ‘D*Î*Î*è*û*+ ++0+9+=+O+U+t+’Ðy©ö÷ö÷ ø#ø*ø0ø6ø8ø>øDøDøVøaøhøuø‚ø•ø¤ø¸ø¾øÀøÇøÍø×ø×øèøêøñø÷øùùùù*ù1ù@ùBùTùcùcùuù“0+3v+v++¥+¶+¼+¼+Ä+”„\y¶ì¶ìÈìÝìçìðìòìùì ííí í í&í7í:í:í[ífíhí�íˆíŒí˜í«íþí• 
**'*E*J*–h÷ n^n^„^�^š^¨^³^¹^Ê^Ð^á^ç^ó^
_
__-_:_@_Q_W_¥_—�µÕ6O6OdOiO}O…O“O—O O O¥O²OÈOòO÷OP#P(P/PEP[P]PsP‰P­PÇPÙP˜ˆùnünü†ü˜üŸü¦üÅüÊüéüîüýõü'ýý3ýHý5ýgýTýsýsýsý…ýŒý«ý«ý³ý™ y}ЇЇهå‡ê‡š(AžâžâÀâÈâÎâÖâØâØâéâéâéâñâùâ ãã ã/ã1ã1ãKãMãMãXã]ãwã|ã|ã|ã‘ã“ã ã¢ã¯ã±ã¾ãÆãÎãÕãäãñãóãäääää,ä?äEäMäOä\ä\äqäqäqä|ä†äžä£ä£ä£ä±ä·ä¼äÄäÏäáäìäñäñäøäüä
åååå<åIåPåYåuåzåzåzåzå‚å�å›å›å»å»å»åÂåÐåßåòåææææææ!æ(æ-æ3æEæOæjæ“æ™æ™æ­æ²æÖæÝæéæçç%ç,ç0ç0ç0ç0ç;çEçSçuç€ç�ç§ç§çµçÓçèè'è>èQèVèVèVè^èiè{è†è‹è‹è‹è�èÊèÐèÐèÐèÛèåèñèüèþèþèþèéééYé›H%///$///=/H/P/P/h/r/x/~/œ0 îSîSTT!T7T0TOTWT�T9J¦'¦'À'Ì'Þ'ô'((-(>(P(f(‡(t(Ÿ(·(·(Á(žÖÞPÞPQ$Q,Q7Q>QEQNQPQSQqQxQ“Q•QœQ·Q¾QÇQÉQÌQêQêQêQøQRR/R1RKRSRSRoR�R’R™R­R´RÏRÑRØRóRS"S%S-S:SZS\SvS~S~SšSµSµSÛSíSŸTXi¾ ¾ Ô â è î ÿ  -17EHR Lg¶ý¶ýåýÚýòý þùý-þþ9þOþ;þoþ[þ{þ‡þŒþ˜þ¨þ¯þ¼þÇþÓþÞþæþëþ÷þüþÿÿÿ&ÿ+ÿ6ÿOÿXÿdÿiÿ}ÿ„ÿˆÿˆÿ�ÿ¦ÿ«ÿÄÿÙÿëÿðÿûÿ3>HSU`hhum�­¡àZŽxbxb’b b¥b²bÀbÉbäbòbcc-cGcRcbcdcfcpc|c€c�c™c«c³cËcÏcÏcÏcÏcÔcòc d dddd*d3d‰d¢d{�v+v+”+·+È+Ï+è+à+, , ,,,=,S,?,k,x,x,�,�,š,£@I•Þ
Þ
ö ö
  ; &  G e ’ } q ž ¸ ¸ × ì Ù   ø % ? ? ? Q k k ˜ ± ¥ Þ ã ö ê   $ B Z N € m › Œ § Å Ú Ç ò æ  :::Lff�Ž­­µ¤(®ß®ß¼ßßßåßêßêßðߥ(!'6Ò6Ò?ÒMÒSÒUÒZÒ¦D]j|8|8–8�8¦8²8Ç8Ï8Õ8Û8Ý8Ý8ì8§„½Ú¨¥¨¥Û¥ç¥ë¥ó¥û¥ÿ¥ ø
¦¦¦¦¦#¦'¦8¦I¦K¦O¦`¦q¦~¦‘¦˜¦¢¦¢¦¢¦´¦¨€¸—¸—Ñ—Ø—ß—æ—ì—ü—˜˜˜3˜6˜8˜S˜]˜g˜n˜y˜‹˜“˜“˜©˜©˜»˜©˜bV^V^|^œ^¤^¯^¾^Ç^Ë^Ö^ö^û^_4_:_?_R__ˆ_ž_¤_¬_¯_´_Ç_ì_ñ_` ```8`=`Z`y``‡`‡`Œ`’`•` `À`Å`ß`þ`a a)a2a7aVa^acaƒaŒaŽa­aµaÕaÚaôabbbbbb+b<bGb_bjb}bŠb¢b¶bÇbÑbÓbçbøbýbcc5c5c5cGcª°)žž+ž8ž=žAžJžWžcžnžyž�žŒž”ž—ž£ž«žÅžëžåžûžŸ9Ÿ%ŸIŸIŸaŸlŸˆŸ�Ÿ³ŸìŸìŸìŸìŸM «0ùA@Œ@ŒeŒqŒ|Œ†ŒŒŒ–ŒœŒ¦Œ´Œ¾ŒÐŒÚŒàŒêŒðŒúŒ� ���G�V�Y�[�e�w���“���²�²�µ�¿�Ô�Ù�é�ô�ù� Ž Ž*Ž?ŽMŽVŽ^ŽlŽ}Ž�ŽžŽ«Ž«Ž¸Ž¸ŽÀŽÎŽ�¬l£:æ?æ?ÿ?@'@G@Y@q@Œ@Œ@¶@¾@Â@Å@É@Î@Ø@Û@â@è@ï@õ@ù@þ@AA A'A)A-A6A@ACANAZA]AnAyAA†A�A¨A¹AÂAËAÓAÞAéAõABB#B1B3B:BABFBJBWB^B�B�B™B£B¬BÅBÖBßBèBðBùBÿBCC CC C.C8CMCWC`CyCŠC“CœC¤C­C³C·C¼CÂCÌCÖCòCDD DDD#D0D8DWDJDiDrD�D¡D´D»DÄDÍDÔDÝDæDïDEøDEEvE­  ȄȄքõ„û„®À�¹·'·'À'ç'Õ'Ç'((     & ? 8 W a ‹@? –a–a³a»aÂaçaùaÿa
(9(\(\(l(q(q(…(Š(Š(¦(«(«(Ë(Ð(Ð(ä(é(é()))8)^)~)�)¢)´)Ä)Ä)Ä)Ä)Ä)�*¯$bg&& &#&5&O&°´ªºº(º7º7º:ºCºOºOº[ºpº‘º£ºµº¹ºɺéºûº»»»!»'»0»0»Q»U»e»r»�»¢»¨»»»Í»Ù»Û»ç»ï»ó»ù»¼¼¼¼¼*¼0¼<¼Q¼X¼`¼l¼�¼ˆ¼ˆ¼ˆ¼–¼¤¼®¼±¼¿¼ɼ̼Þ¼ã¼è¼ø¼û¼½½½½ ½(½:½B½K½a½g½s½ˆ½�½—½©½¯½¾½ϽϽÖ½Ö½Ö½ä½ò½ü½ÿ½ ¾¾¾,¾1¾6¾F¾I¾N¾^¾a¾e¾n¾v¾ˆ¾�¾™¾™¾¤¾»¾Ó¾×¾ã¾û¾¿ ¿¿¿"¿*¿3¿3¿3¿L¿T¿Z¿q¿z¿‚¿ˆ¿Ž¿Ž¿Ž¿•¿§¿³¿»¿Á¿Ç¿Ç¿É¿Û¿±xNÓNÓ\ÓqÓxÓƒÓ¥ÓÙÓõÓÔÔ!Ô-Ô6Ô>ÔFÔHÔNÔTÔ`ÔhÔnÔpÔvÔ²Ü,ß–l–l´l¼lÌlÔlmmm$m,m2mFmNmNmVm�mÙm´mümnn"n$nNnTn]ndnlntn€nˆn�n£n«n°nºnÚnânänînýno%o'oGoOoOoOoZoaoto|o…o…oŠoŽo–oŸo¨o°oÌoçop+p.pEpRpfp}p�p²pÌpÞpqqq:q=q=qTqaquqŒq—q›q¦q±qÃqÒqÔqþqrr"r'rQrWr\rnr}rr©r¬r¾rÍrÏrùrÿrÿrÿr s ssEsPsPsPsPsYses{s”s§s®sºsÁsÁsÔsØsØsØsßsäs÷sþs b!b0b;b?bJbVbabmb„b›b®bÅbÚbêbêbübccc)c)cAcAcfcfckckcqc}cŠc–c«cÂcÑcÜcîcúcd)dJdJdSdXdXdXdXdhdqdyd~dŒdšdªd¯d¯d½d½dÂdÂdÌd×dédïdûd ee e$e-eFeIeYe`e~e‡e‡e–e¦e¶e½eÃeÏe×eâeéeíeffff$f4fDfDfqf“fŸf§f²f¹fÄfÆfÑfÑfáfæfæfðfûf gg!g.g;gEgIgRgkgng~g…gŠgŠgžgžg£g§g·gÀgÒgØgÚgÚgègîgôgh hh'h'h'h,hDhDhShVhjhˆh“h¼hÎhÙhëhïhôhûh ii5i<i@iFiNiYi\jŒ<KVN)N)h)t)†)œ)½)ª)Õ)í)í)÷)�`l€Ø›Ø›ø›ÿ›œœœ'œ/œ>œHœKœoœqœ�œ�œ�œŽXnþÔþÔ$Õ6Õ;ÕRÕdÕnÕxÕ†ÕŽÕ�Õ³ÕµÕ¾ÕÔÕâÕêÕòÕôÕÿÕ
ttt(t*t/tBtItUt\t\titststzt›t›t­t³ ÄæDæDûDE.EE EME:EYEnE[E›E†EzE§EµE½EÈEÊEÕEàEàEåEFFDFIFcFPF‚FoFŽF™F®F›FÍFºFÙFÞFÙFôFG Ö
GGG"G-G-G2GMGOGjGjGwG|G›G�G¼G¼G¼GÄG´\ãö~]~]”]¦]¬]·]Å]Ñ]è]è]ú]^ ^^&^4^A^m^µ(28®®Ìßæíôøú  -77KVduy~šÂÆÏÓØé   ( - F W [ [ [ ` Ž £ ª ½ Á Æ â  ÖÖÖ$Ö,Ö6Ö?ÖGÖJÖSÖnÖÖ‘Ö”Ö™Ö¬ÖÄÖØÖàÖàÖòÖõÖúÖ ×%×9×A×A×b×e×j×}׃ט׮װ×Å×Û×ã×ã×î× ØØ Ø6Ø�83=ÓÓ Ó Ó-Ó1Ó?ÓBÓGÓ�8>HNÓNÓWÓWÓeÓiÓpÓsÓxÓ‘D*V+V+p+ƒ+�+”+ +¸+Á+Å+×+Ý+ü+’Ðy©~ø~ø¨ø«ø²ø¸ø¾øÀøÆøÌøÌøÞøéøðøýø
   $ 5 G W k m † ™ � � � ¹ á å î ò ÷ !%!%!3!G!L!e!v!z!Œ!Œ!Œ!‘! !Á!à!ë!ñ!"""2"N"v"z"ƒ"‡"Œ"�"¶"¶"Ä"Ø"Ú"ó"####"#&#8#=#Y#�#‰#’#–#›#¬#Â#Ò#æ#ë#$$$-$-$-$-$2$Q$`$�$Œ$’$¨$¹$¹$¹$À$Ó$ì$ì$ì$û$û$%%%0%A%F%L%V%X%d%d%k%v%‹%�%˜%­%¹%»%Æ%Ò%â%é%ð%ú%&& ùù,ù@ùFùHùOùUù_ù_ùpùrùyùù‰ù‰ù‰ù ù²ù¹ùÈùÊùÜùëùëùýù“0+3þ+þ+,-,>,D,D,L,”„\y>í>íPíeíoíxízí�í‘íœíží¨í¨í®í¿íÂíÂíãíîíðí îîî î3î†î• 
& &&&&/&1&6&>&B&D&D&M&Z&p&�&ª&¶&Â&É&É&Ü&à&à&à&ç&ì&'''%'%'<'>'C']'i'u'|'|'‰'“'“'¥'˜ ºœ˜G˜GµGÄGÄGÄGÞGÞGíGíGóGõGõGûGýGýGHHH HHHHHHHHH2H2HGHRH\HiH~H€H›H�H¸H½HØHÝHãHãHøHûH"I/IGIgIgIpIuI“I�I™I¨I­I´I½IÐIØIàIåIåIåIîIJ J J&J4JNJdJfJnJtJ|J�J�J‡J‡J�J¡J£J¸JºJÂJÈJÐJÕJÕJÕJÕJãJ÷JùJ K KKK#K(K1K9KBKHKNKPKPKPKXKXKfKzK~K€KŒKŽK©K¯K·K¼KÅKÐKÓKÙKßKèKëKëKùKL L,LILOLWL\LeLgLgLlLnLvLvL‘L£L¨L´LºL½LÔLÖLÙLéLíLôLýL MM M(M-M5M:M:MBMOMgMlMvMžM©M´M¿MÊMÕMàMëMöMöMöMþMþMN%N?NUNUNWNWN`NfNhNhNnNtNtN|N…N‹N—N—NžN¡NÀNËNÓNÛNàNàNçNëNðNÿNOOOO%OLOLORO`OqO}O„O’O¡O·O½OÂOÂOÇOÚOæOîOþOPP P&P(P1P1P7PEPQPdPwP‹P‘P“P¦P«P«PÈPÈPÚPàPéPïPøPQ Q QQ$Q&Q1QCQVQVQjQvQˆQ�Q™QŸQ¢Q¹Q»Q¾QÎQØQÛQÛQêQýQRR R&R)R@RBRERURYRaRoRtRyRyRR‡RŒRŒR’R’R R¦R¬R¶RÀRÎRãRæRèRòRòRôRüRSS S SSSSS#S.S3S8SCSHSnSpSuSzSS„S‰SŽS“S“S˜S�S¹SÃS×SëSñSùSùST TTT'T5TJTMTOTYThTmTmTmTuTzTƒTƒTˆTˆTŽT–T›T›T T«T°TµTºTÉTÉTÚTàTàTîTôTúTUUU1U4U6U@UOUTUTUTU\UaUjUoUoUuU}U‚U‚U‡U’U—UœU¡U°U°UÁUÇUÇUÕUÛUáUëUõUVVVV'V6V;V;V;VCVHVQVVVVV\VdViViVvV|V|VŠV�V–V VªV¸VÍVÐVÒVÜVëVðVðVðVøVýVW W WWWWW+W1W1W?WEWKWUW_WmW‚W…W‡W‘W W¥W¥W¥W­W²W»WÀWÀWÊWÒW×W×W×WÝWçWíWXXX XXX!X!X'X5X>XLXQXQXWXeXqX‚X�X–XžX¨X¶X¶X»X»XÆXÆXÆXÊXÏXÏXÕXÙXÞXæXìXîX÷XYYYYY!Y'Y5Y@YEYKYSYXYXYXYXYXYXYXYXYXYXYqYwY€Y†YŽY“Y˜Y¡Y¬YµY½YÂYÂYÂYÈYÐYÕYÕYÙYÞYÞYçYõYZZZZZ1Z1Z7Z@ZTZTZ]Z_ZeZnZ‚Z‚Z‹Z‹Z‹Z�Z•Z•Z�Z¢Z¢Z¿ZÍZÙZâZèZòZúZÿZÿZÿZ[["[4[>[>[F[F[N[P[P[i[s[|[~[~[~[„[ˆ[Š[Š[Š[Š[�[•[›[Ÿ[_·Ðà®t®tÐtætòtu,u9uPucunu„upu�u˜u˜u§u§u¯u»uÑuæuõuvvvvvv#v2v=vTvVv[vjvuv‚vŒvŒvšv¸”*KP P h o v y ‚ … ˆ Œ ‘ ± ž Á É Ñ Ô Ö æ ï ø þ ¡¡)¡:¡E¡w¡¹à.¢ö;ö;< <0<3<7<@<G<U<d<z<‹<œ<®<À<Ï<Þ<ï<þ<þ< =====*=1=?=S=\=b=p=‰=‹=�=™=™=ž=ž=ž=£=£=²=»=Ã=Ù=Ù=Ù=Þ=Þ=ó=ÿ= ¦*¦*¯*Í*Ò*–h÷ ö^ö^ __"_0_;_A_R_X_i_o_{_’_’_¤_µ_Â_È_Ù_ß_-`—�µÕ¾O¾OìOñOP PP P(P(P-P:PPPzPP£P«P°P·PÍPãPåPûPQ5QOQaQ˜ˆùöüöüý ý'ý.ýMýRýqývý�ý}ý¯ýœý»ýÐý½ýïýÜýûýûýûý þþ3þ3þ;þ™ y}XˆXˆaˆmˆrˆš(A&ã&ãHãPãVã^ã`ã`ãqãqãqãyã�ã“ã¢ã“ã·ã¹ã¹ãÓãÕãÕãàãåãÿãäääää(ä*ä7ä9äFäNäVä]äläyä{äŒä™ä™ä™ä¢ä´äÇäÍäÕä×äääääùäùäùäåå&å+å+å+å9å?åDåLåWåiåtåyåyå€å„å’å–åŸå¦åÄåÑåØåáåýåææææ
>>>>>>3>?>L>N>N>R>T>T>p>|>ˆ>Š>Š>�>�>�>œ>ž>ž>¡>¡>ª>°>µ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ñ>Ó>ä>ö>????? ?<?@?E?à?º,fÑfÑtÑ{ушюѻ˜?a®V®VÄVÊVÑVWíV WWWW9WOW;W[W‹WwW—WœW£W£W£W©W¬W°W¸WÐWÛWîWæWXX¼PQa % %-%;%B%R%c%h%…%‹%’%™%§%³%Å%&½D%ößöß ææ#æ#æCæCæCæJæXægæzæ�æ�æ�æ�æ¢æ¢æ©æ°æµæ»æÍæ×æòæç!ç!ç5ç:ç^çeçqç�ç¢ç­ç´ç¸ç¸ç¸ç¸çÃçÍçÛçýçè%è/è/è=è[è‹èžè¯èÆèÙèÞèÞèÞèæèñèééééé%éRéXéXéXécéméyé„é†é†é†é‹é—é—éáé›H%—/—/¥/¬/·/Å/Ð/Ø/Ø/ð/ú/00œ0 vTvT�TŠT©T¿T¸T×TßT�T9J.(.(H(T(f(|(�(Š(µ(Æ(Ø(î()ü(')?)?)I)žÖfQfQ˜Q¬Q´Q¿QÆQÍQÖQØQÛQùQRRR$R?RFRORQRTRrRrRrR€RŠR—R·R¹RÓRÛRÛR÷RSS!S5S<SWSYS`S{S�SªS­SµSÂSâSäSþSTT"T=T=TcTuTŸTXiFF\jpv‡•£µ¹¿ÍÐÚ Lg>þ>þmþbþzþ•þ�þµþ¡þÁþ×þÃþ÷þãþÿÿÿ ÿ0ÿ7ÿDÿOÿ[ÿfÿnÿsÿÿ„ÿ˜ÿŸÿ£ÿ®ÿ³ÿ¾ÿ×ÿàÿìÿñÿ .3Lasxƒ‹‹‹�¦»ÆÐÛÝèððýõ5¡àZŽccc(c-c:cHcQclczcœc¥cµcÏcÚcêcìcîcøcddd!d3d;dSdWdWdWdWd\dzd”d”d›džd¦d²d»de¢d{�þ+þ+,?,P,W,p,h,ˆ,¨,”,´,Å,Û,Ç,ó,----"-£@I•f f ~ � › à ® ¢ Ï í   ù & @ @ _ t a ¡ Œ € ­ Ç Ç Ç Ù ó ó  9 - f k ~ r   ‘ ¬ Ê â Ö õ #/MbOznœ�¨ÂÂÂÔîî 55=¤(6à6àDàgàmàràràxà¥(!'¾Ò¾ÒÇÒÕÒÛÒÝÒâÒ¦D]j999%9.9:9O9W9]9c9e9e9t9§„½Ú0¦0¦c¦o¦s¦{¦ƒ¦‡¦’¦–¦š¦ž¦¦¦«¦¯¦À¦Ñ¦Ó¦×¦è¦ù¦§§ §*§*§*§<§¨€@˜@˜Y˜`˜g˜n˜t˜„˜�˜™˜¤˜»˜¾˜À˜Û˜å˜ï˜ö˜™™™™1™1™C™©˜bÞ^Þ^_$_,_7_F_O_S_^_~_ƒ_�_¼_Â_Ç_Ú_``&`,`4`7`<`O`t`y`�`•`�` `À`Å`â`aaaaaaa(aHaMaga†aŒa‘a±aºa¿aÞaæaëa bbb5b=b]bbb|b›b¡b¦b¦b¦b¦b³bÄbÏbçbòbcc*c>cOcYc[coc€c…c�c�c½c½c½cÏcª°)�ž�ž³žÀžÅžÉžÒžßžëžöžŸ ŸŸŸ Ÿ+Ÿ3ŸMŸsŸmŸƒŸŒŸÁŸ­ŸÑŸÑŸéŸôŸ  ; t t t t Õ «0ùAȌȌíŒùŒ����$�.�<�F�X�b�h�r�x�‚�‰�•�›�¤�Ï�Þ�á�ã�í�ÿ� ŽŽ%Ž:Ž:Ž=ŽGŽ\ŽaŽqŽ|Ž�ޕލ޲ŽÇŽÕŽÞŽæŽôŽ��&�3�3�@�@�H�V���¬l£:n@n@‡@Ÿ@¯@Ï@á@ù@AA>AFAJAMAQAVA`AcAjApAwA}A�A†A�A¡A¨A¯A±AµA¾AÈAËAÖAâAåAöABBBB0BABJBSB[BfBqB}BŽBŸB«B¹B»BÂBÉBÎBÒBßBæB CC!C+C4CMC^CgCpCxC�C‡C‹C�C”C¡C¨C¶CÀCÕCßCèCDDD$D,D5D;D?DDDJDTD^DzDˆDŽD“D›D£D«D¸DÀDßDÒDñDúDE)E<ECELEUE\EeEnEwE�E€E E¤EþE­  P…P…^…}…ƒ…®À�¹?(?(H(o(](O(�( (’(Á(ä(ä(ô(ù(ù( ))).)3)3)S)X)X)l)q)q)Ž)Ž)œ)À)æ)****<*L*L*L*L*L*+¯$bg�&�&“&«&½&×&°´ª–º–º°º¿º¿ºº˺׺׺ãºøº»+»=»A»Q»q»ƒ»‰»œ»¥»©»¯»¸»¸»Ù»Ý»í»ú»¼*¼0¼C¼U¼a¼c¼o¼w¼{¼�¼ммммœ¼²¼¸¼ļÙ¼à¼è¼ô¼ ½½½½½,½6½9½G½Q½T½f½k½p½€½ƒ½ˆ½˜½›½Ÿ½¨½°½½ʽÓ½é½ï½û½¾¾ ¾1¾7¾F¾W¾W¾^¾^¾^¾l¾z¾„¾‡¾•¾Ÿ¾¢¾´¾¹¾¾¾ξѾÖ¾æ¾é¾í¾ö¾þ¾¿¿!¿!¿Line truncated
àààAàGàMàràxà~à„à„àŒà¾ô#œ>0>0F0U0Y0f0s0‡0–0¶0Ã0Õ0÷01%1A1S1k1‚1�1®1Ì1Û1ö1225252P2y2“2®2À2Ï2Þ2Þ2é2ü2 3 303=3H3W3w3w3ƒ3ƒ3ƒ3”3¡3¨3Ç3Ð3Ý3á3é3ô3 4$4-4=4E4J4n4~4Ž4™4­4²4º4à4â4í4 5:5:5R5a5i5x5�5‰5›5º5Â5Ê5Õ5×5ç5ÿ56/6G6Y6p6y6‚6”6¢6¦6ª6¿ …… …(…-…À\…XÈÈ8È?ÈLÈWÈ\ÈbÈtÈzȒȘȶÈÊÈÕÈÛÈýÈýÈ É"É$É'É3É;ÉCÉKÉYÉ_ÉeÉqÉqÉsÉ…É‹É�É�ɧɧÉÅÉÅÉØÉåÉêÉêÉÊ ÀÀÀÀÀÀ/À;ÀCÀIÀOÀOÀQÀcÀ±xÖÓÖÓäÓùÓÔ Ô-ÔaÔ}Ô�Ô£Ô©ÔµÔ¾ÔÆÔÎÔÐÔÖÔÜÔèÔðÔöÔøÔþÔ²Ü,ßmm<mDmTm\m‰m m¤m¬m´mºmÎmÖmÖmÞmnan<n„n‰n›nªn¬nÖnÜnånìnônünooo+o3o8oBobojolovo…o¥o­o¯oÏo×o×o×oâoéoüop p pppp'p0p8pTpop‰p³p¶pÍpÚpîpq q:qTqfq�q–q˜qÂqÅqÅqÜqéqýqr r#r.r9rKrZr\r†r‰r›rªr¯rÙrßrärörss1s4sFsUsWs�s‡s‡s‡s‘s‘sœsÍsØsØsØsØsásístt/t6tBtItIt\t`t`t`tgtltt†t’t™t™t°t²t·tÊtÑtÝtätätñtûtûtu#u#u5u³ ÄnEnEƒEŽE¶E¡E•EÕEÂEáEöEãE#FFF/F=FEFPFRF]FhFhFmFšFŸFÌFÑFëFØF
ÊÊ/Ê:ÊHÊSÊcÊpʂʈʒʞʫʭʭʵʺʺÊÂÊÇÊÇÊÏÊÔÊÔÊÜÊáÊáÊçÊìÊìÊóÊøÊøÊÿÊËËËËË Ë$Ë$Ë/Ë4Ë4Ë?Ë?ËXË_ËeËhËsËvˊ˗˦˭˰ËÂËÄËÊËÞËëËúËúËúËúËÌÌ1ÌAÌRÌXÌiÌoÌtÌ~Ì�Ì Ì¯ÌµÌÆÌÑÌÛÌêÌùÌÿÌ G÷FG!G6G#GUGBGaGfGaG|GŠG’G�GŸGªGµGµGºGÕG×GòGòGÿGH#H%HDHDHDHLH´\ãö^^^.^4^?^M^Y^p^p^‚^ˆ^“^£^®^¼^É^õ^µ(2866Tgnu|€‚‰�””œµ¿¿ÓÞìý  " J N W [ ` q Ž Ž œ ° µ Î ß ã ã ã è  + 2 E I N j ’ š £ § ¬ ½ Ï ß ó õ !!!%!%!%!A!i!m!v!z!!�!­!­!»!Ï!Ô!í!þ!"""""("I"h"s"y"�" "¥"º"Ö"þ"# ###%#>#>#L#`#b#{#Œ#�#�#—#ª#®#À#Å#á# $$$$#$4$J$Z$n$s$Œ$Ÿ$£$µ$µ$µ$µ$º$Ù$è$ %%%0%A%A%A%H%[%t%t%t%ƒ%ƒ%–%­%¸%É%Î%Ô%Þ%à%ì%ì%ó%þ%&& &5&A&C&N&Z&j&q&x&‚&Š&Ž&’&”&™&¡&¥&·&¹&¾&Æ&Ê&Ì&Ì&Õ&â&ø&'2'>'J'Q'Q'd'h'h'h'o't'Ž'š'¦'­'­'Ä'Æ'Ë'å'ñ'ý'(((((-(˜ ºœ H H=HLHLHLHfHfHuHuH{H}H}HƒH…H…H‹H�H�H”H˜H�H�H�H�H�H�H¥HºHºHÏHÚHäHñHII#I%I@IEI`IeIkIkI€IƒIªI·IÏIïIïIøIýIJ J!J0J5J<JEJXJ`JhJmJmJmJvJ�J•J•J®J¼JÖJìJîJöJüJK K KKKK)K+K@KBKJKPKXK]K]K]K]KkKK�K•K•K�K£K«K°K¹KÁKÊKÐKÖKØKØKØKàKàKîKLLLLL1L7L?LDLMLXL[LaLgLpLsLsL�L�L‘L´LÑL×LßLäLíLïLïLôLöLþLþLM+M0M<MBMEM\M^MaMqMuM|M…M”M¢M¨M°MµM½MÂMÂMÊM×MïMôMþM&N1N<NGNRN]NhNsN~N~N~N†N†NŸN­NÇNÝNÝNßNßNèNîNðNðNöNüNüNO OO O O&O)OHOSO[OcOhOhOoOsOxO‡OŒO–O O O­OÔOÔOÚOèOùOP PP)P?PEPJPJPOPbPnPvP†P�P™P§P®P°P¹P¹P¿PÍPÙPìPÿPQQQ.Q3Q3QPQPQbQhQqQwQ€QŽQ“Q“Q¦Q¬Q®Q¹QËQÞQÞQòQþQRR!R'R*RARCRFRVR`RcRcRrR…R—RœR¨R®R±RÈRÊRÍRÝRáRéR÷RüRSSSSSSSS(S.S4S>SHSVSkSnSpSzSzS|S„S‰SŽS“S“S™S¡S¦S¦S«S¶S»SÀSËSÐSöSøSýSTT TTTTT T%TATKT_TsTyT�T�T�T•T›T¥T¯T½TÒTÕT×TáTðTõTõTõTýTU U UUUUU#U#U(U3U8U=UBUQUQUbUhUhUvU|U‚UŒU–U¤U¹U¼U¾UÈU×UÜUÜUÜUäUéUòU÷U÷UýUV
ÍÍ%Í+Í<ÍGÍMÍ]Í]Ím͔̀͌ͤͫͱÍÂÍÍÍÒÍïÍÎÎ"Î.Î@ÎKÎZÎ\ÎnÎvÎ{΂ΆΔΞΤήδοÎÅÎÇÎÔÎáÎëÎÏÏÏÏ Ï_ÑÁ0#«è§è§¨1¨9¨9¨G¨Z¨s¨v¨’¨’¨’¨š¨œ¨œ¨¤¨¦¨¦¨®¨°¨°¨¸¨¸¨Á¨Ç¨Ì¨Ì¨Õ¨á¨å¨ê¨ð¨õ¨õ¨ý¨© ©©©©"©:©Y©\©q©�©�©�©˜©š©š©š©¢©¤©¤©¤©¬©®©®©®©¶©¸©¸©Ã©Ã©É©Î©Î©Î©Î©Õ©à©ò©ªªªªª(ª(ª/ª3ª9ªQª_ªrª~ª§ªªª±ªÃªËªÔªßªßªêªðªõªõªõªüª«« «%«G«S«Y«^«^«e«p«p«u«‡«�«�«�«�«æ«Âd)BB>BHBKBKBUBhBjBwByB„B˜B B°BµB»BÃBÆBØBÃLWf§0§0»0¿0Ä0Ï0Ï0Ù0ß0ß0ã0ë0Ä\CV?0?0U0U0Y0^0q0t0y0y0ƒ0‰0‰0—0™0£0Å8(2^Ò^ÒgÒgÒuÒyÒ€ÒƒÒˆÒÆ¨²ØŽfŽf¦f®f¹fÒfÆfÿfYgDg9g$g g_gtgdg�g”g gÇgÌgágÎgígógógh'hOh5hch~h~h~hŠhÇl¥¼®-®-È-ð-Ó-ü-.5...M.e.R.q.„.¤.¶.É.É.Ö.õ.õ.ÿ.È4“œ&è&è:è?èEèIèMèlètèɼLw^’^’v’�’‹’¤’¼’Á’Æ’Ê’Ì’Ò’Ø’î’Û’ú’ú’“1““=“G“`“x“}“‚“†“ˆ“Ž“”“ª“—“¶“¶“ɓѓã“ý“ö“ ””Ê4;DöÜöÜÿÜ Ý*Ý/Ý1Ý1Ý6ÝË”"¸¦¸¦Æ¦Ø¦Ü¦ä¦ì¦÷¦§ V
§§ §%§;§B§I§T§_§a§l§w§y§…§�§›§¤§¬§¬§°§ç§Ì€Úö§4§4Å4É4Í4Õ4ã4æ4é4ü455555#5+575L5]5d5k5k5x5�5Í\!´¾H¾HðHûH0I!II6IeIjIjInIxI„IŸI¦I´I¶I¾IØIôIJJ+J?JDJKJpJwJ€J‚J‡J›J¸JÊJ×JïJ KK!K%K%K0K7KIKLKNKdKSKpKˆKŠK¢K´K·K¹KÏK¾KÛKÛKÛKíKíKûKL-L&LBLBLGLKLgLsLŽL¬L¶LºLÊLéLÞLõL÷L MM.M'M=MAMWMvMkM‚M„M–M M´M¾MÇMÞMèMêMþMNNN"N"N"N-N4NHN`NbNzNŽN¥NªN¼NÄNåNûNûNûN O O2OÎd9ή2®2ä2ë2ó2ü2 33/3235393B3P3Z3_3‡3Œ3™3Å3Ê3×3÷3ü3 474?4D4Y4…4�4’4’4¥4¸4È4Ì4ë4ü455#5#5#5#5#535H5K5N5R5R5W55„5�5š5¢5½5Ï5Ü5ç56666)6+6+6+686O6Q6Q6^6u6u6†6‹6«6½6Ï6í6í6í6ú67777 7779797F7]7]7n7v7{7¡7³7Å7ã7ã7ã7ð78 8 88-8-8B8D8K8m8‹8�8—8¥8¯8±8±8±8Í8Õ8×8×8ù839Ϥ/TÎäÎäîäåå/å?åDåDåSåeåå‡åŽå�å£å«å«å«å­å­å­å­åËåËåËåËåÝåßåßåßåßåòåýå æÐxµ””,”8”C”H”T”_”d”k”p”{”€”€”€”²”Ÿ”¾”À”Å”ДÕ”Õ”Õ”•ô”•:•:•M•`•s•†•‹•‹•ž•±•Ä•וܕܕ–(–*–*–=–P–c–v–v–v–„–Ñ0Š’ÆçÆçÔçÚçÞçýçèè$èÒ<:E77ˆ7“7¡7­7¹7Â7Ë7Ô7Ú7ß7ÓluŒç&ç&õ&ÿ&'''"'$'0':'H'e'g'w'w'|'~'…'·'ÔÜŸÒŽ~Ž~¢~Ì~Á~­~ç~ô~@EqqvŒž´Êý €D€0€_€l€˜€�€¥€Ä€Ì€ñ€æ€Ò€���:�&�N�[�‡�‡�‡�‡���ÕL½Ì//$/6/=/\/\/n/�/Ž/‡/¦/°/ÖÈg•ï0ï01161X1d1k1v1�1Ž1—1—1œ1¦1¾1É1Ù1å1ì1÷12 VVV V$V)V8V8VIVOVOV]VcViVsV}V‹V V£V¥V¯V¾VÃVÃVÃVËVÐVÙVÞVÞVäVìVñVñVþVWWWWW(W2W@WUWXWZWdWsWxWxWxW€W…WŽW“W“W™W¡W¦W¦W³W¹W¹WÇWÍWÓWÝWçWõW
222 2 2 2'2'2121292A2I2Q2U2_2«2× x„x„†„š„ „Ø`FZß7ß7ï7ö7ø7ý7 88'8'85858A8J8M8[8e8h8p8Ù<›¦ž ž § ² ½ È Ó Ý û ¡¡Ú 2¦_¦_¾_Ð_Ö_â_í_û_``)`9`K`Q`W`]`p`v``…`—`�`¨`°`¾`Ë`aÛ, N*N*\*m*ƒ*”*—*�*Ü40…0…>…H…Q…X…_…i…i…o…ÝÄKxÖõÖõöö X XXX(X-X-X-X5X:XCXHXHXRXZX_X_X_XeXoXuX‰XŽXŽX”XžX¤X©X©X¯X½XÆXÔXÙXÙXßXíXùX
ööö.ö0ö4ö8ö;öNögö‰ö’ö�ö¤ö½ößöäöýö ÷$÷+÷D÷f÷h÷�÷£÷£÷£÷¸÷Ò÷á÷ó÷Þ}¾ÞnÞnünÿnoo!o2o?oEoJoJoWo`ofovo„o†o¥o¶o½oÉoÙoÙoçoúop pppp p p+p:pMpSpXplprpzpŒp’p”p£p°p¶p¼pÁpÇpÍpÔpàpçpépîpöpøpýp q qqqq q'q)q.q6q8q=qGqIqNqXqXqXqhqhqhqq…q‹q–q›q£q¼qÂqÍqÑq×qâqûqrrr$r)r.r.rCrKrSrqr|r‡r“r�rœr¥rªr¯rÄrËrÔràræròrörûrs ss!s#s)s6s;s@sYsdsososus‚s„s‰s’s«s¶sÁsÇsÔsÔsØsÝsÝsîsðsðstttttt-t/t/tBtDtDtVtVt\tatatxtŒt�t™t¡t¨t®t¶tÉtÔtËtätätætþtuuu!u1u=uTunusu‡u—uªu¯u¯uµuÉuÛuæuîuöuúuvvvvv-v=vBvBvHvNvSvSvSvYvhv{vˆvŒv‘v‘v•všvšvŸvªv¶vÐvævòvòvøvwww w/wBwBwOw[w[w[w[w_wdwuw‡w’wšw¢w¤w¶w»wÉwÕwÛwèwèwÿwxx#x/x1x:xFx]x]xcxpxrx„x„x�x�x�x�x�x {ß „ÈOO4OBOUOZOxO~OƒO‰O—OžO­O²O¾OÐOÐOîOùO PP-PJPVPqP‰P¥P®P½PÅPÒPÛPàPñPÿP Q$Q,QEQWQgQmQxQ�Q‡QÍQ·Q¨QÝQRRóQ(R+RKRßRà<*5ÜBÜBýBC CC7C?CUCaCá„ |ffˆ“𢥥µÀÀÃÊÑ×Ýãêð DHK[chhou†Œ’�®®·¼ÆÍÔÜâäò  '4444:LRc„•­´¾ÆÍÍÖÝéù,<?úâ„9_6_6{6Š6‘6«6Ñ6ç6ø677!7:7:7L7b7j7m7y7ãX{ÍNNyƒ–¡³ÁÇØßçý-=GIYirx}„Š�–¡¬¯ÐØò #5DOWn‡‹”›­µ¼ÀÉËÝô 4::Lä  YYY&Y0Y>Y>YCYCYNYNYNYRYWYWY]YaYfYnYtYvYYŽY–Y›Y¡Y¡Y©Y¯Y½YÈYÍYÓYÛYàYàYàYàYàYàYàYàYàYàYùYÿYZZZZ Z)Z4Z=ZEZJZJZJZPZXZ]Z]ZaZfZfZoZ}Z‰Z–ZœZœZ¥Z¹Z¹Z¿ZÈZÜZÜZåZçZíZöZ
 „ „©„½„„å,ýD^�^�z�€�‹�œ�¡�§�ª�®�®�Î�Ó� �õ��.��:�S�?�_�f�k�u�x�|���š�†�¦�¦�¦�«�¼�Á�Ç�Ê�Î�Î�î�ó�)‘‘5‘N‘:‘Z‘p‘\‘|‘ƒ‘ˆ‘Ž‘‘‘•‘—‘°‘œ‘¼‘¼‘¼‘¼‘Ô‘ý‘ ’æˆÍë  (##2AAPP__nn}}Œ ›ªª¹È×ÔçxÈâN\N\l\~\„\�\§\§\¹\¿\Ê\Ú\æ\ï\õ\û\]]!]-];]J]J]z]èd�²vèvèzè�è�è§è®èºèºèÑèÑèèèèèÿèÿèéé-é/é/é3é騯øŽúŽú°ú·úÂúØúØúêúõúûû"û9û=ûBûFûHûYûkûwû‰û‹û¤û³û·û·û·ûÊûßûßûëûñûûûüüü*ü,üBü\ü\ünüêP6FdCdCzC†CŽC’C£C±C·CÃCËCÖCÜCßCéCë ®-f7f7€7‹7�7˜7Ÿ7¦7¼7Í7Þ7ð788 818@8@8G8K8T8a8h8q8x8|8œ8œ8œ8œ8œ8¨8¬8¯8·8Å8Í8Ú8â8ê8û89 9 999-9D9F9Q9^9m9p9v9r9Š9¡9£9±9³9¾9Ä9Ä9Ì9Ì9Þ9å9û9û9û9:::#:.:3:3:6:;:;:W:e:r:t:t:x:z:z:–:¤:°:²:²:µ:·:·:Ä:Æ:Æ:É:É:É:É:É:Ò:Ø:Ü:è:;;#;*;ò;ì(rx ‡ ‡®‡µ‡Å‡È‡Î‡í(nt—&—& &ª&º&Å&Å&ã&îTzKþíþíî"î%î.î8îPî`îiîoîrîvîxî�î î­î³î·î½î¿îÂîÆîÆîéîíîóîóîúîï1ïDïWï]ïdïoïyï}ï€ï‡ï�ï‘ï—ï¨ï®ï³ï¸ïÅïÇïÙïÛïâïïïñïððððð'ð2ð>ðUðUðjðvð“ð·ðÑðÖðíðòðñññ"ñ3ñHñNñ^ñkñƒñŠñ–ñ®ñºñºñºñÀñÃñÆñßñåñùñÿñòòòò!ò.ò.ò4òBòYò_òbòeòlòuò|ò|ò�òŽò›ò›ò¡ò¯òÆòÌòÏòÒòÙòÙòêòñòþò ó óóó#ó)ó0ó;óOóOóiónóuó}ó„ó“ó—ó ó¸ó½óÄóæóñó÷óÿóô,ô,ôGôGôaôoôvô}ôŸô²ôÖôØôâôõõõõ)õ:õRõVõ+öï¼ÙŽhŽh¦hªh¸hÇhÒhÞhéh iëhiii<iliPiCiŽi“i»iÀiÌi×i÷iÙijjj"j?jRjRjujuj�jð î)î)ý)**ñ8�™II I.IBIOIUI[I^IIò8 o.o.}.„.�.—.ž.¤.ª.ª.°.ó ž*ž*¨*°*µ*ôôÓŒ–�–�´�Ä�Ï�Ú�ó� ‚8‚d‚Ž‚”‚š‚¢‚¤‚¬‚ǂʂՂá‚ú‚&ƒ?ƒkƒ•ƒ›ƒ¡ƒ©ƒ®ƒ¶ƒуÔƒ߃ëƒðƒ „5„N„z„¤„ª„°„¸„º„„Ý„à„ë„÷„…<…U…�…«…±…·…¿…Ä…Ì…ç…ê…õ…††† †††"†-†?†N†i†}†§†­†²†ĆÓ†ñ†‡/‡5‡=‡B‡T‡c‡~‡’‡¼‡‡LJه臈ˆAˆGˆLˆLˆLˆ]ˆhˆsˆ™ˆ±ˆ¼ˆĈшшֈ鈉‰+‰C‰N‰V‰c‰c‰h‰{‰ˆ‰’‰¦‰½‰Ö‰è‰õ‰ Š4ŠKŠYŠ[ŠoІІŠ�ЛбŠÊŠÝŠéŠüŠ‹‹‹‹ ‹ ‹+‹B‹D‹I‹\‹h‹u‹‹‹‘‹õ”k ì8ì8999$9/919M9M9M9T9^9b9f9i9i9r9v9Œ9Œ9Â9Î9Ù9é9ù9þ9:::::":/:6:>:C:C:X:d:l:q:q:†:“:›: : :µ:Á:Ê:Ò:Ú:æ:ü:;*;.;<;D;I;I;^;x;‚;Ž;–;›;›;º;Æ;Ñ;Ö;ë;÷;< <<'<,<,<,</<4<4<4<S<_<j<l<o<t<t<t<~<†<�<•<ž<©<¯<½<Ë<Ë<Õ<Þ<æ<=!=(=7=M=R=R=e=m=m=o=o=o=t=t={=�=…=Œ=�=�=�=�=Ÿ=Ÿ=Ä=Í=Í=Ñ=ìAö( ìAìAúABBB÷�1žvžv¼vÄvÐvævûv ww#w)w)w)w.w3wAwLwbwdwiwww‚w�w–w¤wø\‘¤ž,ž,¸,Ü,¿,è,-ú,-.--:-M-_-r-r--ž-ž-¨-ù8hrnGnG‡G–GªG¹G¿GÅGÈGéGú0�—˜ˆ˜ˆ¬ˆ¸ˆÆˆÉˆáˆäˆìˆû0S[&Ó&Ó:ÓBÓOÓYÓLine truncated [
g gg g.g0g;gJgJgWgeghgjgjgogtg}gˆgŽg—gªg¯gÄgÏgÙgÙgïgïgh0hEhKhPhWh]hdhihihohuhzhzh�h›h³h¹h¾hÒhÜhãhãhãhèhèhiii?ifikikikiniui{i‚i‡i‡i�i“i˜i˜i¯i¹iÃiÉiìiòijjj"j)j+j?jEjLjLjNjNjNjSjYj^jbjdjgjrj~j�jƒj‡j‡jŒjŒjšjÄj˜}Ÿþþ &06AQYafq{�Œœ¤´»ÃËÓÛàëùù \X«æ?æ?þ?@@J@U@a@o@c@�@�@œ@¤@³@í@ï@A$A$AQAiAVA„AuA�A–A¥AºA¼AÇAÏAÏAêAïAøAB BB>B)BB]BJBiB~BkB«B–BŠB·BÑB¿BìBñB CøB*CC6CKC8CjCWCvCvC‘C C™C´C´C´CàCàCìC Ð1��,�,�R�R�o�s�x�x�x�„�‰�™�ž�ž�ž�£�£�¹�À�Ï�Ý�æ�ö�ÿ���������$�+�2�9�9�;�;�A�F�M‘ [[[[[[[%[*[*[G[U[a[j[p[z[‚[‡[‡[‡[›[¤[ª[¼[Æ[Æ[Î[Î[Ö[Ø[Ø[ñ[û[\\\\ \\\\\\\\#\'\¢_·Ðà6u6uXunuzu˜u´uÁuØuëuöu vøuv v v/v/v7vCvYvnv}vˆv›v¡v¡v¡v¦v«vºvÅvÜvÞvãvòvýv
www"w¸”*Kؠؠð ÷ þ ¡
¡ ¡¡¡¡9¡&¡I¡Q¡Y¡\¡^¡n¡w¡€¡†¡‰¡š¡±¡Â¡Í¡ÿ¡¹à.¢~<~<œ<§<¸<»<¿<È<Ï<Ý<ì<==$=6=H=W=f=w=†=†=”=˜=œ=¡=¥=²=¹=Ç=Û=ä=ê=ø=>>>!>!>&>&>&>+>+>:>C>K>a>a>a>f>f>{>‡>’>—>—>š>Ÿ>Ÿ>»>Ç>Ô>Ö>Ö>Ú>Ü>Ü>ø>???????$?&?&?)?)?2?8?=?Y?Y?Y?Y?Y?Y?Y?Y?Y?Y?Y?Y?[?l?~?�?œ?œ? ? ?¨?Ä?È?Í?h@º,îÑîÑüÑÒ ÒÒÒ»˜?a6W6WLWRWYW‰WuW•WšW¡W¡WÁW×WÃWãWXÿW X$X+X+X+X1X4X8X@XXXcXvXnXŽX˜X¼PQa§%§%µ%Ã%Ê%Ú%ë%ð% &&&!&/&;&M&‰&½D%~à~à’à à¦àÉàÏàÕàúàáá á áá¾ô#œÆ0Æ0Î0Ý0á0î0û011>1K1]11Ÿ1­1É1Û1ó1
2262T2c2~2‰2¤2½2½2Ø23363H3W3f3f3q3„3•3¨3¸3Å3Ð3ß3ÿ3ÿ3 4 4 44)404O4X4e4i4q4|4”4¬4µ4Å4Í4Ò4ö455!555:5B5h5j5u5¨5Â5Â5Ú5é5ñ56 66#6B6J6R6]6_6o6‡6Ÿ6·6Ï6á6ø67
77*7.727¿ ˆ…ˆ…‘…°…µ…À\…X¦È¦ÈÀÈÇÈÔÈßÈäÈêÈüÈÉÉ É>ÉRÉ]ÉcɅɅɕɪɬɯɻÉÃÉËÉÓÉáÉçÉíÉùÉùÉûÉ ÊÊÊÊ/Ê/ÊMÊMÊ`ÊmÊrÊrʉʒʡʷÊÂÊÐÊÛÊëÊøÊ
ËËË&Ë3Ë5Ë5Ë=ËBËBËJËOËOËWË\Ë\ËdËiËiËoËtËtË{ˀˀˇˌˌ˗˜˜˧ˬˬ˷˼˼ËÇËÇËàËçËíËðËûËþËÌ Ì.Ì5Ì8ÌJÌLÌRÌfÌŝ̤̹̂̂̂̌ÌÉÌÚÌàÌñÌ÷ÌüÌÍÍ(Í7Í=ÍNÍYÍcÍrÍ�͇͒ͭ͘ͳÍÄÍÏÍÕÍåÍåÍõÍÎÎÎ,Î3Î9ÎJÎUÎZÎwΌΚΪζÎÈÎÓÎâÎäÎöÎþÎÏ
ÏÏÏ&Ï,Ï6Ï<ÏGÏMÏOÏ\ÏiÏsόϚϚϠϧÏçÑÁ0#«p¨p¨�¨¹¨Á¨Á¨Ï¨â¨û¨þ¨©©©"©$©$©,©.©.©6©8©8©@©@©I©O©T©T©]©i©m©r©x©}©}©…©Ž©”©™©™©ž©ª©Â©á©ä©ù©ªªª ª"ª"ª"ª*ª,ª,ª,ª4ª6ª6ª6ª>ª@ª@ªKªKªQªVªVªVªVª]ªhªzªˆª–ª ª ª ª°ª°ª·ª»ªÁªÙªçªúª«/«2«9«K«S«\«g«g«r«x«}«}«}«„«Š«Ÿ«§«­«Ï«Û«á«æ«æ«í«ø«ø«ý«¬¬¬¬¬n¬Âd)¤B¤BÆBÐBÓBÓBÝBðBòBÿBC C C(C8C=CCCKCNC`CÃLWf/1/1C1G1L1W1W1a1g1g1k1s1Ä\CVÇ0Ç0Ý0Ý0á0æ0ù0ü011 111 1!1+1Å8(2æÒæÒïÒïÒýÒÓÓ ÓÓÆ¨²Øgg.g6gAgZgNg‡gágÌgÁg¬g•gçgügìghh(hOhThihVhuh{h{hˆh¯h×h½hëhiiiiÇl¥¼6.6.P.x.[.„.¤.½.¶.Õ.í.Ú.ù. /,/>/Q/Q/^/}/}/‡/È4“œ®è®èÂèÇèÍèÑèÕèôèüèɼLwæ’æ’þ’ ““,“D“I“N“R“T“Z“`“v“c“‚“‚“¡“¹“¦“œϓ蓔”
”””””2” ”>”>”Q”Y”k”…”~”‘”�”Ê4;D~Ý~݇ݓݲݷݹݹݾÝË”"@§@§N§`§d§l§t§§Š§’§�§¨§­§Ã§Ê§Ñ§Ü§ç§é§ô§ÿ§¨ ¨¨#¨,¨4¨4¨8¨o¨Ì€Úö/5/5M5Q5U5]5k5n5q5„5Š5Œ5›5Ÿ5£5«5³5¿5Ô5å5ì5ó5ó566Í\!´FIFIxIƒI¸I©I�I¾IíIòIòIöIJ J'J.J<J>JFJ`J|JŽJ›J³JÇJÌJÓJøJÿJK
KK#K@KRK_KwK”K�K©K­K­K¸K¿KÑKÔKÖKìKÛKøKLL*L<L?LALWLFLcLcLcLuLuLƒL�LµL®LÊLÊLÏLÓLïLûLM4M>MBMRMqMfM}MM‘M¥M¶M¯MÅMÉMßMþMóM
N NN(N<NFNONfNpNrN†N�N�N¦NªNªNªNµN¼NÐNèNêNOO-O2ODOLOmOƒOƒOƒO¨O¨OºOÎd9Î6363l3s3{3„3•3¢3·3º3½3Á3Ê3Ø3â3ç344!4M4R4_44„4“4¿4Ç4Ì4á4 5555-5@5P5T5s5„5‰5‰5«5«5«5«5«5»5Ð5Ó5Ö5Ú5Ú5ß56 66"6*6E6W6d6o6�6�6�6š6±6³6³6³6À6×6Ù6Ù6æ6ý6ý67737E7W7u7u7u7‚7™7›7›7›7¨7¿7Á7Á7Î7å7å7ö7þ78)8;8M8k8k8k8x8�8‘8‘8ž8µ8µ8Ê8Ì8Ó8õ899 9-979999999U9]9_9_9�9»9Ϥ/TVåVåvå˜å˜å·åÇåÌåÌåÛåíåææææ+æ3æ3æ3æ5æ5æ5æ5æSæSæSæSæeægægægægæzæ…æ¨æÐxµž”ž”´”À”Ë”ДÜ”ç”ì”ó”ø”••••:•'•F•H•M•X•]•]•]•�•|•›•••Õ•è•û•–––&–9–L–_–d–d–w–Š–�–°–²–²–Å–Ø–ë–þ–þ–þ– —Ñ0Š’NèNè\èbèfè…è¦è¦è¬èÒ<:E8888)858A8J8S8\8b8g8ÓluŒo'o'}'‡'Ž'¥'¥'ª'¬'¸'Â'Ð'í'ï'ÿ'ÿ'(( (?(ÔÜŸÒ*TI5o|ˆ›ŽÈÍùùþ€&€<€R€…€”€Ì€¸€ç€ô€ �%�-�L�T�y�n�Z�‰�¢�Ž�Â�®�Ö�ã�‚‚‚‚‚ÕL½ÌŽ/Ž/¬/¾/Å/ä/ä/ö/ 000.080ÖÈg•w1w1›1Ÿ1¾1à1ì1ó1þ1 22 2 2$2.2F2Q2a2m2t22�2’2£2¥2§2§2§2¯2¯2¹2¹2Á2É2Ñ2Ù2Ý2ç233× ………"…(…Ø`FZg8g8w8~8€8…8”8š8¯8¯8½8½8É8Ò8Õ8ã8í8ð8ø8Ù<›¦&¡&¡/¡:¡E¡P¡[¡e¡ƒ¡Ž¡ž¡Ú 2.`.`F`X`^`j`u`ƒ`�`¦`±`Á`Ó`Ù`ß`å`ø`þ`a a a%a0a8aFaSa�aÛ, Ö*Ö*ä*õ* ++ +%+Ü4¸…¸…Æ…Ð…Ù…à…ç…ñ…ñ…÷…ÝÄKx^ö^öŠö�ö’öŸö¤ö¶ö¸ö¼öÀöÃöÖöïö÷÷%÷,÷E÷g÷l÷…÷§÷¬÷³÷Ì÷î÷ð÷ ø+ø+ø+ø@øZøiø{øÞ}¾fofo„o‡o�o¡o©oºoÇoÍoÒoÒoßoèoîoþo pp-p>pEpQpapapop‚p�p‘p¢p¢p¢p§p§p³pÂpÕpÛpàpôpúpqqqq+q8q>qDqIqOqUq\qhqoqqqvq~q€q…q‘q“q˜q q¢q§q¯q±q¶q¾qÀqÅqÏqÑqÖqàqàqàqðqðqðqr rrr#r+rDrJrUrYr_rjrƒrŽr™rŸr¬r±r¶r¶rËrÓrÛrùrssss$s-s2s7sLsSs\shsnszs~sƒsˆs“sžs©s«s±s¾sÃsÈsásìs÷s÷sýs
t ttt3t>tItOt\t\t`tetetvtxtxt‹t�t�t t¢t¢tµt·t·tÊtÌtÌtÞtÞtätététuu u!u)u0u6u>uQu\uSululunu†u‰u‹u—u©u¹uÅuÜuöuûuv v2v7v7v=vQvcvnvvv~v‚v�v–v›v›v¡vµvÅvÊvÊvÐvÖvÛvÛvÛvávðvwwwwww"w"w'w2w>wXwnwzwzw€w�w�wœw¨w·wÊwÊw×wãwãwãwãwçwìwýwxx"x*x,x>xCxQx]xcxpxpx‡x—x—x«x·x¹xÂxÎxåxåxëxøxúx y yyyyyy“{ß „ÈžOžO¼OÊOÝOâOPP PP P&P5P:PFPXPXPvP�P”P›PµPÒPÞPùPQ-Q6QEQMQZQcQhQyQ‡Q§Q¬Q´QÍQßQïQõQR RRUR?R0ReR RŠR{R°R³RÓRgSà<*5dCdC…C‹C”C¦C¿CÇCÝCéCá„ |îî"*--=HHKRY_ekrx‰‰‹” ¦ÌÐÓãëðð÷ý%66?DNU\djlz‘”£¯¼¼¼¼ÂÔÚë 5<FNUU^eq�ŒŒŒ ´ÄÇ‚â„9ç6ç677737Y7o7€7‰7—7©7Â7Â7Ô7ê7ò7õ78ãX{ÍÖÖ );IO`go…� µÅÏÑáñú )47>X`z�œŸ§«½Ì×ßö#5=DHQSe|Š�”–£££¥¼ÂÂÔä 
(…(…1…E…J…å,ýDæ�æ����$�)�/�2�6�6�V�[�‘�}����¢�Â�Û�Ç�ç�î�ó�ý�‘‘ ‘"‘‘.‘.‘.‘3‘D‘I‘O‘R‘V‘V‘v‘{‘±‘�‘½‘Ö‘‘â‘ø‘ä‘’ ’’’’’ ’8’$’D’D’D’D’\’…’‘’æ˜Íï  (##72FAP__nn}}ŒŒ››ª¾¹ÈÈ׿õ^çxÈâÖ\Ö\ô\] ]]/]/]A]G]R]b]n]w]}]ƒ]Ž]œ]©]µ]Ã]Ò]Ò]^èd�²þèþèééé/é6éBéBéYéYépépé‡é‡éžéžéµé·é·é»é騯øûû8û?ûJû`û`ûrû}ûˆû™ûªûÁûÅûÊûÎûÐûáûóûÿûüü,ü;ü?ü?ü?üRügügüsüyüƒüŽüœü£ü²ü´üÊüäüäüöüêP6FìCìCDDDD+D9D?DKDSD^DdDgDqDë ®-î7î7888 8'8.8D8U8f8x8Š8™8¨8¹8È8È8Ï8Ó8Ü8é8ð8ù899$9$9$9$9$9094979?9M9U9b9j9r9ƒ9Ž9“9“9 9¦9µ9Ì9Î9Ù9æ9õ9ø9þ9ú9:):+:9:;:F:L:L:T:T:f:m:ƒ:ƒ:ƒ:ˆ:ˆ:�:«:¶:»:»:¾:Ã:Ã:ß:í:ú:ü:ü:;;;;,;8;:;:;=;?;?;L;N;N;Q;Q;Q;Q;Q;Z;`;d;p;�;�;«;²;z<ì(rx(ˆ(ˆ6ˆ=ˆMˆPˆVˆí(nt ' '('2'B'M'M'k'îTzK†î†î¤îªî­î¶îÀîØîèîñî÷îúîþîïï(ï5ï;ï?ïEïGïJïNïNïqïuï{ï{ï‚ï¤ï¹ïÌïßïåïìï÷ïðððððð ð0ð6ð;ð@ðMðOðaðcðjðwðyð‹ð‹ð‹ð‹ð‹ð¯ðºðÆðÝðÝðòðþðñ?ñYñ^ñuñzñˆñŸñ¤ñªñ»ñÐñÖñæñóñ òòò6òBòBòBòHòKòNògòmò�ò‡òŒò—ò—òœò©ò¶ò¶ò¼òÊòáòçòêòíòôòýòóó óó#ó#ó)ó7óNóTóWóZóaóaóróyó†ó“ó“óšó¤ó«ó±ó¸óÃó×ó×óñóöóýóô ôô ô(ô@ôEôLônôyôô‡ô ô´ô´ôÏôÏôéô÷ôþôõ'õ:õ^õ`õjõŒõŒõŒõ¥õ±õÂõÚõÞõ³öï¼Ùii.i2i@iOiZifiqi‘isi�i¢i¢iÄiôiØiËijjCjHjTj_jjaj‹j�j£jªjÇjÚjÚjýjýj kð v*v*…*ž*¤*ñ8�™ŽIŽI§I¶IÊI×IÝIãIæIJò8 ÷.÷./ // /&/,/2/2/8/ó &+&+0+8+=+ôôÓŒ‚‚<‚L‚W‚b‚{‚§‚À‚삃ƒ"ƒ*ƒ,ƒ4ƒOƒRƒ]ƒiƒ‚ƒ®ƒǃóƒ„#„)„1„6„>„Y„\„g„s„x„‘„½„Ö„…,…2…8…@…B…J…e…h…s……˜…Ä…Ý… †3†9†?†G†L†T†o†r†}†‰†‰†ކ”†š†¢†ª†µ†džÖ†ñ†‡/‡5‡:‡L‡[‡y‡�‡·‡½‡Ňʇ܇뇈ˆDˆJˆOˆaˆpˆ‹ˆŸˆɈψÔˆÔˆÔˆåˆðˆûˆ!‰9‰D‰L‰Y‰Y‰^‰q‰ˆ‰�‰³‰ˉÖ‰Þ‰ë‰ë‰ð‰ŠŠŠ.ŠEŠ^ŠpŠ}ЍмŠÓŠáŠãŠ÷Š‹‹‹#‹9‹R‹e‹q‹„‹ˆ‹ˆ‹ˆ‹�‹”‹§‹³‹Ê‹Ì‹Ñ‹ä‹ð‹ý‹ŒŒŒõ”k t9t9Š9–9–9¬9·9¹9Õ9Õ9Õ9Ü9æ9ê9î9ñ9ñ9ú9þ9::J:V:a:q:�:†:‰:Ž:Ž:Ž:£:ª:·:¾:Æ:Ë:Ë:à:ì:ô:ù:ù:;;#;(;(;=;I;R;Z;b;n;„;�;²;¶;Ä;Ì;Ñ;Ñ;æ;<
<<<#<#<B<N<Y<^<s<<Ž<“<¢<¯<´<´<´<·<¼<¼<¼<Û<ç<ò<ô<÷<ü<ü<ü<====&=1=7=E=S=S=]=f=n=£=©=°=¿=Õ=Ú=Ú=í=õ=õ=÷=÷=÷=ü=ü=> > >>>>>>'>'>L>U>U>Y>tBö( tBtB‚B‹B™BŸB÷�1&w&wDwLwXwnwƒw‘wœw«w±w±w±w¶w»wÉwÔwêwìwñwÿw
xxx,xø\‘¤&-&-@-d-G-p-‰-‚-¡-¶-£-Â-Õ-ç-ú-ú-.&.&.0.ù8hröGöGHH2HAHGHMHPHqHú0�— ‰ ‰4‰@‰N‰Q‰i‰l‰t‰û0S[®Ó®ÓÂÓÊÓ×ÓáÓôÓüP>N † †¬†À†Ã†×†ß†ã†í†÷†ÿ†‡‡ýTš«JJ(J;J>JHJUJjJlJ~JˆJœJœJ¢J¥JùJþ<˜£x‰x‰Œ‰“‰Ÿ‰«‰»‰À‰Ã‰Ç‰Ï‰ÿ ,0áá$á0áHzˆÆdÆdÚdædñdeódeee'e3e;e Dƒ¶M¶MÚMáMæMîMNNN N N"N<NBNDNFNSNSNSNSNWNfNoNwN€NˆN�N•N—N³N·NÉNÜNâNöNûNOOO#O*O3OAOJOjOpOtOyO~O�O‹OŽOžOD ^j^jljvj€j�j•j›j§j©j»j»j½jíjlåüFßFßZßpß}߈ߌߓߗߠ߯߱߱ßÅßÇßÐßÖßÖßÖßÖßÞß´Js€D€D¦D·D¼DÃDÍDÍDÕDèDìDñDEE EEE*E.E6EBEIEMEUEWE_EmEuEwEzE�E—EŸE­E±E¿E >îjîjþj
kk&k>kDkRkckkkrkˆk®kÈkÕkâkòkøkúk l-l4l:lHlPlflqlwl}l lôB»xgxg’g•gœg§g¶g¸gÃgÒgÒgßgígðgògòg÷güghhh h2h7hLhWhahahwhwh¤h¸hÍhÓhØhßhåhìhñhñh÷hýhiii#i;iAiFiZidikikikipipi™ižižiÇiîióióióiöiýij
jjjjj j j7jAjKjQjtjzjŠj–jœjªj±j³jÇjÍjÔjÔjÖjÖjÖjÛjájæjêjìjïjújk k kkkkk"kLk˜}Ÿ††¢§®¸¾ÉÙáéîù   $ , < C K S [ c h s � � — \X«n@n@†@�@Ÿ@Ò@Ý@é@÷@ë@AA$A,A;AuAwA¤A¬A¬AÙAñAÞA BýABB-BBBDBOBWBWBrBwB€B‹B“BžBÆB±B¥BåBÒBñBCóB3CCC?CYCGCtCyC“C€C²CŸC¾CÓCÀCòCßCþCþCD(D!D<D<D<DhDhDtD Ð1 � �´�´�Ú�Ú�÷�û���� ��!�&�&�&�+�+�A�H�W�e�n�~�‡�‰�‰�‰�‰���—�ž�¥�¬�³�º�Á�Á�Ã�Ã�É�Î�Õ‘
+1
View File
@@ -57,6 +57,7 @@ public extern I64 MemberMetaData(U8 *st,CMemberLst *ml);
public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml); public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml);
public extern CHashClass *OptClassFwd(CHashClass *tempc); public extern CHashClass *OptClassFwd(CHashClass *tempc);
public extern I64 PrsKeyWord(CCmpCtrl *cc); public extern I64 PrsKeyWord(CCmpCtrl *cc);
#help_index "Compiler;Cmd Line (Typically)" #help_index "Compiler;Cmd Line (Typically)"
extern I64 Cmp(U8 *filename, extern I64 Cmp(U8 *filename,
U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0); U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0);
+2 -2
View File
@@ -172,8 +172,8 @@ U0 PrsFun(CCmpCtrl *cc,CHashClass *temp_return,U8 *name,I64 fsp_flags)
} }
} else { } else {
old_trace=Btr(&cc->opts,OPTf_TRACE); old_trace=Btr(&cc->opts,OPTf_TRACE);
cc->htc.fun->executable_addr=COCCompile(cc,&size, cc->htc.fun->executable_addr=COCCompile(
&cc->htc.fun->dbg_info,NULL); cc,&size,&cc->htc.fun->dbg_info,NULL);
if (old_trace) { if (old_trace) {
Bts(&cc->opts,OPTf_TRACE); Bts(&cc->opts,OPTf_TRACE);
Un(cc->htc.fun->executable_addr,size,64); Un(cc->htc.fun->executable_addr,size,64);
+3 -3
View File
@@ -295,13 +295,13 @@ Bool MyPutKey(I64 ch,I64 sc)
return TRUE; return TRUE;
case '9': case '9':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /---->"); KeyDescSet("Dol /Indent 5");
else else
"$$ID,5$$"; "$$ID,5$$";
return TRUE; return TRUE;
case '0': case '0':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /<----"); KeyDescSet("Dol /Unindent 5");
else else
"$$ID,-5$$"; "$$ID,-5$$";
return TRUE; return TRUE;
@@ -319,7 +319,7 @@ Bool MyPutKey(I64 ch,I64 sc)
return TRUE; return TRUE;
case 'p': case 'p':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Cmd /JukeBox(TAD)"); KeyDescSet("Cmd /JukeBox(Home/Downloads)");
else else
JukeBox("::/Home/Downloads/Psalmody"); JukeBox("::/Home/Downloads/Psalmody");
return TRUE; return TRUE;
+2
View File
@@ -7,6 +7,8 @@
Cd("::/Home");; Cd("::/Home");;
#include "::/Home/TOSCfg" #include "::/Home/TOSCfg"
#include "::/Home/TOSMisc" #include "::/Home/TOSMisc"
#include "::/Home/TOSToHtml"
#include "::/Home/TOSDistro" #include "::/Home/TOSDistro"
#include "::/Home/TOSBlog"
#include "::/Home/TOSHolySpirit" #include "::/Home/TOSHolySpirit"
Cd("::/Home");; Cd("::/Home");;
+1 -1
View File
@@ -9,7 +9,7 @@ U0 UserStartUp()
WinToTop; WinToTop;
WinZBufUpdate; WinZBufUpdate;
Dir; Dir;
"$TX,"80,916",D="DD_TEMPLEOS_LOC_OFFICIAL"$LOC:"; "$TX,"81,095",D="DD_TEMPLEOS_LOC_OFFICIAL"$LOC:";
CPURep; CPURep;
} }
Binary file not shown.
+17 -15
View File
@@ -4,8 +4,6 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* Add AVL or red/black binary tree library support. We have fixed-size stack. Auto-balancing binary tree is very needed. I've done everything myself. I don't want to ruin a perfect record. I'm in no hurry. * Add AVL or red/black binary tree library support. We have fixed-size stack. Auto-balancing binary tree is very needed. I've done everything myself. I don't want to ruin a perfect record. I'm in no hurry.
* In <CTRL-r> menu, transform individual elements.
* $LK,"SpriteEd",A="FI:::/Adam/Gr/SpriteEd.CPP"$ shift pts, Ctrl pt for ellipse/polygon w,h is off when rotated. * $LK,"SpriteEd",A="FI:::/Adam/Gr/SpriteEd.CPP"$ shift pts, Ctrl pt for ellipse/polygon w,h is off when rotated.
* $LK,"SpriteMesh",A="FI:::/Adam/Gr/SpriteMesh.CPP"$: $LK,"R",A="MN:R"$("Mesh",...);? * $LK,"SpriteMesh",A="FI:::/Adam/Gr/SpriteMesh.CPP"$: $LK,"R",A="MN:R"$("Mesh",...);?
@@ -27,19 +25,19 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$
* Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string. * Cannot include ':' in $LK,"Document Links",A="FF:::/Adam/DolDoc/DocLink.CPP,AD"$ search string.
* $LK,"DOCEF_REMALLOC_DATA",A="FF:::/Adam/DolDoc/DocChar.CPP,DOCEF_REMALLOC_DATA"$ HexEdit Remalloc.
* No way to clear $LK,"DOCEf_HOLD",A="MN:DOCEf_HOLD"$ entries. * No way to clear $LK,"DOCEf_HOLD",A="MN:DOCEf_HOLD"$ entries.
* $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$. * $LK,"DOCF_DBL_DOLLARS",A="MN:DOCF_DBL_DOLLARS"$ in $LK,"Reindention",A="MN:EdCodeTools2"$.
* Compiler: Warn unnecessary typecast.
* Compiler Optimization: Local array vars --> reg. Might exist. * Compiler Optimization: Local array vars --> reg. Might exist.
* Compiler Optimization: heap_glbls with added offset. Might exist. * Compiler Optimization: heap_glbls with added offset. Might exist.
* AfterEgypt: $LK,"Numbers,13:33",A="BF:Numbers,13:33"$ scouts? $LK,"Numbers,21:8",A="BF:Numbers,21:8"$ snakes? * AfterEgypt: $LK,"Numbers,13:33",A="BF:Numbers,13:33"$ scouts? $LK,"Numbers,21:8",A="BF:Numbers,21:8"$ snakes?
* Find-and-replace text on $$PT$$ line before it. * Bug: Find-and-replace text on $$PT$$ line before it.
* 12/25/2015 Copy-Paste index.html glitch if source window 40 columns. * 12/25/2015 Copy-Paste index.html glitch if source window 40 columns.
* 01/10/2016 find-replace editor hung on $LK,"CounterRenaissance",A="FI:::/Home/Web/TAD/CounterRenaissance.TXT"$ "Rennaisance" * 01/10/2016 find-replace editor hung on $LK,"CounterRenaissance",A="FI:::/Home/Web/TAD/CounterRenaissance.TXT"$ "Rennaisance"
* 01/06/2016 Editor filter "str" applied to output from LineRep looks broken. * 01/06/2016 Editor filter "str" applied to output from LineRep looks broken.
@@ -83,10 +81,10 @@ $FG,5$$TX+CX,"TODO? Meh"$$FG$
* Clean-up ASCII #127 delete char? (No. Maybe, we want a new usage for 127 in future centuries.) * Clean-up ASCII #127 delete char? (No. Maybe, we want a new usage for 127 in future centuries.)
* $LK,"DocSave",A="MN:DocSave"$() $LK,"*result==CH_CURSOR",A="FF:::/Adam/DolDoc/DocFile.CPP,*result==CH_CURSOR"$ is ugly.
* Compiler: Exceptions don't free $LK,"CCmpCtrl",A="MN:CCmpCtrl"$ stuff. * Compiler: Exceptions don't free $LK,"CCmpCtrl",A="MN:CCmpCtrl"$ stuff.
* $LK,"::/Adam/DolDoc/DocHighlight.CPP"$ for code comments at top of documents.
* Unhandled exception msgs from MP's get overwritten by WinMgr. * Unhandled exception msgs from MP's get overwritten by WinMgr.
* $LK,"Diff",A="MN:Diff"$("C:/Misc/Bible.TXT","D:/Misc/Bible.TXT"); Takes too long. * $LK,"Diff",A="MN:Diff"$("C:/Misc/Bible.TXT","D:/Misc/Bible.TXT"); Takes too long.
@@ -126,6 +124,8 @@ $ID,-5$$HL,0$
$FG,5$$TX+CX,"Bugs"$$FG$ $FG,5$$TX+CX,"Bugs"$$FG$
* 1/28/16 $LK,"::/Demo/Graphics/Pick3D.CPP"$ crashed in TestSuite.
* 1/12/16 make RAM drive 2288 blks, $FG,2$CopyTree("C:/Home","B:/Home"); $FG$ Disk runs-out of space and hangs instead of reporting errors. * 1/12/16 make RAM drive 2288 blks, $FG,2$CopyTree("C:/Home","B:/Home"); $FG$ Disk runs-out of space and hangs instead of reporting errors.
* Bug introduced around 11/1/15. Changed $LK,"::/Kernel/Sched.CPP"$ and now $LK,"WinToTop",A="MN:WinToTop"$ is called on Adam task at start-up, sometimes. Might be user's fault because of bad keys pressed during VMware power-on init. Might be fixed by $LK,"ACf_INIT_IN_PROGRESS",A="MN:ACf_INIT_IN_PROGRESS"$. * Bug introduced around 11/1/15. Changed $LK,"::/Kernel/Sched.CPP"$ and now $LK,"WinToTop",A="MN:WinToTop"$ is called on Adam task at start-up, sometimes. Might be user's fault because of bad keys pressed during VMware power-on init. Might be fixed by $LK,"ACf_INIT_IN_PROGRESS",A="MN:ACf_INIT_IN_PROGRESS"$.
@@ -273,6 +273,8 @@ $FG,5$$TX+CX,"Inspirational Ideas"$$FG$
* Use standard terminology from "the literature". * Use standard terminology from "the literature".
* Striped and other dither patterns. Brushes?
* Get rid of BYTE, WORD, DWORD in opcode and replace with U8, U16, U32. * Get rid of BYTE, WORD, DWORD in opcode and replace with U8, U16, U32.
* Get rid of "Char". * Get rid of "Char".
@@ -314,7 +316,7 @@ $FG,5$$TX+CX,"Inspirational Ideas"$$FG$
$ID,5$$$=-CTASK_NEG_OFFSET $ID,5$$$=-CTASK_NEG_OFFSET
offset(CTask.addr)==0 offset(CTask.addr)==0
Spawn(): CAlloc() Spawn(): CAlloc()
TaskFinishOff(): Free() TaskDel(): Free()
CSysFixedArea.adam CSysFixedArea.adam
Looks like task_flags,locked_flags cause problems with neg offset. Looks like task_flags,locked_flags cause problems with neg offset.
$ID,-5$ $ID,-5$
@@ -395,15 +397,15 @@ Meek and humble of heart $TX,"Matthew 11:29",HTML="http://www.biblegateway.com/
$FG,5$$TX+CX,"Misc Notes"$$FG$ $FG,5$$TX+CX,"Misc Notes"$$FG$
Intel CEO's name: Brian Krzanich Intel CEO's name: Brian Krzanich
>$FG,2$lspci -v$FG$ >$FG,2$lspci -v$FG$
Size:$TX,"17344 KB",D="DD_TEMPLEOSCD_K_SIZE"$ Size:$TX,"17358 KB",D="DD_TEMPLEOSCD_K_SIZE"$
$FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$ $FG,5$$TX+CX,"My Web Bookmarks"$$FG$$WW,0$
$TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$ $TX,"My FireFox Bookmarks",HTML="http://www.templeos.org/Wb/Home/Downloads/Blog/Bookmarks"$
Machine $HC,"<img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\">"$ Machine $HC,"<center><img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$
Frosting $HC,"<img src=\"http://www.templeos.org/images/Frosting.jpg\" width=\"600\" height=\"400\" alt=\"\">"$ Frosting $HC,"<center><img src=\"http://www.templeos.org/images/Frosting.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$
Soap Carvings $HC,"<img src=\"http://www.templeos.org/images/SoapCarvings.jpg\" width=\"640\" height=\"480\" alt=\"\">"$ Soap Carvings $HC,"<center><img src=\"http://www.templeos.org/images/SoapCarvings.jpg\" width=\"640\" height=\"480\" alt=\"\"></center>"$
CottonTail $HC,"<img src=\"http://www.templeos.org/images/CttnTail.jpg\" width=\"644\" height=\"1113\" alt=\"\">"$ CottonTail $HC,"<center><img src=\"http://www.templeos.org/images/CttnTail.jpg\" width=\"644\" height=\"1113\" alt=\"\"></center>"$
TempleOS Logo $HC,"<img src=\"http://www.templeos.org/images/Logo128x152.jpg\" width=\"640\" height=\"760\" alt=\"\">"$ TempleOS Logo $HC,"<center><img src=\"http://www.templeos.org/images/Logo128x152.jpg\" width=\"640\" height=\"760\" alt=\"\"></center>"$
$TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$ $TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$
$TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$ $TX,"ASU_Transcripts",HTML="http://www.templeos.org/files/ASU_Transcripts.pdf"$ $TX,"ASU Course Catalog (See page 261)",HTML="https://catalog.asu.edu/files/shared/archives/1994-1996/general/UG1994-1996.pdf/1994-1996-UG-241-267.pdf"$
$TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$ $TX,"Dr. Konstantinos S. Tsakalis",HTML="http://ecee.engineering.asu.edu/directory/tenured-and-tenure-track-faculty/kostantinos-s-tsakalis"$ $TX,"Dr. Walter Higgins",HTML="https://webapp4.asu.edu/directory/directorysearch?cn=Walter+Higgins"$ $TX,"Dr. David Pheanis",HTML="https://webapp4.asu.edu/directory/person/77201"$ $TX,"Dr. Konstantinos S. Tsakalis",HTML="http://ecee.engineering.asu.edu/directory/tenured-and-tenure-track-faculty/kostantinos-s-tsakalis"$ $TX,"Dr. Walter Higgins",HTML="https://webapp4.asu.edu/directory/directorysearch?cn=Walter+Higgins"$
@@ -412,7 +414,7 @@ $TX,"Tom Foley",HTML="http://web.gccaz.edu/~tfoley/perspage.html"$
$FG,5$$TX+CX,"Web Bookmarks"$$FG$ $FG,5$$TX+CX,"Web Bookmarks"$$FG$
Cop tying shoe $HC,"<img src=\"https://goodtimestories.files.wordpress.com/2013/04/cop-tying-shoe-cambridge-county-pd.jpg\" width=\"480\" height=\"376\" alt=\"\">"$ Cop tying shoe $HC,"<center><img src=\"https://goodtimestories.files.wordpress.com/2013/04/cop-tying-shoe-cambridge-county-pd.jpg\" width=\"480\" height=\"376\" alt=\"\"></center>"$
$TX,"Good Time Bad Times Lyrics",HTML="https://www.google.com/#q=led+zep+good+times+bad+times+lyrics"$ $TX,"Good Time Bad Times Lyrics",HTML="https://www.google.com/#q=led+zep+good+times+bad+times+lyrics"$
$TX,"Unikernels",HTML="https://ma.ttias.be/what-is-a-unikernel"$ $TX,"Unikernels",HTML="https://ma.ttias.be/what-is-a-unikernel"$
$TX,"Handford school",HTML="https:/pinterest.com/pin/255368241346360278"$ $TX,"Handford school",HTML="https:/pinterest.com/pin/255368241346360278"$
+3 -3
View File
@@ -2,7 +2,7 @@ $TR-UL,"Adam"$
$ID,2$$TR,"SysMsgFlags"$ $ID,2$$TR,"SysMsgFlags"$
$ID,2$sys_msg_flags[0]=0xFF; $ID,2$sys_msg_flags[0]=0xFF;
$ID,-2$$TR,"SysRegVer"$ $ID,-2$$TR,"SysRegVer"$
$ID,2$registry_version=4.020; $ID,2$registry_version=4.030;
$ID,-2$$ID,-2$$TR-UL,"TempleOS"$ $ID,-2$$ID,-2$$TR-UL,"TempleOS"$
$ID,2$$TR,"TOS"$ $ID,2$$TR,"TOS"$
$ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46; $ID,2$I64 tos_code_walk_thru=105,tos_after_egypt_in_action=46;
@@ -39,7 +39,7 @@ $ID,-2$$TR,"BomberGolf"$
$ID,2$I64 best_score=175; $ID,2$I64 best_score=175;
$ID,-2$$ID,-2$$TR,"DemoCompany"$ $ID,-2$$ID,-2$$TR,"DemoCompany"$
$ID,2$$TR,"Game1"$ $ID,2$$TR,"Game1"$
$ID,2$F64 best_score=197.26500; $ID,2$F64 best_score=166.32939;
$TR,"SimpleVal"$ $TR,"SimpleVal"$
$ID,2$1279; $ID,2$1298;
$ID,-2$$ID,-2$$ID,-2$ $ID,-2$$ID,-2$$ID,-2$
+107
View File
@@ -0,0 +1,107 @@
U8 *BlogLocalDir(CDate cdt=0)
{
static U8 dir[STR_LEN];
CDateStruct ds;
if (!cdt) cdt=Now+local_time_offset;
Date2Struct(&ds,cdt);
StrPrint(dir,"::/Home/Web/" PERSONAL_INITIALS "/Blog/%d%Z",
ds.year,ds.mon-1,"ST_MONTHS");
if (!FileFind(dir,,FUF_JUST_DIRS))
MkDir(dir);
return dir;
}
U8 *BlogLocalFile(CDate cdt=0)
{
static U8 file[STR_LEN];
CDateStruct ds;
if (!cdt) cdt=Now+local_time_offset;
Date2Struct(&ds,cdt);
StrPrint(file,"%s/" PERSONAL_INITIALS "%02d%02d%02d.TXT.Z",
BlogLocalDir(cdt),ds.year%100,ds.mon,ds.day_of_mon);
return file;
}
U8 *BlogWebDir(CDate cdt=0)
{
static U8 dir[STR_LEN];
CDateStruct ds;
if (!cdt) cdt=Now+local_time_offset;
Date2Struct(&ds,cdt);
StrPrint(dir,PERSONAL_WEB "/Home/Web/" PERSONAL_INITIALS "/Blog/%d%Z",
ds.year,ds.mon-1,"ST_MONTHS");
return dir;
}
U8 *BlogWebFile(CDate cdt=0)
{
static U8 file[STR_LEN];
CDateStruct ds;
if (!cdt) cdt=Now+local_time_offset;
Date2Struct(&ds,cdt);
StrPrint(file,"%s/" PERSONAL_INITIALS "%02d%02d%02d.TXT.Z",
BlogWebDir(cdt),ds.year%100,ds.mon,ds.day_of_mon);
return file;
}
public U8 *FileNameNumNext(U8 *files_find_mask,U8 *fmt)
{
CDirEntry *tempde=FilesFind(files_find_mask);
U8 *result=MStrPrint(fmt,FileCnt(tempde));
DirTreeDel(tempde);
return result;
}
U0 BlogDCImgWrite(CDC *dc,CDate cdt=0)
{
U8 file_mask[STR_LEN],file_name[STR_LEN],*st1,*st2;
if (!cdt) cdt=Now+local_time_offset;
StrPrint(file_mask,"%s/Img*",BlogLocalDir(cdt));
StrPrint(file_name,"%s/Img%%03d.BMP",BlogLocalDir(cdt));
st1=FileNameNumNext(file_mask,file_name);
st2=MStrPrint("http://www.templeos.org/Wb%s",st1+2);
BMPWrite(st1,dc);
Free(st1);
"$$HC,\"<img src=\\\"%s\\\" width=\\\"%d\\\" "
"height=\\\"%d\\\" alt=\\\"\\\">\"$$\n",st2,dc->width,dc->height;
Free(st2);
}
U0 BlogScreenShot()
{
Bool old_cursor=DocCursor;
CDC *dc1,*dc2;
U8 *old_fp_draw_input_ptr=gr.fp_draw_input_ptr;
gr.fp_draw_input_ptr=NULL;
WinMgrSync(2);
dc1=DCScreenCapture;
dc2=DCExtract(dc1,0,FONT_HEIGHT,GR_WIDTH-1,GR_HEIGHT-1);
BlogDCImgWrite(dc2);
gr.fp_draw_input_ptr=old_fp_draw_input_ptr;
DCDel(dc1);
DCDel(dc2);
DocCursor(old_cursor);
}
public U0 MakeWebSitePartial()
{
FreshenWebDir("/Home/Web");
FreshenWebDir("/Home/Web/" PERSONAL_INITIALS);
FreshenWebDir(BlogLocalDir+2);
Drv('C');
}
U0 Blog()
{
if (!FileFind(BlogLocalFile,,FUF_JUST_FILES))
Copy("::/Home/Downloads/Blog/DailyBlogHeader.TXT.Z",BlogLocalFile);
WinMax;
AutoComplete;
Msg(MSG_KEY_DOWN_UP,0,SC_CURSOR_DOWN|SCF_CTRL);
Msg(MSG_KEY_DOWN_UP,0,SC_F6|SCF_ALT);
Msg(MSG_KEY_DOWN_UP,'\n',0);
if (Ed(BlogLocalFile,EDF_WAS_WRITE)) {
Copy(BlogLocalFile,"::Home/Web/" PERSONAL_INITIALS "/DailyBlog.TXT.Z");
MakeWebSitePartial;
}
}
+5
View File
@@ -1,3 +1,8 @@
#help_index "TOS"
#define PERSONAL_WEB "http:/" "/www.templeos.org/Wb"
#define PERSONAL_INITIALS "TAD"
#define SLOP BLK_SIZE #define SLOP BLK_SIZE
U0 TOSBootRescueDrv1() U0 TOSBootRescueDrv1()
{ {
+13 -129
View File
@@ -1,5 +1,7 @@
//The CFG defines are $LK,"::/Home/TOSCfg.CPP",A="FI:::/Demo/AcctExample/TOSCfg.CPP"$. //The CFG defines are $LK,"::/Home/TOSCfg.CPP",A="FI:::/Demo/AcctExample/TOSCfg.CPP"$.
#help_index "TOS"
U8 TOSGetDrv() U8 TOSGetDrv()
{ {
I64 result; I64 result;
@@ -45,61 +47,20 @@ U0 TOSPromptAndCopyDrv()
TOSCopyDrv(src,dst); TOSCopyDrv(src,dst);
} }
public U0 CursorRemFile(U8 *filename)
{
CDoc *doc;
doc=DocRead(filename,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
DocWrite(doc);
DocDel(doc);
}
public U0 CursorRem(U8 *files_find_mask="*")
{
I64 fuf_flags=0;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+T+f+F+O");
CDirEntry *tempde=FilesFind(files_find_mask,fuf_flags),*tempde1=tempde;
while (tempde) {
CursorRemFile(tempde->full_name);
Touch(tempde->full_name,"",,tempde->datetime);
tempde=tempde->next;
}
DirTreeDel(tempde1);
}
U0 UncollapseFile(U8 *filename,I64 *)
{
CDoc *doc=DocRead(filename,DOCF_NO_CURSOR);
DocCollapse(FALSE,doc);
DocWrite(doc);
DocDel(doc);
}
U0 Uncollapse(U8 *files_find_mask="*",U8 *fu_flags=NULL)
{
I64 fuf_flags=0;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F+T+O");
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
CDirEntry *tempde=FilesFind(files_find_mask,fuf_flags),*tempde1=tempde;
while (tempde && !Bt(&fuf_flags,FUf_CANCEL)) {
UncollapseFile(tempde->full_name,&fuf_flags);
Touch(tempde->full_name,"",,tempde->datetime);
tempde=tempde->next;
}
DirTreeDel(tempde1);
}
public U0 CopySongs(U8 threshold='7') public U0 CopySongs(U8 threshold='7')
{ {
CDoc *s; CDoc *doc;
CDocEntry *doc_e; CDocEntry *doc_e;
CDirEntry *tempde=FilesFind("/Home/Downloads/Psalmody/*.CPP*", CDirEntry *tempde=FilesFind("/Home/Downloads/Psalmody/*.CPP*",
FUF_CLUSTER_ORDER), FUF_CLUSTER_ORDER),*tempde1=tempde;
*tempde1=tempde;
DelTree("/Apps/Psalmody/Examples"); DelTree("/Apps/Psalmody/Examples");
MkDir("/Apps/Psalmody/Examples"); MkDir("/Apps/Psalmody/Examples");
while (tempde) { while (tempde) {
s=DocRead(tempde->full_name); doc=DocRead(tempde->full_name);
doc_e=s->root.next; doc_e=doc->root.next;
if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[2]>=threshold) if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[2]>=threshold)
Copy(tempde->full_name,"/Apps/Psalmody/Examples"); Copy(tempde->full_name,"/Apps/Psalmody/Examples");
DocDel(doc);
tempde=tempde->next; tempde=tempde->next;
} }
DirTreeDel(tempde1); DirTreeDel(tempde1);
@@ -288,7 +249,7 @@ U0 MakeTOSDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSTS_SIZE", DefinePrint("DD_TEMPLEOSTS_SIZE",
"Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)", "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - T.S. Company Internal Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
@@ -323,7 +284,7 @@ U0 MakeDbgDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSDBG_SIZE", DefinePrint("DD_TEMPLEOSDBG_SIZE",
"Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)", "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - Debug Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
@@ -371,7 +332,7 @@ U0 MakeLiteDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSLITE_SIZE", DefinePrint("DD_TEMPLEOSLITE_SIZE",
"Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)", "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - Lite Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
@@ -404,98 +365,21 @@ U0 MakeUltraDistro()
ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",, ISOFileCreate(TOS_ISO_NAME,TOS_DISTRO_DIR "/*",,
TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C); TOS_DISTRO_DIR BOOT_DIR_KERNEL_BIN_C);
DefinePrint("DD_TEMPLEOSULTRA_SIZE", DefinePrint("DD_TEMPLEOSULTRA_SIZE",
"Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)", "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - UltraLite Distro (%0.1f MB)",
0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024)); 0.1*(10*Size(TOS_ISO_NAME,"+s")/1024/1024));
Drv('C'); Drv('C');
} }
U0 TOSWebFile(U8 *name)
{
U8 *name2;
CDirEntry de;
if (FileFind(name,&de)) {
Free(de.full_name);
"File:%s\n",name;
UncollapseFile(name,NULL);
Touch(name,"",,de.datetime);
name2=ChgExt(name,"html");
ToHtml(name,name2,
"<title>The Temple Operating System</title>\n"
"<meta name=\"keywords\" "
"content=\"Operating System,64-Bit,64 Bit,"
"Temple,OS,TempleOS,Free,Open Source,Public Domain,x86_64\">\n");
Touch(name2,"",,de.datetime);
Free(name2);
}
}
U0 MakeWebSite()
{
CDirEntry *tempde,*tempde1;
DocClear;
Cd("D:/Wb");
DelTree("D:/Wb/Home/Budget");
DelTree("D:/Wb/Home/Private");
Del("D:/Wb/Home/*");
Touch("D:/Wb/Home/Web/index.TXT.Z","");
Touch("D:/Wb/Home/Web/Downloads.TXT.Z","");
Touch("D:/Wb/Home/Web/TempleOS.TXT.Z","");
tempde=tempde1=FilesFind("*",
FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT|FUF_CLUSTER_ORDER);
while (tempde) {
TOSWebFile(tempde->full_name);
tempde=tempde->next;
}
Copy( "D:/Wb/Home/Downloads/Bin/TempleBot",
"D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
ToDolDoc("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
ToHtml("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
Del("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
DirTreeDel(tempde1);
Drv('C');
}
U0 FreshenWebDir(U8 *dirname)
{//No recurse
CDirEntry *tempde,*tempde1;
U8 *src,*dst;
src=MStrPrint("D:/Wb%s/*",dirname);
Del(src);
Free(src);
src=MStrPrint("C:%s/*",dirname);
dst=MStrPrint("D:/Wb%s",dirname);
Copy(src,dst);
Free(src);
Free(dst);
src=MStrPrint("D:/Wb%s/*",dirname);
tempde=tempde1=FilesFind(src,FUF_JUST_FILES|FUF_JUST_TXT|FUF_CLUSTER_ORDER);
while (tempde) {
TOSWebFile(tempde->full_name);
tempde=tempde->next;
}
DirTreeDel(tempde1);
}
U0 MakeWebSitePartial()
{
FreshenWebDir("/Home/Web");
FreshenWebDir("/Home/Web/TAD");
FreshenWebDir("/Home/Web/Imgs");
Drv('C');
}
U0 UpdateISODocDefines() U0 UpdateISODocDefines()
{ {
try { try {
DefinePrint("DD_TEMPLEOSCD_SIZE", DefinePrint("DD_TEMPLEOSCD_SIZE",
"Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)", "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - Standard Distro (%0.1f MB)",
0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024)); 0.1*(10*Size("D:/Wb/TempleOSCD.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSCD_K_SIZE", DefinePrint("DD_TEMPLEOSCD_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024); "%d KB",Size("D:/Wb/TempleOSCD.ISO","+s")/1024);
DefinePrint("DD_TEMPLEOSULTRA_SIZE", DefinePrint("DD_TEMPLEOSULTRA_SIZE",
"Download $TX,"TempleOS V4.01",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)", "Download $TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$ - UltraSmall Distro (%0.1f MB)",
0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024)); 0.1*(10*Size("D:/Wb/TempleOSUltra.ISO","+s")/1024/1024));
DefinePrint("DD_TEMPLEOSULTRA_K_SIZE", DefinePrint("DD_TEMPLEOSULTRA_K_SIZE",
"%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024); "%d KB",Size("D:/Wb/TempleOSUltra.ISO","+s")/1024);
+29 -61
View File
@@ -1,3 +1,5 @@
#help_index "TOS"
U0 BadCodeJump() U0 BadCodeJump()
{//$LK,"::/Adam/God/HSNotes.TXT"$ {//$LK,"::/Adam/God/HSNotes.TXT"$
CDirEntry *tempde1=FilesFind("/*", CDirEntry *tempde1=FilesFind("/*",
@@ -28,42 +30,6 @@ U0 BadCodeJump()
Free(st); Free(st);
} }
public U8 *FileNameNumNext(U8 *files_find_mask,U8 *fmt)
{
CDirEntry *tempde=FilesFind(files_find_mask);
U8 *result=MStrPrint(fmt,FileCnt(tempde));
DirTreeDel(tempde);
return result;
}
U0 DCImgWrite(CDC *dc)
{
U8 *st1=FileNameNumNext("::/Home/Web/Imgs/Img*",
"::/Home/Web/Imgs/Img%03d.BMP"),
*st2=MStrPrint("http://www.templeos.org/Wb%s",st1+2);
BMPWrite(st1,dc);
Free(st1);
"$$HC,\"<img src=\\\"%s\\\" width=\\\"%d\\\" "
"height=\\\"%d\\\" alt=\\\"\\\">\"$$\n",st2,dc->width,dc->height;
Free(st2);
}
U0 BlogScreenShot()
{
Bool old_cursor=DocCursor;
CDC *dc1,*dc2;
U8 *old_fp_draw_input_ptr=gr.fp_draw_input_ptr;
gr.fp_draw_input_ptr=NULL;
WinMgrSync(2);
dc1=DCScreenCapture;
dc2=DCExtract(dc1,0,FONT_HEIGHT,GR_WIDTH-1,GR_HEIGHT-1);
DCImgWrite(dc2);
gr.fp_draw_input_ptr=old_fp_draw_input_ptr;
DCDel(dc1);
DCDel(dc2);
DocCursor(old_cursor);
}
U8 *WebBookMarks(U8 *filename="::/Home/Downloads/Blog/Bookmarks.html") U8 *WebBookMarks(U8 *filename="::/Home/Downloads/Blog/Bookmarks.html")
{ {
U8 *st; U8 *st;
@@ -149,7 +115,7 @@ class CTopMoviesForm
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN]; U8 special[STR_LEN];
I64 timestamp; I64 timestamp;
I64 cert fmtstr "$$DA-TRM,2,A=\"Movie #1-100:%02d\"$$\n"; I64 cert fmtstr "$$DA-TRM,LEN=2,A=\"Movie #1-100:%02d\"$$\n";
I64 min; I64 min;
I64 sec; I64 sec;
}; };
@@ -159,14 +125,14 @@ class CMetallicaForm
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN]; U8 special[STR_LEN];
I64 timestamp; I64 timestamp;
I64 cert fmtstr "$$DA-TRM,2,A=\"Song #1-99:%02d\"$$\n"; I64 cert fmtstr "$$DA-TRM,LEN=2,A=\"Song #1-99:%02d\"$$\n";
I64 min; I64 min;
I64 sec; I64 sec;
}; };
class CWebBookMarkForm class CWebBookMarkForm
{ {
U8 tag[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Tag Text:%s\"$$\n"; U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Tag Text:%s\"$$\n";
U8 special[STR_LEN]; U8 special[STR_LEN];
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
@@ -176,8 +142,8 @@ class CWebBookMarkForm
class CWebBibleForm class CWebBibleForm
{ {
U8 tag[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Tag Text:%s\"$$\n"; U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Tag Text:%s\"$$\n";
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Bible Passage:%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Bible Passage:%s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
I64 min; I64 min;
@@ -186,28 +152,28 @@ class CWebBibleForm
class CYouTubeForm class CYouTubeForm
{ {
U8 tag[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Title:%s\"$$\n"; U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Title:%s\"$$\n";
U8 special[STR_LEN] fmtstr "$$DA-P-TRM,11,A=\"SerialNum:%11s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P-TRM,LEN=11,A=\"SerialNum:%11s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
I64 min fmtstr "$$DA,32,A=\"Minutes :%d\"$$\n"; I64 min fmtstr "$$DA,A=\"Minutes :%d\"$$\n";
I64 sec fmtstr "$$DA,32,A=\"Seconds :%d\"$$\n"; I64 sec fmtstr "$$DA,A=\"Seconds :%d\"$$\n";
}; };
class CImgurForm class CImgurForm
{ {
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"SerialNum:%s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
I64 min fmtstr "$$DA,32,A=\"Width :%d\"$$\n"; I64 min fmtstr "$$DA,A=\"Width :%d\"$$\n";
I64 sec fmtstr "$$DA,32,A=\"Height :%d\"$$\n"; I64 sec fmtstr "$$DA,A=\"Height :%d\"$$\n";
}; };
class CWikipediaForm class CWikipediaForm
{ {
U8 tag[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Tag Text:%s\"$$\n"; U8 tag[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Tag Text:%s\"$$\n";
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Index :%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Index :%s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
I64 min; I64 min;
@@ -217,7 +183,7 @@ class CWikipediaForm
class CRandDecForm class CRandDecForm
{ {
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Dec):%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Line (Dec):%s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
I64 min; I64 min;
@@ -227,7 +193,7 @@ class CRandDecForm
class CRandHexForm class CRandHexForm
{ {
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Hex):%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Line (Hex):%s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert; I64 cert;
I64 min; I64 min;
@@ -237,9 +203,9 @@ class CRandHexForm
class CRandCertForm class CRandCertForm
{ {
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"Line (Dec) :%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"Line (Dec) :%s\"$$\n";
I64 timestamp; I64 timestamp;
I64 cert fmtstr "$$DA,32,A=\"Certificate:%d\"$$\n"; I64 cert fmtstr "$$DA,A=\"Certificate:%d\"$$\n";
I64 min; I64 min;
I64 sec; I64 sec;
}; };
@@ -248,8 +214,9 @@ class CRandHexBeacon5Form
{ {
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN] U8 special[STR_LEN]
fmtstr "$$DA-P-TRM,5,A=\"Line (5-Digit Hex):%5s\"$$\n"; fmtstr "$$DA-P-TRM,LEN=5,"
I64 timestamp fmtstr "$$DA,32,A=\"TimeStamp :%d\"$$\n"; "A=\"Line (5-Digit Hex):%5s\"$$\n";
I64 timestamp fmtstr "$$DA,A=\"TimeStamp :%d\"$$\n";
I64 cert; I64 cert;
I64 min; I64 min;
I64 sec; I64 sec;
@@ -259,8 +226,9 @@ class CRandHexBeacon8Form
{ {
U8 tag[STR_LEN]; U8 tag[STR_LEN];
U8 special[STR_LEN] U8 special[STR_LEN]
fmtstr "$$DA-P-TRM,8,A=\"Line (8-Digit Hex):%8s\"$$\n"; fmtstr "$$DA-P-TRM,LEN=8,"
I64 timestamp fmtstr "$$DA,32,A=\"TimeStamp :%d\"$$\n"; "A=\"Line (8-Digit Hex):%8s\"$$\n";
I64 timestamp fmtstr "$$DA,A=\"TimeStamp :%d\"$$\n";
I64 cert; I64 cert;
I64 min; I64 min;
I64 sec; I64 sec;
@@ -456,7 +424,7 @@ public U0 GodBooksPassage(U8 *files_find_mask,I64 len=512,
DirTreeDel(tempde1); DirTreeDel(tempde1);
} }
#define NIST_TIME_OFFSET (-7879-local_time_offset/CDATE_FREQ) #define NIST_TIME_OFFSET (-7884-local_time_offset/CDATE_FREQ)
#define NIST_TIME_TO_SWITCH 3 #define NIST_TIME_TO_SWITCH 3
public U0 NISTSync() public U0 NISTSync()
@@ -569,8 +537,8 @@ U0 InsMyURL()
break; break;
case: case:
if (DocForm(url(CImgurForm *))) { if (DocForm(url(CImgurForm *))) {
"$$HC,\"<img src=\\\"http://i.imgur.com/%s\\\" " "$$HC,\"<center><img src=\\\"http://i.imgur.com/%s\\\" "
"width=\\\"%d\\\" height=\\\"%d\\\" alt=\\\"\\\">\"$$\n", "width=\\\"%d\\\" height=\\\"%d\\\" alt=\\\"\\\"></center>\"$$\n",
url->special,url->min,url->sec; url->special,url->min,url->sec;
} }
break; break;
+44 -1
View File
@@ -1,3 +1,46 @@
#help_index "TOS"
public U0 CursorRemFile(U8 *filename)
{
CDoc *doc;
doc=DocRead(filename,DOCF_PLAIN_TEXT|DOCF_NO_CURSOR);
DocWrite(doc);
DocDel(doc);
}
public U0 CursorRem(U8 *files_find_mask="*")
{
I64 fuf_flags=0;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+T+f+F+O");
CDirEntry *tempde=FilesFind(files_find_mask,fuf_flags),*tempde1=tempde;
while (tempde) {
CursorRemFile(tempde->full_name);
Touch(tempde->full_name,"",,tempde->datetime);
tempde=tempde->next;
}
DirTreeDel(tempde1);
}
U0 UncollapseFile(U8 *filename,I64 *)
{
CDoc *doc=DocRead(filename,DOCF_NO_CURSOR);
DocCollapse(FALSE,doc);
DocWrite(doc);
DocDel(doc);
}
public U0 Uncollapse(U8 *files_find_mask="*",U8 *fu_flags=NULL)
{
I64 fuf_flags=0;
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),"+r+f+F+T+O");
ScanFlags(&fuf_flags,Define("ST_FILE_UTIL_FLAGS"),fu_flags);
CDirEntry *tempde=FilesFind(files_find_mask,fuf_flags),*tempde1=tempde;
while (tempde && !Bt(&fuf_flags,FUf_CANCEL)) {
UncollapseFile(tempde->full_name,&fuf_flags);
Touch(tempde->full_name,"",,tempde->datetime);
tempde=tempde->next;
}
DirTreeDel(tempde1);
}
#define VIDEO_FRAME_RATE 8 #define VIDEO_FRAME_RATE 8
#define FG_JUST_AUDIO 0 #define FG_JUST_AUDIO 0
@@ -198,7 +241,7 @@ U0 TOSRegWrite()
class CYouTubeForm2 class CYouTubeForm2
{ {
U8 special[STR_LEN] fmtstr "$$DA-P,STR_LEN-1,A=\"SerialNum:%s\"$$\n"; U8 special[STR_LEN] fmtstr "$$DA-P,LEN=STR_LEN-1,A=\"SerialNum:%s\"$$\n";
}; };
U8 *TOSYouTube() U8 *TOSYouTube()
+441
View File
@@ -0,0 +1,441 @@
//This is a customized version of $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$.
#help_index "DolDoc/Conversion"
//See $LK,"::/Doc/Credits.TXT"$.
U0 HtmlPutS(CDoc *doc,I64 u32_attr,I64 *_old_u32_attr,
U8 *st,I64 *_col,U8 *style_bitmap=NULL)
{
U8 *ch,*ptr;
u32_attr&=0xFFFFFF00;
if (u32_attr&DOCET_INVERT)
u32_attr.u8[1]=(u32_attr.u8[1]&15)<<4|u32_attr.u8[1]>>4;
if (u32_attr!=*_old_u32_attr) {
if (!(u32_attr&DOCET_BLINK) &&
*_old_u32_attr!=-1 && *_old_u32_attr&DOCET_BLINK)
DocPrint(doc,"</blink>");
if (*_old_u32_attr!=-1)
DocPrint(doc,"</span>");
DocPrint(doc,"<span class=c%02X>",u32_attr.u8[1]);
if (u32_attr&DOCET_BLINK &&
(*_old_u32_attr==-1 || !(*_old_u32_attr&DOCET_BLINK)))
DocPrint(doc,"<blink>");
*_old_u32_attr=u32_attr;
if (style_bitmap)
LBts(style_bitmap,u32_attr.u8[1]);
}
while (ch=*st++) {
switch (ch) {
case '\t':
do {
DocPutKey(doc,CH_SPACE,0);
*_col=*_col+1;
} while (*_col&7);
break;
sub_switch_start:
case 'ã': ptr="pi"; break;
case 'é': ptr="theta"; break;
case 'è': ptr="phi"; break;
case 'ê': ptr="omega"; break;
case 'ì': ptr="inf"; break;
case 'æ': ptr="u"; break;
sub_switch_end:
DocPrint(doc,ptr);
*_col=*_col+StrLen(ptr);
break;
sub_switch_start:
case CH_SHIFT_SPACE: ptr=" "; break;
case '&': ptr="&amp;"; break;
case '<': ptr="&lt;"; break;
case '>': ptr="&gt;"; break;
case '"': ptr="&quot;"; break;
sub_switch_end:
DocPrint(doc,ptr);
*_col=*_col+1;
break;
default:
if (CH_SPACE<=ch<0x7F || ch=='\n')
DocPutKey(doc,ch,0);
else
DocPrint(doc,".");
*_col=*_col+1;
}
}
}
U8 *TOSLinkCvt2(U8 *filename,I64 line_num)
{// ::/ --> http://www.templeos.org/Wb/
//Make your own LinkCvt routine
U8 *result=NULL,*st;
if (filename) {
st=ChgExt(filename,"html");
if (st && StrLen(st)>3 && !StrNCmp(st+1,":/",2))
result=MStrPrint(PERSONAL_WEB "/%s#l%d",st+3,line_num);
Free(st);
}
return result;
}
U8 *TOSLinkCvt1(U8 *link_st)
{
static CDoc *bible=NULL;
static I64 locks=0;
U8 *result=NULL,*filename,*needle;
I64 i,num;
if (link_st) {
switch (i=EdLinkCvt(link_st,&filename,&needle,&num)) {
case LK_FILE_LINE:
case LK_PLAIN_LINE:
case LK_FILE:
result=TOSLinkCvt2(filename,num);
break;
case -1:
case LK_DEF:
case LK_HELP_INDEX:
case LK_DOC:
case LK_DOC_ANCHOR:
case LK_DOC_FIND:
case LK_DOC_LINE:
break;
case LK_BIBLE_FIND:
while (LBts(&locks,0))
Yield;
if (!bible)
bible=Adam("DocRead(\"%s\");",filename);
if (DocFind(bible,num,needle))
result=TOSLinkCvt2(filename,bible->cur_entry->y+1);
LBtr(&locks,0);
break;
default:
if (DocFileEd(i,filename,needle,&num,EDF_UNCOLLAPSE|EDF_BAIL))
result=TOSLinkCvt2(filename,num);
}
Free(filename);
Free(needle);
}
return result;
}
public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL,
U8 *body_footer=NULL,U8 *html_footer=NULL,Bool line_anchors=TRUE,
U8 (*link_cvt)(U8 *link_st)=&TOSLinkCvt1)
{//Cvt $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$doc to HTML file.
CDocEntry *doc_e,*style,*doc_e2;
I64 i,y,old_y=MIN_I64,col,old_u32_attr=-1,old_attr;
U32 *hl,*src;
U8 *st,st_2[2],*link_st,*style_bitmap=CAlloc(256/8);
CBGR48 p[NUM_COLORS];
GrPaletteGet(p);
CDoc *doc_out=DocNew;
Bool unlock_doc_in=DocLock(doc_in),no_bwd;
old_attr=doc_in->win_task->text_attr;
doc_in->win_task->text_attr=DOC_ATTR_DFT_TEXT;
for (i=0xF0;i<=0xFF;i++)
LBts(style_bitmap,i);
DocRecalc(doc_in,RECALCt_NORMAL|RECALCF_TO_HTML);
st_2[0]=0; st_2[1]=0;
doc_out->flags|=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
if (!html_header) html_header=
"<!DOCTYPE HTML>\n"
"<html>\n"
"<head>\n"
"<meta http-equiv=\"Content-Type\" "
"content=\"text/html;charset=US-ASCII\">\n"
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$\">\n";
if (!body_header) body_header=
"<body>\n"
"<pre style=\"font-family:courier;font-size:10pt\">\n";
if (!body_footer) body_footer=
"</pre></body>\n</html>\n";
if (!html_footer) html_footer=
"</html>\n";
DocPrint(doc_out,"%s",html_header);
DocPrint(doc_out,"<style type=\"text/css\">\n");
style=doc_out->cur_entry->last;
DocPrint(doc_out,
"</style>\n"
"</head>\n");
DocPrint(doc_out,"%s",body_header);
doc_e=doc_in->root.next;
col=doc_e->x;
y=doc_e->y;
while (doc_e!=doc_in) {
if (!(doc_e->de_flags&DOCEF_SKIP)) {
if (line_anchors && y!=old_y) {
DocPrint(doc_out,"<a name=\"l%d\"></a>",y+1);
old_y=y;
}
while (y<doc_e->y) {
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,"\n",&col,style_bitmap);
if (line_anchors && ++y!=old_y) {
DocPrint(doc_out,"<a name=\"l%d\"></a>",y+1);
old_y=y;
}
col=0;
}
no_bwd=TRUE;
doc_e2=doc_e->next;
while (doc_e2!=doc_in && doc_e2->y==doc_e->y) {
if (doc_e2->x<doc_e->x) {
no_bwd=FALSE;
break;
}
doc_e2=doc_e2->next;
}
if (no_bwd)
while (col<doc_e->x)
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr," ",&col,style_bitmap);
link_st=NULL;
if (doc_e->de_flags&DOCEF_HTML_LINK)
link_st=StrNew(doc_e->html_link);
else if (st=DocEntryLink(doc_in,doc_e)) {
link_st=link_cvt(st);
Free(st);
}
if (link_st) {
if (old_u32_attr!=-1) {
DocPrint(doc_out,"</span>");
old_u32_attr=-1;
}
DocPrint(doc_out,"<a href=\"%s\">",link_st);
}
switch (doc_e->type_u8) {
case DOCT_TEXT:
if (doc_e->de_flags&DOCEF_HIGHLIGHT) {
if (doc_e->last==doc_in)
MemCpy(&doc_e->settings,&doc_in->settings_root,
sizeof(CDocSettings));
else
MemCpy(&doc_e->settings,&doc_e->last->settings,
sizeof(CDocSettings));
src=hl=DocHighlight(doc_e,doc_e->tag,StrLen(doc_e->tag),
doc_e->type&0xFF00);
while (*src) {
st_2[0]=*src&0xFF;
HtmlPutS(doc_out,*src++,&old_u32_attr,st_2,&col,style_bitmap);
}
Free(hl);
} else {
if (doc_e->de_flags&DOCEF_CENTER_X && //$BK,1$Nonstandard$BK,0$
doc_e->settings.final_u32_attr&0xF00==PURPLE<<8)
DocPrint(doc_out,"<h1><center>");
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,doc_e->tag,&col,style_bitmap);
if (doc_e->de_flags&DOCEF_CENTER_X && //$BK,1$Nonstandard$BK,0$
doc_e->settings.final_u32_attr&0xF00==PURPLE<<8)
DocPrint(doc_out,"</center></h1>");
}
break;
case DOCT_TAB:
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,"\t",&col,style_bitmap);
break;
case DOCT_HTML_CODE:
if (old_u32_attr!=-1) {
DocPrint(doc_out,"</span>");
old_u32_attr=-1;
}
DocPrint(doc_out,"%s",doc_e->tag);
break;
case DOCT_SPRITE:
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,doc_e->tag,&col,style_bitmap);
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,"/* Graphics Not Rendered in HTML */",
&col,style_bitmap);
break;
default:
if (doc_e->de_flags&DOCEF_TAG)
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,doc_e->tag,&col,style_bitmap);
}
if (link_st) {
if (old_u32_attr!=-1) {
DocPrint(doc_out,"</span>");
old_u32_attr=-1;
}
DocPrint(doc_out,"</a>");
Free(link_st);
}
}
doc_e=doc_e->next;
}
while (y++<doc_e->y) {
HtmlPutS(doc_out,doc_e->settings.final_u32_attr,
&old_u32_attr,"\n",&col,style_bitmap);
col=0;
}
if (old_u32_attr!=-1) {
if (old_u32_attr&DOCET_BLINK)
DocPrint(doc_out,"</blink>");
DocPrint(doc_out,"</span>");
old_u32_attr=-1;
}
DocPrint(doc_out,"%s",body_footer);
DocPrint(doc_out,"%s",html_footer);
doc_out->cur_entry=style->next;
for (i=0;i<256;i++)
if (Bt(style_bitmap,i))
DocPrint(doc_out,
".c%02X{color:#%02x%02x%02x;background-color:#%02x%02x%02x;}\n",
i,p[i&15].r>>8,p[i&15].g>>8,p[i&15].b>>8,
p[i/16].r>>8,p[i/16].g>>8,p[i/16].b>>8);
doc_out->cur_entry=&doc_out->root;
DocRecalc(doc_out);
doc_in->win_task->text_attr=old_attr;
if (unlock_doc_in)
DocUnlock(doc_in);
return doc_out;
}
#help_index "Cmd Line (Typically);DolDoc/Conversion;DolDoc/Cmd Line (Typically)"
public U0 TOSToHtml(U8 *_in_name,U8 *_out_name=NULL,U8 *html_header=NULL,
U8 *body_header=NULL,U8 *body_footer=NULL,U8 *html_footer=NULL,
I64 width=80,Bool line_anchors=TRUE,
U8 (*link_cvt)(U8 *link_st)=&TOSLinkCvt1)
{//Convert $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$file to HTML.
//Supply your own link_cvt routine.
U8 *in_name,*out_name;
CDoc *doc_in,*doc_out;
SettingsPush; //See $LK,"SettingsPush",A="MN:SettingsPush"$
WinHorz(0,width-1); //Sets doc width for word wrap.
in_name=DftExt(_in_name,"CPP.Z");
if (_out_name)
out_name=DftExt(_out_name,"html");
else
out_name=ChgExt(_in_name,"html");
doc_in=DocRead(in_name);
DocTop(doc_in);
DocPrint(doc_in,"$$BD,LTCYAN$$"); //$BK,1$Nonstandard$BK,0$
doc_out=Doc2Html(doc_in,html_header,body_header,body_footer,html_footer,
line_anchors,link_cvt);
StrCpy(&doc_out->filename.name,out_name);
SettingsPop;
DocWrite(doc_out);
DocDel(doc_in);
DocDel(doc_out);
Free(in_name);
Free(out_name);
}
#help_index "TOS"
U0 TOSWebFile(U8 *name)
{
U8 *name2;
CDirEntry de;
if (FileFind(name,&de)) {
Free(de.full_name);
"File:%s\n",name;
UncollapseFile(name,NULL);
Touch(name,"",,de.datetime);
name2=ChgExt(name,"html");
TOSToHtml(name,name2,
"<!DOCTYPE HTML>\n"
"<html style=\"background-color:#FFFFFF;\">\n"
"<head>\n"
"<meta http-equiv=\"Content-Type\" "
"content=\"text/html;charset=US-ASCII\">\n"
"<title>The Temple Operating System</title>\n"
"<meta name=\"keywords\" "
"content=\"Operating System,64-Bit,64 Bit,"
"Temple,OS,TempleOS,Free,Open Source,Public Domain,x86_64\">\n"
"<meta name=\"generator\" content=\"$TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$\">\n",
"<body style=\"background-color:#55FFFF; border-style:solid;
border-width:8px; border-color:#0000AA;
margin-left:auto; margin-right:auto; width:800px; \">\n"
"<pre style=\"font-family:courier;font-size:10pt\">\n"
"<div style=\"margin-left:auto; margin-right:auto;"
" width: 640px;\">\n",
"</div></pre></body>\n",
"</html>\n");
Touch(name2,"",,de.datetime);
Free(name2);
}
}
public U0 MakeWebSite()
{
CDirEntry *tempde,*tempde1;
DocClear;
Cd("D:/Wb");
DelTree("D:/Wb/Home/Budget");
DelTree("D:/Wb/Home/Private");
Del("D:/Wb/Home/*");
Touch("D:/Wb/Home/Web/index.TXT.Z","");
Touch("D:/Wb/Home/Web/Downloads.TXT.Z","");
Touch("D:/Wb/Home/Web/TempleOS.TXT.Z","");
tempde=tempde1=FilesFind("*",
FUF_RECURSE|FUF_JUST_FILES|FUF_JUST_TXT|FUF_CLUSTER_ORDER);
while (tempde) {
TOSWebFile(tempde->full_name);
tempde=tempde->next;
}
Copy( "D:/Wb/Home/Downloads/Bin/TempleBot",
"D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
ToDolDoc("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
TOSToHtml("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
Del("D:/Wb/Home/Downloads/Bin/TempleBot.TXT");
DirTreeDel(tempde1);
Drv('C');
}
U0 FreshenWebDir(U8 *dirname)
{//No recurse
CDirEntry *tempde,*tempde1;
U8 *src,*dst;
MkDir("D:/Wb");
MkDir("D:/Wb/Home");
MkDir("D:/Wb/Home/Web");
MkDir("D:/Wb/Home/Web/TAD");
MkDir("D:/Wb/Home/Web/TAD/Blog");
src=MStrPrint("D:/Wb%s",dirname);
MkDir(src);
Free(src);
src=MStrPrint("D:/Wb%s/*",dirname);
Del(src);
Free(src);
src=MStrPrint("C:%s/*",dirname);
dst=MStrPrint("D:/Wb%s",dirname);
Copy(src,dst);
Free(src);
Free(dst);
src=MStrPrint("D:/Wb%s/*",dirname);
tempde=tempde1=FilesFind(src,FUF_JUST_FILES|FUF_JUST_TXT|FUF_CLUSTER_ORDER);
while (tempde) {
TOSWebFile(tempde->full_name);
tempde=tempde->next;
}
DirTreeDel(tempde1);
}
+2 -2
View File
@@ -47,11 +47,11 @@ U0 DataDemo()
"However, changes happen immediately,\n" "However, changes happen immediately,\n"
"so it's tricky.\n\n"; "so it's tricky.\n\n";
//Use <CTRL-l> for the $$DA...$$ format. //Use <CTRL-l> for the $$DA...$$ format.
doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,32,RT=I16,A=\"%%7d\"$$\n"); doc_e=DocPrint(doc,"$$DA-TRM+RD+UD,RT=I16,A=\"%%7d\"$$\n");
doc_e->data=&i; doc_e->data=&i;
StrCpy(buf,"Terry"); StrCpy(buf,"Terry");
doc_e=DocPrint(doc,"$$DA-P+RD+UD,7,A=\"Str:%%s\"$$\n"); doc_e=DocPrint(doc,"$$DA-P+RD+UD,LEN=7,A=\"Str:%%s\"$$\n");
doc_e->data=buf; doc_e->data=buf;
if (unlock) if (unlock)
+14 -7
View File
@@ -4,13 +4,15 @@ class FDStruct
//The number is the field from after the ':' to the end. //The number is the field from after the ':' to the end.
//See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$. //See $LK,"Data Tag Width",A="FA:::/Adam/DolDoc/DocPlain.CPP,DataTagWidth"$.
F64 num1 fmtstr "$$DA-TRM,32,RT=F64,A=\"F64 1:%12.8f\"$$\n"; F64 num1 fmtstr "$$DA-TRM,RT=F64,A=\"F64 1:%12.8f\"$$\n";
F64 num2 fmtstr "$$DA-TRM,32,RT=F64,A=\"F64 2:%12e\"$$\n"; F64 num2 fmtstr "$$DA-TRM,RT=F64,A=\"F64 2:%12e\"$$\n";
I64 num3 fmtstr "$$DA-TRM,32,A=\"I64 1:0x%016X\"$$\n"; I64 num3 fmtstr "$$DA-TRM,A=\"I64 1:0x%016X\"$$\n";
I64 num4 fmtstr "$$DA-TRM,32,A=\"I64 2:%12d\"$$\n"; I64 num4 fmtstr "$$DA-TRM,A=\"I64 2:%12d\"$$\n";
I64 type fmtstr "$$LS,D=\"ST_PERSON_TYPE\"$$\n"; I64 type fmtstr "$$LS,D=\"ST_PERSON_TYPE\"$$\n";
U8 name[32] fmtstr "$$DA-P,31,A=\"Name :%s\"$$\n"; U8 name[32] fmtstr "$$DA-P,LEN=31,A=\"Name :%s\"$$\n";
CDate datetime fmtstr "$$DA-TRM,32,A=\"Date :%8D\"$$\n"; U8 *address1 fmtstr "$$DA+M,A=\"Address:%s\"$$\n"; //+M is unlimited len U8 *.
U8 *address2 fmtstr "$$DA+M,A=\"Address:%s\"$$\n"; //+M is unlimited len U8 *.
CDate datetime fmtstr "$$DA-TRM,A=\"Date :%8D\"$$\n";
Bool check fmtstr "$$CB,\"Check\"$$\n"; Bool check fmtstr "$$CB,\"Check\"$$\n";
}; };
@@ -24,6 +26,8 @@ U0 FormDemo()
fds.num4=-567; fds.num4=-567;
fds.type=1; fds.type=1;
StrCpy(&fds.name,"John"); StrCpy(&fds.name,"John");
fds.address1=StrNew("1234 Pine St.");
fds.address2=NULL; //Init to NULL if empty.
fds.datetime=Now; fds.datetime=Now;
fds.check=TRUE; fds.check=TRUE;
if (DocForm(&fds)) { if (DocForm(&fds)) {
@@ -33,6 +37,8 @@ U0 FormDemo()
"#4\t=%d\n",fds.num4; "#4\t=%d\n",fds.num4;
"Type\t=%s\n",DefineSub(fds.type,"ST_PERSON_TYPE"); "Type\t=%s\n",DefineSub(fds.type,"ST_PERSON_TYPE");
"Name\t=%s\n",fds.name; "Name\t=%s\n",fds.name;
"Address1=%s\n",fds.address1;
"Address2=%s\n",fds.address2;
"Date\t=%D\n",fds.datetime; "Date\t=%D\n",fds.datetime;
"Check\t=%d\n",fds.check; "Check\t=%d\n",fds.check;
} else } else
@@ -40,7 +46,8 @@ U0 FormDemo()
"\n\nClassRep Example\n"; "\n\nClassRep Example\n";
ClassRep(&fds); ClassRep(&fds);
Free(fds.address1);
Free(fds.address2);
//See also $LK,"ClassRepD",A="MN:ClassRepD"$(). //See also $LK,"ClassRepD",A="MN:ClassRepD"$().
} }
+2 -2
View File
@@ -4,8 +4,8 @@
class Acct class Acct
{//Use <CTRL-l> to help generate fmtstrs. {//Use <CTRL-l> to help generate fmtstrs.
U8 name[32] fmtstr "$$DA-P,32,A=\"Name:%s\"$$\n"; U8 name[32] fmtstr "$$DA-P,LEN=32,A=\"Name:%s\"$$\n";
U8 addr[64] fmtstr "$$DA-P,64,A=\"Addr:%s\"$$\n"; U8 addr[64] fmtstr "$$DA-P,LEN=64,A=\"Addr:%s\"$$\n";
U8 pad[DB_ACCT_BLKS*BLK_SIZE-64-32]; U8 pad[DB_ACCT_BLKS*BLK_SIZE-64-32];
}; };
+3 -3
View File
@@ -29,7 +29,7 @@ U0 Digits()
Fs->text_attr=DKGRAY<<4+WHITE; Fs->text_attr=DKGRAY<<4+WHITE;
DocClear; DocClear;
//Set default background and foreground //Set default background and foreground
"$$WW,1$$$$BD,DKGRAY$$$$FD,WHITE$$" "$$WW,1$$$$BG,DKGRAY$$$$FD,WHITE$$"
"\nThis is a memory game. " "\nThis is a memory game. "
"Try to remember the digits and enter them. " "Try to remember the digits and enter them. "
"They are colored based on electrical " "They are colored based on electrical "
@@ -46,14 +46,14 @@ restart:
MemSet(answer,0,sizeof(answer)); MemSet(answer,0,sizeof(answer));
while (TRUE) { while (TRUE) {
DocClear; DocClear;
"$$WW,1$$$$BD,DKGRAY$$$$FD,WHITE$$\n"; "$$WW,1$$$$BG,DKGRAY$$$$FD,WHITE$$\n";
"Pattern\nLength:%d\n\n",num+1; "Pattern\nLength:%d\n\n",num+1;
answer[num++]=RandU32%10+'0'; answer[num++]=RandU32%10+'0';
PrintPattern(answer); PrintPattern(answer);
ch=PressAKey; ch=PressAKey;
if (ch==CH_ESC||ch==CH_SHIFT_ESC) goto dg_done; if (ch==CH_ESC||ch==CH_SHIFT_ESC) goto dg_done;
DocClear; DocClear;
"$$WW,1$$$$BD,DKGRAY$$$$FD,WHITE$$\n"; "$$WW,1$$$$BG,DKGRAY$$$$FD,WHITE$$\n";
"Guess\nLength:%d\n\n",num; "Guess\nLength:%d\n\n",num;
for (i=0;i<num;i++) { for (i=0;i<num;i++) {
ch=GetChar(,FALSE); ch=GetChar(,FALSE);
Binary file not shown.
Binary file not shown.
@@ -1,3 +1,5 @@
//This file is required by $LK,"::/Demo/Lectures/Mem/Uncached.CPP"$.
U8 *Mem2MegAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL) U8 *Mem2MegAlloc(I64 *_pages2Meg,CBlkPool *bp=NULL)
{/*Alloc 2Meg pages from BlkPool. Don't link to task. {/*Alloc 2Meg pages from BlkPool. Don't link to task.
(Linking to a task means they will be freed when the task dies.) (Linking to a task means they will be freed when the task dies.)
@@ -178,3 +180,23 @@ U0 Mem2MegFree(CMemBlk *m,I64 pages2Meg,CBlkPool *bp=NULL)
POPFD POPFD
} }
} }
CHeapCtrl *HeapCtrlBPInit(CBlkPool *bp,I64 pages512)
{//Make mem chunk into HeapCtrl and BlkPool.
I64 num;
CMemBlk *m;
CHeapCtrl *hc;
MemSet(bp,0,sizeof(CBlkPool)+sizeof(CHeapCtrl));
hc=HeapCtrlInit(bp(U8 *)+sizeof(CBlkPool),,bp);
m=(bp(U8 *)+sizeof(CBlkPool)+sizeof(CHeapCtrl)+MEM_PAGE_SIZE-1)&
~(MEM_PAGE_SIZE-1);
num=(bp(U8 *)+pages512<<MEM_PAGE_BITS-m(U8 *))>>MEM_PAGE_BITS;
bp->alloced_u8s=(pages512-num)<<MEM_PAGE_BITS;
BlkPoolAdd(bp,m,num);
return hc;
}
/* PCI hardware devices, when they require uncached memory buffers, need
this code. TempleOS, however, has a law requiring only IN/OUT port hardware
access except VGA, handled here: $LK,"::/Kernel/Mem/PageTables.CPP"$.
*/
@@ -43,6 +43,5 @@ U0 PageTableDemo1()
PageTableDemo1; PageTableDemo1;
//See $LK,"Mem2MegAlloc",A="MN:Mem2MegAlloc"$(), $LK,"Mem2MegFree",A="MN:Mem2MegFree"$() for page aligned allocations.
//See $LK,"CBlkPool",A="MN:CBlkPool"$, $LK,"CHeapCtrl",A="MN:CHeapCtrl"$, $LK,"sys_code_bp",A="MN:sys_code_bp"$ and $LK,"sys_data_bp",A="MN:sys_data_bp"$. //See $LK,"CBlkPool",A="MN:CBlkPool"$, $LK,"CHeapCtrl",A="MN:CHeapCtrl"$, $LK,"sys_code_bp",A="MN:sys_code_bp"$ and $LK,"sys_data_bp",A="MN:sys_data_bp"$.
//See $LK,"Memory Overview",A="FI:::/Doc/MemOverview.TXT"$ and $LK,"Memory Routines",A="HI:Memory"$. //See $LK,"Memory Overview",A="FI:::/Doc/MemOverview.TXT"$ and $LK,"Memory Routines",A="HI:Memory"$.
File renamed without changes.
@@ -1,5 +1,9 @@
#define SAMPLE_SIZE 100000 // Requires $LK,"::/Demo/Lectures/Mem/Mem2Meg.CPP"$.
Cd(__DIR__);;
#include "Mem2Meg"
#define SAMPLE_SIZE 100000
U0 TimeIns() U0 TimeIns()
{ {
I64 i,start,end; I64 i,start,end;
@@ -40,12 +44,3 @@ U0 TimeIns()
} }
TimeIns; TimeIns;
/*Program Output$HL,0$$WW+H,1$$FD,1$
8 Cores 2.660GHz
Cached Cycles: 202,220
Uncached Cycles: 14,357,016
$FG,2$The difference is even greater
because the loop overhead was not subtracted.
$HL,1$*/
+1 -1
View File
@@ -1 +1 @@
╡▓H╝+5╫?кO╓╨█mц?Ч≥Qфк?ЧeХмЦ?═<н╪$╫Д?ph─┐h║Ф?┼┤3ЖЖ╦И?T3 Д≈eЙ?рp1й М?' GХЖ"О? rZÅ¡Jþ‘?¨È³a©h·?£û(JéqÌ?»±wÌݧÖ?Œ@ð­ß?•¡âŽ@Pà?@55¼Ã;â?ÉSä[}Pä?vŽ’)é?¯B5´´Õï?
+10 -10
View File
@@ -1,11 +1,11 @@
//This is sorted. //This is sorted.
0.095336 0.167187
0.105530 0.196175
0.318999 0.280106
0.412453 0.366963
0.621226 0.403184
0.711749 0.591110
0.960501 0.726180
0.965063 0.749633
0.981767 0.795656
0.988804 0.926049
+1 -1
View File
@@ -1 +1 @@
�‡3צצ¸י? <־¼$½ה?‏eטֽד?‏™Qֶֻ?ֻO₪÷�mֳ?' Gטצ"ן?ph€ƒh¡ז?²’H®+5½?T3 ה—eך?ׂp1ֺ ם? ¯B5´´Õï?¨È³a©h·?@55¼Ã;â?vŽ’)é?»±wÌݧÖ?£û(JéqÌ?•¡âŽ@Pà?Œ@ð­ß?ÉSä[}Pä?rZÅ¡Jþ‘?
+10 -10
View File
@@ -1,11 +1,11 @@
//This is unsorted. //This is unsorted.
0.711749 0.926049
0.988804 0.591110
0.095336 0.196175
0.318999 0.749633
0.965063 0.403184
0.105530 0.280106
0.621226 0.366963
0.960501 0.726180
0.412453 0.167187
0.981767 0.795656
+9 -8
View File
@@ -4,21 +4,22 @@ an html document named "OutPage.html".
Notice that an entry like $$TX,"GOOGLE",HTML="http://www.google.com"$$ Notice that an entry like $$TX,"GOOGLE",HTML="http://www.google.com"$$
will be converted to text in the html with an html link. will be converted to text in the html with an html link.
I cheated by hardcoding $LK,"www.templeos.org",A="FF:::/Adam/Opt/Utils/ToHtml.CPP,www.templeos.org"$ as the website I cheated by hardcoding $LK,"www.templeos.org",A="FF:::/Demo/ToHtmlToTXTExample/ToHtml.CPP,www.templeos.org"$ as the website
for $LK,"TempleOS Links",A="MN:LK_FILE"$. Why don't you copy $LK,"::/Adam/Opt/Utils/ToHtml.CPP"$ for $LK,"TempleOS Links",A="MN:LK_FILE"$. Why don't you copy
to your /Home directory and modify it? You are welcome $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$ to your /Home directory
to link to http://www.templeos.org if you want file and modify it? You are welcome to link to
that come on the TempleOS distribution. http://www.templeos.org if you want file that come on the
TempleOS distribution.
You can pass html meta data as args to $LK,"ToHtml",A="MN:ToHtml"$(). You can pass html meta data as args to $LK,"ToHtml",A="FF:::/Demo/ToHtmlToTXTExample/ToHtml.CPP,ToHtml"$().
If you want to blog like I do, see these files... If you want to blog like I do, see these files...
$LK,"::/Demo/AcctExample/TOSToHtml.CPP"$
$LK,"::/Demo/AcctExample/HomeKeyPlugIns.CPP"$ $LK,"::/Demo/AcctExample/HomeKeyPlugIns.CPP"$
$LK,"::/Demo/AcctExample/TOSHolySpirit.CPP"$ $LK,"::/Demo/AcctExample/TOSHolySpirit.CPP"$
$LK,"MakeWebSite",A="FF:::/Demo/AcctExample/TOSDistro.CPP,MakeWebSite"$()
*/ */
Cd(__DIR__);; Cd(__DIR__);;
#include "ToHtml"
ToHtml("InPage.TXT.Z","OutPage.html"); ToHtml("InPage.TXT.Z","OutPage.html");
@@ -118,9 +118,8 @@ U8 *TOSLinkCvt1(U8 *link_st)
return result; return result;
} }
public CDoc *Doc2Html(CDoc *doc_in, public CDoc *Doc2Html(CDoc *doc_in,U8 *html_header=NULL,U8 *body_header=NULL,
U8 *html_header=NULL, U8 *body_footer=NULL,U8 *html_footer=NULL,Bool line_anchors=TRUE,
U8 *body_header=NULL,U8 *body_footer=NULL,Bool line_anchors=TRUE,
U8 (*link_cvt)(U8 *link_st)=&TOSLinkCvt1) U8 (*link_cvt)(U8 *link_st)=&TOSLinkCvt1)
{//Cvt $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$doc to HTML file. {//Cvt $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$doc to HTML file.
CDocEntry *doc_e,*style,*doc_e2; CDocEntry *doc_e,*style,*doc_e2;
@@ -138,28 +137,33 @@ public CDoc *Doc2Html(CDoc *doc_in,
for (i=0xF0;i<=0xFF;i++) for (i=0xF0;i<=0xFF;i++)
LBts(style_bitmap,i); LBts(style_bitmap,i);
DocRecalc(doc_in); DocRecalc(doc_in,RECALCt_NORMAL|RECALCF_TO_HTML);
st_2[0]=0; st_2[1]=0; st_2[0]=0; st_2[1]=0;
doc_out->flags|=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR; doc_out->flags|=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR;
if (!html_header) html_header="";
if (!body_header) body_header=""; if (!html_header) html_header=
if (!body_footer) body_footer="";
DocPrint(doc_out,
"<!DOCTYPE HTML>\n" "<!DOCTYPE HTML>\n"
"<html>\n" "<html>\n"
"<head>\n" "<head>\n"
"<meta http-equiv=\"Content-Type\" " "<meta http-equiv=\"Content-Type\" "
"content=\"text/html;charset=US-ASCII\">\n" "content=\"text/html;charset=US-ASCII\">\n"
"%s" "<meta name=\"generator\" content=\"$TX,"TempleOS V4.03",D="DD_OS_NAME_VERSION"$\">\n";
"<meta name=\"generator\" content=\"TempleOS V%4.2f\">\n" if (!body_header) body_header=
"<style type=\"text/css\">\n",html_header,os_version); "<body>\n"
"<pre style=\"font-family:courier;font-size:10pt\">\n";
if (!body_footer) body_footer=
"</pre></body>\n</html>\n";
if (!html_footer) html_footer=
"</html>\n";
DocPrint(doc_out,"%s",html_header);
DocPrint(doc_out,"<style type=\"text/css\">\n");
style=doc_out->cur_entry->last; style=doc_out->cur_entry->last;
DocPrint(doc_out, DocPrint(doc_out,
"</style>\n" "</style>\n"
"</head>\n" "</head>\n");
"<body>\n"
"<pre style=\"font-family:courier;font-size:10pt\">\n");
DocPrint(doc_out,"%s",body_header); DocPrint(doc_out,"%s",body_header);
doc_e=doc_in->root.next; doc_e=doc_in->root.next;
@@ -277,7 +281,7 @@ public CDoc *Doc2Html(CDoc *doc_in,
old_u32_attr=-1; old_u32_attr=-1;
} }
DocPrint(doc_out,"%s",body_footer); DocPrint(doc_out,"%s",body_footer);
DocPrint(doc_out,"</pre></body>\n</html>\n"); DocPrint(doc_out,"%s",html_footer);
doc_out->cur_entry=style->next; doc_out->cur_entry=style->next;
for (i=0;i<256;i++) for (i=0;i<256;i++)
@@ -298,8 +302,9 @@ public CDoc *Doc2Html(CDoc *doc_in,
#help_index "Cmd Line (Typically);DolDoc/Conversion;DolDoc/Cmd Line (Typically)" #help_index "Cmd Line (Typically);DolDoc/Conversion;DolDoc/Cmd Line (Typically)"
public U0 ToHtml(U8 *_in_name,U8 *_out_name=NULL,U8 *html_header=NULL, public U0 ToHtml(U8 *_in_name,U8 *_out_name=NULL,U8 *html_header=NULL,
U8 *body_header=NULL,U8 *body_footer=NULL,I64 width=80, U8 *body_header=NULL,U8 *body_footer=NULL,U8 *html_footer=NULL,
Bool line_anchors=TRUE,U8 (*link_cvt)(U8 *link_st)=&TOSLinkCvt1) I64 width=80,Bool line_anchors=TRUE,
U8 (*link_cvt)(U8 *link_st)=&TOSLinkCvt1)
{//Convert $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$file to HTML. {//Convert $LK,"DolDoc",A="FI:::/Doc/DolDocOverview.TXT"$file to HTML.
//Supply your own link_cvt routine. //Supply your own link_cvt routine.
U8 *in_name,*out_name; U8 *in_name,*out_name;
@@ -315,8 +320,8 @@ public U0 ToHtml(U8 *_in_name,U8 *_out_name=NULL,U8 *html_header=NULL,
out_name=ChgExt(_in_name,"html"); out_name=ChgExt(_in_name,"html");
doc_in=DocRead(in_name); doc_in=DocRead(in_name);
doc_out=Doc2Html(doc_in,html_header,body_header, doc_out=Doc2Html(doc_in,html_header,body_header,body_footer,html_footer,
body_footer,line_anchors,link_cvt); line_anchors,link_cvt);
StrCpy(&doc_out->filename.name,out_name); StrCpy(&doc_out->filename.name,out_name);
SettingsPop; SettingsPop;
+1 -1
View File
@@ -723,7 +723,7 @@
34.222.78.124 - - [11/Feb/2015:15:14:30 -0800] "GET /TempleOSCD.ISO HTTP/1.1" 200 786432 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "www.templeos.org" 34.222.78.124 - - [11/Feb/2015:15:14:30 -0800] "GET /TempleOSCD.ISO HTTP/1.1" 200 786432 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "www.templeos.org"
88.41.4.142 - - [11/Feb/2015:15:14:51 -0800] "GET /Wb/Demo/Graphics/LowPassFilter.html HTTP/1.1" 200 31098 "http://www.templeos.org/Wb/Home/Web/LineRep.html" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org" 88.41.4.142 - - [11/Feb/2015:15:14:51 -0800] "GET /Wb/Demo/Graphics/LowPassFilter.html HTTP/1.1" 200 31098 "http://www.templeos.org/Wb/Home/Web/LineRep.html" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36" "www.templeos.org"
229.137.198.53 - - [11/Feb/2015:15:16:43 -0800] "GET /TempleOSCD.ISO HTTP/1.1" 200 655360 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "www.templeos.org" 229.137.198.53 - - [11/Feb/2015:15:16:43 -0800] "GET /TempleOSCD.ISO HTTP/1.1" 200 655360 "-" "Mozilla/5.0 Gecko/20100115 Firefox/3.6" "www.templeos.org"
228.141.141.213 - - [11/Feb/2015:15:18:24 -0800] "GET /Wb/Demo/Lectures/Uncached.html HTTP/1.1" 200 25539 "-" "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)" "www.templeos.org" 228.141.141.213 - - [11/Feb/2015:15:18:24 -0800] "GET /Wb/Demo/Lectures/Mem/Uncached.html HTTP/1.1" 200 25539 "-" "Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)" "www.templeos.org"
115.195.71.92 - - [11/Feb/2015:15:20:23 -0800] "GET / HTTP/1.1" 200 6329 "http://disqus.com/embed/comments/?base=default&version=59a235bdb0503729dbf2f256a99267ac&f=hausdorff&t_u=http%3A%2F%2Fblog.nullspace.io%2Fkernel-latency.html&t_d=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&t_t=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&s_o=default" "Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org" 115.195.71.92 - - [11/Feb/2015:15:20:23 -0800] "GET / HTTP/1.1" 200 6329 "http://disqus.com/embed/comments/?base=default&version=59a235bdb0503729dbf2f256a99267ac&f=hausdorff&t_u=http%3A%2F%2Fblog.nullspace.io%2Fkernel-latency.html&t_d=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&t_t=84%25%20of%20a%20single-threaded%201KB%20write%20in%20Redis%20is%20spent%20in%20the%20kernel&s_o=default" "Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org"
115.195.71.92 - - [11/Feb/2015:15:20:27 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 "-" "Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org" 115.195.71.92 - - [11/Feb/2015:15:20:27 -0800] "GET /favicon.ico HTTP/1.1" 200 1078 "-" "Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org"
115.195.71.92 - - [11/Feb/2015:15:20:48 -0800] "GET /Wb/Doc/AboutTempleOS.html HTTP/1.1" 200 4925 "http://www.templeos.org/" "Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org" 115.195.71.92 - - [11/Feb/2015:15:20:48 -0800] "GET /Wb/Doc/AboutTempleOS.html HTTP/1.1" 200 4925 "http://www.templeos.org/" "Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.109 Mobile Safari/537.36" "www.templeos.org"
+2 -2
View File
@@ -7,7 +7,7 @@ $TX,"www.templeos.org",HTML="http://www.templeos.org"$
$FG,5$Owner/President:$FG$ $FG,5$Owner/President:$FG$
$TX,"Terry A. Davis",HTML="mailto:tdavis@templeos.org"$ $TX,"Terry A. Davis",HTML="mailto:tdavis@templeos.org"$
$HC,"<img src=\"http://www.templeos.org/images/140414TerryADavis.jpg\" width=\"432\" height=\"324\" alt=\"\">"$ $HC,"<center><img src=\"http://www.templeos.org/images/140414TerryADavis.jpg\" width=\"432\" height=\"324\" alt=\"\"></center>"$
8144 Sickle Lane 8144 Sickle Lane
Las Vegas, NV 89128 Las Vegas, NV 89128
@@ -24,7 +24,7 @@ I was a National Merit Scholar with a 1440 SAT at Arizona State University. I h
I designed a 3 axis stepper-motor-driven milling machine 1996-1997 with a CAD/CAM package for a company I started called Home Automation and Robotic Equipment. I designed a 3 axis stepper-motor-driven milling machine 1996-1997 with a CAD/CAM package for a company I started called Home Automation and Robotic Equipment.
$HC,"<img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\">"$ $HC,"<center><img src=\"http://www.templeos.org/images/Machine.jpg\" width=\"600\" height=\"400\" alt=\"\"></center>"$
I worked for a company named Xytec Corp. 1997-1999. We made FPGA-based image processing equipment. I wrote $FG,2$$TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$$FG$ from 2000-2001 for H.A.R.E. I worked as head software/electrical engineer for a company called Graphic Technologies, 2001-2002, making replacement chips for toner printer cartridges so they could be refilled. I worked for a company named Xytec Corp. 1997-1999. We made FPGA-based image processing equipment. I wrote $FG,2$$TX,"SimStructure",HTML="http://www.templeos.org/files/SimStrSetUp.zip"$$FG$ from 2000-2001 for H.A.R.E. I worked as head software/electrical engineer for a company called Graphic Technologies, 2001-2002, making replacement chips for toner printer cartridges so they could be refilled.
+44
View File
@@ -2,6 +2,50 @@
Use $LK,"R",A="MN:R"$() to rename if I change a label. Use $LK,"R",A="MN:R"$() to rename if I change a label.
$IV,1$----02/10/16 13:51:44----$IV,0$
$IV,1$----02/10/16 08:56:49----$IV,0$
* Improved $FG,2$<CTRL-l>$FG$ prompting.
$IV,1$----02/09/16 23:54:23----$IV,0$
* Created $LK,"DOCEF_LEN",A="MN:DOCEF_LEN"$ with arg. $LK,"DOCT_DATA",A="MN:DOCT_DATA"$ has default 64 len.
$IV,1$----02/09/16 09:34:32----$IV,0$
* $BK,1$TempleOS version 4.03 Released$BK,0$
* Added $LK,"DOCEF_REMALLOC_DATA",A="MN:DOCEF_REMALLOC_DATA"$.
$IV,1$----02/05/16 23:00:53----$IV,0$
* Moved $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$.
* Added $LK,"::/Demo/AcctExample/TOSToHtml.CPP"$.
$IV,1$----02/03/16 18:47:00----$IV,0$
* Refactored $LK,"SpriteMainEd",A="MN:SpriteMainEd"$().
* Added tag edit to main sprite edit menu.
$IV,1$----02/01/16 21:01:15----$IV,0$
* Cleaned-up $LK,"TaskKillDying",A="MN:TaskKillDying"$().
* Made multicore more professional.
$IV,1$----02/01/16 06:02:41----$IV,0$
* Moved $LK,"Mem2Meg.CPP",A="FI:::/Demo/Lectures/Mem/Mem2Meg.CPP"$ out of kernel.
$IV,1$----01/31/16 04:07:50----$IV,0$
* Fixed scheduler, so doesn't idle so high.
* Fixed many memory leaks.
* Changed args to $LK,"Mem512Alloc",A="MN:Mem512Alloc"$(), $LK,"Mem512Free",A="MN:Mem512Free"$(), and $LK,"Mem512TaskAlloc",A="MN:Mem512TaskAlloc"$().
$IV,1$----01/30/16 11:14:29----$IV,0$
* Changed arg in $LK,"DocEntryNewTag",A="MN:DocEntryNewTag"$().
* Added $LK,"DocEntryNewBase",A="MN:DocEntryNewBase"$().
$IV,1$----01/29/16 02:44:38----$IV,0$
* Overhauled $LK,"DocSave",A="MN:DocSave"$() and $LK,"DocRecalc",A="MN:DocRecalc"$().
$IV,1$----01/28/16 20:45:35----$IV,0$
* Fixed bug in locate sprite elem code.
* Overhauled $FG,2$<CTRL-r>$FG$ sprite editor.
* Added $LK,"DocHighlightCursor",A="MN:DocHighlightCursor"$() and $LK,"DOCf_DONT_HIGHLIGHT_CURSOR",A="MN:DOCf_DONT_HIGHLIGHT_CURSOR"$.
$IV,1$----01/28/16 14:05:52----$IV,0$ $IV,1$----01/28/16 14:05:52----$IV,0$
* Fixed bug in $LK,"AutoComplete",A="MN:AutoComplete"$() init. * Fixed bug in $LK,"AutoComplete",A="MN:AutoComplete"$() init.
* Added $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$(). * Added $LK,"HeapLogSizeRep",A="MN:HeapLogSizeRep"$().
+1 -1
View File
@@ -18,7 +18,7 @@ $WW,1$$FG,5$$TX+CX,"Credits"$$FG$
9) I included $LK,"PCIDevice Lst File",A="FI:::/Misc/PCIDevices.TXT",HTML="http://www.pcidatabase.com/reports.php?type=tab-delimeted"$. 9) I included $LK,"PCIDevice Lst File",A="FI:::/Misc/PCIDevices.TXT",HTML="http://www.pcidatabase.com/reports.php?type=tab-delimeted"$.
10) Thanks to whoever wrote this $FG,4$$TX,"CppHtml.CPP.Z",HTML="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"$$FG$. I'm a novice on web stuff and you helped me with html. See $LK,"ToHtml",A="FI:::/Adam/Opt/Utils/ToHtml.CPP"$. 10) Thanks to whoever wrote this $FG,4$$TX,"CppHtml.CPP.Z",HTML="http://web.archive.org/web/20100325153025/http://home.scarlet.be/zoetrope/cpphtml.htm"$$FG$. I'm a novice on web stuff and you helped me with html. See $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$.
11) I used $FG,4$$TX,"MagicISO",HTML="http://www.magiciso.com"$$FG$ to burn test CD's to help me understand the ISO9660 file system format. I mostly used the $FG,4$$TX,"ISO9660",HTML="http://users.telenet.be/it3.consultants.bvba/handouts/ISO9960.html"$$FG$ spec. 11) I used $FG,4$$TX,"MagicISO",HTML="http://www.magiciso.com"$$FG$ to burn test CD's to help me understand the ISO9660 file system format. I mostly used the $FG,4$$TX,"ISO9660",HTML="http://users.telenet.be/it3.consultants.bvba/handouts/ISO9960.html"$$FG$ spec.
+3 -3
View File
@@ -116,7 +116,7 @@ Examples: <CTRL-t> to see
8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Kernel/KEnd.CPP,Independent HeapCtrl Example"$ 8)$LK,"File anchor link -- <CTRL-t> to see anchor after you click",A="FA:::/Kernel/KEnd.CPP,Independent HeapCtrl Example"$
9)$LK,"Bible Link",A="BF:Acts,2:3"$ The chapter:verse actually just does a text search. 9)$LK,"Bible Link",A="BF:Acts,2:3"$ The chapter:verse actually just does a text search.
10) $LK,"Help Index Link",A="HI:Doc"$. 10) $LK,"Help Index Link",A="HI:Doc"$.
11) $LK,"Address Link",A="AD:0x11000"$. 11) $LK,"Address Link",A="AD:0x12000"$.
12) For in-memory document address links, see $LK,"SpriteEdText",A="MN:SpriteEdText"$(). 12) For in-memory document address links, see $LK,"SpriteEdText",A="MN:SpriteEdText"$().
@@ -176,7 +176,7 @@ $ID,2$Include a $FG,2$1$FG$ or $FG,2$0$FG$.
$FG,2$$$HL,1$$$FG$ will turn syntax highlighting on. $FG,2$$$HL,1$$$FG$ will turn syntax highlighting on.
$ID,-2$$TR,"HC html"$ $ID,-2$$TR,"HC html"$
$ID,2$The $LK,"ToHtml",A="MN:ToHtml"$() or $LK,"Doc2Html",A="MN:Doc2Html"$() routines will generate a html version of a document. You can cause html code to be injected with $FG,2$HC$FG$. Use the $FG,2$+HTML$FG$ flag to inject a html link. $ID,2$See $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$ to generate a html version of a document. You can cause html code to be injected with $FG,2$HC$FG$. Use the $FG,2$+HTML$FG$ flag to inject a html link.
$ID,-2$$TR,"ER Error"$ $ID,-2$$TR,"ER Error"$
$ID,2$When errors are detected in DolDoc cmds, an $FG,2$ER$FG$ entry is generated. $ID,2$When errors are detected in DolDoc cmds, an $FG,2$ER$FG$ entry is generated.
$ID,-2$ $ID,-2$
@@ -224,7 +224,7 @@ For indirection, the tag will be regenerated by substituting the value of a syst
For $FG,2$LS$FG$ widgets, see $LK,"::/Demo/DolDoc/Form.CPP"$. For $FG,2$LS$FG$ widgets, see $LK,"::/Demo/DolDoc/Form.CPP"$.
$ID,-2$$TR,"HTML=\"\""$ $ID,-2$$TR,"HTML=\"\""$
$ID,2$The $LK,"ToHtml",A="MN:ToHtml"$() or $LK,"Doc2Html",A="MN:Doc2Html"$() routines will generate a html version of a document. You can cause html link on an item with $FG,2$HTML=""$FG$. $ID,2$See $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$ to generate a html version of a document. You can cause html link on an item with $FG,2$HTML=""$FG$.
$ID,-2$$TR,"LE=<Exp> Left Expression"$ $ID,-2$$TR,"LE=<Exp> Left Expression"$
$ID,2$Left expression. $FG,2$CM$FG$ has this by default for X offset and you can leave-off the $FG,2$LE=$FG$, just putting the $FG,2$<Exp>$FG$. $ID,2$Left expression. $FG,2$CM$FG$ has this by default for X offset and you can leave-off the $FG,2$LE=$FG$, just putting the $FG,2$<Exp>$FG$.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -168,7 +168,7 @@ $ID,2$$FG,2$U0 Main()
} }
} }
$FG$$ID,-2$ $FG$$ID,-2$
* $FG,2$interrupt$FG$, $FG,2$haserrcode$FG$, $FG,2$public$FG$, $FG,2$argpop$FG$ or $FG,2$noargpop$FG$ are function flags. See $LK,"::/Demo/Lectures/PageTableEntries2.CPP"$. * $FG,2$interrupt$FG$, $FG,2$haserrcode$FG$, $FG,2$public$FG$, $FG,2$argpop$FG$ or $FG,2$noargpop$FG$ are function flags. See $LK,"::/Demo/Lectures/Mem/PageTableEntries2.CPP"$.
* A single quote can encompass multiple characters. $FG,2$'ABC'$FG$ is equ to $FG,2$0x434241$FG$. $LK,"PutChars",A="MN:PutChars"$() takes multiple characters. * A single quote can encompass multiple characters. $FG,2$'ABC'$FG$ is equ to $FG,2$0x434241$FG$. $LK,"PutChars",A="MN:PutChars"$() takes multiple characters.
@@ -237,7 +237,7 @@ $FG$$ID,-2$
* There is a function called $LK,"MSize",A="MN:MSize"$() which gives the size of an object alloced off the heap. For larger size allocations, the system rounds-up to a power of two, so $FG,2$MSize()$FG$ lets you know the real size and you can take full advantage of it. * There is a function called $LK,"MSize",A="MN:MSize"$() which gives the size of an object alloced off the heap. For larger size allocations, the system rounds-up to a power of two, so $FG,2$MSize()$FG$ lets you know the real size and you can take full advantage of it.
* You can $LK,"Free",A="MN:Free"$() a $FG,2$NULL$FG$ ptr. Useful variants of $LK,"MAlloc",A="MN:MAlloc"$() can be found $LK,"Here",A="MN:CAlloc"$. Each task has a heap and you can $FG,2$MAlloc$FG$ and $FG,2$Free$FG$ off of other task's heaps, or make an independent heap with $LK,"HeapCtrlBPInit",A="MN:HeapCtrlBPInit"$(). * You CAN $LK,"Free",A="MN:Free"$() a $FG,2$NULL$FG$ ptr. Useful variants of $LK,"MAlloc",A="MN:MAlloc"$() can be found $LK,"Here",A="MN:CAlloc"$. Each task has a heap and you can $FG,2$MAlloc$FG$ and $FG,2$Free$FG$ off-of other task's heaps, or make an independent heap with $LK,"HeapCtrlInit",A="MN:HeapCtrlInit"$(). See $LK,"HeapLog",A="MN:HeapLog"$() for an example.
* The stk does not grow because virtual mem is not used. I recommend allocating large local vars from the heap. You can change $LK,"MEM_DFT_STK",A="MN:MEM_DFT_STK"$ and recompile $FG,2$Kernel$FG$ or request more when doing a $LK,"Spawn",A="MN:Spawn"$(). You can use $LK,"CallStkGrow",A="MN:CallStkGrow"$(), but it's odd. See $LK,"::/Demo/StkGrow.CPP"$. * The stk does not grow because virtual mem is not used. I recommend allocating large local vars from the heap. You can change $LK,"MEM_DFT_STK",A="MN:MEM_DFT_STK"$ and recompile $FG,2$Kernel$FG$ or request more when doing a $LK,"Spawn",A="MN:Spawn"$(). You can use $LK,"CallStkGrow",A="MN:CallStkGrow"$(), but it's odd. See $LK,"::/Demo/StkGrow.CPP"$.
+3 -3
View File
@@ -4,7 +4,7 @@ Paging is practically not used. 64-bit mode requires paging, however, so it is
In TempleOS, the lowest 2 Gig of memory is called the $FG,2$code heap$FG$. TempleOS's compiler always uses 32-bit signed relative JMP & CALL instructions because 64-bit CALLs take two instructions. With signed +/- 32-bit values, code can only call a function within 2 Gig distance. Therefore, TempleOS keeps all code in the lowest 2 Gig memory addresses including what would normally be called "the kernel". Two Gig is plenty for code, don't worry. In TempleOS, the lowest 2 Gig of memory is called the $FG,2$code heap$FG$. TempleOS's compiler always uses 32-bit signed relative JMP & CALL instructions because 64-bit CALLs take two instructions. With signed +/- 32-bit values, code can only call a function within 2 Gig distance. Therefore, TempleOS keeps all code in the lowest 2 Gig memory addresses including what would normally be called "the kernel". Two Gig is plenty for code, don't worry.
You can create new, independent heaps by first allocating mem with $LK,"Mem2MegUncachedAlloc",A="MN:Mem2MegUncachedAlloc"$() or $LK,"Mem512Alloc",A="MN:Mem512Alloc"$(), then calling $LK,"HeapCtrlBPInit",A="MN:HeapCtrlBPInit"$() and, then, using $LK,"MAlloc",A="MN:MAlloc"$(). You can create new, independent heaps using $LK,"HeapCtrlInit",A="MN:HeapCtrlInit"$(). Then, use the $LK,"CHeapCtrl",A="MN:CHeapCtrl"$ as the 2nd arg to $LK,"MAlloc",A="MN:MAlloc"$(). See $LK,"HeapLog",A="MN:HeapLog"$() for an example.
Memory alloced by a task will be freed when the task is killed. Memory alloced by a task will be freed when the task is killed.
@@ -17,7 +17,7 @@ $FG,5$$TX+CX,"Single System-wide Mem Map"$
$FG,2$ 0x0000000000- 0x00$TX,"00006FFF",D="DD_PROTECTED_LOW"$$FG$ $FG,2$ 0x0000000000- 0x00$TX,"00006FFF",D="DD_PROTECTED_LOW"$$FG$
$ID,2$Pages marked not present so NULL ptr dereference causes a fault. $ID,2$Pages marked not present so NULL ptr dereference causes a fault.
$ID,-2$ $ID,-2$
$FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"00034E7F",D="DD_KERNEL_END"$$FG$ $FG,2$ 0x00$TX,"00007C00",D="DD_KERNEL"$- 0x00$TX,"0003460F",D="DD_KERNEL_END"$$FG$
$ID,2$Kernel module, placed here by the boot-loader, $LK,"BOOT_RAM_BASE",A="MN:BOOT_RAM_BASE"$. $ID,2$Kernel module, placed here by the boot-loader, $LK,"BOOT_RAM_BASE",A="MN:BOOT_RAM_BASE"$.
$ID,-2$ $ID,-2$
$FG,2$ 0x00$TX,"00096600",D="DD_BOOT_HIGH_LOC_DVD"$- 0x00$TX,"00096FFF",D="DD_BOOT_HIGH_LOC_DVD_END"$$FG$ $FG,2$ 0x00$TX,"00096600",D="DD_BOOT_HIGH_LOC_DVD"$- 0x00$TX,"00096FFF",D="DD_BOOT_HIGH_LOC_DVD_END"$$FG$
@@ -35,7 +35,7 @@ $ID,-2$
$FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"001845FF",D="DD_SYS_FIXED_AREA_END"$$FG$ $FG,2$ 0x00$TX,"00100000",D="DD_SYS_FIXED_AREA_BASE"$- 0x00$TX,"001845FF",D="DD_SYS_FIXED_AREA_END"$$FG$
$ID,2$$LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for page tables and misc. $TX,"128 Gig",D="DD_MEM_MAPPED_SPACE_GIG"$ of address space mapped. $ID,2$$LK,"CSysFixedArea",A="MN:CSysFixedArea"$ for page tables and misc. $TX,"128 Gig",D="DD_MEM_MAPPED_SPACE_GIG"$ of address space mapped.
$ID,-2$ $ID,-2$
$FG,2$ 0x00$TX,"00184600",D="DD_SYS_HEAP_BASE"$- 0x00$TX,"7FFFFFFF",D="DD_SYS_HEAP_LIMIT"$$FG$ $FG,2$ 0x00$TX,"00184600",D="DD_SYS_HEAP_BASE"$- 0x00$TX,"3FFE3DFF",D="DD_SYS_HEAP_LIMIT"$$FG$
$ID,2$Code Heap mem. $ID,2$Code Heap mem.
$ID,-2$ $ID,-2$
$FG,2$ - 0x007FFFFFFF$FG$ $FG,2$ - 0x007FFFFFFF$FG$
+1 -1
View File
@@ -1,5 +1,5 @@
$WW,1$$FG,5$$TX+CX,"Sprite BitMap Menu Help"$$FG$ $WW,1$$FG,5$$TX+CX,"Sprite BitMap Menu Help"$$FG$
Bitmaps have a background color. If you delete to the clipboard, what's left will be background colored. BitMaps have a background color. If you delete to the clipboard, what's left will be background colored.
While drawing, you can usually press $FG,2$'c'$FG$ to eye-dropper the color under the mouse. Press $FG,2$'t'$FG$ for transparent. While drawing, you can usually press $FG,2$'c'$FG$ to eye-dropper the color under the mouse. Press $FG,2$'t'$FG$ for transparent.
+3 -5
View File
@@ -1,9 +1,7 @@
$WW,1$$FG,5$$TX+CX,"Sprite Edit Menu Help"$$FG$ $WW,1$$FG,5$$TX+CX,"Sprite Edit Menu Help"$$FG$
Order of elements matters. They are executed in the order they appear in the side-bar. You can set the current element by clicking the element in the side-bar and making it RED. Order of elements matters. They are executed in the order they appear in the side-bar. You can select or unselect elements graphically, or with text in the sidebar. Then, cut, copy, paste, shift or transform them.
DELETE will delete the RED element in the side-bar. You can just delete elements directly in the side-bar as long as you click another element to update things. You can set the current insert point element by clicking the element in the side-bar and making it RED.
You can delete or select elements graphically. $FG,2$Insert Shift Suborigin$FG$ is an element which shifts subsequent elements. Perhaps, you inserted a sprite's elements from the clipboard and want to shift it around? This command is also useful if you call $LK,"SpriteInterpolate",A="MN:SpriteInterpolate"$() in programs.
You can insert an element which shifts around all subsequent other elements. Perhaps, you inserted a sprite's elements from the clip-board and want to chift it around. This command is also useful if you interpolate in programs.
+1 -1
View File
@@ -4,4 +4,4 @@ $WW,1$You can cut and paste elements in this side-bar to reorder, delete or dupl
You can click on an element to make it the insert point for new elements. You can click on an element to make it the insert point for new elements.
The RED element is the current element and it is the insert point for new elements. The RED element is the current insert point for new elements.
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -7,7 +7,7 @@ $ID,2$* Professionals doing hobby projects
* Teenagers doing projects * Teenagers doing projects
* Non-professional, older-persons projects * Non-professional, older-persons projects
$ID,-2$ $ID,-2$
Simplicity is a goal to $LK,"keep the line count down",A="FI:::/Doc/Strategy.TXT"$, so it's easy to tinker with. As it turns-out, simplicity makes it faster in some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and other, similar things which boost speed. It's only $TX,"80,940",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code including the kernel, the 64-bit compiler, the graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a $LK,"Hello World",A="FI:::/Doc/HelloWorld.TXT"$ application in one line of code and can put graphics on the screen with a three line program! Simplicity is a goal to $LK,"keep the line count down",A="FI:::/Doc/Strategy.TXT"$, so it's easy to tinker with. As it turns-out, simplicity makes it faster in some ways, too. It never switches privilege levels, never changes address maps, tends to load whole contiguous files and other, similar things which boost speed. It's only $TX,"80,590",D="DD_TEMPLEOS_LOC_OFFICIAL"$ lines of code including the kernel, the 64-bit compiler, the graphics library and all the tools. More importantly, it's designed to keep the user's line count down -- you can do a $LK,"Hello World",A="FI:::/Doc/HelloWorld.TXT"$ application in one line of code and can put graphics on the screen with a three line program!
It's a kayak, not a Titanic -- it will crash if you do something wrong. You quickly reboot, however. DOS and the 8-bit home computers of the 80's worked fine without memory protection and most computers in the world -- the embedded ones -- operate without protection. The resulting simplicity of no protections is why TempleOS has value. In facts, that's the point of TempleOS. See the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.TXT"$. It's a kayak, not a Titanic -- it will crash if you do something wrong. You quickly reboot, however. DOS and the 8-bit home computers of the 80's worked fine without memory protection and most computers in the world -- the embedded ones -- operate without protection. The resulting simplicity of no protections is why TempleOS has value. In facts, that's the point of TempleOS. See the $LK,"TempleOS Charter",A="FI:::/Doc/Charter.TXT"$.
@@ -39,7 +39,7 @@ Once I was no longer using standard C/C++ syntax, I decided to change everything
There are no object files in TempleOS and, normally, you don't make executable files either, but you can. That's known as $LK,"Ahead-of-Time",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ compilation. Instead, you $LK,"Just in Time",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ compile. There are no object files in TempleOS and, normally, you don't make executable files either, but you can. That's known as $LK,"Ahead-of-Time",A="FF:::/Doc/Glossary.TXT,AOT Compile Mode"$ compilation. Instead, you $LK,"Just in Time",A="FF:::/Doc/Glossary.TXT,JIT Compile Mode"$ compile.
Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See $LK,"Scheduler",A="FL:::/Kernel/Sched.CPP,1"$. Polling keeps it simple. It's might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of the tasks in the queue determines front-to-back window order. Tasks have no priority and are never removed from the queue. Instead, they often poll whatever they are waiting on and swap-out. (Swapping tasks takes half a microsecond and does not involve disk activity or memory maps.) See $LK,"Scheduler",A="FL:::/Kernel/Sched.CPP,1"$. Polling keeps it simple. It might be a problem if you had lots of tasks busy, which rarely happens on a home computer. The order of the tasks in the queue determines front-to-back window order.
The $FG,2$FAT32$FG$ filesystem is supported to makes exchanging files with a dual booted other operating system easy and there is the simple, 64-bit TempleOS $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ filesystem. The $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ has allocation bitmap for clusters and all files are stored contiguously. You can't grow files. The $FG,2$FAT32$FG$ filesystem is supported to makes exchanging files with a dual booted other operating system easy and there is the simple, 64-bit TempleOS $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ filesystem. The $LK,"RedSea",A="FI:::/Doc/RedSea.TXT"$ has allocation bitmap for clusters and all files are stored contiguously. You can't grow files.
+1 -1
View File
@@ -39,4 +39,4 @@ $FG,5$Escape$FG$ For macro's, send an $FG,2$<ESC>$FG$ char to exit before runnin
$FG,5$Refresh Data$FG$ updates $FG,2$$$DA...$$$FG$ entry continuously. $FG,5$Refresh Data$FG$ updates $FG,2$$$DA...$$$FG$ entry continuously.
$FG,5$Html Link$FG$ stores a link which will be embedded if you generate a html version of a document with $LK,"ToHtml",A="MN:ToHtml"$() or $LK,"Doc2Html",A="MN:Doc2Html"$(). $FG,5$Html Link$FG$ stores a link which will be embedded if you generate a html version of a document with $LK,"::/Demo/ToHtmlToTXTExample/ToHtml.CPP"$.
+2 -2
View File
@@ -179,13 +179,13 @@ Bool MyPutKey(I64 ch,I64 sc)
return TRUE; return TRUE;
case '9': case '9':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /---->"); KeyDescSet("Dol /Indent 5");
else else
"$$ID,5$$"; "$$ID,5$$";
return TRUE; return TRUE;
case '0': case '0':
if (sc&SCF_KEY_DESC) if (sc&SCF_KEY_DESC)
KeyDescSet("Dol /<----"); KeyDescSet("Dol /Unindent 5");
else else
"$$ID,-5$$"; "$$ID,-5$$";
return TRUE; return TRUE;
+2 -6
View File
@@ -91,14 +91,10 @@ I64 DirEntryCompareCluster(CDirEntry *e1,CDirEntry *e2)
U0 DirFilesSort(CDirEntry **_tempde,I64 key) U0 DirFilesSort(CDirEntry **_tempde,I64 key)
{ {
I64 i,cnt=0; I64 i,cnt;
CDirEntry *tempde=*_tempde,*tempde1,**sort_buf; CDirEntry *tempde=*_tempde,*tempde1,**sort_buf;
if (tempde) { if (tempde) {
tempde1=tempde; cnt=LinkedLstCnt(tempde);
while (tempde1) {
cnt++;
tempde1=tempde1->next;
}
if (cnt>1) { if (cnt>1) {
sort_buf=MAlloc(cnt*sizeof(U8 *)); sort_buf=MAlloc(cnt*sizeof(U8 *));
i=0; i=0;
-6
View File
@@ -1,7 +1,6 @@
U0 SysGlblsInit() U0 SysGlblsInit()
{ {
I64 i,j; I64 i,j;
U8 *m;
CRAXRBCRCXRDX ee; CRAXRBCRCXRDX ee;
CPUId(0x1,&ee); CPUId(0x1,&ee);
@@ -55,8 +54,6 @@ U0 SysGlblsInit()
//$AN,"Independent HeapCtrl Example",A="Independent HeapCtrl Example"$ //$AN,"Independent HeapCtrl Example",A="Independent HeapCtrl Example"$
i=1; //Rqst 1 blk, we might get more. i=1; //Rqst 1 blk, we might get more.
m=Mem2MegUncachedAlloc(&i,sys_code_bp);
dev.uncached_heap=HeapCtrlBPInit(m,i*0x200000/0x200);
QueInit(&dev.pci_root); QueInit(&dev.pci_root);
dev.mem64_ptr=MEM_MAPPED_SPACE; dev.mem64_ptr=MEM_MAPPED_SPACE;
@@ -187,10 +184,7 @@ U0 KernelMain()
KbdMouseVarsInit; KbdMouseVarsInit;
IPVarsInit; IPVarsInit;
KbdInit; KbdInit;
if (mp_cnt<2)
Spawn(&MouseDriverInstall); Spawn(&MouseDriverInstall);
else
Spawn(&MouseDriverInstall,,,1);
"Loading Compiler\n"; "Loading Compiler\n";
Cd("/Compiler"); Cd("/Compiler");
+4 -1
View File
@@ -46,7 +46,10 @@ IRQ_TIMER:: //I_TIMER
MOV U32 [RAX],0 MOV U32 [RAX],0
JMP @@25 JMP @@25
@@20: CALL &IntCore0TimerHandler //Only Core 0 calls this. @@20: CALL &IntCore0TimerHandler //Only Core 0 calls this.
@@25: JMP I32 RESTORE_RSI_TASK @@25: XOR RAX,RAX
CMP RSI,U64 GS:CCPU.idle_task[RAX]
JE I32 RESTORE_SETH_TASK_IF_READY
JMP I32 RESTORE_RSI_TASK
//************************************ //************************************
INT_FAULT:: INT_FAULT::
PUSH RBX PUSH RBX
+4 -4
View File
@@ -207,16 +207,16 @@ SYS_DATA_BP:: DU64 0;
SYS_PROGRESSES:: SYS_PROGRESSES::
SYS_PROGRESS1:: DU64 0; SYS_PROGRESS1:: DU64 0;
SYS_PROGRESS1_MAX:: DU64 0; SYS_PROGRESS1_MAX:: DU64 0;
SYS_PROGRESS1_DESC:: DU8 PROGRESS_DESC_LEN+1 DUP(0); SYS_PROGRESS1_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
SYS_PROGRESS2:: DU64 0; SYS_PROGRESS2:: DU64 0;
SYS_PROGRESS2_MAX:: DU64 0; SYS_PROGRESS2_MAX:: DU64 0;
SYS_PROGRESS2_DESC:: DU8 PROGRESS_DESC_LEN+1 DUP(0); SYS_PROGRESS2_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
SYS_PROGRESS3:: DU64 0; SYS_PROGRESS3:: DU64 0;
SYS_PROGRESS3_MAX:: DU64 0; SYS_PROGRESS3_MAX:: DU64 0;
SYS_PROGRESS3_DESC:: DU8 PROGRESS_DESC_LEN+1 DUP(0); SYS_PROGRESS3_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
SYS_PROGRESS4:: DU64 0; SYS_PROGRESS4:: DU64 0;
SYS_PROGRESS4_MAX:: DU64 0; SYS_PROGRESS4_MAX:: DU64 0;
SYS_PROGRESS4_DESC:: DU8 PROGRESS_DESC_LEN+1 DUP(0); SYS_PROGRESS4_DESC:: DU8 PROGRESS_DESC_LEN DUP(0);
#assert $$-SYS_PROGRESSES==sizeof(CProgress)*4 #assert $$-SYS_PROGRESSES==sizeof(CProgress)*4
SYS_FOCUS_TASK:: DU64 0; SYS_FOCUS_TASK:: DU64 0;
+55 -48
View File
@@ -152,8 +152,11 @@ I64 TaskInit(CTask *task,I64 stk_size)
CTaskStk *temps; CTaskStk *temps;
QueInit(&task->code_heap->next_mem_blk); QueInit(&task->code_heap->next_mem_blk);
if (task->code_heap!=task->data_heap) task->code_heap->last_mergable=NULL;
if (task->code_heap!=task->data_heap) {
QueInit(&task->data_heap->next_mem_blk); QueInit(&task->data_heap->next_mem_blk);
task->data_heap->last_mergable=NULL;
}
task->addr=task->next_task=task->last_task= task->addr=task->next_task=task->last_task=
task->next_input_filter_task=task->last_input_filter_task= task->next_input_filter_task=task->last_input_filter_task=
@@ -233,7 +236,7 @@ CTask *Spawn(U0 (*fp_start_addr)(U8 *data),U8 *data=NULL,U8 *task_name=NULL,
task->rsp(U8 *)-=8; task->rsp(U8 *)-=8;
*task->rsp=&Exit; *task->rsp=&Exit;
task->hash_table->next=parent->hash_table; task->hash_table->next=parent->hash_table;
MemCpy(task->task_name,task_name,TASK_NAME_LEN+1); MemCpy(task->task_name,task_name,TASK_NAME_LEN);
StrCpy(task->task_title,task->task_name); StrCpy(task->task_title,task->task_name);
task->title_src=TTS_TASK_NAME; task->title_src=TTS_TASK_NAME;
PUSHFD PUSHFD
@@ -275,7 +278,7 @@ I64 ExeCmdLine(CCmpCtrl *cc)
(cc->token!='}' || !(cc->flags & CCF_EXE_BLK)) ) { (cc->token!='}' || !(cc->flags & CCF_EXE_BLK)) ) {
if (Fs->title_src==TTS_CUR_LEX) { if (Fs->title_src==TTS_CUR_LEX) {
ptr2=&Fs->task_title; ptr2=&Fs->task_title;
ptr3=ptr2+TASK_TITLE_LEN; ptr3=ptr2+STR_LEN-1;
if (cc->lex_include_stk->flags & LFSF_DOC) { if (cc->lex_include_stk->flags & LFSF_DOC) {
doc_e=cc->lex_include_stk->cur_entry; doc_e=cc->lex_include_stk->cur_entry;
doc=cc->lex_include_stk->doc; doc=cc->lex_include_stk->doc;
@@ -296,7 +299,7 @@ I64 ExeCmdLine(CCmpCtrl *cc)
if (ptr2<ptr3) *ptr2=0; if (ptr2<ptr3) *ptr2=0;
} else } else
if ((ptr=cc->lex_include_stk->line_start) && *ptr) if ((ptr=cc->lex_include_stk->line_start) && *ptr)
MemCpy(ptr2,ptr,TASK_TITLE_LEN); MemCpy(ptr2,ptr,STR_LEN-1);
} }
cc->flags&=~CCF_HAS_MISC_DATA; cc->flags&=~CCF_HAS_MISC_DATA;
machine_code=LexStmt2Bin(cc,&type); machine_code=LexStmt2Bin(cc,&type);
@@ -328,6 +331,22 @@ I64 ExeCmdLine(CCmpCtrl *cc)
return result; return result;
} }
U0 SrvTaskCont()
{//Act as server task in a loop handling commands.
I64 old_flags=GetRFlags;
FlushMsgs;
while (TRUE) {
CLI
if (SrvCmdsHandler(old_flags) && Fs->title_src==TTS_TASK_NAME)
MemCpy(Fs->task_title,Fs->task_name,TASK_NAME_LEN);
FlushMsgs;
LBts(&Fs->task_flags,TASKf_IDLE);
LBts(&Fs->task_flags,TASKf_AWAITING_MSG);
Yield;
SetRFlags(old_flags);
}
}
U0 UserTaskCont() U0 UserTaskCont()
{//Terminal key-input-execute loop. {//Terminal key-input-execute loop.
CCmpCtrl *cc; CCmpCtrl *cc;
@@ -350,6 +369,15 @@ U0 UserTaskCont()
} while (cont); } while (cont);
} }
U0 SrvCmdLine(I64 dummy=0)
{
nounusedwarn dummy;
Fs->win_inhibit=WIG_USER_TASK_DFT;
if (HashFind("SrvStartUp",adam_task->hash_table,HTT_FUN))
CallExtStr("SrvStartUp");
SrvTaskCont;
}
U0 UserCmdLine(I64 dummy=0) U0 UserCmdLine(I64 dummy=0)
{//A user task ends-up calling this. {//A user task ends-up calling this.
nounusedwarn dummy; nounusedwarn dummy;
@@ -374,32 +402,7 @@ CTask *User(U8 *fmt=NULL,...)
return task; return task;
} }
U0 SrvTaskCont() U0 TaskDel(CTask *task)
{//Act as server task in a loop handling commands.
I64 old_flags=GetRFlags;
FlushMsgs;
while (TRUE) {
CLI
if (SrvCmdsHandler(old_flags) && Fs->title_src==TTS_TASK_NAME)
MemCpy(Fs->task_title,Fs->task_name,TASK_NAME_LEN+1);
FlushMsgs;
LBts(&Fs->task_flags,TASKf_IDLE);
LBts(&Fs->task_flags,TASKf_AWAITING_MSG);
Yield;
SetRFlags(old_flags);
}
}
U0 SrvCmdLine(I64 dummy=0)
{
nounusedwarn dummy;
Fs->win_inhibit=WIG_USER_TASK_DFT;
if (HashFind("SrvStartUp",adam_task->hash_table,HTT_FUN))
CallExtStr("SrvStartUp");
SrvTaskCont;
}
U0 TaskFinishOff(CTask *task)
{//We delay freeing in case lingering ptr to reincarnated. {//We delay freeing in case lingering ptr to reincarnated.
HeapCtrlDel(task->code_heap); HeapCtrlDel(task->code_heap);
if (task->data_heap!=task->code_heap) if (task->data_heap!=task->code_heap)
@@ -481,26 +484,30 @@ I64 TaskEnd()
LBtr(&task->srv_ctrl.flags,SVCRf_LOCKED); LBtr(&task->srv_ctrl.flags,SVCRf_LOCKED);
LBtr(&task->task_flags,TASKf_TASK_LOCK); LBtr(&task->task_flags,TASKf_TASK_LOCK);
if (sys_winmgr_task) { task->wake_jiffy=cnts.jiffies+DYING_JIFFIES;
task->next_task=Gs->dying_task_lst; while (LBts(&Gs->cpu_flags,CPUf_DYING_TASK_QUE))
Gs->dying_task_lst=task; PAUSE
} else QueIns(task,Gs->last_dying);
TaskFinishOff(task); //dangerous (stk in use) LBtr(&Gs->cpu_flags,CPUf_DYING_TASK_QUE);
//Never happens--winmgr exists except during boot and no tasks die during boot
//currently, though this has been different and might be different in
//future. Would have to be multicore task getting this task's memory
//because IRQs are off, so no tasks on this core run.
return tempt; return tempt;
} }
U0 TaskFinishOffDying() U0 TaskKillDying()
{//Called by Seth tasks. Delay freeing in case lingering ptr to reincarnated. {//Delay freeing to prevent asking for trouble with quick reincarnations.
CTask *task1,*task2; //What if the user is doing this: $LK,"DoTreeCheckers",A="FF:::/Misc/OSTestSuite.CPP,DoTreeCheckers"$.
if (task1=XchgI64(&Gs->dying_task_lst,NULL)) { CTaskDying *task,*task1;
do { if (Gs->kill_jiffy<cnts.jiffies) {//Avoid doing as many lock operations.
task2=task1->next_task; while (LBts(&Gs->cpu_flags,CPUf_DYING_TASK_QUE))
TaskFinishOff(task1); PAUSE
task1=task2; task=Gs->next_dying;
} while (task1); while (task!=&Gs->next_dying && task->wake_jiffy<cnts.jiffies) {
task1=task->next;
QueRem(task);
TaskDel(task);
task=task1;
}
LBtr(&Gs->cpu_flags,CPUf_DYING_TASK_QUE);
Gs->kill_jiffy=cnts.jiffies+DYING_JIFFIES;
} }
} }
Loaded 100 of 115 files, more files were not shown because too many files have changed in this diff. Show more