/* ----------------------------------------------------------------------------- nEngine - GSFramework Copyright 2001-2011 Emmanuel Julien. All Rights Reserved. ------------------------------------------------------------------------------*/ #ifndef __NPROFILER_TOOLS__ #define __NPROFILER_TOOLS__ #include "color/color.h" #include "nstring/nstring.h" /*! @short Core profiler tools. @author Emmanuel Julien (ejulien@nworks.fr) */ namespace GS { namespace Render { class Renderer; class RasterFont; } namespace Core { enum NumberFormat { Count, MemorySize }; template const Color &GetColorCode(const T &v, const T &warning, const T &alert) { if (v > alert) return Color::Red; if (v > warning) return Color::Green; return Color::White; } /// Format a value to string. template String FormatNumber(const T &v, NumberFormat format = Count) { switch (format) { case Count: if (v < 1000) return String::Format("%d", (int)v); else if (v < 1000000) return String::Format("%.01fK", (float)v / 1000); return String::Format("%.01fM", (float)v / 1000000); case MemorySize: if (v < 1000) return String::Format("%dB", (int)v); else if (v < 1000000) return String::Format("%.01fKB", (float)v / 1000.f); return String::Format("%.01fMB", (float)v / 1000000.f); } return String() << v; } /// Draw allocator profiler text. void DrawAllocProfilerText(Render::Renderer &, Render::RasterFont *[2], float &x, float &y, float width = 0, float height = 0); } // Core } // GS #endif // __NPROFILER_TOOLS__