Source file: /~heha/messtech/ad_da.zip/PAS/IMAGE.PAS

UNIT IMAGE; {
*****************************************************************************
*                                                                           *
*        Turbo-Pascal-Unit zum Laden von Bildern welche mit dem             *
*                                                                           *
*        Image-Editor (c) erstellt wurden.                                  *
*                                                                           *
*                                                                           *
*        Alle Rechte bei Torsten Levin und der 03 AET 89 der Technischen    *
*        Universität Chemnitz                                               *
*                                                                           *
*        Annaberg und Chemnitz im Mai 1992                                  *
*                                                                           *
*        Hardware-Voraussetzung: VGA 640x480x16                             *
h#s 11/02: Bei dieser Dateiwürscherei rollte es mir einige Male die Fußnägel
hoch, bis ich schließlich doch alles geändert habe: warum nicht gleich!
*                                                                           *
*****************************************************************************
}
INTERFACE


  Uses Crt,Graph;

  Type Dateiname=String[8];

  Procedure PutPicture(Name:PChar;X,Y:Integer);

{ Zeichnet das Bild mit dem Namen 'Name' beginnend an den Punkten
  X und Y auf den Bildschirm.

  Bedingungen: - Die Bilddatei ('Name'.PIC) muß sich im
                 aktuellen Verzeichnis befinden.

	       - Das aufrufende Programm muß sich im Grafik-Modus
                 befinden.

               - Eine eventuell benutzte Maus sollte während des
		 Prozeduraufrufes abgeschaltet werden.
}

  Procedure Getpicture(Name:PChar;Var P:Pointer;Var Size:Word);

{ Mit dieser Prozedur wird das gespeicherte Bild 'Name' in die
  dynamische Variable 'P' gespeichert und ist somit mit dem Befehl
  'PutImage' anzeigbar. Zu beachten ist, daß der durch die dyna-
  mische Variable belegte Speicherplatz wieder freigegeben werden
  muß. (z.B. mit der Prozedur 'FreeMem'). Deshalb wird von der
  Prozedur die Größe des belegten Speichers in der Variablen
  'Size' zurückgeliefert.

  Da bei Nutzung dieser Prozedur das Bild nur einmal von Disk geladen
  werden muß und dann im Speicher verbleibt, sollte diese Prozedur
  besonders dann genutzt werden, wenn ein und dasselbe Bild mehrfach
  angezeigt werden soll.

  Bedingungen: - Die Bilddatei ('Name'.PIC) muß sich im
		 aktuellen Verzeichnis befinden.

	       - Das aufrufende Programm muß sich im Grafik-Modus
		 befinden.

	       - Eine eventuell benutzte Maus sollte während des
		 Prozeduraufrufes abgeschaltet werden.

	       - Es sollte nicht vergessen werden den reservierten
		 Speicher nach Gebrauch mit "FreeMem(Pointervar,Size)"
		 wieder freizugeben.
}

IMPLEMENTATION
uses WinDos,Strings,Windows;

Procedure Putpicture(Name:PChar;X,Y:Integer);
 Var
  p:Pointer;
  size:Word;
 Begin
  GetPicture(Name,p,size);
  PutImage(X,Y,p^,Normalput);
  Freemem(p,size);
 End;

Procedure GetPicture(Name:PChar;Var P:Pointer;Var Size:Word);
 Var
  F: File;
  S: array[0..79] of Char;
 Begin
  StrCopy(S,ProgDir);
  StrECopy(StrECopy(StrRScan(S,'\')+1,Name),'.PIC');
  Assign(F,S);
  Reset(F,1);
  Size:=FileSize(F);
  GetMem(P,Size);
  BlockRead(F,P^,Size);
  Close(F);
 End;

End.
Detected encoding: OEM (CP437)1
Wrong umlauts? - Assume file is ANSI (CP1252) encoded