Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_sequencer/sequencer_draw.c
| Show First 20 Lines • Show All 1,235 Lines • ▼ Show 20 Lines | void ED_sequencer_special_preview_set(bContext *C, const int mval[2]) | ||||
| sequencer_special_update_set(seq); | sequencer_special_update_set(seq); | ||||
| } | } | ||||
| void ED_sequencer_special_preview_clear(void) | void ED_sequencer_special_preview_clear(void) | ||||
| { | { | ||||
| sequencer_special_update_set(NULL); | sequencer_special_update_set(NULL); | ||||
| } | } | ||||
| static void sequencer_render_data_downscale_set(SeqRenderData *context, | |||||
| const SpaceSeq *sseq, | |||||
| const View2D *v2d) | |||||
| { | |||||
| if (sseq->render_size != SEQ_RENDER_SIZE_AUTOMATIC) { | |||||
| return; | |||||
| } | |||||
| const Scene *scene = context->scene; | |||||
| rcti rect_tot; | |||||
| UI_view2d_view_to_region_rcti(v2d, &v2d->tot, &rect_tot); | |||||
| const int viewport_image_width = BLI_rcti_size_x(&rect_tot); | |||||
| const float viewport_downscale_factor = (float)scene->r.xsch / (float)viewport_image_width; | |||||
| context->downscale_factor = downscale_index_to_downscale_factor( | |||||
| downscale_factor_to_downscale_index(viewport_downscale_factor)); | |||||
| context->rectx = scene->r.xsch / context->downscale_factor; | |||||
| context->recty = scene->r.ysch / context->downscale_factor; | |||||
| } | |||||
| /** | /** | ||||
| * Rendering using opengl will change the current viewport/context. | * Rendering using opengl will change the current viewport/context. | ||||
| * This is why we need the \a region, to set back the render area. | * This is why we need the \a region, to set back the render area. | ||||
| * | * | ||||
| * TODO: do not rely on such hack and just update the \a ibuf outside of | * TODO: do not rely on such hack and just update the \a ibuf outside of | ||||
| * the UI drawing code. | * the UI drawing code. | ||||
| **/ | **/ | ||||
| ImBuf *sequencer_ibuf_get(struct Main *bmain, | ImBuf *sequencer_ibuf_get(struct Main *bmain, | ||||
| Show All 23 Lines | ImBuf *sequencer_ibuf_get(struct Main *bmain, | ||||
| } | } | ||||
| rectx = roundf(render_size * scene->r.xsch); | rectx = roundf(render_size * scene->r.xsch); | ||||
| recty = roundf(render_size * scene->r.ysch); | recty = roundf(render_size * scene->r.ysch); | ||||
| SEQ_render_new_render_data( | SEQ_render_new_render_data( | ||||
| bmain, depsgraph, scene, rectx, recty, sseq->render_size, false, &context); | bmain, depsgraph, scene, rectx, recty, sseq->render_size, false, &context); | ||||
| context.view_id = BKE_scene_multiview_view_id_get(&scene->r, viewname); | context.view_id = BKE_scene_multiview_view_id_get(&scene->r, viewname); | ||||
| sequencer_render_data_downscale_set(&context, sseq, ®ion->v2d); | |||||
| /* Sequencer could start rendering, in this case we need to be sure it wouldn't be canceled | /* Sequencer could start rendering, in this case we need to be sure it wouldn't be canceled | ||||
| * by Escape pressed somewhere in the past. */ | * by Escape pressed somewhere in the past. */ | ||||
| G.is_break = false; | G.is_break = false; | ||||
| GPUViewport *viewport = WM_draw_region_get_bound_viewport(region); | GPUViewport *viewport = WM_draw_region_get_bound_viewport(region); | ||||
| GPUFrameBuffer *fb = GPU_framebuffer_active_get(); | GPUFrameBuffer *fb = GPU_framebuffer_active_get(); | ||||
| if (viewport) { | if (viewport) { | ||||
| ▲ Show 20 Lines • Show All 1,110 Lines • Show Last 20 Lines | |||||