]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/hb/wl_text.c
not done making demohp.c. i gotta get the files to the other lappy4
[16.git] / src / lib / hb / wl_text.c
diff --git a/src/lib/hb/wl_text.c b/src/lib/hb/wl_text.c
deleted file mode 100755 (executable)
index 1df86b8..0000000
+++ /dev/null
@@ -1,859 +0,0 @@
-// WL_TEXT.C\r
-\r
-#include "WL_DEF.H"\r
-#pragma        hdrstop\r
-\r
-/*\r
-=============================================================================\r
-\r
-TEXT FORMATTING COMMANDS\r
-------------------------\r
-^C<hex digit>                          Change text color\r
-^E[enter]                              End of layout (all pages)\r
-^G<y>,<x>,<pic>[enter] Draw a graphic and push margins\r
-^P[enter]                              start new page, must be the first chars in a layout\r
-^L<x>,<y>[ENTER]               Locate to a specific spot, x in pixels, y in lines\r
-\r
-=============================================================================\r
-*/\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                LOCAL CONSTANTS\r
-\r
-=============================================================================\r
-*/\r
-\r
-#define BACKCOLOR              0x11\r
-\r
-\r
-#define WORDLIMIT              80\r
-#define FONTHEIGHT             10\r
-#define        TOPMARGIN               16\r
-#define BOTTOMMARGIN   32\r
-#define LEFTMARGIN             16\r
-#define RIGHTMARGIN            16\r
-#define PICMARGIN              8\r
-#define TEXTROWS               ((200-TOPMARGIN-BOTTOMMARGIN)/FONTHEIGHT)\r
-#define        SPACEWIDTH              7\r
-#define SCREENPIXWIDTH 320\r
-#define SCREENMID              (SCREENPIXWIDTH/2)\r
-\r
-/*\r
-=============================================================================\r
-\r
-                                                LOCAL VARIABLES\r
-\r
-=============================================================================\r
-*/\r
-\r
-int                    pagenum,numpages;\r
-\r
-unsigned       leftmargin[TEXTROWS],rightmargin[TEXTROWS];\r
-char           far *text;\r
-unsigned       rowon;\r
-\r
-int                    picx,picy,picnum,picdelay;\r
-boolean                layoutdone;\r
-\r
-//===========================================================================\r
-\r
-#ifndef JAPAN\r
-/*\r
-=====================\r
-=\r
-= RipToEOL\r
-=\r
-=====================\r
-*/\r
-\r
-void RipToEOL (void)\r
-{\r
-       while (*text++ != '\n')         // scan to end of line\r
-       ;\r
-}\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= ParseNumber\r
-=\r
-=====================\r
-*/\r
-\r
-int    ParseNumber (void)\r
-{\r
-       char    ch;\r
-       char    num[80],*numptr;\r
-\r
-//\r
-// scan until a number is found\r
-//\r
-       ch = *text;\r
-       while (ch < '0' || ch >'9')\r
-               ch = *++text;\r
-\r
-//\r
-// copy the number out\r
-//\r
-       numptr = num;\r
-       do\r
-       {\r
-               *numptr++ = ch;\r
-               ch = *++text;\r
-       } while (ch >= '0' && ch <= '9');\r
-       *numptr = 0;\r
-\r
-       return atoi (num);\r
-}\r
-\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= ParsePicCommand\r
-=\r
-= Call with text pointing just after a ^P\r
-= Upon exit text points to the start of next line\r
-=\r
-=====================\r
-*/\r
-\r
-void   ParsePicCommand (void)\r
-{\r
-       picy=ParseNumber();\r
-       picx=ParseNumber();\r
-       picnum=ParseNumber();\r
-       RipToEOL ();\r
-}\r
-\r
-\r
-void   ParseTimedCommand (void)\r
-{\r
-       picy=ParseNumber();\r
-       picx=ParseNumber();\r
-       picnum=ParseNumber();\r
-       picdelay=ParseNumber();\r
-       RipToEOL ();\r
-}\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= TimedPicCommand\r
-=\r
-= Call with text pointing just after a ^P\r
-= Upon exit text points to the start of next line\r
-=\r
-=====================\r
-*/\r
-\r
-void   TimedPicCommand (void)\r
-{\r
-       ParseTimedCommand ();\r
-\r
-//\r
-// update the screen, and wait for time delay\r
-//\r
-       VW_UpdateScreen ();\r
-\r
-//\r
-// wait for time\r
-//\r
-       TimeCount = 0;\r
-       while (TimeCount < picdelay)\r
-       ;\r
-\r
-//\r
-// draw pic\r
-//\r
-       VWB_DrawPic (picx&~7,picy,picnum);\r
-}\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= HandleCommand\r
-=\r
-=====================\r
-*/\r
-\r
-void HandleCommand (void)\r
-{\r
-       int     i,margin,top,bottom;\r
-       int     picwidth,picheight,picmid;\r
-\r
-       switch (toupper(*++text))\r
-       {\r
-       case 'B':\r
-               picy=ParseNumber();\r
-               picx=ParseNumber();\r
-               picwidth=ParseNumber();\r
-               picheight=ParseNumber();\r
-               VWB_Bar(picx,picy,picwidth,picheight,BACKCOLOR);\r
-               RipToEOL();\r
-               break;\r
-       case ';':               // comment\r
-               RipToEOL();\r
-               break;\r
-       case 'P':               // ^P is start of next page, ^E is end of file\r
-       case 'E':\r
-               layoutdone = true;\r
-               text--;         // back up to the '^'\r
-               break;\r
-\r
-       case 'C':               // ^c<hex digit> changes text color\r
-               i = toupper(*++text);\r
-               if (i>='0' && i<='9')\r
-                       fontcolor = i-'0';\r
-               else if (i>='A' && i<='F')\r
-                       fontcolor = i-'A'+10;\r
-\r
-               fontcolor *= 16;\r
-               i = toupper(*++text);\r
-               if (i>='0' && i<='9')\r
-                       fontcolor += i-'0';\r
-               else if (i>='A' && i<='F')\r
-                       fontcolor += i-'A'+10;\r
-               text++;\r
-               break;\r
-\r
-       case '>':\r
-               px = 160;\r
-               text++;\r
-               break;\r
-\r
-       case 'L':\r
-               py=ParseNumber();\r
-               rowon = (py-TOPMARGIN)/FONTHEIGHT;\r
-               py = TOPMARGIN+rowon*FONTHEIGHT;\r
-               px=ParseNumber();\r
-               while (*text++ != '\n')         // scan to end of line\r
-               ;\r
-               break;\r
-\r
-       case 'T':               // ^Tyyy,xxx,ppp,ttt waits ttt tics, then draws pic\r
-               TimedPicCommand ();\r
-               break;\r
-\r
-       case 'G':               // ^Gyyy,xxx,ppp draws graphic\r
-               ParsePicCommand ();\r
-               VWB_DrawPic (picx&~7,picy,picnum);\r
-               picwidth = pictable[picnum-STARTPICS].width;\r
-               picheight = pictable[picnum-STARTPICS].height;\r
-               //\r
-               // adjust margins\r
-               //\r
-               picmid = picx + picwidth/2;\r
-               if (picmid > SCREENMID)\r
-                       margin = picx-PICMARGIN;                        // new right margin\r
-               else\r
-                       margin = picx+picwidth+PICMARGIN;       // new left margin\r
-\r
-               top = (picy-TOPMARGIN)/FONTHEIGHT;\r
-               if (top<0)\r
-                       top = 0;\r
-               bottom = (picy+picheight-TOPMARGIN)/FONTHEIGHT;\r
-               if (bottom>=TEXTROWS)\r
-                       bottom = TEXTROWS-1;\r
-\r
-               for (i=top;i<=bottom;i++)\r
-                       if (picmid > SCREENMID)\r
-                               rightmargin[i] = margin;\r
-                       else\r
-                               leftmargin[i] = margin;\r
-\r
-               //\r
-               // adjust this line if needed\r
-               //\r
-               if (px < leftmargin[rowon])\r
-                       px = leftmargin[rowon];\r
-               break;\r
-       }\r
-}\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= NewLine\r
-=\r
-=====================\r
-*/\r
-\r
-void NewLine (void)\r
-{\r
-       char    ch;\r
-\r
-       if (++rowon == TEXTROWS)\r
-       {\r
-       //\r
-       // overflowed the page, so skip until next page break\r
-       //\r
-               layoutdone = true;\r
-               do\r
-               {\r
-                       if (*text == '^')\r
-                       {\r
-                               ch = toupper(*(text+1));\r
-                               if (ch == 'E' || ch == 'P')\r
-                               {\r
-                                       layoutdone = true;\r
-                                       return;\r
-                               }\r
-                       }\r
-                       text++;\r
-\r
-               } while (1);\r
-\r
-       }\r
-       px = leftmargin[rowon];\r
-       py+= FONTHEIGHT;\r
-}\r
-\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= HandleCtrls\r
-=\r
-=====================\r
-*/\r
-\r
-void HandleCtrls (void)\r
-{\r
-       char    ch;\r
-\r
-       ch = *text++;                   // get the character and advance\r
-\r
-       if (ch == '\n')\r
-       {\r
-               NewLine ();\r
-               return;\r
-       }\r
-\r
-}\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= HandleWord\r
-=\r
-=====================\r
-*/\r
-\r
-void HandleWord (void)\r
-{\r
-       char            word[WORDLIMIT];\r
-       int                     i,wordindex;\r
-       unsigned        wwidth,wheight,newpos;\r
-\r
-\r
-       //\r
-       // copy the next word into [word]\r
-       //\r
-       word[0] = *text++;\r
-       wordindex = 1;\r
-       while (*text>32)\r
-       {\r
-               word[wordindex] = *text++;\r
-               if (++wordindex == WORDLIMIT)\r
-                       Quit ("PageLayout: Word limit exceeded");\r
-       }\r
-       word[wordindex] = 0;            // stick a null at end for C\r
-\r
-       //\r
-       // see if it fits on this line\r
-       //\r
-       VW_MeasurePropString (word,&wwidth,&wheight);\r
-\r
-       while (px+wwidth > rightmargin[rowon])\r
-       {\r
-               NewLine ();\r
-               if (layoutdone)\r
-                       return;         // overflowed page\r
-       }\r
-\r
-       //\r
-       // print it\r
-       //\r
-       newpos = px+wwidth;\r
-       VWB_DrawPropString (word);\r
-       px = newpos;\r
-\r
-       //\r
-       // suck up any extra spaces\r
-       //\r
-       while (*text == ' ')\r
-       {\r
-               px += SPACEWIDTH;\r
-               text++;\r
-       }\r
-}\r
-\r
-/*\r
-=====================\r
-=\r
-= PageLayout\r
-=\r
-= Clears the screen, draws the pics on the page, and word wraps the text.\r
-= Returns a pointer to the terminating command\r
-=\r
-=====================\r
-*/\r
-\r
-void PageLayout (boolean shownumber)\r
-{\r
-       int             i,oldfontcolor;\r
-       char    ch;\r
-\r
-       oldfontcolor = fontcolor;\r
-\r
-       fontcolor = 0;\r
-\r
-//\r
-// clear the screen\r
-//\r
-       VWB_Bar (0,0,320,200,BACKCOLOR);\r
-       VWB_DrawPic (0,0,H_TOPWINDOWPIC);\r
-       VWB_DrawPic (0,8,H_LEFTWINDOWPIC);\r
-       VWB_DrawPic (312,8,H_RIGHTWINDOWPIC);\r
-       VWB_DrawPic (8,176,H_BOTTOMINFOPIC);\r
-\r
-\r
-       for (i=0;i<TEXTROWS;i++)\r
-       {\r
-               leftmargin[i] = LEFTMARGIN;\r
-               rightmargin[i] = SCREENPIXWIDTH-RIGHTMARGIN;\r
-       }\r
-\r
-       px = LEFTMARGIN;\r
-       py = TOPMARGIN;\r
-       rowon = 0;\r
-       layoutdone = false;\r
-\r
-//\r
-// make sure we are starting layout text (^P first command)\r
-//\r
-       while (*text <= 32)\r
-               text++;\r
-\r
-       if (*text != '^' || toupper(*++text) != 'P')\r
-               Quit ("PageLayout: Text not headed with ^P");\r
-\r
-       while (*text++ != '\n')\r
-       ;\r
-\r
-\r
-//\r
-// process text stream\r
-//\r
-       do\r
-       {\r
-               ch = *text;\r
-\r
-               if (ch == '^')\r
-                       HandleCommand ();\r
-               else\r
-               if (ch == 9)\r
-               {\r
-                px = (px+8)&0xf8;\r
-                text++;\r
-               }\r
-               else if (ch <= 32)\r
-                       HandleCtrls ();\r
-               else\r
-                       HandleWord ();\r
-\r
-       } while (!layoutdone);\r
-\r
-       pagenum++;\r
-\r
-       if (shownumber)\r
-       {\r
-               #ifdef SPANISH\r
-               strcpy (str,"Hoja ");\r
-               itoa (pagenum,str2,10);\r
-               strcat (str,str2);\r
-               strcat (str," de ");\r
-               py = 183;\r
-               px = 208;\r
-               #else\r
-               strcpy (str,"pg ");\r
-               itoa (pagenum,str2,10);\r
-               strcat (str,str2);\r
-               strcat (str," of ");\r
-               py = 183;\r
-               px = 213;\r
-               #endif\r
-               itoa (numpages,str2,10);\r
-               strcat (str,str2);\r
-               fontcolor = 0x4f;                          //12^BACKCOLOR;\r
-\r
-               VWB_DrawPropString (str);\r
-       }\r
-\r
-       fontcolor = oldfontcolor;\r
-}\r
-\r
-//===========================================================================\r
-\r
-/*\r
-=====================\r
-=\r
-= BackPage\r
-=\r
-= Scans for a previous ^P\r
-=\r
-=====================\r
-*/\r
-\r
-void BackPage (void)\r
-{\r
-       pagenum--;\r
-       do\r
-       {\r
-               text--;\r
-               if (*text == '^' && toupper(*(text+1)) == 'P')\r
-                       return;\r
-       } while (1);\r
-}\r
-\r
-\r
-//===========================================================================\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= CacheLayoutGraphics\r
-=\r
-= Scans an entire layout file (until a ^E) marking all graphics used, and\r
-= counting pages, then caches the graphics in\r
-=\r
-=====================\r
-*/\r
-void CacheLayoutGraphics (void)\r
-{\r
-       char    far *bombpoint, far *textstart;\r
-       char    ch;\r
-\r
-       textstart = text;\r
-       bombpoint = text+30000;\r
-       numpages = pagenum = 0;\r
-\r
-       do\r
-       {\r
-               if (*text == '^')\r
-               {\r
-                       ch = toupper(*++text);\r
-                       if (ch == 'P')          // start of a page\r
-                               numpages++;\r
-                       if (ch == 'E')          // end of file, so load graphics and return\r
-                       {\r
-                               CA_MarkGrChunk(H_TOPWINDOWPIC);\r
-                               CA_MarkGrChunk(H_LEFTWINDOWPIC);\r
-                               CA_MarkGrChunk(H_RIGHTWINDOWPIC);\r
-                               CA_MarkGrChunk(H_BOTTOMINFOPIC);\r
-                               CA_CacheMarks ();\r
-                               text = textstart;\r
-                               return;\r
-                       }\r
-                       if (ch == 'G')          // draw graphic command, so mark graphics\r
-                       {\r
-                               ParsePicCommand ();\r
-                               CA_MarkGrChunk (picnum);\r
-                       }\r
-                       if (ch == 'T')          // timed draw graphic command, so mark graphics\r
-                       {\r
-                               ParseTimedCommand ();\r
-                               CA_MarkGrChunk (picnum);\r
-                       }\r
-               }\r
-               else\r
-                       text++;\r
-\r
-       } while (text<bombpoint);\r
-\r
-       Quit ("CacheLayoutGraphics: No ^E to terminate file!");\r
-}\r
-#endif\r
-\r
-\r
-/*\r
-=====================\r
-=\r
-= ShowArticle\r
-=\r
-=====================\r
-*/\r
-\r
-#ifdef JAPAN\r
-void ShowArticle (int which)\r
-#else\r
-void ShowArticle (char far *article)\r
-#endif\r
-{\r
-       #ifdef JAPAN\r
-       int             snames[10] = {  H_HELP1PIC,\r
-                                                       H_HELP2PIC,\r
-                                                       H_HELP3PIC,\r
-                                                       H_HELP4PIC,\r
-                                                       H_HELP5PIC,\r
-                                                       H_HELP6PIC,\r
-                                                       H_HELP7PIC,\r
-                                                       H_HELP8PIC,\r
-                                                       H_HELP9PIC,\r
-                                                       H_HELP10PIC};\r
-       int             enames[14] = {\r
-                                                       0,0,\r
-                                                       #ifndef JAPDEMO\r
-                                                       C_ENDGAME1APIC,\r
-                                                       C_ENDGAME1BPIC,\r
-                                                       C_ENDGAME2APIC,\r
-                                                       C_ENDGAME2BPIC,\r
-                                                       C_ENDGAME3APIC,\r
-                                                       C_ENDGAME3BPIC,\r
-                                                       C_ENDGAME4APIC,\r
-                                                       C_ENDGAME4BPIC,\r
-                                                       C_ENDGAME5APIC,\r
-                                                       C_ENDGAME5BPIC,\r
-                                                       C_ENDGAME6APIC,\r
-                                                       C_ENDGAME6BPIC\r
-                                                       #endif\r
-                                                       };\r
-       #endif\r
-       unsigned        oldfontnumber;\r
-       unsigned        temp;\r
-       boolean         newpage,firstpage;\r
-\r
-       #ifdef JAPAN\r
-       pagenum = 1;\r
-       if (!which)\r
-               numpages = 10;\r
-       else\r
-               numpages = 2;\r
-\r
-       #else\r
-\r
-       text = article;\r
-       oldfontnumber = fontnumber;\r
-       fontnumber = 0;\r
-       CA_MarkGrChunk(STARTFONT);\r
-       VWB_Bar (0,0,320,200,BACKCOLOR);\r
-       CacheLayoutGraphics ();\r
-       #endif\r
-\r
-       newpage = true;\r
-       firstpage = true;\r
-\r
-       do\r
-       {\r
-               if (newpage)\r
-               {\r
-                       newpage = false;\r
-                       #ifdef JAPAN\r
-                       if (!which)\r
-                               CA_CacheScreen(snames[pagenum - 1]);\r
-                       else\r
-                               CA_CacheScreen(enames[which*2 + pagenum - 1]);\r
-                       #else\r
-                       PageLayout (true);\r
-                       #endif\r
-                       VW_UpdateScreen ();\r
-                       if (firstpage)\r
-                       {\r
-                               VL_FadeIn(0,255,&gamepal,10);\r
-                               // VW_FadeIn ()\r
-                               firstpage = false;\r
-                       }\r
-               }\r
-\r
-               LastScan = 0;\r
-               while (!LastScan)\r
-               ;\r
-\r
-               switch (LastScan)\r
-               {\r
-               case sc_UpArrow:\r
-               case sc_PgUp:\r
-               case sc_LeftArrow:\r
-                       if (pagenum>1)\r
-                       {\r
-                               #ifndef JAPAN\r
-                               BackPage ();\r
-                               BackPage ();\r
-                               #else\r
-                               pagenum--;\r
-                               #endif\r
-                               newpage = true;\r
-                       }\r
-                       break;\r
-\r
-               case sc_Enter:\r
-               case sc_DownArrow:\r
-               case sc_PgDn:\r
-               case sc_RightArrow:             // the text allready points at next page\r
-                       if (pagenum<numpages)\r
-                       {\r
-                               newpage = true;\r
-                               #ifdef JAPAN\r
-                               pagenum++;\r
-                               #endif\r
-                       }\r
-                       break;\r
-               }\r
-\r
-               #ifndef SPEAR\r
-               if (Keyboard[sc_Tab] && Keyboard[sc_P] && MS_CheckParm("goobers"))\r
-                       PicturePause();\r
-               #endif\r
-\r
-       } while (LastScan != sc_Escape);\r
-\r
-       IN_ClearKeysDown ();\r
-       fontnumber = oldfontnumber;\r
-}\r
-\r
-\r
-//===========================================================================\r
-\r
-#ifndef JAPAN\r
-#ifdef ARTSEXTERN\r
-int    endextern = T_ENDART1;\r
-#ifndef SPEAR\r
-int            helpextern = T_HELPART;\r
-#endif\r
-#endif\r
-char helpfilename[13] = "HELPART.",\r
-        endfilename[13] = "ENDART1.";\r
-#endif\r
-\r
-/*\r
-=================\r
-=\r
-= HelpScreens\r
-=\r
-=================\r
-*/\r
-#ifndef SPEAR\r
-void HelpScreens (void)\r
-{\r
-       int                     artnum;\r
-       char far        *text;\r
-       memptr          layout;\r
-\r
-\r
-       CA_UpLevel ();\r
-       MM_SortMem ();\r
-#ifdef JAPAN\r
-       ShowArticle (0);\r
-       VW_FadeOut();\r
-       FreeMusic ();\r
-       CA_DownLevel ();\r
-       MM_SortMem ();\r
-#else\r
-\r
-\r
-\r
-\r
-#ifdef ARTSEXTERN\r
-       artnum = helpextern;\r
-       CA_CacheGrChunk (artnum);\r
-       text = (char _seg *)grsegs[artnum];\r
-       MM_SetLock (&grsegs[artnum], true);\r
-#else\r
-       CA_LoadFile (helpfilename,&layout);\r
-       text = (char _seg *)layout;\r
-       MM_SetLock (&layout, true);\r
-#endif\r
-\r
-       ShowArticle (text);\r
-\r
-#ifdef ARTSEXTERN\r
-       MM_FreePtr (&grsegs[artnum]);\r
-#else\r
-       MM_FreePtr (&layout);\r
-#endif\r
-\r
-\r
-\r
-       VW_FadeOut();\r
-\r
-       FreeMusic ();\r
-       CA_DownLevel ();\r
-       MM_SortMem ();\r
-#endif\r
-}\r
-#endif\r
-\r
-//\r
-// END ARTICLES\r
-//\r
-void EndText (void)\r
-{\r
-       int                     artnum;\r
-       char far        *text;\r
-       memptr          layout;\r
-\r
-\r
-       ClearMemory ();\r
-\r
-       CA_UpLevel ();\r
-       MM_SortMem ();\r
-#ifdef JAPAN\r
-       ShowArticle(gamestate.episode + 1);\r
-\r
-       VW_FadeOut();\r
-\r
-       SETFONTCOLOR(0,15);\r
-       IN_ClearKeysDown();\r
-       if (MousePresent)\r
-               Mouse(MDelta);  // Clear accumulated mouse movement\r
-\r
-       FreeMusic ();\r
-       CA_DownLevel ();\r
-       MM_SortMem ();\r
-#else\r
-\r
-\r
-\r
-#ifdef ARTSEXTERN\r
-       artnum = endextern+gamestate.episode;\r
-       CA_CacheGrChunk (artnum);\r
-       text = (char _seg *)grsegs[artnum];\r
-       MM_SetLock (&grsegs[artnum], true);\r
-#else\r
-       endfilename[6] = '1'+gamestate.episode;\r
-       CA_LoadFile (endfilename,&layout);\r
-       text = (char _seg *)layout;\r
-       MM_SetLock (&layout, true);\r
-#endif\r
-\r
-       ShowArticle (text);\r
-\r
-#ifdef ARTSEXTERN\r
-       MM_FreePtr (&grsegs[artnum]);\r
-#else\r
-       MM_FreePtr (&layout);\r
-#endif\r
-\r
-\r
-       VW_FadeOut();\r
-       SETFONTCOLOR(0,15);\r
-       IN_ClearKeysDown();\r
-       if (MousePresent)\r
-               Mouse(MDelta);  // Clear accumulated mouse movement\r
-\r
-       FreeMusic ();\r
-       CA_DownLevel ();\r
-       MM_SortMem ();\r
-#endif\r
-}\r