/* WarpText Quickie Test Anson Mah 06/08/87 * For Lattice C * * NOTE: This test does not use any of the WarpText 2.0 routines as * they did not exist when Anson wrote this. * I made an example program for all of the routines but I * couldn't get the $#%! assembler to assembler it! It kept * giving me all sorts of strange errors on the second pass. * I was able to test all the routines interactively in Forth * so, while I know the new (and old) routines work, I have no * program to give out that demonstrates them... Sorry, * Bill. */ #include #include #include #include "graphics/WarpText.h" extern void InitWarpInfo(), GotoXY(), GetXY(), WarpText(); struct IntuitionBase *IntuitionBase; struct GfxBase *GfxBase = NULL; struct Window *w = NULL; struct WarpInfo *winfo = NULL; struct TextAttr taTopaz80 = { "topaz.font", 8, FS_NORMAL, FPF_ROMFONT }; struct NewWindow wdef = { 0,0,640,200, 0,1, CLOSEWINDOW, WINDOWDRAG | WINDOWCLOSE | WINDOWDEPTH | SMART_REFRESH | ACTIVATE, NULL, NULL, "WarpText Test", NULL, NULL, 0,0,640,200, WBENCHSCREEN }; void closestuff() { if (winfo) FreeMem(winfo, sizeof(struct WarpInfo)); if (w) CloseWindow(w); if (GfxBase) CloseLibrary(GfxBase); if (IntuitionBase) CloseLibrary(IntuitionBase); XCEXIT(0); } void openstuff() { if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary( "intuition.library", 33))) closestuff(); if (!(GfxBase = (struct GfxBase *)OpenLibrary( "graphics.library", 33))) closestuff(); if (!(winfo = (struct WarpInfo *)AllocMem(sizeof(struct WarpInfo), MEMF_PUBLIC))) closestuff(); if (!(w = (struct Window *)OpenWindow(&wdef))) closestuff(); } ULONG strlen(s) char *s; { ULONG i = 0; while (*s++) i++; return(i); } void _main() { static char *text[17]; struct IntuiMessage *msg; ULONG class; UWORD i; openstuff(); text[0] = "Hi, Bill!\n"; text[1] = " Thanx for your WarpText routines. As you can see, this\n"; text[2] = "is a quick test of 'em. The only routine I don't use is\n"; text[3] = "GetXY. Also note that I have created a WarpText.h file for\n"; text[4] = "C programmers like yours truly and also a C interface\n"; text[5] = "module for the same people! Please do what you will with\n"; text[6] = "them.\n"; text[7] = " Right. I've looked over your code and can't see any\n"; text[8] = "immediate improvements, but I may if I study them longer.\n"; text[9] = "Actually, I believe you might gain some more speed if you\n"; text[10] = "start using the Blitter instead. It was made to handle\n"; text[11] = "stuff like this. You should be able to get upward of\n"; text[12] = "30,000 chars/sec if you use it. This number was measured\n"; text[13] = "with the set of routines my friends came up with a while\n"; text[14] = "back. It's fairly accurate.\n"; text[15] = " Anyway, more when I have more time to hack!\n"; text[16] = " Anson"; /* set up WarpInfo */ winfo->wi_TextFont = (APTR)OpenFont(&taTopaz80); winfo->wi_BitMap = (APTR)&w->WScreen->BitMap; winfo->wi_WhichPlane = 0; winfo->wi_Left = 10; winfo->wi_Top = 3; winfo->wi_Width = 60; winfo->wi_Height = 21; InitWarpInfo(winfo); /* warp out text */ for (i = 0; i < 17; i++) WarpText(winfo, text[i], strlen(text[i])); GotoXY(winfo, 25, 19); WarpText(winfo, "Hey, I'm here!", 14); GotoXY(winfo, 10, 20); WarpText(winfo, "And here!!", 10); CloseFont(winfo->wi_TextFont); for (;;) { WaitPort(w->UserPort); msg = (struct IntuiMessage *)GetMsg(w->UserPort); ReplyMsg(msg); class = msg->Class; switch (class) { case CLOSEWINDOW: closestuff(); break; } } } void MemCleanup() {} /* Lattice stub */