diff options
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/DRW_engine.h | 1 | ||||
-rw-r--r-- | source/blender/draw/intern/DRW_render.h | 3 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 77 | ||||
-rw-r--r-- | source/blender/draw/intern/draw_view.c | 11 |
4 files changed, 21 insertions, 71 deletions
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h index f99ce1be894..e192a7efa51 100644 --- a/source/blender/draw/DRW_engine.h +++ b/source/blender/draw/DRW_engine.h @@ -98,6 +98,7 @@ typedef bool (*DRW_ObjectFilterFn)( struct Object *ob, void *user_data); void DRW_draw_view(const struct bContext *C); +void DRW_draw_region_engine_info(int xoffset, int yoffset); void DRW_draw_render_loop_ex( struct Depsgraph *depsgraph, diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index 629c5013c03..9bf3ce15166 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -524,9 +524,6 @@ void DRW_draw_text_cache_queue(struct DRWTextStore *dt); void DRW_draw_callbacks_pre_scene(void); void DRW_draw_callbacks_post_scene(void); -int DRW_draw_region_engine_info_offset(void); -void DRW_draw_region_engine_info(void); - void DRW_state_reset_ex(DRWState state); void DRW_state_reset(void); void DRW_state_lock(DRWState state); diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index cbd2c7719b0..3cff67b5284 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -1057,49 +1057,9 @@ static void drw_engines_draw_text(void) } } -#define MAX_INFO_LINES 10 - -/** - * Returns the offset required for the drawing of engines info. - */ -int DRW_draw_region_engine_info_offset(void) +/* Draw render engine info. */ +void DRW_draw_region_engine_info(int xoffset, int yoffset) { - int lines = 0; - for (LinkData *link = DST.enabled_engines.first; link; link = link->next) { - DrawEngineType *engine = link->data; - ViewportEngineData *data = drw_viewport_engine_data_ensure(engine); - - /* Count the number of lines. */ - if (data->info[0] != '\0') { - lines++; - char *c = data->info; - while (*c++ != '\0') { - if (*c == '\n') { - lines++; - } - } - } - } - return MIN2(MAX_INFO_LINES, lines) * UI_UNIT_Y; -} - -/** - * Actual drawing; - */ -void DRW_draw_region_engine_info(void) -{ - const char *info_array_final[MAX_INFO_LINES + 1]; - /* This should be maximum number of engines running at the same time. */ - char info_array[MAX_INFO_LINES][GPU_INFO_SIZE]; - int i = 0; - - const DRWContextState *draw_ctx = DRW_context_state_get(); - ARegion *ar = draw_ctx->ar; - float fill_color[4] = {0.0f, 0.0f, 0.0f, 0.25f}; - - UI_GetThemeColor3fv(TH_HIGH_GRAD, fill_color); - mul_v3_fl(fill_color, fill_color[3]); - for (LinkData *link = DST.enabled_engines.first; link; link = link->next) { DrawEngineType *engine = link->data; ViewportEngineData *data = drw_viewport_engine_data_ensure(engine); @@ -1109,36 +1069,37 @@ void DRW_draw_region_engine_info(void) char *chr_start = chr_current; int line_len = 0; + const int font_id = BLF_default(); + UI_FontThemeColor(font_id, TH_TEXT_HI); + + BLF_enable(font_id, BLF_SHADOW); + BLF_shadow(font_id, 5, (const float[4]){0.0f, 0.0f, 0.0f, 1.0f}); + BLF_shadow_offset(font_id, 1, -1); + while (*chr_current++ != '\0') { line_len++; if (*chr_current == '\n') { - BLI_strncpy(info_array[i++], chr_start, line_len + 1); + char info[GPU_INFO_SIZE]; + BLI_strncpy(info, chr_start, line_len + 1); + yoffset -= U.widget_unit; + BLF_draw_default(xoffset, yoffset, 0.0f, info, sizeof(info)); + /* Re-start counting. */ chr_start = chr_current + 1; line_len = -1; } } - BLI_strncpy(info_array[i++], chr_start, line_len + 1); + char info[GPU_INFO_SIZE]; + BLI_strncpy(info, chr_start, line_len + 1); + yoffset -= U.widget_unit; + BLF_draw_default(xoffset, yoffset, 0.0f, info, sizeof(info)); - if (i >= MAX_INFO_LINES) { - break; - } + BLF_disable(font_id, BLF_SHADOW); } } - - for (int j = 0; j < i; j++) { - info_array_final[j] = info_array[j]; - } - info_array_final[i] = NULL; - - if (info_array[0] != NULL) { - ED_region_info_draw_multiline(ar, info_array_final, fill_color, true); - } } -#undef MAX_INFO_LINES - static void use_drw_engine(DrawEngineType *engine) { LinkData *ld = MEM_callocN(sizeof(LinkData), "enabled engine link data"); diff --git a/source/blender/draw/intern/draw_view.c b/source/blender/draw/intern/draw_view.c index 545c4af878c..70049a5c345 100644 --- a/source/blender/draw/intern/draw_view.c +++ b/source/blender/draw/intern/draw_view.c @@ -62,19 +62,10 @@ void DRW_draw_region_info(void) { const DRWContextState *draw_ctx = DRW_context_state_get(); ARegion *ar = draw_ctx->ar; - int offset = 0; DRW_draw_cursor(); - if ((draw_ctx->v3d->overlay.flag & V3D_OVERLAY_HIDE_TEXT) == 0) { - offset = DRW_draw_region_engine_info_offset(); - } - - view3d_draw_region_info(draw_ctx->evil_C, ar, offset); - - if (offset > 0) { - DRW_draw_region_engine_info(); - } + view3d_draw_region_info(draw_ctx->evil_C, ar); } /* ************************* Background ************************** */ |