(**********************************************************************

    :Program.    req
    :Contents.   Definitionmodul zur Req-Library
    :Author.     Steffen Reith
    :Address.    Hessenstr. 64, D-8700 Würzburg
    :Phone.      0931/281859
    :Copyright.  Public Domain
    :Language.   Modula-2
    :Translator. M2Amiga A+L V4.096d
    :System.     $$Date: 15-06-1991  01:15:07
    :System.     $$CompilerRuns #4#
    :History.    V1.0  

**********************************************************************)
DEFINITION MODULE req {"req.library",1};

FROM IntuitionD IMPORT Gadget,GadgetPtr,Border,IntuiText,StringInfo,
                      PropInfo,Image,IntuitionBasePtr;
FROM IntuitionD IMPORT Window,WindowPtr,NewWindow;
FROM GraphicsD  IMPORT RastPortPtr,GfxBasePtr;
FROM DosD       IMPORT Date,FileInfoBlock,FileInfoBlockPtr,DosLibraryPtr;
FROM SYSTEM     IMPORT LONGSET,ADDRESS,BITSET;
FROM ExecD      IMPORT Library,IOStdReqPtr;

CONST ReqVersion=1;
      NumPairs=10;

TYPE GadgetBlock=RECORD
                  gadget:Gadget;
                  border:Border;
                  pairs:ARRAY[0..NumPairs-1] OF CARDINAL;
                  text:IntuiText
                 END;

     StringBlock=RECORD
                  gadget:Gadget;
                  info:StringInfo;
                  border:Border;
                  pairs:ARRAY[0..NumPairs-1] OF CARDINAL
                 END;

     PropBlock=RECORD
                gadget:Gadget;
                info:PropInfo;
                image:Image
               END;

     ScrollBlock=RECORD
                  arrowUpLt:Gadget;
                  imageUpLt:Image;
                  arrowDnRt:Gadget;
                  imageDnRt:Image;
                  prop:PropBlock
                 END;

     TwoImageGadget=RECORD
                     gadget:Gadget;
                     image1:Image;
                     image2:Image
                    END;

TYPE NewGadgetFlags=(gadgHBox,gadgHImage,gadgImage,gRelBottom,gRelRight,
                     gRelWidth,gRelHeight,selected,gadgDisabled,n9,n10,
                     n11,n12,n13,n14,n15,vertSlider,n17,n18,n19,n20,n21,
                     n22,n23,n24,n25,n26,n27,n28,n29,n30,n31);
     NewGadgetFlagSet=SET OF NewGadgetFlags;

TYPE TRStructure=RECORD
                  text:ADDRESS;
                  controls:ADDRESS;
                  window:WindowPtr;
                  middleText:ADDRESS;
                  positivText:ADDRESS;
                  negativText:ADDRESS;
                  title:ADDRESS;
                  keyMask:CARDINAL;
                  textColor:CARDINAL;
                  detailColor:CARDINAL;
                  blockColor:CARDINAL;
                  versionNumber:CARDINAL;
                  rfu1:LONGCARD; (* Immer Null *)
                  rfu2:LONGCARD  (* Immer Null *)
                 END;

     ExtendedColorRequest=RECORD
                             defColor:LONGINT;
                             window:WindowPtr;
                             rful1:LONGCARD; (* nicht benutzen immer Null *)
                             rful2:LONGCARD;
                             rful3:LONGCARD;
                             rful4:LONGCARD;
                             rful5:LONGCARD
                            END;

TYPE GetLongFlags=(GLNoDefault,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,
                   g14,g15,g16,g17,g18,g19,g20,g21,g22,g23,g24,g25,g26,g27,
                   g28,g29,g30,g31);
     GetLongFlagSet=SET OF GetLongFlags;

TYPE GetLongStruct=RECORD
                    titleBar:ADDRESS;
                    defaultval:LONGINT;
                    minLimit:LONGINT;
                    maxLimit:LONGINT;
                    result:LONGINT;
                    window:WindowPtr;
                    versionnumber:CARDINAL; (* Immer Null setzen !! *)
                    flags:GetLongFlagSet
                   END;

CONST DSize=130;
      FChars=30;
      WildLength=30;

TYPE FileRequestFlags=(ShowInfo,ExtSelect,Caching,GetFonts,InfoGadget,HideWilds,
                       AbsoluteXY,CachePurge,NoHalfCache,NoSort,NoDrag,SaveIn,
                       LoadIn,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24,
                       f25,f26,f27,f28,f29,f30,f31);
     FileRequestFlagSet=SET OF FileRequestFlags;

     DirType=ARRAY [0..DSize] OF CHAR;
     DirTypePtr=POINTER TO DirType;

     FileType=ARRAY [0..FChars] OF CHAR;
     FileTypePtr=POINTER TO FileType;

     PathType=ARRAY [0..DSize+FChars+1] OF CHAR;
     PathTypePtr=POINTER TO PathType;

     ESStructurePtr=POINTER TO ESStructure;
     ESStructure=RECORD
                  nextFile:ESStructurePtr;
                  nameLength:CARDINAL; (* Ohne Nullbyte am Ende *)
                  pad:CARDINAL;
                  node:ADDRESS; (* Nur interner Gebrauch *)
                  theFileName:PathType; (* Maximale Filelaenge *)
                 END;

     FRequest=RECORD
               versionNumber:CARDINAL; (* Immer Null ! *)
               title:ADDRESS;
               dir:DirTypePtr;
               file:FileTypePtr;
               pathName:PathTypePtr;
               window:WindowPtr;
               MaxExtendedSelect:CARDINAL;
               numLines:CARDINAL;
               numColumns:CARDINAL;
               devColumns:CARDINAL;
               flags:FileRequestFlagSet;
               dirNamesColor:CARDINAL;
               fileNamesColor:CARDINAL;
               deviceNamesColor:CARDINAL;
               fontNamesColor:CARDINAL;
               fontSizeColor:CARDINAL;
               detailColor:CARDINAL;
               blockColor:CARDINAL;
               gadgetTextColor:CARDINAL;
               textMessageColor:CARDINAL;
               stringNameColor:CARDINAL;
               stringGadgetColor:CARDINAL;
               boxBorderColor:CARDINAL;
               gadgetBoxColor:CARDINAL;
               reserved:ARRAY[0..17] OF CARDINAL;
               dirDate:Date;
               leftEdge:CARDINAL;
               topEdge:CARDINAL;
               fontYSize:CARDINAL;
               fontStyle:CARDINAL;
               extendedSelect:ESStructurePtr;
               hide:ARRAY[0..WildLength+1] OF CHAR;
               show:ARRAY[0..WildLength+1] OF CHAR;
               fileBufferPos:INTEGER;
               fileDispPos:INTEGER;
               dirBufferPos:INTEGER;
               dirDispPos:INTEGER;
               hidePufferPos:INTEGER;
               hideDispPos:INTEGER;
               showBufferPos:INTEGER;
               showDispPos:INTEGER;
               memory:ADDRESS; (* Der Rest ist Privat !! *)
               memory2:ADDRESS;
               lock:ADDRESS;
               privateDirBuffer:ARRAY[0..DSize+1] OF CHAR;
               fileInfoBlock:FileInfoBlockPtr;
               numEntries:INTEGER;
               numHiddenEntries:INTEGER;
               fileStartNumber:INTEGER;
               deviceStartNumber:INTEGER
              END;
     FRequestPtr=POINTER TO FRequest;

     ScrollStruct=RECORD
                   topEntryNumber:LONGCARD;
                   numEntries:LONGCARD;
                   lineSpacing:CARDINAL;
                   NumLines:LONGCARD;
                   propGadget:GadgetPtr;
                   reDrawAll:PROC;
                   readMore:PROC;
                   scrollAndDraw:PROC;
                   versionNumber:INTEGER;
                   rfu1:LONGCARD;
                   rfu2:LONGCARD
                  END;

    ChipStuff=RECORD
               arrowUp:ARRAY[0..20] OF SHORTINT;
               arrowDown:ARRAY[0..20] OF SHORTINT;
               arrowLeft:ARRAY[0..18] OF SHORTINT;
               arrowRight:ARRAY[0..18] OF SHORTINT;
               LetterR:ARRAY[0..20] OF SHORTINT;
               LetterG:ARRAY[0..20] OF SHORTINT;
               LetterB:ARRAY[0..20] OF SHORTINT;
               LetterH:ARRAY[0..20] OF SHORTINT;
               LetterS:ARRAY[0..20] OF SHORTINT;
               LetterV:ARRAY[0..20] OF SHORTINT;
              END;
    ChipStuffPtr=POINTER TO ChipStuff;

    ReqLib=RECORD
            rlib:Library;
            sysLib:ADDRESS;
            dosLib:DosLibraryPtr;
            intuiLib:IntuitionBasePtr;
            gfxLib:GfxBasePtr;
            segList:ADDRESS;
            images:ChipStuffPtr;
            flags:SHORTINT;
            pad:SHORTINT;
            consoleDev:ADDRESS;
            consoleHandle:IOStdReqPtr
           END;
    ReqLibPtr=POINTER TO ReqLib;

PROCEDURE Center(VAR newWindow{8}:NewWindow;X{0}:INTEGER;
                 Y{1}:INTEGER); CODE -30;
PROCEDURE SetSize(maxValue{0}:INTEGER;ViewSize{1}:INTEGER):CARDINAL; CODE -36;
PROCEDURE SetLocation(maxValue{0}:INTEGER;
                      viewSize{1}:INTEGER;
                      value{2}:INTEGER):CARDINAL; CODE -42;
PROCEDURE ReadLocation(maxValue{0}:INTEGER;
                       viewSize{1}:INTEGER;
                       potValue{2}:INTEGER):LONGCARD; CODE -48;
PROCEDURE Format(buffer{10}:ADDRESS;
                 string{8}:ADDRESS;
                 values{9}:ADDRESS); CODE -54;
PROCEDURE FakeFunction1(); CODE -60;
PROCEDURE FakeFunction2(); CODE -66;
PROCEDURE FakeFunction3(); CODE -72;
PROCEDURE FakeFunction4(); CODE -78;
PROCEDURE FileRequester(VAR frequest{8}:FRequest):BOOLEAN; CODE -84;
PROCEDURE ColorRequester(desiredColor{0}:INTEGER):INTEGER; CODE -90;
(* Privat *)
PROCEDURE ExtendedColorRequester(VAR extColReq{8}:
                                 ExtendedColorRequest):INTEGER; CODE -192;
PROCEDURE MakeGadget(VAR buffer{8}:GadgetBlock;
                     string{9}:ADDRESS;X{0}:INTEGER;Y{1}:INTEGER); CODE -126;
PROCEDURE MakeString(VAR buffer{8}:StringBlock;
                     stringBuff{9}:ADDRESS;
                     undoBuff{10}:ADDRESS;
                     maxWidthBits{0}:INTEGER;
                     maxNumChars{1}:INTEGER;
                     X{2}:INTEGER;
                     Y{3}:INTEGER); CODE -132;
PROCEDURE MakeProp(VAR propBlock{8}:PropBlock;
                   width{0}:INTEGER;
                   heigth{1}:INTEGER;
                   flags{2}:NewGadgetFlagSet); CODE -138;
PROCEDURE DrawBox(rastPort{9}:RastPortPtr;minX{0}:INTEGER;minY{1}:INTEGER;
                  maxX{2}:INTEGER;maxY{3}:INTEGER); CODE -96;
PROCEDURE MakeButton(VAR buffer{8}:TwoImageGadget;
                     image{9}:ADDRESS;
                     image2{10}:ADDRESS;
                     width{0}:INTEGER;
                     height{1}:INTEGER;
                     depth{2}:INTEGER); CODE -102;
PROCEDURE MakeScrollBar(VAR buffer{8}:ScrollBlock;
                        flags{0}:NewGadgetFlagSet;
                        size{1}:INTEGER;
                        X{2}:INTEGER;
                        Y{3}:INTEGER); CODE -108;
PROCEDURE PurgeFile(VAR frequest{8}:FRequest); CODE -114;
PROCEDURE GetFontHeightAndWidth(VAR width{0}:INTEGER;
                                VAR height{1}:INTEGER); CODE -120; (* Kaputt *)
PROCEDURE LinkGadget(VAR buffer{8}:GadgetBlock;
                     string{9}:ADDRESS;
                     VAR newWindow{10}:NewWindow;
                     X{0}:INTEGER;
                     Y{1}:INTEGER); CODE -144;
PROCEDURE LinkStringGadget(VAR buffer{8}:StringBlock;
                           stringBuf{9}:ADDRESS;
                           undoBuf{10}:ADDRESS;
                           newWindow{11}:ADDRESS;
                           widthBits{0}:INTEGER;
                           numChars{1}:INTEGER;
                           X{2}:INTEGER;
                           Y{3}:INTEGER); CODE -150;
PROCEDURE LinkPropGadget(VAR buffer{8}:PropBlock;
                         VAR newWindow{11}:NewWindow;
                         width{0}:INTEGER;
                         height{1}:INTEGER;
                         flags{2}:NewGadgetFlagSet;
                         leftEdge{3}:INTEGER;
                         topEdge{4}:INTEGER); CODE -156;
PROCEDURE GetString(buffer{8}:ADDRESS;
                    title{9}:ADDRESS;
                    window{10}:WindowPtr;
                    visibleChars{0}:INTEGER;
                    maxChars{1}:INTEGER):BOOLEAN; CODE -162;
PROCEDURE RealTimeScroll(VAR scrollStruct{8}:ScrollStruct); CODE -168;
PROCEDURE TextRequest(VAR tRStructure{8}:TRStructure):INTEGER; CODE -174;
PROCEDURE GetLong(VAR getLongStruct{8}:GetLongStruct):BOOLEAN; CODE -180;
PROCEDURE RawKeyToAscii(code{0}:CARDINAL;
                        qualifier{1}:CARDINAL;
                        iAddress{8}:ADDRESS); CODE -186;
END req.
