]> git.tdb.fi Git - gldbg.git/blob - source/grabber.h
370108dda0b80f0d303b95bae9a7f51ccada3e87
[gldbg.git] / source / grabber.h
1 #ifndef GRABBERBASE_H_
2 #define GRABBERBASE_H_
3
4 #include <string>
5 #include "gldecoder.h"
6 #include "tool.h"
7
8 class Grabber: public RegisteredTool<Grabber>
9 {
10 private:
11         GlDbg &gldbg;
12         GlDecoder *decoder;
13         int viewport[4];
14         unsigned frame_num;
15         unsigned grab_num;
16         int pending_grab;
17         int autograb;
18
19         static unsigned short break_funcs[];
20
21 public:
22         Grabber(GlDbg &);
23 private:
24         void flavor_init();
25
26 public:
27         virtual void decode(const char *, unsigned);
28         virtual void process_started();
29         virtual void process_stopped(int);
30 private:
31         void cmd_grab(const std::string &);
32         void cmd_autograb(const std::string &);
33
34         void grab();
35         int write_png(const std::string &, unsigned, unsigned, void *);
36         void next_frame();
37
38         static void glViewport(void *, int, int, int, int);
39         static void glGetIntegerv(void *, GLenum, int *);
40         static void glReadPixels(void *, int, int, int, int, GLenum, GLenum, void *);
41         static void gldBreak(void *, unsigned short, unsigned char);
42 };
43
44 #endif