--- /dev/null
+/* $Id$
+
+This file is part of gldbg
+Copyright © 2011 Mikko Rasa, Mikkosoft Productions
+Distributed under the GPL
+*/
+
+#ifndef GRABBERBASE_H_
+#define GRABBERBASE_H_
+
+#include <string>
+#include "gldecoder.h"
+#include "tool.h"
+
+class Grabber: public RegisteredTool<Grabber>
+{
+private:
+ GlDbg &gldbg;
+ GlDecoder *decoder;
+ int viewport[4];
+ unsigned frame_num;
+ unsigned grab_num;
+ int pending_grab;
+ int autograb;
+
+ static unsigned short break_funcs[];
+
+public:
+ Grabber(GlDbg &);
+private:
+ void flavor_init();
+
+public:
+ virtual void decode(const char *, unsigned);
+ virtual void process_started();
+ virtual void process_stopped(int);
+private:
+ void cmd_grab(const std::string &);
+ void cmd_autograb(const std::string &);
+
+ void grab();
+ int write_png(const std::string &, unsigned, unsigned, void *);
+ void next_frame();
+
+ static void glViewport(void *, int, int, int, int);
+ static void glGetIntegerv(void *, GLenum, int *);
+ static void glReadPixels(void *, int, int, int, int, GLenum, GLenum, void *);
+ static void gldBreak(void *, unsigned short, unsigned char);
+};
+
+#endif