Exemple #1
0
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);
	}
}
Exemple #2
0
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();
		}
	}
}