00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 class pgDbgDaemon;
00033
00034
00039 class PG_API pgDbgMgr
00040 {
00041 friend class pgDbgDaemon;
00042
00043 public:
00044 pgDefineException(ExceptionInvalidArgument);
00045 pgDefineException(ExceptionNotInitialized);
00046
00047 static const pgID DEBUG_MODE_SCREEN_ID;
00048 static const pgID DEBUG_FONT_TEXTURE_ID;
00049
00050 enum DebugMode
00051 {
00052 MODE_OFF,
00053 MODE_MONITOR,
00054 MODE_CONSOLE
00055 };
00056
00057 static bool isCreated();
00058 static void createLast();
00059 static void destroySecond();
00060
00061 static DebugMode getDebugMode();
00062 static void setDebugMode(DebugMode dbg_mode);
00063
00064 static void pageUpConsole();
00065 static void pageDownConsole();
00066
00067 static void drawLine(const pgVec& pos1, const pgVec& pos2, pgCol col, pgID scr_id);
00068 static void drawPolygon(const pgVec& pos1, const pgVec& pos2, const pgVec& pos3, pgCol col, pgID scr_id);
00069 static void drawPolygon(const pgVec& pos1, const pgVec& pos2, const pgVec& pos3, const pgVec& pos4, pgCol col, pgID scr_id);
00070
00071 static void drawBox(const pgMat& center, const pgVec& size, pgCol poly_col, pgCol line_col, pgID scr_id);
00072 static void drawSphere(const pgVec& center, r32 radius, pgCol poly_col, pgCol line_col, pgID scr_id);
00073 static void drawAxis(const pgMat& world, r32 size, pgID scr_id);
00074
00075 static void drawString(r32 left, r32 top, pgCol col, u8 scale, const char* str, ...);
00076 static void trace(const char* str, ...);
00077
00078 static void dumpVector(const pgVec& vec, const char* name = NULL);
00079 static void dumpMatrix(const pgMat& mat, const char* name = NULL);
00080
00081 static void dumpMemory();
00082 static void dumpTask();
00083 static void dumpResource();
00084 static void dumpConfig();
00085 static void dumpScreen();
00086 static void dumpTexture();
00087 static void dumpShader();
00088
00089 private:
00090 static const u32 INITIAL_DRAW_PRIM_NUM = 64;
00091 static const u32 INITIAL_FONT_SPRT_NUM = 256;
00092 static const u32 DEBUG_FONT_WIDTH = 6;
00093 static const u32 DEBUG_FONT_HEIGHT = 10;
00094 static const u32 CONSOLE_COLUMN_NUM = 80;
00095 static const u32 CONSOLE_BUFFER_SIZE = 1000;
00096 static const u32 CONSOLE_TAB_WIDTH = 4;
00097
00098 pgDbgMgr();
00099 ~pgDbgMgr();
00100 void operator=(const pgDbgMgr&);
00101
00102 void newDebugFontTexture();
00103 void reallocDrawPrim();
00104 void checkSpecialCommand();
00105
00106 void drawConsole();
00107 static void drawRect(r32 left, r32 top, r32 width, r32 height, r32 z, pgCol col);
00108 static void drawFrame(r32 left, r32 top, r32 width, r32 height, r32 z, pgCol col);
00109 s32 calcConsoleRowNum();
00110
00111 static pgDbgMgr* instance();
00112
00113 pgType<u8, DebugMode> m_dbg_mode;
00114 pgScr* m_dbg_mode_scr;
00115 pgPrim* m_draw_prim;
00116 u32 m_cur_draw_prim_num;
00117 u32 m_max_draw_prim_num;
00118 pgSprt m_font_sprt;
00119 pgStr<char, CONSOLE_COLUMN_NUM> m_console_buf[CONSOLE_BUFFER_SIZE];
00120 s32 m_end_row;
00121 s32 m_aim_row;
00122 s32 m_cur_row;
00123 u8 m_dbg_mode_tap_cntr;
00124 u8 m_dbg_dump_tap_cntr;
00125 s16 m_scroll_hold_cntr;
00126 pgDbgDaemon* m_dbg_daemon;
00127
00128 static pgDbgMgr* m_instance;
00129 };