(*******************************************************************************
 : Program.         VilIntuiSupD.def
 : Author.          Carsten Wartmann (Crazy Video)
 : Address.         Wutzkyallee 83, 12353 Berlin
 : Phone.           030/6614776
 : E-Mail           C.Wartmann@AMBO.in-berlin.de (bevorzugt)
 : E-Mail           Carsten_Wartmann@tfh-berlin.de
 : Version.         1.0
 : Date.            16.Nov.1994
 : Copyright.       Freeware
 : Language.        Modula-2
 : Compiler.        M2Amiga V4.3d
 : Contents.        Macht die VilIntuiSup.library für MODULA-2 (M2Amiga)
 : Contents.        Programmierer nutzbar.
 : Contents.        Enthält Die Definitionen der Tags, Const. etc. für
 : Contents.        die VilIntuiSup.library
*******************************************************************************)

DEFINITION MODULE VilIntuiSupD ;


FROM ExecD      IMPORT Node ;

FROM IntuitionD IMPORT ScreenPtr ;

FROM UtilityD   IMPORT tagUser ;

FROM SYSTEM     IMPORT ADDRESS,BYTE ;

IMPORT R;


CONST tavisErrOk               = 0 ;
      tavisErrNoMem            = 1 ;
      tavisErrModeNotAvailable = 2 ;
      tavisErrDimToBig         = 3 ;
      tavisErrDimToDepth       = 4 ;
      tavisErrDoubleBufToBig   = 5 ;
      tavisErrCantOpenScreen   = 6 ;

      InvalidID                = 0FFFFFFFFH ;

      VilZero         = 000H ;
      VilOne          = 00EH ;
      VilScrCopy      = 00DH ;
      VilNotScrCopy   = 0D0H ;
      VilScrAnd       = 005H ;
      VilNotScrAnd    = 050H ;
      VilScrPaint     = 06DH ;
      VilMergePaint   = 0D6H ;
      VilScrInvert    = 059H ;
      VilNotScrInvert = 095H ;
      VilScrErase     = 009H ;
      VilNotScrErase  = 090H ;
      VilScrOrNot     = 0ADH ;
      VilNotScrOrNot  = 0DAH ;
      VilDstInvert    = 00BH ;

      VilModeNameLen  = 40 ;



TYPE Dimension = RECORD              (* für VillageOpenScreen, sollte nicht *)
      ViewModeID : LONGCARD ;        (* mehr benutzt werden .               *)
      width      : CARDINAL ;
      height     : CARDINAL ;
      depth      : CARDINAL ;
     END ;

     DimensionPtr = POINTER TO Dimension ;


     VilCustomModeNode = RECORD
       node      : Node ;
       text      : ARRAY [0..VilModeNameLen] OF CHAR ;
       displayID : LONGCARD ;
       width     : CARDINAL ;
       height    : CARDINAL ;
       depth     : CARDINAL ;
     END ;

     VilCustomModeNodePtr = POINTER TO VilCustomModeNode ;


     VilCopyRecord = RECORD
       scrAdr   : ADDRESS ;
       dstAdr   : ADDRESS ;
       scrPitch : CARDINAL ;
       dstPitch : CARDINAL ;
       width    : CARDINAL ;
       height   : CARDINAL ;
       rop      : LONGCARD ;
     END ;

     VilCopyRecordPtr = POINTER TO VilCopyRecord ;


     VilFillRecord = RECORD
       dstAdr   : ADDRESS ;
       dstPitch : CARDINAL ;
       width    : CARDINAL ;
       height   : CARDINAL ;
       color    : LONGINT ;
     END ;

     VilFillRecordPtr = POINTER TO VilFillRecord ;



    TavisTags=(tavisDummy:=tagUser+4710,
               tavisMinDepth,
               tavisMaxDepth,
               tavisMinHeight,
               tavisMaxHeight,
               tavisMinWidth,
               tavisMaxWidth,
               tavisWindowTitle,
               tavisListview,
               tavisOkGadget,
               tavisCancelGadget,
               tavisHelpText,
               tavisAboutText,
               tavisNoticeText,
               tavisChooseText,
               tavisMenuQuit,
               tavisMenuHelp,
               tavisMenuAbout,
               tavisMenuProject,
               tavisObsolete1,
               tavisObsolete2,
               tavisCustomList,
               tavisObsolete3,
               tavisObsolete4,
               tavisObsolete5,
               tavisObsolete6,
               tavisObsolete7,
               tavisObsolete8,
               tavisObsolete9,
               tavisObsolete10,
               tavisObsolete11,
               tavisScreenHeight,
               tavisScreenWidth,
               tavisScreenDepth,
               tavisScreenModeID,
               tavisBestModeID,
               tavisOpenBehind,
               tavisAutoscroll,
               tavisAllowFallback,
               tavisAdditionalMem,
               tavisErrorCode,
               tavisDoubleBuffer,
               tavisDMStruct) ;



    ScreenDataTags=(sdDummy:=tagUser+4710,
                    sdScreenDepth,
                    sdScreenMemSize,
                    sdCardMemSize,
                    sdCardSegmented) ;




(* Support *)

(* Setze PP für 68000er *)

PROCEDURE SetPackedPixel(scr{R.A0} : ScreenPtr ; x{R.D2},y{R.D3} : CARDINAL ;
                                                 color{R.D4} : CARDINAL) ;

(* Setze PP für 68020er aufwärts *)
(* Wird voraussichtlich in der nächsten Version nicht mehr existieren ! *)

PROCEDURE SetPackedPixelO(scr{R.A0} : ScreenPtr ; x{R.D2},y{R.D3} : CARDINAL ;
                                                 color{R.D4} : CARDINAL) ;

(* PP in MODULA-2 implementiert für Vergleichszwecke *)
(* Wird voraussichtlich in der nächsten Version nicht mehr existieren ! *)

PROCEDURE SetPPM(scr : ScreenPtr ; x,y : CARDINAL ; color : SHORTCARD) ;



(* Setze TrueColorPixel *)

PROCEDURE SetTrueColorPixel(scr{R.A0} : ScreenPtr ; x{R.D2},y{R.D3}         : CARDINAL ;
                                                    r{R.D4},g{R.D5},b{R.D6} : CARDINAL) ;

(* Setze 15(6)BitPixel *)

PROCEDURE Set15BitPixel(scr{R.A0} : ScreenPtr ; x{R.D2},y{R.D3}         : CARDINAL ;
                                                r{R.D4},g{R.D5},b{R.D6} : CARDINAL) ;

PROCEDURE Set16BitPixel(scr{R.A0} : ScreenPtr ; x{R.D2},y{R.D3}         : CARDINAL ;
                                                r{R.D4},g{R.D5},b{R.D6} : CARDINAL) ;

(* Linienroutinen *)

(* Schnell aber ohne jeglich Sicherheitsabrage,
   Guru ruft bei einer Länge von Null !!!!!!!!!! *)
PROCEDURE LinePackedO(scr{R.A0} : ScreenPtr ; x1{R.D5},y1{R.D6},
                                             x2{R.D2},y2{R.D3},color{R.D4} : LONGINT) ;

(* In Assembler aber mit Sicherheitsabfrage *)
PROCEDURE LinePacked(scr{R.A0} : ScreenPtr ; x1{R.D5},y1{R.D6},
                                              x2{R.D2},y2{R.D3},color{R.D4} : LONGINT) ;

(* In Modula-2 implementiert. Zu Vergleichszwecken *)
(* Wird voraussichtlich in der nächsten Version nicht mehr existieren ! *)
PROCEDURE LinePackedM(scr{R.A0} : ScreenPtr ; x1{R.D2},y1{R.D3},x2,y2,
                                             color{R.D4} : INTEGER) ;

PROCEDURE LineTrueColor(scr : ScreenPtr ; x1,y1,x2,y2,r,g,b : INTEGER) ;

PROCEDURE Line15Bit(scr : ScreenPtr ; x1,y1,x2,y2,r,g,b : INTEGER) ;

PROCEDURE Line16Bit(scr : ScreenPtr ; x1,y1,x2,y2,r,g,b : INTEGER) ;

(* Entwickler Testroutine ;-) *)
PROCEDURE TstL(scr{R.A0} : ScreenPtr ; a{R.D3} : LONGINT) ;


(* Hi-Color Support*)

PROCEDURE Get15FromRGB(r{R.D4},g{R.D5},b{R.D6} : CARDINAL) : CARDINAL ;
PROCEDURE Get16FromRGB(r{R.D4},g{R.D5},b{R.D6} : CARDINAL) : CARDINAL ;


PROCEDURE Kreis(scr : ScreenPtr ; x,y,r,col : INTEGER) ;

PROCEDURE ClearScreen(scr : ScreenPtr) ;

PROCEDURE ClearBuf(scr : ScreenPtr ; bufadr : ADDRESS) ;


END VilIntuiSupD .

