- {----------------------------------------------------------------------
- Interface de l'unité MSGraph
- ----------------------------------------------------------------------}
-
- UNIT MSGraph;
-
- INTERFACE
-
- USES MSGrUtil;
-
- CONST
- { Paramètres de _SetVideoMode }
- _MaxResMode = -3; { Mode graphique la plus haute résolution }
- _MaxColorMode = -2; { Mode graphique avec la plupart des couleurs }
- _DefaultMode = -1; { Restaurer l'écran en mode d'origine }
- _TextBW40 = 0; { Texte de 40 colonnes, 16 gris }
- _TextC40 = 1; { Texte de 40 colonnes, couleur 16/8 }
- _TextBW80 = 2; { Texte de 80 colonnes, 16 gris }
- _TextC80 = 3; { Texte sur 80 colonnes, couleur 16/8 }
- _MRes4Color = 4; { 320 x 200, 4 couleurs }
- _MResNoColor = 5; { 320 x 200, 4 gris }
- _HResBW = 6; { 640 x 200, noir et blanc }
- _TextMono = 7; { Texte de 80 colonnes, noir et blanc }
- _HercMono = 8; { 720 x 348, noir et blanc pour HGC }
- _MRes16Color = 13; { 320 x 200, 16 couleurs }
- _HRes16Color = 14; { 640 x 200, 16 couleurs }
- _EResNoColor = 15; { 640 x 350, noir et blanc }
- _EResColor = 16; { 640 x 350, 4 ou 16 couleurs }
- _VRes2Color = 17; { 640 x 480, noir et blanc }
- _VRes16Color = 18; { 640 x 480, 16 couleurs }
- _MRes256Color = 19; { 320 x 200, 256 couleurs }
- _OResColor = 64; { 640 x 400, 1 des 16 couleurs (Olivetti) }
-
- { _Valeurs de l'adaptateur VideoConfig }
- _MDPA = $0001; { Monochrome Display Printer Adapter (MDPA) }
- _CGA = $0002; { Color Graphics Adapter (CGA) }
- _EGA = $0004; { Enhanced Graphics Adapter (EGA) }
- _VGA = $0008; { Video Graphics Array (VGA) }
- _MCGA = $0010; { MultiColor Graphics Array (MCGA) }
- _HGC = $0020; { Hercules Graphics Card (HGC) }
- _OCGA = $0042; { Olivetti Color Graphics Adapter (OCGA) }
- _OEGA = $0044; { Olivetti Enhanced Graphics Adapter (OEGA) }
- _OVGA = $0048; { Olivetti Video Graphics Array (OVGA) }
-
- { Valeurs du moniteur _VideoConfig }
- _Mono = $0001; { Monochrome }
- _Color = $0002; { Couleur ou couleur d'émulation améliorée }
- _EnhColor = $0004; { Couleur améliorée }
- _AnalogMono = $0008; { Monochrome analogique uniquement }
- _AnalogColor = $0010; { Couleur analogique uniquement }
- _Analog = $0018; { Modes monochrome et couleur analogiques }
-
- { Paramètres de contrôle pour _Rectangle, _Ellipse et _Pie }
- _GBorder = 2; { Dessiner le contour seulement }
- _GFillInterior = 3; { Remplir avec la couleur actuelle, remplir le masque }
-
- { Paramètres de contrôle pour _ClearScreen }
- _GClearScreen = 0;
- _GViewport = 1;
- _GWindow = 2;
-
- { Directions pour _ScrollTextWindow }
- _GScrollUp = 1;
- _GScrollDown = -1;
-
- { Option max rows pour _SetTextRows et _SetVideoModeRows }
- _MaxTextRows = -1;
-
- { "Verbes d'action" pour _PutImage et _SetWriteMode }
- _GPSET = 3;
- _GPRESET = 2;
- _GAND = 1;
- _GOR = 0;
- _GXOR = 4;
-
- { Valeurs de couleur universelles }
- _Black = $000000;
- _Blue = $2a0000;
- _Green = $002a00;
- _Cyan = $2a2a00;
- _Red = $00002a;
- _Magenta = $2a002a;
- _Brown = $00152a;
- _White = $2a2a2a;
- _Gray = $151515;
- _LightBlue = $3F1515;
- _LightGreen = $153f15;
- _LightCyan = $3f3f15;
- _LightRed = $15153f;
- _LightMagenta = $3f153f;
- _Yellow = $153f3f;
- _BrightWhite = $3f3f3f;
-
- { Couleurs du mode _EResNoColor }
- _ModeFOff = 0;
- _ModeFOffToOn = 1;
- _ModeFOffToHi = 2;
- _ModeFOnToOff = 3;
- _ModeFOn = 4;
- _ModeFOnToHi = 5;
- _ModeFHiToOff = 6;
- _ModeFHiToOn = 7;
- _ModeFHi = 8;
-
- { Couleurs du mode _TextMono }
- _Mode7Off = 0;
- _Mode7On = 1;
- _Mode7Hi = 2;
-
- { Valeurs de retour pour _GrStatus }
- _GrOk = 0;
- _GrError = -1;
- _GrModeNotSupported = -2;
- _GrNotInProperMode = -3;
- _GrInvalidParameter = -4;
- _GrFontFileNotFound = -5;
- _GrInvalidFontFile = -6;
- _GrCorruptedFontFile = -7;
- _GrInsufficientMemory = -8;
- _GrInvalidImageBuffer = -9;
- _GrNoOutput = 1;
- _GrClipped = 2;
- _GrParameterAltered = 3;
-
- TYPE
- { Structure pour _GetVideoConfig visible pour l'utilisateur }
- _VideoConfig = RECORD
- NumXPixels : Integer; { Résolution horizontale }
- NumYPixels : Integer; { Résolution verticale }
- NumTextCols : Integer; { Colonnes de texte disponibles }
- NumTextRows : Integer; { Lignes de texte disponibles }
- NumColors : Integer; { Nombre de couleurs disponibles }
- BitsPerPixel : Integer; { Bits par pixel }
- NumVideoPages : Integer; { Pages vidéo disponibles }
- Mode : Integer; { Mode vidéo actuel }
- Adapter : Integer; { Adaptateur actif }
- Monitor : Integer; { Moniteur actif }
- Memory : Integer; { Mémoire vidéo en K octets }
- END;
-
- { Structure pour spécifier des motifs de remplissage }
- _FillMask = ARRAY[0..7] OF Byte;
-
- { Valeur de retour de _GetViewCoord,.. }
- _XYCoord = RECORD
- xcoord : Integer;
- ycoord : Integer;
- END;
-
- { Structure pour la paire de coordonnées de fenêtre }
- _WXYCoord = RECORD
- wx : Double; { Fenêtre x coordonnée }
- wy : Double; { Fenêtre y coordonnée }
- END;
-
- { Structure pour _GetFontInfo }
- _FontInfo = RECORD
- FontType : Integer; { Bit 0 fixé=vecteur, effacé=bit map }
- Ascent : Integer; { Pixels de haut en bas }
- PixWidth : Integer; { Largeur en pixels, 0 = proportionnel }
- PixHeight : Integer; { Hauteur des caractères en pixels }
- AvgWidth : Integer; { Largeur moyenne des caractères en pixels }
- FileName : CSTRING[80];{ Nom de fichier incluant le chemin }
- FaceName : CSTRING[31];{ Nom de la police de caractères }
- END;
-
- {------------------------------------------------------------------
- Procédures et fonctions MSGraph
- -------------------------------------------------------------------}
-
- { Installation et configuration }
- Function _GrStatus:Integer;
- Function _SetVideoMode(mode:Integer):Integer;
- Function _SetVideoModeRows(mode,rows:Integer):Integer;
- Procedure _SetActivePage(page:Integer);
- Procedure _SetVisualPage(page:Integer);
- Function _GetActivePage:Integer;
- Function _GetVisualPage:Integer;
- Procedure _GetVideoConfig(VAR vc:_VideoConfig);
-
- { Systèmes de coordonnées }
- Procedure _SetViewOrg(x,y:Integer;Var org:_XYCoord);
- Procedure _SetViewport(x1,y1,x2,y2:Integer);
- Procedure _SetClipRgn(x1,y1,x2,y2:Integer);
- Procedure _SetWindow(FInvert:Boolean; x1,y1,x2,y2:Double);
- Procedure _GetViewCoord(x,y:Integer;Var xy:_XYCoord);
- Procedure _GetViewCoord_w(x,y:Double;Var xy:_XYCoord);
- Procedure _GetViewCoord_wxy(Var wxy:_WXYCoord; Var xy:_XYCoord);
- Procedure _GetPhysCoord(x, y:Integer;Var xy:_XYCoord);
- Procedure _GetWindowCoord(x, y:Integer; Var wxy:_WXYCoord);
- Procedure _GetCurrentPosition(Var xy:_XYCoord);
- Procedure _GetCurrentPosition_wxy(Var wxy:_WXYCoord);
-
- { Routines de sortie }
- Procedure _ClearScreen(area:Integer);
- Procedure _MoveTo(x,y:Integer);
- Procedure _MoveTo_w(wx,wy:Double);
- Procedure _LineTo(x,y:Integer);
- Procedure _LineTo_w(wx,xy:Double);
- Procedure _Rectangle(control,x1,y1,x2,y2:Integer);
- Procedure _Rectangle_w(control:Integer; wx1, wy1, wx2, wy2:Double);
- Procedure _Rectangle_wxy(control:Integer; Var wxy1,wxy2:_WXYCoord);
- Procedure _Ellipse(control,x1, y1, x2, y2:Integer);
- Procedure _Ellipse_w(Control:Integer; wx1, wy1, wx2, wy2:Double);
- Procedure _Ellipse_wxy(Control:Integer; VAR wxy1, wxy2:_WXYCoord);
- Procedure _Arc(x1, y1, x2, y2, x3, y3, x4, y4 : Integer);
- Procedure _Arc_wxy(Var wxy1, wxy2, wxy3, wxy4:_WXYCoord);
- Procedure _Pie(control, x1, y1, x2, y2, x3, y3, x4, y4:Integer);
- Procedure _Pie_wxy(control:Integer;Var wxy1, wxy2, wxy3, wxy4:_WXYCoord);
- Procedure _FloodFill(x, y, boundary:Integer);
- Procedure _FloodFill_w(wx, wy:Double; boundary:Integer);
-
- { Informations sur le plus récent _Arc ou _Pie }
- Function _GetArcInfo(Var StartPoint, EndPoint, FillPoint:_XYCoord):Boolean;
-
- { Routines de couleur de pixel }
- Procedure _SetPixel(x, y:Integer);
- Procedure _SetPixel_w(wx, wy:Double);
- Function _GetPixel(x, y:Integer):Integer;
- Function _GetPixel_w(wx, wy:Double):Integer;
-
- { Routines de couleur de stylo, de style de ligne et de motif de remplissage }
- Procedure _SetColor(color:Integer);
- Function _GetColor:Integer;
- Procedure _SetLineStyle(style:Word);
- Function _GetLineStyle:Word;
- Procedure _SetWriteMode(wmode:Integer);
- Function _GetWriteMode:Integer;
- Procedure _SetFillMask(mask:_FillMask);
- Function _GetFillMask(Var mask:_FillMask):Boolean;
-
- { Sélection de la couleur de fond }
- Procedure _SetBkColor(color:LongInt);
- Function _GetBkColor:LongInt;
-
- { Routines pour définir une palette de couleurs }
- Function _RemapPalette( index:Integer;value:LongInt):LongInt;
- Procedure _RemapAllPalette(Var newpalette);
- Function _SelectPalette(Number:Integer):Integer;
-
- { Fonctions de texte }
- Function _SetTextRows(rows:Integer):Integer;
- Procedure _SetTextWindow(r1,c1,r2,c2:Integer);
- Procedure _GetTextWindow(Var r1,c1,r2,c2:Integer);
- Procedure _ScrollTextWindow(Count:Integer);
- Procedure _OutMem(TextString:CSTRING;Length:Integer);
- Procedure _OutText(TextString:CSTRING );
- Function _WrapOn(Option:Boolean):Boolean;
- Function _DisplayCursor(Toggle:Boolean):Boolean;
-
- { Routines d'attribut de curseur }
- Procedure _SetTextCursor(Attr:Word);
- Function _GetTextCursor:Word;
-
- { Routines de position de texte en cours }
- Procedure _SetTextPosition(r, c:Integer);
- Procedure _GetTextPosition(Var r, c:Integer);
-
- { Sélection de la couleur de fond }
- Procedure _SetTextColor(Color:Integer);
- Function _GetTextColor:Integer;
-
- { Images d'écran }
- Procedure _GetImage(x1,y1,x2,y2:Integer;Var image);
- Procedure _GetImage_w(wx1,wy1,wx2,wy2:Double;Var image);
- Procedure _GetImage_wxy(VAR wxy1,wxy2:_WXYCoord;Var image);
- Procedure _PutImage(x,y:Integer;Var image;action:Integer);
- Procedure _PutImage_w(wx,wy:Double;Var image;action:Integer);
- Function _ImageSize(x1,y1,x2,y2:Integer):LongInt;
- Function _ImageSize_w(wx1,wy1,wx2,wy2:Double):LongInt;
- Function _ImageSize_wxy(VAR wxy1,wxy2:_WXYCoord):LongInt;
-
- { Fonctions de polices de caractères }
- Function _RegisterFonts(pathname:CSTRING):Integer;
- Procedure _UnRegisterFonts;
- Function _SetFont(options:CSTRING):Integer;
- Procedure _OutGText(TextString:CSTRING);
- Function _GetGTextExtent(TextString:CSTRING):Integer;
- Function _GetFontInfo(Var FInfo:_FontInfo):Integer;
- Procedure _SetGTextVector(x,y:Integer);
- Procedure _GetGTextVector(Var x,y:Integer);
Dernière mise à jour : Dimanche, le 20 avril 2014