X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fdebugscript.h;h=916425cc41df3bad59fb9aa5c124b2f96f9bb51c;hp=9e4dce8423d9f7b202eabfe5e71063376e1aacfb;hb=6c0dfe752994312ee58d307b383948bfeb2d6e2e;hpb=875df16552ba91c5eb4a7aaf3c48537b3d93b3fb diff --git a/src/debugscript.h b/src/debugscript.h index 9e4dce8..916425c 100644 --- a/src/debugscript.h +++ b/src/debugscript.h @@ -13,10 +13,9 @@ namespace IPDF class DebugScript { public: - void Load(const char *filename) - { - inp.open(filename); - } + DebugScript(std::istream * in) : m_input(in), currentAction(), m_actions(), m_labels(), m_index(0) {} + virtual ~DebugScript() {} + bool Execute(View *view, Screen *scr); private: enum ActionType @@ -30,25 +29,64 @@ private: AT_SetGPURendering, AT_EnableLazyRendering, AT_DisableLazyRendering, + AT_LoadSVG, + AT_Label, + AT_Goto, + AT_Debug, + AT_ClearDocument, + AT_ClearPerformance, + AT_PrintPerformance, + AT_RecordPerformance, + AT_DebugFont, + AT_ApproachBoundsZeno, + AT_ApproachBoundsLinear, + AT_SetBounds, + AT_QueryGPUBounds, // query bounds of Beziers when transformed to GPU + AT_ScreenShot, // take screenshot + AT_PrintSPF, // Print FPS statistics about the frames + AT_PrintBounds, // Print bounds AT_Quit }; struct Action { ActionType type; - Real x, y; + VReal x, y; int ix, iy; - Real z; + VReal z; int iz; int loops; - Action() : type(AT_WaitFrame), x(0), y(0), ix(0), iy(0), z(0), loops(0) {} + VReal w, h; + std::string textargs; + Action() : type(AT_WaitFrame), x(0), y(0), ix(0), iy(0), z(0), loops(0), textargs("") {} }; - std::ifstream inp; + std::istream * m_input; Action currentAction; - - void ParseAction(); + std::vector m_actions; + std::map m_labels; + unsigned m_index; + + double m_spf_cpu_mean; + double m_spf_gpu_mean; + double m_spf_cpu_stddev; + double m_spf_gpu_stddev; + + struct PerformanceData + { + clock_t clock; + unsigned object_count; + VRect view_bounds; + }; + + PerformanceData m_perf_start; + PerformanceData m_perf_last; + + void PrintPerformance(View * view, Screen * scr); + void ClearPerformance(View * view, Screen * scr); + + void ParseAction(View * view, Screen * scr); }; }