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
AT_Zoom,
AT_TranslatePx,
AT_ZoomPx,
+ AT_SetCPURendering,
+ 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_PrintFPS, // Print FPS statistics about the frames
+ AT_PrintBounds, // Print bounds
+ AT_ProfileDisplay,
AT_Quit
};
Real z;
int iz;
int loops;
- Action() : type(AT_WaitFrame), x(0), y(0), ix(0), iy(0), z(0), loops(0) {}
+ Real 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<Action> m_actions;
+ std::map<std::string, int> m_labels;
+ unsigned m_index;
+
+ double m_fps_cpu_mean;
+ double m_fps_gpu_mean;
+ double m_fps_cpu_stddev;
+ double m_fps_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);
};
}