static void draw_render_info(const bContext *C, Scene *scene, Image *ima, ARegion *ar, float zoomx, float zoomy) { RenderResult *rr; Render *re = RE_GetRender(scene->id.name); RenderData *rd = RE_engine_get_render_data(re); Scene *stats_scene = ED_render_job_get_scene(C); if (stats_scene == NULL) { stats_scene = CTX_data_scene(C); } rr = BKE_image_acquire_renderresult(stats_scene, ima); if (rr && rr->text) { float fill_color[4] = {0.0f, 0.0f, 0.0f, 0.25f}; ED_region_info_draw(ar, rr->text, 1, fill_color); } BKE_image_release_renderresult(stats_scene, ima); if (re) { int total_tiles; bool need_free_tiles; rcti *tiles; tiles = RE_engine_get_current_tiles(re, &total_tiles, &need_free_tiles); if (total_tiles) { int i, x, y; rcti *tile; /* find window pixel coordinates of origin */ UI_view2d_view_to_region(&ar->v2d, 0.0f, 0.0f, &x, &y); glPushMatrix(); glTranslatef(x, y, 0.0f); glScalef(zoomx, zoomy, 1.0f); if (rd->mode & R_BORDER) { glTranslatef((int)(-rd->border.xmin * rd->xsch * rd->size / 100.0f), (int)(-rd->border.ymin * rd->ysch * rd->size / 100.0f), 0.0f); } UI_ThemeColor(TH_FACE_SELECT); for (i = 0, tile = tiles; i < total_tiles; i++, tile++) { glaDrawBorderCorners(tile, zoomx, zoomy); } if (need_free_tiles) { MEM_freeN(tiles); } glPopMatrix(); } } }
static void draw_render_info(Scene *scene, Image *ima, ARegion *ar, float zoomx, float zoomy) { RenderResult *rr; Render *re = RE_GetRender(scene->id.name); rr = BKE_image_acquire_renderresult(scene, ima); if (rr && rr->text) { ED_region_info_draw(ar, rr->text, 1, 0.25); } BKE_image_release_renderresult(scene, ima); if (re) { int total_tiles; rcti *tiles; RE_engine_get_current_tiles(re, &total_tiles, &tiles); if (total_tiles) { int i, x, y; rcti *tile; /* find window pixel coordinates of origin */ UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x, &y); glPushMatrix(); glTranslatef(x, y, 0.0f); glScalef(zoomx, zoomy, 1.0f); if (scene->r.mode & R_BORDER) { glTranslatef(-scene->r.border.xmin * scene->r.xsch * scene->r.size / 100.0f, -scene->r.border.ymin * scene->r.ysch * scene->r.size / 100.0f, 0.0f); } UI_ThemeColor(TH_FACE_SELECT); for (i = 0, tile = tiles; i < total_tiles; i++, tile++) { float delta_x = 4.0f * UI_DPI_FAC / zoomx; float delta_y = 4.0f * UI_DPI_FAC / zoomy; delta_x = min_ff(delta_x, tile->xmax - tile->xmin); delta_y = min_ff(delta_y, tile->ymax - tile->ymin); /* left bottom corner */ glBegin(GL_LINE_STRIP); glVertex2f(tile->xmin, tile->ymin + delta_y); glVertex2f(tile->xmin, tile->ymin); glVertex2f(tile->xmin + delta_x, tile->ymin); glEnd(); /* left top corner */ glBegin(GL_LINE_STRIP); glVertex2f(tile->xmin, tile->ymax - delta_y); glVertex2f(tile->xmin, tile->ymax); glVertex2f(tile->xmin + delta_x, tile->ymax); glEnd(); /* right bottom corner */ glBegin(GL_LINE_STRIP); glVertex2f(tile->xmax - delta_x, tile->ymin); glVertex2f(tile->xmax, tile->ymin); glVertex2f(tile->xmax, tile->ymin + delta_y); glEnd(); /* right top corner */ glBegin(GL_LINE_STRIP); glVertex2f(tile->xmax - delta_x, tile->ymax); glVertex2f(tile->xmax, tile->ymax); glVertex2f(tile->xmax, tile->ymax - delta_y); glEnd(); } MEM_freeN(tiles); glPopMatrix(); } } }