]> git.tdb.fi Git - gldbg.git/blobdiff - source/grabber.h
Add gldQueryViewport and gldReadPixels calls
[gldbg.git] / source / grabber.h
diff --git a/source/grabber.h b/source/grabber.h
new file mode 100644 (file)
index 0000000..822c584
--- /dev/null
@@ -0,0 +1,51 @@
+/* $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