[Bf-blender-cvs] [0523aab3fef] profiler-editor: make view2d work

Jacques Lucke noreply at git.blender.org
Thu Apr 29 11:30:49 CEST 2021


Commit: 0523aab3fef96cbd09a30b47b14cb7b7d0ee6c58
Author: Jacques Lucke
Date:   Tue Apr 27 18:55:54 2021 +0200
Branches: profiler-editor
https://developer.blender.org/rB0523aab3fef96cbd09a30b47b14cb7b7d0ee6c58

make view2d work

===================================================================

M	source/blender/editors/space_profiler/profiler_draw.cc
M	source/blender/editors/space_profiler/space_profiler.cc

===================================================================

diff --git a/source/blender/editors/space_profiler/profiler_draw.cc b/source/blender/editors/space_profiler/profiler_draw.cc
index b447bd649a4..27e6da4a97b 100644
--- a/source/blender/editors/space_profiler/profiler_draw.cc
+++ b/source/blender/editors/space_profiler/profiler_draw.cc
@@ -76,6 +76,19 @@ class ProfilerDrawer {
     this->draw_all_nodes();
     UI_block_end(C, ui_block_);
     UI_block_draw(C, ui_block_);
+
+    this->update_view2d_bounds();
+  }
+
+  void update_view2d_bounds()
+  {
+    const float duration_ms = this->duration_to_ms(profiler_layout_->end_time() -
+                                                   profiler_layout_->begin_time());
+    /* Giving a bit more space on the right side is convenient. */
+    const float extended_duration_ms = std::max(duration_ms * 1.1f, 5000.0f);
+    UI_view2d_totRect_set(&region_->v2d, extended_duration_ms, 1);
+
+    UI_view2d_scrollers_draw(&region_->v2d, nullptr);
   }
 
   void compute_vertical_extends_of_all_nodes()
@@ -177,7 +190,7 @@ class ProfilerDrawer {
     const TimePoint begin_time = profiler_layout_->begin_time();
     const Duration time_since_begin = time - begin_time;
     const float ms_since_begin = this->duration_to_ms(time_since_begin);
-    return ms_since_begin / 5.0f;
+    return UI_view2d_view_to_region_x(&region_->v2d, ms_since_begin);
   }
 
   Color4f get_node_color(ProfileNode &node)
diff --git a/source/blender/editors/space_profiler/space_profiler.cc b/source/blender/editors/space_profiler/space_profiler.cc
index 9e21bde224d..bcb2a63c019 100644
--- a/source/blender/editors/space_profiler/space_profiler.cc
+++ b/source/blender/editors/space_profiler/space_profiler.cc
@@ -17,6 +17,7 @@
 #include <cstring>
 
 #include "BLI_listbase.h"
+#include "BLI_rect.h"
 
 #include "BKE_screen.h"
 
@@ -58,6 +59,18 @@ static SpaceLink *profiler_create(const ScrArea *UNUSED(area), const Scene *UNUS
     ARegion *region = (ARegion *)MEM_callocN(sizeof(ARegion), "profiler main region");
     BLI_addtail(&sprofiler->regionbase, region);
     region->regiontype = RGN_TYPE_WINDOW;
+
+    View2D *v2d = &region->v2d;
+    v2d->scroll = V2D_SCROLL_RIGHT | V2D_SCROLL_BOTTOM;
+    v2d->keepzoom = V2D_LOCKZOOM_Y;
+    v2d->keeptot = V2D_KEEPTOT_BOUNDS;
+    v2d->align = V2D_ALIGN_NO_NEG_X | V2D_ALIGN_NO_POS_Y;
+    v2d->min[0] = 0.0001f;
+    v2d->min[1] = 100.0f;
+    v2d->max[0] = 100000.0f;
+    v2d->max[1] = 100.0f;
+    BLI_rctf_init(&v2d->tot, 0, 5000, -1, 0);
+    v2d->cur = v2d->tot;
   }
 
   return (SpaceLink *)sprofiler;
@@ -89,8 +102,9 @@ static void profiler_keymap(wmKeyConfig *UNUSED(keyconf))
 {
 }
 
-static void profiler_main_region_init(wmWindowManager *UNUSED(wm), ARegion *UNUSED(region))
+static void profiler_main_region_init(wmWindowManager *UNUSED(wm), ARegion *region)
 {
+  UI_view2d_region_reinit(&region->v2d, V2D_COMMONVIEW_CUSTOM, region->winx, region->winy);
 }
 
 static void profiler_main_region_draw(const bContext *C, ARegion *region)
@@ -157,7 +171,7 @@ void ED_spacetype_profiler(void)
   /* regions: main window */
   art = (ARegionType *)MEM_callocN(sizeof(ARegionType), "spacetype profiler region");
   art->regionid = RGN_TYPE_WINDOW;
-  art->keymapflag = ED_KEYMAP_UI;
+  art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_VIEW2D;
 
   art->init = profiler_main_region_init;
   art->draw = profiler_main_region_draw;



More information about the Bf-blender-cvs mailing list