X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fgrabber.h;fp=source%2Fgrabber.h;h=822c5842f331c8a1fcb19ac0d9fc64c709b6f06b;hb=a51c2557622ea93944e24f58845609526eb46ec1;hp=0000000000000000000000000000000000000000;hpb=6d297b506314c07bff3d77c2853a5f59380cfcb0;p=gldbg.git diff --git a/source/grabber.h b/source/grabber.h new file mode 100644 index 0000000..822c584 --- /dev/null +++ b/source/grabber.h @@ -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 +#include "gldecoder.h" +#include "tool.h" + +class Grabber: public RegisteredTool +{ +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