settings menu & texsheet
[vg.git] / vg_profiler.h
index 67808a7a6d42d898f42e747d0be49f0a4528b8aa..dfc47ef1266d680b5fe1db657f4ad9b583870493 100644 (file)
@@ -59,25 +59,23 @@ static void vg_profile_end( struct vg_profile *profile )
 }
 
 static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
-                              float budget, ui_rect panel, u32 colour_offset )
+                              float budget, ui_rect panel, u32 colour_offset,
+                              int dir )
 {
-   if( !vg_profiler )
-      return;
-
    if( panel[2] == 0 )
       panel[2] = 256;
 
    if( panel[3] == 0 )
       panel[3] = VG_PROFILE_SAMPLE_COUNT * 2;
 
-   float sh = panel[3] / VG_PROFILE_SAMPLE_COUNT,
-         sw = panel[2];
+   f32 sh = (f32)panel[3^dir] / (f32)VG_PROFILE_SAMPLE_COUNT,
+       sw = (f32)panel[2^dir];
 
    ui_fill( panel, 0xa0000000 );
 
    assert( count <= 8 );
-   double avgs[8];
-   int    ptrs[8];
+   f64 avgs[8];
+   int ptrs[8];
 
    for( int i=0; i<count; i++ ){
       ptrs[i] = profiles[i]->buffer_current;
@@ -87,10 +85,10 @@ static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
    u32 colours[] = { 0xff0000ff, 0xff00ff00, 0xff00ffff, 0xffff0000,
                      0xffff00ff, 0xffffff00 };
 
-   double rate_mul = 1000.0 / (double)SDL_GetPerformanceFrequency();
+   f64 rate_mul = 1000.0 / (f64)SDL_GetPerformanceFrequency();
 
    for( int i=0; i<VG_PROFILE_SAMPLE_COUNT-1; i++ ){
-      double total = 0.0;
+      f64 total = 0.0;
 
       for( int j=0; j<count; j++ ){
          ptrs[j] --;
@@ -98,12 +96,15 @@ static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
          if( ptrs[j] < 0 )
             ptrs[j] = VG_PROFILE_SAMPLE_COUNT-1;
 
-         double sample  = (double)profiles[j]->samples[ptrs[j]] * rate_mul,
-                px      = (total  / (budget)) * sw,
-                wx      = (sample / (budget)) * sw;
+         f64 sample  = (f64)profiles[j]->samples[ptrs[j]] * rate_mul,
+                px   = (total  / (budget)) * sw,
+                wx   = (sample / (budget)) * sw;
 
-         ui_rect block = { panel[0] + px, panel[1] + (float)i*sh,
-                           wx,            sh };
+         ui_rect block;
+         block[0^dir] = panel[0^dir] + px;
+         block[1^dir] = panel[1^dir] + (f32)i*sh;
+         block[2^dir] = wx;
+         block[3^dir] = ceilf(sh)-1;
 
          u32 colour = colours[ (j+colour_offset) % vg_list_size(colours) ];
          ui_fill( block, colour );
@@ -117,7 +118,7 @@ static void vg_profile_drawn( struct vg_profile **profiles, u32 count,
 
    snprintf( infbuf, 64, "accuracy: %.7fms", rate_mul );
    ui_text( (ui_rect){ panel[0] + 4,
-                       panel[1] + 0 * 14, 500, 30 }, 
+                       panel[1] + panel[3] - 14, 500, 30 }, 
                        infbuf,
                        1,
                        k_ui_align_left, 0 );