/* ** pg_to_html - By Mo McKinlay (ekky@ekto.org) ** ** Converts a string containing colour codes to HTML. Doesn't work with ** Dynatext, deal with it. (If you think you can, why not add support for ** dynatext? I'll be happy to credit anybody who comes up with any useful ** revisions to this). ** */ #define HTML_NORMAL_FG "#FFFFFF" int pg_to_html(char *dest, char *src) { int fdep=1, udep=0, idep=0, ccol='N', c=0; char *t; if(!dest) return -1; if(!src) { *dest=0; return -1; }; dest+=sprintf(dest, "", HTML_NORMAL_FG); while(*src) { if(c) { c=0; if(*src=='^') { *dest++='^'; } else { if(udep) dest+=sprintf(dest, ""); if(idep) dest+=sprintf(dest, ""); if(fdep) dest+=sprintf(dest, ""); switch(*src) { case 'N': case 'n': ccol='N'; idep=0; udep=0; fdep=1; break; case 'H': case 'h': ccol='H'; fdep=1; break; case 'R': case 'r': case 'A': case 'a': case 'C': case 'c': case 'Y': case 'y': case 'P': case 'p': case 'G': case 'g': ccol=*src; fdep=1; break; case 'X': case 'x': ccol='N'; fdep=1; break; case 'S': idep=1; break; case 's': idep=0; break; case 'U': udep=1; break; case 'u': udep=0; break; }; dest+=sprintf(dest, "", t); if(udep) dest+=sprintf(dest, ""); if(idep) dest+=sprintf(dest, ""); }; } else { if(*src=='^') { c=1; } else if(*src=='\n') { dest+=sprintf(dest, "
"); } else { *dest++=*src; }; }; src++; }; if(udep) dest+=sprintf(dest, "
"); if(idep) dest+=sprintf(dest, ""); if(fdep) dest+=sprintf(dest, "
"); *dest=0; return 0; }