summaryrefslogtreecommitdiff
path: root/src/ScreenDump.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ScreenDump.cxx')
-rw-r--r--src/ScreenDump.cxx20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/ScreenDump.cxx b/src/ScreenDump.cxx
index 20a038f..d238535 100644
--- a/src/ScreenDump.cxx
+++ b/src/ScreenDump.cxx
@@ -7,15 +7,17 @@
#include "JPEGOutputImage.H"
#include "ScreenDump.H"
-ScreenDump::ScreenDump(GipfelWidget *g) {
+ScreenDump::ScreenDump(GipfelWidget *gipf) {
Fl_Offscreen offscreen;
- gipf = g;
+ w = gipf->w();
+ h = gipf->h();
+
Fl::flush();
- offscreen = fl_create_offscreen(gipf->w(), gipf->h());
+ offscreen = fl_create_offscreen(w, h);
fl_begin_offscreen(offscreen);
gipf->draw();
- rgb = fl_read_image(NULL, 0, 0, gipf->w(), gipf->h());
+ rgb = fl_read_image(NULL, 0, 0, w, h);
fl_end_offscreen();
fl_delete_offscreen(offscreen);
}
@@ -28,15 +30,15 @@ int
ScreenDump::save(const char *file) {
JPEGOutputImage out(file, 95);
- out.init(gipf->w(), gipf->h());
+ out.init(w, h);
- for (int y = 0; y < gipf->h(); y++) {
- for (int x = 0; x < gipf->w(); x++) {
- unsigned char *px = &rgb[(y * gipf->w() + x) * 3];
+ for (int y = 0; y < h; y++) {
+ for (int x = 0; x < w; x++) {
+ unsigned char *px = &rgb[(y * w + x) * 3];
out.set_pixel(x, px[0] * 255, px[1] * 255, px[2] * 255);
}
out.next_line();
}
- out.done();
+ return out.done();
}