summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ScreenDump.H2
-rw-r--r--src/ScreenDump.cxx20
2 files changed, 12 insertions, 10 deletions
diff --git a/src/ScreenDump.H b/src/ScreenDump.H
index f527404..b9991fa 100644
--- a/src/ScreenDump.H
+++ b/src/ScreenDump.H
@@ -12,7 +12,7 @@
class ScreenDump {
private:
- GipfelWidget *gipf;
+ int w, h;
unsigned char * rgb;
public:
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();
}