home *** CD-ROM | disk | FTP | other *** search
- /*
- ** termAbout.c
- **
- ** Support routines for the `About' window.
- **
- ** Copyright © 1990-1995 by Olaf `Olsen' Barthel
- ** All Rights Reserved
- */
-
- #include "termGlobal.h"
-
- #define HEADING 4
-
- enum { GAD_FRAME=1,GAD_SCROLL,GAD_BUTTON };
-
- /* LocalDeleteBitMap(struct BitMap *BitMap,UWORD Width,UWORD Height):
- *
- * Delete yet another screen bitmap.
- */
-
- STATIC VOID __regargs
- LocalDeleteBitMap(struct BitMap *BitMap,UWORD Width,UWORD Height)
- {
- if(BitMap)
- {
- WORD i;
-
- WaitBlit();
-
- for(i = 0 ; i < BitMap -> Depth ; i++)
- {
- if(BitMap -> Planes[i])
- FreeRaster(BitMap -> Planes[i],Width,Height);
- }
-
- FreeVecPooled(BitMap);
- }
- }
-
- /* LocalCreateBitMap(UWORD Depth,UWORD Width,UWORD Height):
- *
- * Create yet another screen bitmap.
- */
-
- STATIC struct BitMap * __regargs
- LocalCreateBitMap(UWORD Depth,UWORD Width,UWORD Height)
- {
- struct BitMap *BitMap;
-
- if(BitMap = (struct BitMap *)AllocVecPooled(sizeof(struct BitMap),MEMF_ANY))
- {
- BYTE Success = TRUE;
- WORD i;
-
- InitBitMap(BitMap,Depth,Width,Height);
-
- for(i = 0 ; Success && i < Depth ; i++)
- {
- if(!(BitMap -> Planes[i] = AllocRaster(Width,Height)))
- Success = FALSE;
- }
-
- if(Success)
- return(BitMap);
-
- LocalDeleteBitMap(BitMap,Width,Height);
- }
-
- return(NULL);
- }
-
- /* CreateBitMapFromImage(struct Image *Image,struct BitMap *BitMap):
- *
- * Turn an Intuition Image into a Gfx BitMap.
- */
-
- STATIC VOID __regargs
- CreateBitMapFromImage(struct Image *Image,struct BitMap *BitMap)
- {
- PLANEPTR Data = (PLANEPTR)Image -> ImageData;
- ULONG Modulo = ((((ULONG)Image -> Width) + 15) >> 3) & ~1;
- WORD i;
-
- InitBitMap(BitMap,Image -> Depth,Image -> Width,Image -> Height);
-
- for(i = 0 ; i < Image -> Depth ; i++, Data += Modulo * Image -> Height)
- BitMap -> Planes[i] = Data;
- }
-
- /* RecolourBitMap():
- *
- * Remap a BitMap to use a different colour selection.
- */
-
- STATIC struct BitMap * __regargs
- RecolourBitMap (struct BitMap *Src, UBYTE * Mapping, UBYTE DestDepth, UWORD Width, UWORD Height)
- {
- struct BitMap *Dst;
-
- /* Create the bitmap to hold the remapped data. */
-
- if(Dst = LocalCreateBitMap(DestDepth,Width,Height))
- {
- struct BitMap *SingleMap;
-
- /* Create a single bitplane bitmap. */
-
- if(SingleMap = LocalCreateBitMap(1,Width,Height))
- {
- struct BitMap *FullMap;
-
- /* Create a dummy bitmap. */
-
- if(FullMap = (struct BitMap *)AllocVecPooled(sizeof(struct BitMap),MEMF_ANY))
- {
- WORD i,Mask = (1L << Src -> Depth) - 1;
-
- /* Make the dummy bitmap use the
- * single bitmap in all planes.
- */
-
- InitBitMap(FullMap,DestDepth,Width,Height);
-
- for(i = 0 ; i < DestDepth ; i++)
- FullMap -> Planes[i] = SingleMap -> Planes[0];
-
- /* Clear the destination bitmap. */
-
- BltBitMap(Dst,0,0,Dst,0,0,Width,Height,MINTERM_ZERO,0xFF,NULL);
-
- /* Is colour zero to be mapped to a non-zero colour? */
-
- if(Mapping[0])
- {
- /* Clear the single plane bitmap. */
-
- BltBitMap(SingleMap,0,0,SingleMap,0,0,Width,Height,MINTERM_ZERO,1,NULL);
-
- /* Merge all source bitplane data. */
-
- BltBitMap(Src,0,0,FullMap,0,0,Width,Height,MINTERM_B_OR_C,Mask,NULL);
-
- /* Invert the single plane bitmap, to give us
- * the zero colour bitmap we can work with.
- */
-
- BltBitMap(SingleMap,0,0,SingleMap,0,0,Width,Height,MINTERM_NOT_C,1,NULL);
-
- /* Now set all the bits for colour zero. */
-
- BltBitMap(FullMap,0,0,Dst,0,0,Width,Height,MINTERM_B_OR_C,Mapping[0],NULL);
- }
-
- /* Run down the colours. */
-
- for(i = 1 ; i <= Mask ; i++)
- {
- /* Set the single plane bitmap to all 1's. */
-
- BltBitMap(SingleMap,0,0,SingleMap,0,0,Width,Height,MINTERM_ONE,1,NULL);
-
- /* Isolate the pixels to match the colour
- * specified in `i'.
- */
-
- BltBitMap(Src,0,0,FullMap,0,0,Width,Height,MINTERM_B_AND_C,i,NULL);
-
- if(Mask ^ i)
- BltBitMap(Src,0,0,FullMap,0,0,Width,Height,MINTERM_NOT_B_AND_C,Mask ^ i,NULL);
-
- /* Set the pixels in the destination bitmap,
- * use the designated colour.
- */
-
- BltBitMap(FullMap,0,0,Dst,0,0,Width,Height,MINTERM_B_OR_C,Mapping[i],NULL);
- }
-
- /* Free the temporary bitmap. */
-
- FreeVecPooled(FullMap);
-
- /* Free the single plane bitmap. */
-
- LocalDeleteBitMap(SingleMap,Width,Height);
-
- /* Return the result. */
-
- return(Dst);
- }
-
- LocalDeleteBitMap(SingleMap,Width,Height);
- }
-
- LocalDeleteBitMap(Dst,Width,Height);
- }
-
- return(NULL);
- }
-
- STATIC STRPTR Table[] =
- {
- "\bBeta testing:",
- "",
- "Peter L. Banville Jr. Stefan Becker",
- "Abdelkader Benbachir Martin Berndt",
- "Gregory A. Chance Keith Christopher",
- "Mark Constable Steve Corder",
- "Sebastian Delmont Marcel Döring Klaus Dürr",
- "Frank Dürring Bernd Ernesti",
- "Kenneth Fribert Kay Gehrke",
- "Jay Grizzard Stefan Gybas",
- "Christoph Gülicher Chris Hanson",
- "Peer Hasselmeyer Christian Hechelmann",
- "Holger Heinrich Rodney Hester",
- "Florian Hinzmann Hung-Tung Hsu",
- "Stefan Hudson Kai Iske",
- "Piotr Kaminski Andreas M. Kirchwitz",
- "Tony Kirkland Stellan Klebom",
- "Russell John LeBar Jason C. Leach",
- "Holger Lubitz Daniel M. Makovec",
- "Bob Maple Julian Matthew",
- "Chris Mattingly Matthias Merkel",
- "Dabe Murphy William Michael Mushkin",
- "Christopher G. Newby Dean S. Pemberton",
- "Yves Perrenoud Olaf Peters",
- "Sven Reger Robert Reiswig",
- "Matti Rintala Alfredo Rojas",
- "Karsten Rother Ottmar Röhrig",
- "Matthias Scheler Markus Schmall",
- "Robert L. Shady Leon D. Shaner",
- "Eric W. Sommer Jason Soukeras",
- "Gary B. Standen Keith A. Stewart",
- "Joel E. Swan Jonathan Tew",
- "Bodo Thevissen Jürgen Zeschky",
- "Michael Zielesny",
- "",
- "\bForeign language translations:",
- "",
- "Olaf Barthel (Deutsch)",
- "Phillippe Brand (Français)",
- "Thomas Egrelius (Svenska)",
- "Michele Girato (Italiano)",
- "Flemming Lindeblad (Dansk)",
- "Edmund Vermeulen (Nederlands)",
- "«Sorry, I lost your name» (Español)",
- "",
- "\bDocumentation:",
- "",
- "Olaf Barthel Garry Glendown",
- "Henning Hucke Mike Safer",
- "Mark Schröer",
- "",
- "\bXPR Libraries by:",
- "",
- "Marc Boucher (xmodem)",
- "Terence Finney (bplus)",
- "Rick Huebner & William M. Perkins (zmodem)",
- "Ueli Kaufmann (ascii, ymodem, vms)",
- "Marco Papa & Stephen Walton (kermit)",
- "Jack Rouse (quickb)",
- "",
- "\bXEM Libraries by:",
- "",
- "Ueli Kaufmann (amiga, ascii, bbs, vt340)",
- "Stef Rave (rip)",
- "",
- "\bPeople who will deny that",
- "\bthey were ever involved:",
- "",
- "John Burton Peter Fischer",
- "David Göhler Michael-Wolfgang Hohmann",
- "David Jones Marko Küchmann",
- "Bernd Lambracht Roby Leeman & AUGS",
- "Frank Mariak Germar Morgenthaler",
- "Jürgen Otte Till `Dill-Prince' Prinzler",
- "Nicola Salmoria Ralph Schmidt",
- "Veith Schörgenhummer Thorsten Seidel",
- "Markus Stoll Martin Taillefer",
- "Christoph Teuber Ralf Thanner",
- "Volker Ulle & the Aquila Sysop Team",
- "Michael Vaeth Oliver Wagner",
- "Christopher Wichura Udo Wolt",
- "Matthias Zepf",
- "",
- "\aDon't switch off, it's almost over!",
- "",
- NULL
- };
-
- STATIC VOID __regargs
- PrintThisLine(struct RastPort *RPort,struct Rectangle *Clip,LONG Top,STRPTR Line)
- {
- LONG Len,Width;
-
- Len = strlen(Line);
-
- if(*Line == '\b' || *Line == '\a')
- {
- ULONG Style;
-
- if(*Line == '\b')
- Style = FSF_BOLD;
- else
- Style = FSF_ITALIC;
-
- SetSoftStyle(RPort,Style,FSF_BOLD | FSF_ITALIC);
- Line++;
- Len--;
- }
- else
- SetSoftStyle(RPort,0,FSF_BOLD | FSF_ITALIC);
-
- if(Len > 0)
- {
- Width = TextLength(RPort,Line,Len);
-
- Move(RPort,Clip -> MinX + (Clip -> MaxX - Clip -> MinX + 1 - Width) / 2,RPort -> TxBaseline + Top);
- Text(RPort,Line,Len);
- }
- }
-
-
- /* ShowAbout():
- *
- * Open a window, draw the `term' logo, show some text
- * and wait for user reaction.
- */
-
- BYTE __regargs
- ShowAbout(BYTE Ticks)
- {
- struct BitMap *ImageBitMap = NULL;
- LONG ImageWidth,
- ImageHeight;
- BYTE GotRexxMessage = FALSE;
- struct LayoutHandle *Handle;
-
- if(IconBase)
- {
- struct DiskObject *Icon;
-
- if(Icon = GetProgramIcon())
- {
- STATIC UWORD DefaultColours[4] =
- {
- 0xAAA,
- 0x000,
- 0xFFF,
- 0x68B
- };
-
- UBYTE Mapping[4];
- UWORD Colour1,Colour2;
- WORD ChannelDistance;
- LONG Distance,BestDistance,BestIndex,Depth,Count,i,j;
- BOOLEAN Duplicates = FALSE;
-
- Depth = GetBitMapDepth(Window -> RPort -> BitMap);
- Count = Window -> WScreen -> ViewPort . ColorMap -> Count;
-
- if(Depth > 8)
- Depth = 8;
-
- if(Count > (1L << Depth))
- Count = 1L << Depth;
-
- if(Count > 256)
- Count = 256;
-
- if(Count >= 4)
- {
- for(i = 0 ; i < 4 ; i++)
- {
- Colour2 = DefaultColours[i];
-
- BestDistance = 3 * 15 * 15;
- BestIndex = 0;
-
- for(j = 0 ; j < Count ; j++)
- {
- Colour1 = GetRGB4(Window -> WScreen -> ViewPort . ColorMap,j);
-
- ChannelDistance = ((WORD)((Colour1 >> 8) & 0xF)) - ((WORD)((Colour2 >> 8) & 0xF));
-
- Distance = ChannelDistance * ChannelDistance;
-
- ChannelDistance = ((WORD)((Colour1 >> 4) & 0xF)) - ((WORD)((Colour2 >> 4) & 0xF));
-
- Distance += ChannelDistance * ChannelDistance;
-
- ChannelDistance = ((WORD)(Colour1 & 0xF)) - ((WORD)(Colour2 & 0xF));
-
- Distance += ChannelDistance * ChannelDistance;
-
- if(Distance < BestDistance)
- {
- BestDistance = Distance;
- BestIndex = j;
- }
- }
-
- Mapping[i] = BestIndex;
- }
-
- for(i = 0 ; !Duplicates && i < 4 ; i++)
- {
- for(j = i + 1 ; !Duplicates && j < 4 ; j++)
- Duplicates = (Mapping[i] == Mapping[j]);
- }
-
- if(!Duplicates)
- {
- struct BitMap LocalBitMap;
- struct Image *Image;
-
- Image = Icon -> do_Gadget . GadgetRender;
-
- if(Image -> Depth == 2)
- {
- CreateBitMapFromImage(Image,&LocalBitMap);
-
- if(ImageBitMap = RecolourBitMap(&LocalBitMap,Mapping,Depth,Image -> Width,Image -> Height))
- {
- ImageWidth = Image -> Width;
- ImageHeight = Image -> Height;
- }
- }
- }
- }
-
- FreeDiskObject(Icon);
- }
- }
-
- if(Handle = LT_CreateHandleTags(Window -> WScreen,
- LH_LocaleHook, &LocaleHook,
- LH_ExactClone, TRUE,
- TAG_DONE))
- {
- STRPTR AboutLines[3],
- RequestLines[4],
- StandardMail[4],
- ElectronicMail[2];
- struct Window *PanelWindow;
- WORD i;
- struct Region *Clip = NULL,*Old;
- struct Rectangle ClipRect;
- LONG ClipWidth,
- ClipHeight;
-
- if(!Ticks)
- {
- struct RastPort This;
- ULONG Width,MaxWidth,Len,i;
- STRPTR String;
-
- InitRastPort(&This);
- SetFont(&This,UserTextFont);
-
- for(i = MaxWidth = 0 ; Table[i] ; i++)
- {
- Len = strlen(String = Table[i]);
-
- if(*String == '\b' || *String == '\a')
- {
- ULONG Style;
-
- if(*String == '\b')
- Style = FSF_BOLD;
- else
- Style = FSF_ITALIC;
-
- SetSoftStyle(&This,Style,FSF_BOLD | FSF_ITALIC);
- String++;
- Len--;
- }
- else
- SetSoftStyle(&This,0,FSF_BOLD | FSF_ITALIC);
-
- if(Len > 0)
- {
- Width = TextLength(&This,String,Len);
-
- if(Width > MaxWidth)
- MaxWidth = Width;
- }
- }
-
- ClipWidth = MaxWidth;
- ClipHeight = HEADING * This . TxHeight;
-
- Clip = NewRegion();
- }
-
- for(i = 0 ; i < 2 ; i++)
- AboutLines[i] = LocaleString(MSG_TERMINFO_INFOTEXT1_TXT + i);
-
- AboutLines[i] = NULL;
-
- for(i = 0 ; i < 3 ; i++)
- RequestLines[i] = LocaleString(MSG_TERMINFO_INFOTEXT4_TXT + i);
-
- RequestLines[i] = NULL;
-
- for(i = 0 ; i < 3 ; i++)
- StandardMail[i] = LocaleString(MSG_TERMINFO_INFOTEXT10_TXT + i);
-
- StandardMail[i] = NULL;
-
- for(i = 0 ; i < 1 ; i++)
- ElectronicMail[i] = LocaleString(MSG_TERMINFO_INFOTEXT16_TXT + i);
-
- ElectronicMail[i] = NULL;
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- LA_LabelText, TermName,
- TAG_DONE);
- {
- if(ImageBitMap)
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, FRAME_KIND,
- LAFR_InnerWidth, ImageWidth,
- LAFR_InnerHeight, ImageHeight,
- LA_DrawBox, FALSE,
- LA_ID, GAD_FRAME,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BOX_KIND,
- LA_Chars, 56,
- LABX_Lines, AboutLines,
- LABX_AlignText, ALIGNTEXT_CENTERED,
- LABX_DrawBox, FALSE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- if(!Ticks && Clip)
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, XBAR_KIND,
- TAG_DONE);
-
- LT_New(Handle,
- LA_Type, FRAME_KIND,
- LAFR_InnerWidth, ClipWidth + 4,
- LAFR_InnerHeight, ClipHeight + 2,
- LA_DrawBox, FALSE,
- LA_ID, GAD_SCROLL,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
- }
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- LA_LabelID, MSG_V36_1030,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BOX_KIND,
- LA_Chars, 56,
- LABX_Lines, RequestLines,
- LABX_AlignText, ALIGNTEXT_CENTERED,
- LABX_DrawBox, FALSE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- LA_LabelID, MSG_V36_1031,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BOX_KIND,
- LA_Chars, 56,
- LABX_Lines, StandardMail,
- LABX_AlignText, ALIGNTEXT_CENTERED,
- LABX_DrawBox, FALSE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_New(Handle,
- LA_Type, VERTICAL_KIND,
- LA_LabelID, MSG_V36_1032,
- TAG_DONE);
- {
- LT_New(Handle,
- LA_Type, BOX_KIND,
- LA_Chars, 56,
- LABX_Lines, ElectronicMail,
- LABX_AlignText, ALIGNTEXT_CENTERED,
- LABX_DrawBox, FALSE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
-
- LT_EndGroup(Handle);
- }
-
- if(!Ticks)
- {
- LT_New(Handle,
- LA_Type,VERTICAL_KIND,
- TAG_DONE);
- {
- LT_New(Handle,LA_Type,XBAR_KIND,LAXB_FullSize,TRUE,TAG_DONE);
-
- LT_New(Handle,
- LA_Type, BUTTON_KIND,
- LA_LabelID, MSG_V36_1033,
- LA_ID, GAD_BUTTON,
- LABT_ReturnKey, TRUE,
- LABT_ExtraFat, TRUE,
- TAG_DONE);
-
- LT_EndGroup(Handle);
- }
- }
-
- LT_EndGroup(Handle);
- }
-
- if(!Ticks)
- {
- PanelWindow = LT_Build(Handle,
- LAWN_TitleID, MSG_V36_1034,
- LAWN_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_INTUITICKS,
- LAWN_HelpHook, &GuideHook,
- LAWN_MaxPen, -1,
- LAWN_Parent, Window,
- WA_DepthGadget, TRUE,
- WA_CloseGadget, TRUE,
- WA_DragBar, TRUE,
- WA_RMBTrap, TRUE,
- WA_Activate, TRUE,
- TAG_DONE);
- }
- else
- {
- PanelWindow = LT_Build(Handle,
- LAWN_IDCMP, IDCMP_RAWKEY | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS | IDCMP_INTUITICKS,
- LAWN_HelpHook, &GuideHook,
- LAWN_MaxPen, -1,
- LAWN_Parent, Window,
- WA_RMBTrap, TRUE,
- WA_Activate, TRUE,
- WA_ReportMouse, TRUE,
- TAG_DONE);
- }
-
- if(PanelWindow)
- {
- struct IntuiMessage *Message;
- BOOLEAN Done = FALSE;
- ULONG MsgClass,
- MsgQualifier;
- UWORD MsgCode;
- struct Gadget *MsgGadget;
- ULONG Signals;
- LONG TickCount = 0;
- LONG Top,Total,LastLine,IntroTicks = 15;
-
- if(ImageBitMap)
- {
- LONG Left,Top;
-
- LT_GetAttributes(Handle,GAD_FRAME,
- LA_Left, &Left,
- LA_Top, &Top,
- TAG_DONE);
-
- BltBitMapRastPort(ImageBitMap,0,0,PanelWindow -> RPort,Left,Top,ImageWidth,ImageHeight,MINTERM_COPY);
- }
-
- if(!Ticks)
- {
- LONG LeftEdge,TopEdge;
-
- LT_GetAttributes(Handle,GAD_SCROLL,
- LA_Left, &LeftEdge,
- LA_Top, &TopEdge,
- TAG_DONE);
-
- ClipRect . MinX = LeftEdge + 2;
- ClipRect . MinY = TopEdge + 2;
- ClipRect . MaxX = LeftEdge + 2 + ClipWidth - 1;
- ClipRect . MaxY = TopEdge + 2 + ClipHeight - 1;
-
- SetFont(PanelWindow -> RPort,UserTextFont);
-
- if(Kick30)
- SetABPenDrMd(PanelWindow -> RPort,Handle -> DrawInfo -> dri_Pens[TEXTPEN],Handle -> DrawInfo -> dri_Pens[BACKGROUNDPEN],JAM2);
- else
- {
- SetAPen(PanelWindow -> RPort,Handle -> DrawInfo -> dri_Pens[TEXTPEN]);
- SetBPen(PanelWindow -> RPort,Handle -> DrawInfo -> dri_Pens[BACKGROUNDPEN]);
- SetDrMd(PanelWindow -> RPort,JAM2);
- }
-
- if(OrRectRegion(Clip,&ClipRect))
- {
- LONG i;
-
- Old = InstallClipRegion(PanelWindow -> WLayer,Clip);
-
- Top = ClipRect . MinY;
-
- for(i = 0 ; i < HEADING ; i++)
- {
- PrintThisLine(PanelWindow -> RPort,&ClipRect,Top,Table[i]);
-
- Top += PanelWindow -> RPort -> TxHeight;
- }
-
- LastLine = i;
-
- Total = 0;
- }
- else
- {
- DisposeRegion(Clip);
- Clip = NULL;
- }
- }
-
- while(Message = GT_GetIMsg(PanelWindow -> UserPort))
- GT_ReplyIMsg(Message);
-
- if(!Ticks)
- PushWindow(PanelWindow);
- else
- Say(LocaleString(MSG_TERMINFO_WELCOME_TO_TERM_TXT));
-
- do
- {
- Signals = Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK | SIG_REXX);
-
- if(Signals & SIG_BREAK)
- break;
-
- if(Ticks)
- {
- if(Signals & SIG_REXX)
- {
- GotRexxMessage = TRUE;
-
- break;
- }
- }
-
- while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
- {
- MsgClass = Message -> Class;
- MsgQualifier = Message -> Qualifier;
- MsgCode = Message -> Code;
- MsgGadget = (struct Gadget *)Message -> IAddress;
-
- GT_ReplyIMsg(Message);
-
- if(Ticks)
- {
- if(MsgClass == IDCMP_INTUITICKS && TickCount++ >= 50)
- Done = TRUE;
-
- if((MsgClass == IDCMP_RAWKEY || MsgClass == IDCMP_MOUSEBUTTONS) && !(MsgCode & IECODE_UP_PREFIX))
- Done = TRUE;
-
- if(MsgClass == IDCMP_MOUSEMOVE)
- Done = TRUE;
- }
- else
- {
- LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
-
- if(MsgClass == IDCMP_CLOSEWINDOW || MsgClass == IDCMP_GADGETUP)
- Done = TRUE;
-
- if(MsgClass == IDCMP_INTUITICKS && Clip)
- {
- if(IntroTicks > 0)
- IntroTicks--;
- else
- {
- ScrollRaster(PanelWindow -> RPort,0,1,ClipRect . MinX,ClipRect . MinY,ClipRect . MaxX,ClipRect . MaxY);
-
- Total++;
-
- PrintThisLine(PanelWindow -> RPort,&ClipRect,Top - Total,Table[LastLine]);
-
- if(Total == PanelWindow -> RPort -> TxHeight)
- {
- Total = 0;
-
- LastLine++;
-
- if(!Table[LastLine])
- LastLine = 0;
- }
- }
- }
- }
- }
- }
- while(!Done);
-
- if(Clip)
- {
- InstallClipRegion(PanelWindow -> WLayer,Old);
-
- DisposeRegion(Clip);
- }
-
- if(!Ticks)
- PopWindow();
- }
-
- LT_DeleteHandle(Handle);
- }
-
- if(ImageBitMap)
- LocalDeleteBitMap(ImageBitMap,ImageWidth,ImageHeight);
-
- return(GotRexxMessage);
- }
-