home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Computer Club Elmshorn Atari PD
/
CCE_PD.iso
/
pc
/
0400
/
CCE_0447.ZIP
/
CCE_0447.PD
/
SNAPHELP
/
SNAPHELP.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-02-06
|
5KB
|
198 lines
{$S30}
PROGRAM snaphelp ;
{-----------------------------------------------------------------------------}
{ Dieses Programm erlaubt das Einlesen aller bekannten Bildfileformate und }
{ ermöglicht das Arbeiten mit Snapshot ! Außerdem kann das Bild im DEGAS- }
{ Format abgespeichert werden !! }
{ }
{ (c) Thomas Proffen , RHEINBACH }
{-----------------------------------------------------------------------------}
CONST
{$I C:\GEM\GEMCONST.PAS }
{$I C:\SNAP\SNAPHELP.I }
TYPE
{$I C:\GEM\GEMTYPE.PAS }
screen = ARRAY [1..16000] OF integer ;
file_type = FILE OF integer ;
string_type = PACKED ARRAY [1..30] OF char ;
bild_zeiger = ^screen ;
VAR
menu_zei : Menu_Ptr ;
nachricht : Message_Buffer ;
dummy, button, event : integer ;
bild : bild_zeiger ;
feld : screen ;
datei : file_type ;
maske, datei_name : string ;
{$I C:\GEM\GEMSUBS.PAS }
{---------------------- Betriebssystemaufrufe --------------------------}
FUNCTION bild_adresse : bild_zeiger ; XBIOS (3) ;
FUNCTION Fread (kanal : integer ; size : long_integer ; VAR buff : screen)
: long_integer ; GEMDOS ($3F) ;
FUNCTION Fwrite (kanal : integer ; size : long_integer ; VAR buff : screen)
: long_integer ; GEMDOS ($40) ;
FUNCTION Fopen (VAR dat_name : string_type ; mode : integer)
: integer ; GEMDOS ($3D) ;
PROCEDURE Fclose (nr : integer) ; GEMDOS ($3E) ;
{-------- Do_Abbruch : Beendet das Programm nach Rückfrage -------------------}
PROCEDURE Do_Abbruch ;
BEGIN
button := Do_Alert ('[2][Wirklich abbrechen ?][ Ja | Nein ]', 1) ;
IF button = 1 THEN
BEGIN
Free_Resource ;
Exit_Gem ;
Halt ;
END ;
END ;
{-------- Draw_Bild : Bringt Bild auf den Bildschirm -------------------------}
PROCEDURE Draw_Bild ;
VAR
index : integer ;
BEGIN
Hide_Mouse ;
{$P-}
bild^ := feld ;
{$P+}
Draw_Menu (menu_zei) ;
Show_Mouse ;
END ;
{-------- Do_Save : Speichert das Bild im DEGAS-Format -----------------------}
PROCEDURE Do_Save ;
VAR
index, nr : integer ;
count : long_integer ;
BEGIN
maske := 'A:\*.PI3' ;
IF Get_In_File (maske, datei_name) THEN
BEGIN
Draw_Bild ;
Set_Mouse (M_Bee) ;
rewrite (datei, datei_name) ;
nr := handle (datei) ;
datei^ := 2 ; { DEGAS, daß hohe Auflösung ! }
put (datei) ;
datei^ := 0 ; { keine Farbwerte, da monochrom ! }
FOR index := 1 TO 16 DO
put (datei) ;
count := Fwrite (nr, 32000, feld) ;
IF count <> 32000 THEN
button := Do_Alert ('[3][Fehler beim Schreiben !][Abbruch]', 1) ;
Fclose (nr) ;
Set_Mouse (M_Arrow) ;
END
ELSE
Draw_Bild ;
END ;
{-------- Do_Load : Lädt Bilder aller Formate --------------------------------}
PROCEDURE Do_Load (size : long_integer ; art : string) ;
VAR
index, offset, nr : integer ;
count : long_integer ;
dat_name : string_type ;
BEGIN
maske := art ;
IF Get_In_File (maske, datei_name) THEN
BEGIN
Draw_Bild ;
Set_Mouse (M_Bee) ;
offset := INT (size - 16000) ;
IF offset <> 0 THEN
BEGIN
reset (datei, datei_name) ;
nr := handle (datei) ;
FOR index := 1 TO offset-1 DO
get (datei) ;
END
ELSE
BEGIN
FOR index := 1 TO LENGTH (datei_name) DO
dat_name[index] := datei_name[index] ;
nr := Fopen (dat_name, 0) ;
END ;
count := Fread (nr, 32000, feld) ;
IF count <> 32000 THEN
button := Do_Alert ('[3][Fehler beim Lesen !][Abbruch]', 1) ;
Fclose (nr) ;
Set_Mouse (M_Arrow) ;
END ;
Draw_Bild ;
END ;
{-------- Event_Loop : Überwacht das Menü ------------------------------------}
PROCEDURE Event_Loop ;
BEGIN
Draw_Bild ;
WHILE true DO
BEGIN
event := Get_Event (E_Message , 0, 0, 0, 0, false, 0, 0, 0, 0,
false, 0, 0, 0, 0, nachricht, dummy, dummy,
dummy, dummy, dummy, dummy) ;
IF nachricht[0] = MN_Selected THEN
BEGIN
Menu_Normal (menu_zei, nachricht[3]) ;
CASE nachricht[4] OF
degas : Do_Load (16017, 'A:\*.PI3') ;
doodle : Do_Load (16000, 'A:\*.ART') ;
mandel : Do_Load (16012, 'A:\*.MAN') ;
save : Do_Save ;
ende : Do_Abbruch ;
END ;
END ;
END ;
END ;
{---------------------- Hauptprogramm ---------------------------}
BEGIN
bild := bild_adresse ;
IF Init_Gem >= 0 THEN
BEGIN
IF NOT Load_Resource ('SNAPHELP.RSC') THEN
BEGIN
button := Do_Alert ('[3][RSC-File defekt][Abbruch]', 0) ;
Exit_Gem ;
Halt ;
END ;
Find_Menu (menu, menu_zei) ;
Draw_Menu (menu_zei) ;
Init_Mouse ;
Event_Loop ;
END ;
END.