DeskPic ------- Das Bild auf dem Desktop ------------------------ DeskPic ist Freeware. Das heižt, daž Sie das Programm an Freunde, Bekannte, usw. weitergeben drfen. Es drfen KEINE Ver„nderungen am Programm oder diesem Text vorgenommen werden ohne Rcksprache mit dem Autor. Jegliche kommerzielle Nutzung dieses Programmes, sowie eine Weitergabe dieses Programmes gegen eine Gebhr, wie es z.B. bei PublicDomain-H„ndlern blich ist, ist untersagt und wird bei Zuwiderhandlung dementsprechend polizeilich verfolgt. Ich gebe keine Garantie, daž DeskPic auch auf Ihrem Rechner einwandfrei funktioniert oder nicht irgendwelche Sch„den anrichtet (was mir allerdings auch noch NIE passiert ist). Getestet habe ich DeskPic mit einem TT, und TOS3.06 in allen eingebauten Aufl”sungen und im Zusammenspiel mit einer Matrix- Grafikkarte, sowie auf einem MEGA ST mit TOS 1.03 und den dort eingebauten Aufl”sungen. Ich nehme deswegen an, daž es mit allen Aufl”sungen laufen wird, welche 1, 2, 4, und 8 Bitplanes untersttzen. Bei mir funktioniert DeskPic jedenfalls auch mit MiNT0.95 und dem Farbmodus der Matrix-Grafikkarte _einwandfrei_. EINLEITUNG ---------- Dies ist eine unvollst„ndige Programmdokumentation, weitere Erl„uterungen werden bei entsprechender Resonanz oder Wnschen hinzugefgt. Ich pers”hnlich mag es n„mlich berhaupt nicht Anleitungen zu schreiben und habe diese Infos in recht kurzer Zeit geschrieben, so daž stilitische Fehler durchaus vorkommen (:-). Die Idee zu diesem Programm kam mir, als ich eines sch”nen Tages auf Arbeit die T„tigkeit von XLOADIMAGE (mit dem Parameter '- onroot') auf einer SUN betrachten durfte. Dort war es doch tats„chlich m”glich daž man w„hrend des normalen Arbeitens den grauen Desktophintergrund von XWindows mit einem selbsgew„hlten Bild versch”nern konnte. Da das ganze ja auch auf IBM-Kompatiblen Rechnern mit Windows fkt., sollte es doch kein Problem sein auch auf ATARI-Rechnern etwas „hnliches zu programmieren. Womit wir bei der eigentlichen Aufgabe von DeskPic sind. Es soll den doch ansonsten trostlosen Desktophintergrund mit schmucken Bildern versch”nern. Da ich zudem kurz danach von Karsten Isakovic erfuhr, daž er an etwas in der Art schon arbeitet verfiel der Gedanke daran doch wieder in einige dunklere Regionen meiner grauen Zellen. Nachdem eine l„ngere Wartezeit keine Verbesserung meines Wunsches schaffte machte ich mich kurzerhand daran etwas eigenes in dieser Richtung zu programmieren, doch noch nicht zu ver”ffentlichen. Da nun jedoch schon einige Leute Interesse an diesem Utility bekundet hatten "Hallo Christian und Peter, Ihr seid gemeint." und zudem schon ein anderes Utility in der Richtung aufgetauchte, welches jedoch nicht meinen Ansprchen gengte, wurde es langsam Zeit mein Utility der ™ffentlichkeit einmal vorzulegen, an dem ich sporadisch von Zeit zur Zeit etwas verbessere. VORAUSSETZUNGEN --------------- DeskPic sollte auf jedem ATARI-Computer der Serie ST/STE oder TT funktionieren. Eine spezielle Version fr Rechner mit FPU wie im TT gibt es nicht, da so gut wie keine Floating-Points genutzt werden und eine spezielle Version fr CPU's >= 68020 gerade einmal 8% an Geschwindigkeitsvorteil beim Laden von Bildern bringt. Ob es allerding korrekt mit MultiTos laufen wird, kann ich nicht mit Bestimmtheit sagen. DeskPic funktioniert in allen mir bekannten Aufl”sungen, solange die Farbanzahl nicht 256 bersteigt. Zus„tzlich dazu fkt. DeskPic auch im TrueColor-Modus der Grafikkarten von Matrix und Spektrum, wobei als TrueColor-Format 24Bit-Targa-Bilder geladen werden k”nnen. Der Speicherverbrauch hierbei ist jedoch enorm. Mitgelieferte Dateien: .\deskpic\auto\deskpic.prg Das Programm fr den AUTO-Ordner .\deskpic\deskpic.acc Das Accessorie .\deskpic\deskpic.inf Eine Infodatei als Beispiel Das Programm 'DESKPIC.PRG' installiert sich resident im Rechner mittels XBRA-Kennung und Cookie Eintragung. Die Kennung lautet in beiden F„llen 'DEPI'. Dabei wird der VDI-, BIOS- und (mittels der Datei 'deskpic.inf' w„hlbar) der GEMDOS-Vektor und der System- Vektor von etv_term verbogen. Das Accessorie 'DESKPIC.ACC' ist das entsprechende Accessorie zu dem residenten Teil und kommuniziert mittels Cookie-Eintrag mit diesem. Das Accessorie allociert resident Speicher, der je nach aktueller Bildschirmaufl”sung unterschiedlich grož ist. Berechnen l„žt sich der Speicherverbrauch wie folgt: "((XAufl”sung+7)/8) * YAufl”sung * AnzahlDerBitplanes". Bei einer Aufl”sung von 1024*768 in 256 Farben (8 Bitplanes) werden also alleine fr das Hintergrundbild 786432 Bytes allociert. Zus„tzlich dazu werden ca. 150KB fr DeskPic selbst ben”tigt, woraus folgt, daž man fr dieses Utility schon einiges an Speicher haben sollte, wenn man noch einigermažen mit seinem Rechner arbeiten m”chte. INSTALLATION ------------ Kopieren Sie die Datei DESKPIC.PRG in Ihren Auto-Ordner (Eine spezielle Reihenfolge der darin enthaltenen Programme ist nicht relevant). Das Accessory DESKPIC.ACC sollte in das Verzeichnis fr Ihre Accessories (In der Regel die Root von Lauwerk C). Booten sie Ihren Rechner neu (Kalt- oder Warmstart). BEDIENUNG --------- Die Bedienung des Accesories ist eigentlich kinderleicht, doch hier die Beschreibung: Wenn man den Accesorie-Eintrag namens DeskPic ausgew„hlt hat, erscheint eine Dialogbox, welche die Schnittstelle zum Benutzer darstellt. In dem umrahmten K„stchen mit Titel 'Hintergrund' sind 2 Schalter zu finden, die die Bezeichnung 'Ein' und 'Aus' haben. W„hlt man den Schalter 'Ein' wird das Hintergrundbild dargestellt. W„hlt man den Schalter 'Aus' wird das Hintergrundbild nicht dargestellt. In dem umrahmten K„stechen mit dem Titel 'Bild' ist ein Knopf zu finden, der die Bezeichnung 'laden' tr„gt. Wird dieser Knopf angew„hlt, ”ffnet sich eine Fileselectbox um ein Bild fr den Hintergrund zu laden. Ladbare Dateiformate sind: .GIF GIF87a und GIF89a .IMG monochrome IMG's und farbige XIMG's .PAC monochrome STAD-Bilder .PI? Degas-Bilder (nur ungepackte DEGAS-Bilder) .NEO Neochrombilder .DOO Doodle-Bilder .TGA unkomprimierte 24Bit-Targa Bilder Wurde eines der obigen Bildformate ausgew„hlt verwandelt sich der Mauszeiger in ein Diskettensymbol solange die Datei geladen wird. Einzige Ausnahme ist hier das GIF-Format, bei dem sich der Mauszeiger in einen animierten Rechenschieber verwandelt solange das GIF-Bild geladen und entpackt wird. Wurde das ausgew„hlte Bild erfolgreich geladen (Wann ein Nichterfolg auftreten k”nnte kann man weiter unten nachlesen) wurde, dann wird das Hintergrundbild automatisch eingeschaltet. Andernfalls „ndert sich nichts an den Einstellungen und eine Fehlermeldung erscheint. Der Knopf mit der Bezeichnung 'Speichern' sichert das momentan geladene Bild in einem Schnellladeformat ab, welches nur in exakt der gleichen Aufl”sung und mit der gleichen Grafikkarte ladbar ist bzw. das Bild korrekt anzeigt. Wer hat schliežlich Lust nach demm Booten jeweils das Entpacken eines GIF-Bildes abzuwarten (:-). Ein weitere Knopf ist mit der Bezeichnung 'Info' zu finden, der bei Aktivierung eine weitere Dialogbox mit einigen Infos zu dem Programm DeskPic ausgibt. Diese Dialogbox kann verlassen werden, indem sich Maus zu Maus gesellt (;-). Der Knopf mit der Bezeichnung 'Sichern' speichert den momentanen Pfad und den Namen des geladenen Bildes in einer Datei namens 'deskpic.inf' ab, die es erm”glicht selbiges Bild nach einem Reset automatisch als Desktophintergrund anzumelden. Wenn DeskPic zum Zeitpunkt des Sicherns ausgeschaltet ist, ist es nach entsprechender Rckfrage auch m”glich das momentan aktive Programm in eine Art Ausnahmeliste einzubinden, deren Daten ebenfalls in der Datei 'deskpic.inf' gespeichert werden. Zus„tzlich zu den Bildnamen und Programmnamen wird die die aktuelle Bildschirmaufl”sung und die Anzahl der momentan aktiven Bitplanes gespeichert. Der Knopf mit der Bezeichnung 'Ausgang' schliežt nach dessen Auswahl die Dialogbox von DeskPic. Der letzte anw„hlbare Knopf ist der sogenannte Dragger. Wenn man ihn anw„hlt und die linke Maustaste gedrckt l„žt, so kann man die Dialogbox wie bei den bekannten FlyDials verschieben. Aužerdem wird beim n„chsten ™ffnen der Dialogbox diese an der zuletzt ge”ffenten Position erscheinen. ERLŽUTERUNGEN ------------- Wenn in der Dialogbox von DeskPic der Schalter 'Ein' nicht selektierbar ist, dann wurde noch kein Bild geladen. Wenn nicht gengend freier Speicher vorhanden ist, fehlt der Dragger, und somit ist die M”glichkeit des Verschiebens der Dialogbox und der Alertboxen von DeskPic nicht gegeben. Aužerdem erh„lt man bei der Anwahl des Buttons 'INFO' nur eine Alertbox mit einem kurzen Info zu DeskPic. Wenn man ein Bild l„dt, welches kleiner als der sichtbare Bildschrm ist, werden die Fl„chen die ansonsten frei bleiben wrden mit dem geladenen Bild gemustert, so daž man z.B. bei Eschergrafiken nicht bemerkt, daž das eigentliche Bild kleiner ist als der sichtbare Bildschirm. Wenn ein Bild geladen wird, das gr”žer als der sichtbare Bildschirm ist, so wird ledigiglich ein fester Teilbereich dargestellt. Dieser Teilbereich reicht in der horizontalen von 0 bis zur horizontalen Bildschirmaufl”sung und in der vertikalen von 0 bis zur vertikalen Bildschirmaufl”sung minus der H”he der Menleiste. Wird der Button 'SICHERN' angew„hlt und es existiert schon eine Datei namens 'deskpic.inf', so versucht DeskPic die neu hinzugekommenen Informationen am Anfang der Datei einzufgen. Bei zu geringem Speicher (wenn die Infodatei nicht komplett in den Speicher geladen werden kann) wird die neue Information an die Datei angeh„ngt. Das Bildformat GFB: ------------------- Es handelt sich um ein Format, welches ich fr das Programm GemFrac einmal entwickelt hatte. Folgende Daten sind in diesem Bildforat zu finden: 4 Bytes Kennung (GF25 in der vorliegenden Version) 4 Bytes Anzahl der Farben. 4 Bytes Breite des Bildschirms 4 Bytes H”he des Bildschirms 4 Bytes Gr”áe des zu allozierenden Puffers fr den Bildschirm n Bytes Grafikdaten, wobei n = ((Bildbreite+7)/8)*Bildh”he*Planes, was der gr”áe allocierten Puffers entspricht. 768 Bytes Farbtabelle => max. 256 Farben. Die Datei DESKPIC.INF: ---------------------- Wenn jemand diese Infodatei 'deskpic.inf' mittels eines Editor ver„ndern m”chte, fhre ich hier das Format auf, welches nur ASCII-Zeichen enthalten sollte und jedes angefhrte Schlsselwort durch Leerzeichen getrennt sein muž: Daten fr automatisches An/Ausschalten: 1. Wort: Kennung: '#noautoset' 2. Wort: Name des Cookies, bei dessen Vorhandensein DeskPic sich nicht in den GemDos-Trap einklinkt und somit ein automatische An/Ausschalten nicht beachtet wird. 3. Wort: horizontale Bildschirmaufl”sung in der DeskPic sich nicht automatisch an/ausschalten soll. 4. Wort: vertikale Bildschirmaufl”sung in der DeskPic sich nicht automatisch an/ausschalten soll. 5. Wort: Anzahl der BitPlanes einer Bildschirmaufl”sung in der DeskPic sich nicht automatisch an/ausschalten soll. Wird bei Punkt 2-5 stattdessen die Kennung 'EGAL' eingetragen, nimmt DeskPic an sie sind in jedem Fall wahr. Falls es somit Probleme mit einem anderen TSR-Programm geben sollte, das einen Cookie installiert, l„žt sich somit in den meisten F„llen das Problem beheben, indem man als 2. Wort die Cookie-Kennung des Probleme bereitenden Programmes angibt oder mir eine genaue Fehlermeldung zukommen l„žt. Wenn es bei anderen Programmen Probleme geben sollte oder man es nicht m”chte, daž DeskPic sich in den GemDos-Trap einklinkt, so sollte man als 2. Wort die Kennung 'egal' in das Infofile schreiben. HINWEIS: Dies sollte man in jedem Fall ersteinmal probieren, wenn Probleme mit DeskPic auftauchen sollten, da hierdurch der GEMDOS- Vektor und der Systemvektor fr etv_term _nicht_ verbogen wird. Daten fr Bilder: 1. Wort: Kennung '#bilddaten:' 2. Wort: absoluter Pfad des zu ladenden Bildes incl. Bildname. (Wildcards sind nicht erlaubt). 3. Wort: horizontale Bildschirmaufl”sung in der das Bild automatisch geladen werden soll. 4. Wort: vertikale Bildschirmaufl”sung in der das Bild automatisch geladen werden soll. 5. Wort: Anzahl der BitPlanes einer Bildschirmaufl”sung in der das Bild automatsich geladen werden soll. Wird bei Punkt 2 stattdessen die Kennung 'KEIN_BILD' eingetragen, so stellt DeskPic in dieser Aufl”sung kein Bild nach dem Booten oder einem Aufl”sungswechsel dar. Wird bei Punkt 3-5 stattdessen die Kennung 'EGAL' eingetragen, nimmt DeskPic an sie sind in jedem Fall wahr. Daten fr Programme: 1. Wort: Kennung '#programmdaten:' 2. Wort: absoluter Pfad des Programmes incl. Programmname, oder nur der Programmname (Wildcards sind nicht erlaubt). 3. Wort: horizontale Bildschirmaufl”sung in der das die Regel fr das Ausnahmeprogramm zutreffen soll. 4. Wort: vertikale Bildschirmaufl”sung in der die Regel fr das Ausnahmeprogramm zutreffen soll. 5. Wort: Anzahl der BitPlanes in der die Regel fr das Ausnahmeprogramm zutreffen soll. Wird bei Punkt 3-5 stattdessen die Kennung 'EGAL' eingetragen, nimmt DeskPic an sie sind in jedem Fall wahr. Somit hat man die M”glichkeit fr seine bevorzugten Bildschirmaufl”sungen automatisch verschiedene Bilder laden zu lassen. Wissenswert dabei ist noch, daž DeskPic die entsprechenden Daten sequentiell abarbeitet und bei einem Eintrag mit der Kennung 'KEIN_BILD' fr die aktuelle Aufl”sung alle weiteren Daten im Infofile ignoriert. Aužerdem wird versucht eine Doppeleintragung im Infofile zu verhindern. Beispiel: #noautoset: egal egal egal 4 #bilddaten: f:\puzzle.gif egal egal 4 #bilddaten: e:\pics\dragon.gif 1024 768 8 #bilddaten: e:\pics\img\usr\cool_dog.img egal egal egal #programmdaten: calamus.prg egal egal 8 #programmdaten: calamus egal egal 4 #programmdaten: charlimg.prg egal egal 8 #programmdaten: charlimg.prg egal egal 4 #programmdaten: studio.prg egal egal 8 #programmdaten: studio.prg egal egal 4 #programmdaten: titanen.prg egal egal egal PROBLEME -------- Mit einigen Dateiformaten kann es zu Problemen fhren, die sich darin „užern, daž sie unter einigen Aufl”sungen nicht geladen werden k”nnen. Ausnahmen sind hier die Dateiformate GIF87a, GIF89a und monochrome IMG's, welche in jeder Aufl”sung ladbar sind in der DeskPic funktioniert. Farbige GIF-Bilder werden im monochromen Aufl”sungen gedithert dargestellt, wobei die Qualit„t jedoch nicht sehr berauschend ist. Ich empfehle in solchen F„llen das GIF-Bild mit einem anderen Programm zu dithern und in ein monchromes IMG-Bild zu wandeln. In Aufl”sungen mit 4 oder 16 Farben werden GIF-Bilder grunds„tzlich in Graustufen dargestellt, wenn die Anzahl der darin enthaltenen Farben gr”žer ist als die darstellbaren Farben. Farbige IMG's sogenannte XIMG's k”nnen lediglich in Aufl”sungen mit der gleichen Farbanzahl oder Aufl”sungen mit einer gr”žeren Farbanzahl dargestellt werden. Farbige DEGAS-Bilder und Neochrom-Bilder k”nnen nur in der Aufl”sung dargestellt werden, in der sie erzeugt wurden oder in Aufl”sungen die eine gleiche Farbanzahl aufweisen. Targa Bilder werden lediglich im TrueColor-Modus der Frabgrafikkarten von Matrix oder Spektrum im Echtfarbformat dargestellt. In den Farbmodi mit bis zu 8 BitPlanes werden die Targa-Bilder in Graustufen und im Monochrommodus werden diese gedithert dargestellt. Bei nicht gengend vorhandenem Speicher kann es vorkommen, daž einige Bilder nicht geladen werden k”nnen, da einerseits der tempor„re Speicher fr diese Bilder nicht angelegt werden kann, oder fr ein transformieren vom Standardformat in das ger„teabh„ngige Format des VDI kein Speicher mehr vorhanden ist. Der erste Fall kann bei STAD-Bildern, der letze Fall bei GIF- Bildern auftreten und beide F„lle k”nnen bei XIMG-Bildern auftreten. Ob auch XIMG's mit 4 Farben korrekt geladen dargestellt werden, kann ich leider nicht beurteilen, da es mir nicht m”glich war mit den mir zu Verfgung stehenden Programmen solch ein Bildformat zu erzeugen. PROBLEML™SUNGEN --------------- Damit auch die Leute DeskPic verwenden k”nnen, die nicht allzuviel Speicher ihr Eigen nennen k”nnen, werde ich evtl. demn„chst auch eine Light-Version von DeskPic herausgeben, wo das einzig ladbare Bildformat das monochrome IMG-Format und das .GFB- Format sein wird. Damit nicht die 16 vor DR vorgegebenen VDI-Farben beim Laden von GIF-Bildern (bei den anderen Bildformaten ist mir das zu aufwendig, wenn nicht gar fast unm”glich) zerst”rt werden (das macht sich z.B bei ANSI-Farbgrafiken in Mailboxen sonst recht schlecht), werde ich versuchen in einer der n„chsten Versionen Farbanpassungen zu implementieren, die dann ber einen weiteren Schalter erreichbar sind. Damit man auch andere Teilbereiche eines Bildes betrachten kann, das gr”žer ist als die eigentliche Bildschimaufl”sung werde ich h”chstwahrscheinlich noch eine M”glichkeit einbauen die ein Verschieben dieses Teilbereiches erlauben. Das hat dann jedoch zur Folge, daž kurzfristig mehr Speicher benutzt wird. Wenn mir jemand eine besser funkionierende Methode fr das momentan genutze Dithern (z.B. ein Dithern mittels Floyd- Steinberg-Algorithmus) als C-Quellcode zur Verfgung stellt baue ich ihn gerne in das Programm mit ein. Momentan habe ich wichtigeres zu tun (:-). Wenn mir jemand einen Algorithmus fr Farbdithering als C- Quellcode zur Verfgung stellen kann baue ich diesen Algorithmus natrlich liebend gerne ein und implementiere dann auch Laderoutinen fr Echtfarbbilder. In beiden F„llen w„re ich demjenigen sehr dankbar, es wre mir eine Menge Arbeit ersparen. šbrigends reichen mir schon Hinweise wo ich entsprechende Algorithmen fr das Colodithering finden kann (z.B. in welchen Dokumentationen). SCHLUžBEMERKUNG --------------- Verbesserungsvorschl„ge, Wunschlisten, Fehlermeldungen, Drohungen, Lobeshymnen oder gar Geldspenden sind an folgende Adresse zu schicken: Norbert Marschalleck Ehrenpfortensteig 4 W-1000 Berlin 28 Tel.: 030/ 404 27 17 (19h-24h) Kto.: 7774268 bei Deutsche Bank AG, BLZ 100 700 00 Mausnetz: Norbert Marschalleck @ B InterNet: nexus@cs.tu-berlin.de norbert@charly.ipk.fhg.de