#include #include #include #include #include #include #include #include #include #include #include #include #include #include struct LineItem /*'Liner structure definition*/ { struct LineItem *NextItem,*PrevItem; UBYTE Level,ItemNumber; char Text[80]; BYTE Highlighted,cont,Future[10]; }; struct Old_LineItem /*Old (pre V1.5) 'Liner structure definition*/ { struct LineItem *NextItem,*PrevItem; UBYTE Level,ItemNumber; char Text[80]; }; struct WhichOne { struct LineItem *Start,*End; }; struct LinerPrefs /*'Liner preferences structure*/ { BYTE DS,Laced,Icons,Level,Screen; UBYTE Color[4][3]; char Macro[4][80],Name[4][80]; char DefaultDir[150],DefPrintDir[150],DefPattern[150]; }; #define WORDROUND(xxx) (((long)xxx+3)>>2)<<2) /* Round to word boundary */ #define D_S(name, type) char c_##name[sizeof(type)+3]; \ type *name = (type *)WORDROUND(c_##name); #define Rp Window->RPort; #define CSI 0x09b #define SEMI 0x03b #define NEWPAGE 0x0c #define CLOSECHAR 0x05c #define SCRNHEIGHT RowsInScreen #define REQUESTERCHARS 57 #define UP 0 #define DOWN 1 #define NOINV 0 #define LINE_PENDING 1 #define LINE_FWD 2 #define LINE_BACK 3 #define BLOCK_PENDING -1 #define BLOCK_DOWN -2 #define BLOCK_UP -3 #define MINMEMORY 20000 extern LONG ARexxSigBit; extern struct IntuitionBase *IntuitionBase; extern struct GfxBase *GfxBase; extern ULONG DosBase,IconBase; extern struct WBStartup *WBenchMsg; extern struct IOStdReq *consoleWriteMsg,*consoleReadMsg; extern struct Port *consoleWritePort,*consoleReadPort; extern struct IOClipReq ClipboardIO; extern struct MsgPort clipboardMsgPort; extern struct Process *ThisProc; extern struct Screen *Screen; extern struct Window *Window,*AboutWindow; extern struct KeyMap keymap; extern APTR ConsoleDevice; extern struct LineItem *CharItem,*StartIItem,*EndIItem,*ClipStart,*ClipEnd; extern int ButtonState,PtrX,PtrY,LastX,LastY,InvsMode,StartChar,EndChar,InvY,EndIY; extern int BLastX,ClipMode,ErrorInTitle; extern UBYTE Laced,RowsInScreen,StartingLevel,Modified,Odd; extern char Indent; extern char FileName[183],SDirName[150],SFileName[33],SExt[150]; extern char PDName[183],PDirName[150],PFileName[33],PExt[150]; extern BYTE TopInv,BtmInv; extern char ScreenTitle[17]; extern struct LineItem *FirstItem,*LastItem,*CurrentItem,*FirstScrnItem,*ScrnBtm; extern int CurX,CurY,DispRows; extern struct LinerPrefs prefs; extern UBYTE OLCPos[6][6]; extern UBYTE MaxNumOnLevel[6]; /*Some macros*/ #define PERPOS(x) OLCPos[StartingLevel][x]-3 #define MinX(LI) OLCPos[StartingLevel][(LI->Level)-1] #define MaxX(LI) OLCPos[StartingLevel][(LI->Level)-1]+strlen(LI->Text) #define MaxLen(Level) 79-OLCPos[StartingLevel][Level-1] #define PosInText(Level) CurX-OLCPos[StartingLevel][Level-1] #define RealLevel(LI) (LI->Level+StartingLevel > 6) ? (LI->Level+StartingLevel-7) : (LI->Level+StartingLevel) /* ^^^ == get level when StartingLevel != 0 */ /*Function definitions*/ /*liner.c functions*/ extern void GetOutlineChars(); extern void RedrawOutlineChars(); extern void AddItem(); extern void WriteConsole(); extern HandleIDCMP(); extern void HandleBS(); extern HandleReturn(); extern void CloseStuff(); extern void Leave(); extern PushIn(); extern Push(); extern PullOutBlock(); extern void JumpToTop(); extern void JumpToBottom(); extern void PrintItemList(); extern void PrintItem(); extern void PlotCursor(); extern CursorUp(); extern CursorDown(); extern void InsertChar(); extern void DeleteChar(); extern struct LineItem *InsertItem(); extern struct LineItem *FindPrev(); extern struct LineItem *FindNext(); extern void InsertLineAtTop(); extern WholeScreenDown(); extern WholeScreenUp(); extern IsOnScreen(); extern IsBefore(); extern IsAfter(); extern struct LineItem *FindNextNonCont(); extern struct LineItem *FindPrevNonCont(); /*console.c */ extern HandleTAB(); extern void CursorRight(); extern void CursorLeft(); /*windows.c functions*/ extern void OpenGraphics(); extern void CloseGraphics(); extern BOOL HandleInterlaced(); extern void ModifyMenus(); extern void InterpretPrefs(); extern GetWBHeight(); extern void GetLinerPrefs(); extern PutPrefs(); extern BOOL SwapScrnSize(); extern struct MenuItem *GetFirstItemAddress(); extern void SaveColors(); extern void LoadColors(); extern void ClearMenus(); extern void SetRowsInScreen(); extern void CopyPrefsToMenus(); extern NewAll(); extern HandleAbout(); extern BOOL DoubleSpacing(); extern BOOL HandleStartingLevel(); extern void ChangeDisplay(); /*mouse.c functions*/ extern void NormBlock(); extern void MovedMouse(); extern HandleButton(); extern void HandleInvs(); extern HandleBlockInvs(); extern void RvsBlock(); extern void EndBlockInvs(); extern HandleLineInvs(); extern MoveForward(); extern void EndLineInvs(); extern void NormText(); extern HandleDelBlock(); extern void FindStartEnd(); extern void DelBlock(); extern void FreeListMem(); extern void DelTextBlock(); extern CancelInvs(); extern DelInvs(); extern void TitleError(); extern void TitleErrorCancel(); extern void BackSearchRefresh(); extern void RvsText(); extern CancelLineInvs(); extern void NormIt(); /*sure.c functions*/ extern AreYouSure(); /*disk.c functions*/ extern WriteItemList(); extern ReadItemList(); extern struct LineItem *BreakLineApart(); extern void CreatePrefsIcon(); /*clip.c functions*/ extern void SetupClipboard(); extern void WriteInvsTextToClip(); extern void WriteStringClip(); extern ReadString(); extern ReadClip(); extern void AddBlock(); extern void WriteClip(); extern SnagBlock(); /*menu.c functions*/ extern NewAll(); extern void HandleNew(); extern HandleOpen(); extern void Save(); extern void HandleSaveAs(); extern HandlePrintDisk(); extern HandlePrintPrinter(); extern void HandleQuit(); extern HandleCut(); extern HandleCopy(); extern void HandlePaste(); extern HandleErase(); extern void Refresh(); extern void CheckModified(); extern void MakeTextLine(); extern void HandleIcons(); extern void HandlePalette(); extern void HandleReloadPrefs(); /*From PopColours.c*/ extern void PopColours(); /*From Search.c*/ extern struct LineItem *SearchText(); extern DoSearch(); extern void ModifyParams(); extern void ReplaceAll(); extern BYTE AskChange(); /*From ARexx.c*/ extern void OpenARexx(); extern void CloseARexx(); extern void CheckRexxPort(); extern void GetWord(); extern void EngageMacro(); extern void GetMacroInfo(); extern void SplitFilename();