static PointerRNA rna_RenderEngine_render_get(PointerRNA *ptr) { RenderEngine *engine = (RenderEngine *)ptr->data; if (engine->re) { RenderData *r = RE_engine_get_render_data(engine->re); return rna_pointer_inherit_refine(ptr, &RNA_RenderSettings, r); } else { return rna_pointer_inherit_refine(ptr, &RNA_RenderSettings, NULL); } }
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(); } } }