#help_index "DolDoc/Conversion" U0 TXTPutS(CDoc *doc,U8 *st,I64 *_col) { U8 *ch,*ptr; while (ch=*st++) { switch (ch) { case '\t': do { DocPutKey(doc,CH_SPACE,0); *_col=*_col+1; } while (*_col&7); break; start: case 'pi': ptr="pi"; break; case 'theta': ptr="theta"; break; case 'phi': ptr="phi"; break; case 'omega': ptr="omega"; break; case 'inf': ptr="inf"; break; case 'u': ptr="u"; break; case CH_SHIFT_SPACE: ptr=" "; break; end: DocPrint(doc,ptr); *_col=*_col+StrLen(ptr); break; default: if (CH_SPACE<=ch<0x7F || ch=='\n') DocPutKey(doc,ch,0); else DocPrint(doc,"."); *_col=*_col+1; } } } public CDoc *Doc2TXT(CDoc *doc_in) {//Cvt DolDoc doc to plain text. CDocEntry *doc_e,*doc_e2; I64 y,col; CDoc *doc_out=DocNew; Bool unlock_doc_in=DocLock(doc_in),no_bwd,line_has_html_code=FALSE; DocRecalc(doc_in); doc_out->flags|=DOCF_PLAIN_TEXT|DOCF_NO_CURSOR; doc_e=doc_in->head.next; col=doc_e->x; y=doc_e->y; while (doc_e!=doc_in) { if (!(doc_e->de_flags&DOCEF_SKIP)) { while (y<doc_e->y) { TXTPutS(doc_out,"\n",&col); y++; col=0; line_has_html_code=FALSE; } if (doc_e->type_u8==DOCT_HTML_CODE) line_has_html_code=TRUE; 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 && !(doc_e->type_u8==DOCT_NEW_LINE && line_has_html_code)) while (col<doc_e->x) TXTPutS(doc_out," ",&col); switch (doc_e->type_u8) { case DOCT_TEXT: TXTPutS(doc_out,doc_e->tag,&col); break; case DOCT_TAB: TXTPutS(doc_out,"\t",&col); break; case DOCT_HTML_CODE: break; case DOCT_SPRITE: break; default: if (doc_e->de_flags&DOCEF_TAG) TXTPutS(doc_out,doc_e->tag,&col); } } doc_e=doc_e->next; } while (y<doc_e->y) { TXTPutS(doc_out,"\n",&col); y++; col=0; } doc_out->cur_entry=&doc_out->head; DocRecalc(doc_out); if (unlock_doc_in) DocUnlock(doc_in); return doc_out; } #help_index "Cmd Line (Typically);DolDoc/Conversion;DolDoc/Cmd Line (Typically)" public U0 ToTXT(U8 *_in_name,U8 *_out_name=NULL,I64 width=70) {//Convert DolDocfile to plain text. U8 *in_name,*out_name; CDoc *doc_in,*doc_out; SettingsPush; //See SettingsPush WinHorz(0,width-1); //Sets doc width for word wrap. in_name=ExtDft(_in_name,"DD.Z"); if (_out_name) out_name=ExtDft(_out_name,"TXT"); else out_name=ExtChg(_in_name,"TXT"); doc_in=DocRead(in_name); doc_out=Doc2TXT(doc_in); StrCpy(&doc_out->filename.name,out_name); SettingsPop; DocWrite(doc_out); DocDel(doc_in); DocDel(doc_out); Free(in_name); Free(out_name); }