Wenn man den Button Speichern angeklickt, werden die Pixeldaten des Bildes in eine Datei geschrieben. Dafür wird ein extra Puffer im Programm verwaltet. Würde man die X- Pixmap verwenden, würe die Qualität von dem jeweiligen Bildschirm abhängig. Da dies nicht sein soll, wurde im Hauptspeicher ein extra Puffer für die Bilddaten ausgefaßt, mit folgender Struktur:
typedef uns char byte; class cbyte { public: byte r, g, b; }; cbyte *cbuff;
Dies sind also 24 Bit je Bildpunkt. Es wurde mit Absicht kein vorhandenes True-Color-Format verwendet, so können die Daten gleich als Stream schnell in den Speicher gelesen werden:
fread(cbuff, sizeof(cbyte), anzahl, D);
die Datei hat folgendes Format:
4 unsigned short: x1 y1 x2 y2 x cbytes
x1 y1 x2 y2 definieren den Bildausschnitt auf der X-Achse von x1 bis x2 und auf der Y-Achse von y1 bis y2. Die Anzahl der Pixel errechnet sich wie folgt:
Anzahl = (x2 - x1 +1) * (y2 - y1 +1)
Dann folgen Anzahl viele Pixel. Durch die Angabe mit x1 bis x2 und y1 bis y2 kann mit mehreren Programmen an einem Bild gerechnet werden, und mit einem speziellen Programm kann das Bild zusammengesetzt werden.
Dieses Format eignet sich nicht für das Anzeigen mit einem anderen Programm. Hier kann eine Konvertierung mit dem Programm rp2gif vorgenommen werden.
Für das spätere Ausdrucken könnte in das Programm rp2gif noch eine Ausgabe im Postscriptformat eingebaut werden.
Zum Konvertieren und Anzeigen der Ausgabefiles wird das Programm rp2gif oder rp2ppm in der Kommandozeile aufgerufen. Die Kommandosyntax ist wie folgt:
rp2gif -srp name.rp
rp2gif -sgif name.gif
rp2gif name.rp
rp2ppm name.rp
Ohne Parameter wird eine Anzeige des Bildes ausgegeben.