⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uifltk.h

📁 一个任天堂掌上游戏机NDS的源代码
💻 H
字号:
/*************************************************************************** DSemu - The Next Generation                                             ** Fltk user interface: Class definition [uiflkt.h]                        ** Copyright Imran Nazar, 2005; released under the BSD public licence.     ***************************************************************************/#ifndef __UIFLTK_H_#define __UIFLTK_H_#include <vector>#include "defs.h"#include "plggui.h"#include "msgqueue.h"#include "plgcpu.h"#include "plgmmu32.h"#include "plggpu.h"#include "plgapu.h"#include <FL/Fl.H>#include <FL/Fl_Double_Window.H>#include <FL/Fl_Menu_Item.H>#include <FL/Fl_Menu_Bar.H>#include <FL/Fl_Box.H>#include <FL/Fl_Group.H>#include <FL/Fl_File_Chooser.H>#include <FL/Fl_Text_Buffer.H>#include <FL/Fl_Text_Display.H>#include <FL/Fl_Hold_Browser.H>#include <FL/Fl_Group.H>#include <FL/Fl_Tabs.H>class UIFltk : public GUIPlugin{    public:        UIFltk(std::string name, REQPTR req, UNREQPTR unreq);	~UIFltk();        PLUGININFO *getinfo();	void reset();	void release();	void status(int,int);	int run();	// Wrapper functions for the equivalents in UI	int subwinCreate(int, int, const char*, u32*);	void subwinRefresh(int);	uint64_t getTimestamp();	void eventPush(u32, int, vfptr, void*);    private:        //---Plugin-generic stuff        std::string pName, pClass;        static REQPTR pRequest;        static UNREQPTR pUnrequest;	static PLUGININFO pInfo;        static std::string pluginName;		// This is the seperation: the class above is a plugin, the	// UI itself is a Window.	class UI : public Fl_Double_Window	{            public:	        UI(int, int, int, int, const char*);                ~UI();		int handle(int);		void draw();        // Overload draw to do our own stuff		void execFrame();		void execStep();		// Functions that receive the wrap from above		int subwinCreate(int, int, const char*, u32*);		void subwinRefresh(int); 		void eventPush(u32, int, vfptr, void*);		uint64_t getTimestamp();			    private:                 static std::string ROMpath;                static u8 *outbuf;				// All the plugins that'll be used                static CPUPlugin *cpu, *cpuSub;                static MMU32Plugin *mmu, *mmuSub;		static GPUPlugin *gpu;		static APUPlugin *apu;		static Plugin *timer;        		static int loaded, running, stepping, DSmode;		static int cpuStatMode, mmuDumpAddr, mmuDumpMode;	                static uint64_t timestamp;		static std::deque<EventMsg> events;				static int frames;				// Key handling and I/O access                static u16 keys;		                static u8   keyRdB(u32);                static u16  keyRdH(u32);                static u32  keyRdW(u32);                static void keyWrB(u32, u8);                static void keyWrH(u32, u16);                static void keyWrW(u32, u32);				static const Fl_Menu_Item menuInit[];		static std::vector<Fl_Menu_Item> menu;		static Fl_Menu_Bar *mbar;		static Fl_Box *sbarl, *sbarr;		static Fl_Box *display;		static Fl_Group *mbarcon;		// Callbacks		static void cbOpenGBA(Fl_Widget*, void*);		static void cbOpenDS(Fl_Widget*, void*);		static void cbClose(Fl_Widget*, void*);		static void cbExit(Fl_Widget*, void*);		static void cbRun(Fl_Widget*, void*);		static void cbReset(Fl_Widget*, void*);		static void cbBkpt(Fl_Widget*, void*);		static void cbStep(Fl_Widget*, void*);		static void cbAStep(Fl_Widget*, void*);		static void cbCpuStatARM(Fl_Widget*, void*);		static void cbCpuStatThumb(Fl_Widget*, void*);		static void cbCpuStatAuto(Fl_Widget*, void*);		static void cbMmuDumpB(Fl_Widget*, void*);		static void cbMmuDumpH(Fl_Widget*, void*);		static void cbMmuDumpW(Fl_Widget*, void*);		static void cbMmuAddr(Fl_Widget*, void*);		static void cbLog(Fl_Widget*, void*);		static void cbFPScount(void*);		static void cbAbout(Fl_Widget*, void*);				inline void cbOpenGBAI();		inline void cbOpenDSI();		inline void cbCloseI();		inline void cbExitI();		inline void cbRunI();		inline void cbResetI();		inline void cbBkptI();		inline void cbStepI();		static void cbAStepI(void*);		inline void cbCpuStatARMI();		inline void cbCpuStatThumbI();		inline void cbCpuStatAutoI();		inline void cbMmuDumpBI();		inline void cbMmuDumpHI();		inline void cbMmuDumpWI();		inline void cbMmuAddrI();		inline void cbLogI();		inline void cbAboutI();		// Log display window definition		class LogWindow : public Fl_Double_Window		{                    public:		        LogWindow(int, int, void*);			~LogWindow();			int handle(int);		    private:			static void cb(void*);			static Fl_Window *mainWnd;						static Fl_Text_Buffer *buf;			static Fl_Text_Display *text;                        static u32 sizeOld, sizeNew;		};				static LogWindow *logWnd;		static int logVisible;		                // The About box		class AboutWindow : public Fl_Double_Window		{		    public:			AboutWindow(int, int, void*);			~AboutWindow();			int handle(int);		    private:			static void cb(void*);			static void cbOK(Fl_Widget*, void*);			inline void cbOKI();			static const char *aboutTxt;			static Fl_Window *mainWnd;			static Fl_Text_Buffer *buf;			static Fl_Text_Display *text;			static Fl_Button *ok;		};		static AboutWindow *aboutWnd;		static int aboutVisible;				// Any plugin-specific subwindows become one of these		class SubWindow : public Fl_Double_Window		{                    public:		        SubWindow(int, int, void*);			~SubWindow();			int handle(int);			void draw();			u32 *buffer;			int visible;			int winID;			const char *title;					    private:			Fl_Window *mainWnd;			int xdim, ydim;		};		// The map of subwindows		static std::map<int, SubWindow*> subwindows;		static void cbSub(Fl_Widget*, void*);		inline void cbSubI(const char*);				// Breakpoint dialog window		class BkptWindow : public Fl_Window		{		    public:			BkptWindow(int, int, void*);			~BkptWindow();			int handle(int);					    private:		        static Fl_Window *mainWnd;			static Fl_Hold_Browser *browsemain, *browsesub;			static Fl_Group *grpmain, *grpsub;			static Fl_Button *del;			static Fl_Button *add;			static Fl_Button *ok;			static Fl_Tabs *tabs;			static int which;			static void cbAdd(Fl_Widget*, void*);			static void cbDel(Fl_Widget*, void*);			static void cbOK(Fl_Widget*, void*);			static void cbTabs(Fl_Widget*, void*);			inline void cbAddI();			inline void cbDelI();			inline void cbOKI();		};		static BkptWindow *bkptWnd;		static int bkptVisible;        };	// The UI that the base class'll be using	static UI *ui;};// Menu offsets#define MENU_FILE                  0#define MENU_FILE_OPENGBA          1#define MENU_FILE_OPENDS           2#define MENU_FILE_CLOSE            3#define MENU_FILE_EXIT             4#define MENU_DEBUG                 6#define MENU_DEBUG_RUN             7#define MENU_DEBUG_RESET           8#define MENU_DEBUG_BKPT            9#define MENU_DEBUG_STEP           10#define MENU_DEBUG_ASTEP          11#define MENU_DEBUG_CPUMODE        12#define MENU_DEBUG_CPUMODE_ARM    13#define MENU_DEBUG_CPUMODE_THUMB  14#define MENU_DEBUG_CPUMODE_AUTO   15#define MENU_DEBUG_MMUMODE        17#define MENU_DEBUG_MMUMODE_B      18#define MENU_DEBUG_MMUMODE_H      19#define MENU_DEBUG_MMUMODE_W      20#define MENU_DEBUG_MMUADDR        22#define MENU_VIEW                 24#define MENU_VIEW_LOG             25#define MENU_OPT                 (27+subwindows.size())#define MENU_OPT_CONF            (28+subwindows.size())#define MENU_HELP                (30+subwindows.size())#define MENU_HELP_ABOUT          (31+subwindows.size())#endif//__UIFLTK_H_/*** EOF: uifltk.h *******************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -