Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/engines/external/external_engine.c12
-rw-r--r--source/blender/draw/intern/DRW_render.h3
-rw-r--r--source/blender/draw/intern/draw_manager.c41
-rw-r--r--source/blender/draw/intern/draw_view.c10
4 files changed, 64 insertions, 2 deletions
diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c
index 7b6b4e51147..6a530cccb6e 100644
--- a/source/blender/draw/engines/external/external_engine.c
+++ b/source/blender/draw/engines/external/external_engine.c
@@ -80,6 +80,7 @@ typedef struct EXTERNAL_Data {
EXTERNAL_TextureList *txl;
EXTERNAL_PassList *psl;
EXTERNAL_StorageList *stl;
+ char info[GPU_INFO_SIZE];
} EXTERNAL_Data;
/* *********** STATIC *********** */
@@ -138,7 +139,7 @@ static void EXTERNAL_cache_finish(void *UNUSED(vedata))
{
}
-static void external_draw_scene(void *UNUSED(vedata))
+static void external_draw_scene(void *vedata)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene;
@@ -173,6 +174,15 @@ static void external_draw_scene(void *UNUSED(vedata))
type->render_to_view(rv3d->render_engine, draw_ctx->evil_C);
gpuPopProjectionMatrix();
+
+ /* Set render info. */
+ EXTERNAL_Data *data = vedata;
+ if (rv3d->render_engine->text) {
+ BLI_strncpy(data->info, rv3d->render_engine->text, sizeof(data->info));
+ }
+ else {
+ data->info[0] = '\0';
+ }
}
static void EXTERNAL_draw_scene(void *vedata)
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 394f5d8d670..0b694da6c94 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -327,6 +327,9 @@ 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);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index c64e5b6403b..5b4111ada2c 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -41,6 +41,7 @@
#include "DRW_engine.h"
#include "DRW_render.h"
+#include "DNA_camera_types.h"
#include "DNA_view3d_types.h"
#include "DNA_screen_types.h"
@@ -64,6 +65,7 @@
#include "RE_engine.h"
+#include "UI_interface.h"
#include "UI_resources.h"
#include "draw_manager_text.h"
@@ -2019,6 +2021,45 @@ static void DRW_engines_draw_text(void)
}
}
+/**
+ * Returns the offset required for the drawing of engines info.
+ */
+int DRW_draw_region_engine_info_offset()
+{
+ int offset = 0;
+ for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
+ DrawEngineType *engine = link->data;
+ ViewportEngineData *data = DRW_viewport_engine_data_get(engine);
+
+ if (data->info[0] != '\0') {
+ offset += UI_UNIT_Y;
+ }
+ }
+ return offset;
+}
+
+/**
+ * Actual drawing;
+ */
+void DRW_draw_region_engine_info()
+{
+ 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_get(engine);
+
+ if (data->info[0] != '\0') {
+ ED_region_info_draw(ar, data->info, fill_color, true);
+ }
+ }
+}
+
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 c6a0d6ed5b1..b4d0a9309dd 100644
--- a/source/blender/draw/intern/draw_view.c
+++ b/source/blender/draw/intern/draw_view.c
@@ -61,9 +61,17 @@ void DRW_draw_region_info(void)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
ARegion *ar = draw_ctx->ar;
+ int offset;
DRW_draw_cursor();
- view3d_draw_region_info(draw_ctx->evil_C, ar);
+
+ 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();
+ }
}
/* ************************* Grid ************************** */