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:
authorTianwei Shen <shentianweipku@gmail.com>2016-08-02 19:04:12 +0300
committerTianwei Shen <shentianweipku@gmail.com>2016-08-02 19:04:12 +0300
commit8e66dbdf9788c7b0f11d4d2a588f148719afc742 (patch)
tree5ad1f872b17d4e561bd59957cd451c54d3d05860 /source/blender/editors/space_clip
parent9527950b37bc782514a43fbbd79179c17d41c1bb (diff)
seperate zoom from SpaceClip to RegionSpaceClip
- mark zoom in SpaceClip as deprecated - known issue: versioning is not done
Diffstat (limited to 'source/blender/editors/space_clip')
-rw-r--r--source/blender/editors/space_clip/clip_draw.c68
-rw-r--r--source/blender/editors/space_clip/clip_editor.c73
-rw-r--r--source/blender/editors/space_clip/clip_ops.c55
-rw-r--r--source/blender/editors/space_clip/space_clip.c41
-rw-r--r--source/blender/editors/space_clip/tracking_ops.c8
-rw-r--r--source/blender/editors/space_clip/tracking_ops_plane.c8
6 files changed, 146 insertions, 107 deletions
diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index 99e12021382..f59df488683 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -472,7 +472,7 @@ static void draw_track_path(SpaceClip *sc, MovieClip *UNUSED(clip), MovieTrackin
glEnd();
}
-static void draw_marker_outline(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker,
+static void draw_marker_outline(SpaceClip *sc, ARegion *ar, MovieTrackingTrack *track, MovieTrackingMarker *marker,
const float marker_pos[2], int width, int height)
{
int tiny = sc->flag & SC_SHOW_TINY_MARKER;
@@ -481,8 +481,9 @@ static void draw_marker_outline(SpaceClip *sc, MovieTrackingTrack *track, MovieT
UI_ThemeColor(TH_MARKER_OUTLINE);
- px[0] = 1.0f / width / sc->zoom;
- px[1] = 1.0f / height / sc->zoom;
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
+ px[0] = 1.0f / width / rsc->zoom;
+ px[1] = 1.0f / height / rsc->zoom;
glLineWidth(tiny ? 1.0f : 3.0f);
@@ -586,7 +587,7 @@ static void track_colors(MovieTrackingTrack *track, int act, int link, float col
}
}
-static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker,
+static void draw_marker_areas(SpaceClip *sc, ARegion *ar, MovieTrackingTrack *track, MovieTrackingMarker *marker,
const float marker_pos[2], int width, int height, int act, int sel)
{
int tiny = sc->flag & SC_SHOW_TINY_MARKER;
@@ -597,8 +598,9 @@ static void draw_marker_areas(SpaceClip *sc, MovieTrackingTrack *track, MovieTra
bool link = is_track_linked(tracking, track);
track_colors(track, act, link, col, scol);
- px[0] = 1.0f / width / sc->zoom;
- px[1] = 1.0f / height / sc->zoom;
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
+ px[0] = 1.0f / width / rsc->zoom;
+ px[1] = 1.0f / height / rsc->zoom;
glLineWidth(1.0f);
@@ -806,7 +808,7 @@ static void draw_marker_slide_triangle(float x, float y, float dx, float dy, int
glEnd();
}
-static void draw_marker_slide_zones(SpaceClip *sc, MovieTrackingTrack *track, MovieTrackingMarker *marker,
+static void draw_marker_slide_zones(SpaceClip *sc, ARegion *ar, MovieTrackingTrack *track, MovieTrackingMarker *marker,
const float marker_pos[2], int outline, int sel, int act, int width, int height)
{
float dx, dy, patdx, patdy, searchdx, searchdy;
@@ -830,8 +832,9 @@ static void draw_marker_slide_zones(SpaceClip *sc, MovieTrackingTrack *track, Mo
glPushMatrix();
glTranslate2fv(marker_pos);
- dx = 6.0f / width / sc->zoom;
- dy = 6.0f / height / sc->zoom;
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
+ dx = 6.0f / width / rsc->zoom;
+ dy = 6.0f / height / rsc->zoom;
side = get_shortest_pattern_side(marker);
patdx = min_ff(dx * 2.0f / 3.0f, side / 6.0f) * UI_DPI_FAC;
@@ -840,8 +843,8 @@ static void draw_marker_slide_zones(SpaceClip *sc, MovieTrackingTrack *track, Mo
searchdx = min_ff(dx, (marker->search_max[0] - marker->search_min[0]) / 6.0f) * UI_DPI_FAC;
searchdy = min_ff(dy, (marker->search_max[1] - marker->search_min[1]) / 6.0f) * UI_DPI_FAC;
- px[0] = 1.0f / sc->zoom / width / sc->scale;
- px[1] = 1.0f / sc->zoom / height / sc->scale;
+ px[0] = 1.0f / rsc->zoom / width / sc->scale;
+ px[1] = 1.0f / rsc->zoom / height / sc->scale;
if ((sc->flag & SC_SHOW_MARKER_SEARCH) && ((track->search_flag & SELECT) == sel || outline)) {
if (!outline) {
@@ -1122,7 +1125,7 @@ static void draw_plane_marker_image(Scene *scene,
BKE_image_release_ibuf(image, ibuf, lock);
}
-static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track,
+static void draw_plane_marker_ex(SpaceClip *sc, ARegion *ar, Scene *scene, MovieTrackingPlaneTrack *plane_track,
MovieTrackingPlaneMarker *plane_marker, bool is_active_track,
bool draw_outline, int width, int height)
{
@@ -1147,8 +1150,9 @@ static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlane
}
}
- px[0] = 1.0f / width / sc->zoom;
- px[1] = 1.0f / height / sc->zoom;
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
+ px[0] = 1.0f / width / rsc->zoom;
+ px[1] = 1.0f / height / rsc->zoom;
/* Draw image */
if (draw_outline == false) {
@@ -1185,12 +1189,12 @@ static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlane
glBegin(GL_LINES);
- getArrowEndPoint(width, height, sc->zoom, plane_marker->corners[0], plane_marker->corners[1], end_point);
+ getArrowEndPoint(width, height, rsc->zoom, plane_marker->corners[0], plane_marker->corners[1], end_point);
glColor3f(1.0, 0.0, 0.0f);
glVertex2fv(plane_marker->corners[0]);
glVertex2fv(end_point);
- getArrowEndPoint(width, height, sc->zoom, plane_marker->corners[0], plane_marker->corners[3], end_point);
+ getArrowEndPoint(width, height, rsc->zoom, plane_marker->corners[0], plane_marker->corners[3], end_point);
glColor3f(0.0, 1.0, 0.0f);
glVertex2fv(plane_marker->corners[0]);
glVertex2fv(end_point);
@@ -1218,28 +1222,28 @@ static void draw_plane_marker_ex(SpaceClip *sc, Scene *scene, MovieTrackingPlane
}
}
-static void draw_plane_marker_outline(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track,
+static void draw_plane_marker_outline(SpaceClip *sc, ARegion *ar, Scene *scene, MovieTrackingPlaneTrack *plane_track,
MovieTrackingPlaneMarker *plane_marker, int width, int height)
{
- draw_plane_marker_ex(sc, scene, plane_track, plane_marker, false, true, width, height);
+ draw_plane_marker_ex(sc, ar, scene, plane_track, plane_marker, false, true, width, height);
}
-static void draw_plane_marker(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track,
+static void draw_plane_marker(SpaceClip *sc, ARegion *ar, Scene *scene, MovieTrackingPlaneTrack *plane_track,
MovieTrackingPlaneMarker *plane_marker, bool is_active_track,
int width, int height)
{
- draw_plane_marker_ex(sc, scene, plane_track, plane_marker, is_active_track, false, width, height);
+ draw_plane_marker_ex(sc, ar, scene, plane_track, plane_marker, is_active_track, false, width, height);
}
-static void draw_plane_track(SpaceClip *sc, Scene *scene, MovieTrackingPlaneTrack *plane_track,
+static void draw_plane_track(SpaceClip *sc, ARegion *ar, Scene *scene, MovieTrackingPlaneTrack *plane_track,
int framenr, bool is_active_track, int width, int height)
{
MovieTrackingPlaneMarker *plane_marker;
plane_marker = BKE_tracking_plane_marker_get(plane_track, framenr);
- draw_plane_marker_outline(sc, scene, plane_track, plane_marker, width, height);
- draw_plane_marker(sc, scene, plane_track, plane_marker, is_active_track, width, height);
+ draw_plane_marker_outline(sc, ar, scene, plane_track, plane_marker, width, height);
+ draw_plane_marker(sc, ar, scene, plane_track, plane_marker, is_active_track, width, height);
}
/* Draw all kind of tracks. */
@@ -1283,7 +1287,7 @@ static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *ar, Movie
plane_track = plane_track->next)
{
if ((plane_track->flag & PLANE_TRACK_HIDDEN) == 0) {
- draw_plane_track(sc, scene, plane_track, framenr, plane_track == active_plane_track, width, height);
+ draw_plane_track(sc, ar, scene, plane_track, framenr, plane_track == active_plane_track, width, height);
}
}
@@ -1348,10 +1352,10 @@ static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *ar, Movie
if (MARKER_VISIBLE(sc, track, marker)) {
copy_v2_v2(cur_pos, fp ? fp : marker->pos);
- draw_marker_outline(sc, track, marker, cur_pos, width, height);
- draw_marker_areas(sc, track, marker, cur_pos, width, height, 0, 0);
- draw_marker_slide_zones(sc, track, marker, cur_pos, 1, 0, 0, width, height);
- draw_marker_slide_zones(sc, track, marker, cur_pos, 0, 0, 0, width, height);
+ draw_marker_outline(sc, ar, track, marker, cur_pos, width, height);
+ draw_marker_areas(sc, ar, track, marker, cur_pos, width, height, 0, 0);
+ draw_marker_slide_zones(sc, ar, track, marker, cur_pos, 1, 0, 0, width, height);
+ draw_marker_slide_zones(sc, ar, track, marker, cur_pos, 0, 0, 0, width, height);
if (fp)
fp += 2;
@@ -1374,8 +1378,8 @@ static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *ar, Movie
if (!act) {
copy_v2_v2(cur_pos, fp ? fp : marker->pos);
- draw_marker_areas(sc, track, marker, cur_pos, width, height, 0, 1);
- draw_marker_slide_zones(sc, track, marker, cur_pos, 0, 1, 0, width, height);
+ draw_marker_areas(sc, ar, track, marker, cur_pos, width, height, 0, 1);
+ draw_marker_slide_zones(sc, ar, track, marker, cur_pos, 0, 1, 0, width, height);
}
if (fp)
@@ -1394,8 +1398,8 @@ static void draw_tracking_tracks(SpaceClip *sc, Scene *scene, ARegion *ar, Movie
if (MARKER_VISIBLE(sc, act_track, marker)) {
copy_v2_v2(cur_pos, active_pos ? active_pos : marker->pos);
- draw_marker_areas(sc, act_track, marker, cur_pos, width, height, 1, 1);
- draw_marker_slide_zones(sc, act_track, marker, cur_pos, 0, 1, 1, width, height);
+ draw_marker_areas(sc, ar, act_track, marker, cur_pos, width, height, 1, 1);
+ draw_marker_slide_zones(sc, ar, act_track, marker, cur_pos, 0, 1, 1, width, height);
}
}
}
diff --git a/source/blender/editors/space_clip/clip_editor.c b/source/blender/editors/space_clip/clip_editor.c
index 9577dae264d..f46c75e515b 100644
--- a/source/blender/editors/space_clip/clip_editor.c
+++ b/source/blender/editors/space_clip/clip_editor.c
@@ -418,6 +418,7 @@ static bool selected_boundbox(const bContext *C, float min[2], float max[2])
bool ED_clip_view_selection(const bContext *C, ARegion *ar, bool fit)
{
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
int w, h, frame_width, frame_height;
float min[2], max[2];
@@ -451,8 +452,8 @@ bool ED_clip_view_selection(const bContext *C, ARegion *ar, bool fit)
newzoom = 1.0f / power_of_2(1.0f / min_ff(zoomx, zoomy));
- if (fit || sc->zoom > newzoom)
- sc->zoom = newzoom;
+ if (fit || rsc->zoom > newzoom)
+ rsc->zoom = newzoom;
}
return true;
@@ -679,7 +680,27 @@ void ED_space_clip_set_secondary_clip(bContext *C, bScreen *screen, SpaceClip *s
/* ******** split view when changing to correspondence mode ******** */
void ED_clip_update_correspondence_mode(bContext *C, SpaceClip *sc)
{
- ARegion *ar = CTX_wm_region(C);
+ /* search forward and backward to find the drawing region */
+ ARegion *ar_origin = CTX_wm_region(C);
+ bool find_draw_region = false;
+ ARegion *ar = ar_origin;
+ while (ar && !find_draw_region) {
+ if (ar->regiontype == RGN_TYPE_WINDOW) {
+ find_draw_region = true;
+ break;
+ }
+ ar = ar->prev;
+ }
+ /* recover to the current ARegion and search backwards*/
+ ar = ar_origin;
+ while (ar && !find_draw_region) {
+ if (ar->regiontype == RGN_TYPE_WINDOW) {
+ find_draw_region = true;
+ break;
+ }
+ ar = ar->next;
+ }
+ BLI_assert(find_draw_region == true && ar != NULL);
/* some rules related to changing between correspondence mode and other mode*/
if (ar->regiontype != RGN_TYPE_WINDOW) {
@@ -687,11 +708,11 @@ void ED_clip_update_correspondence_mode(bContext *C, SpaceClip *sc)
}
else if (ar->alignment == RGN_ALIGN_VSPLIT) {
///* Exit split-view */
- //ScrArea *sa = CTX_wm_area(C);
- //ARegion *arn;
+ ScrArea *sa = CTX_wm_area(C);
+ ARegion *arn;
- ///* keep current region */
- //ar->alignment = 0;
+ /* keep current region */
+ ar->alignment = 0;
//if (sa->spacetype == SPACE_VIEW3D) {
// ARegion *ar_iter;
@@ -747,25 +768,25 @@ void ED_clip_update_correspondence_mode(bContext *C, SpaceClip *sc)
ARegion *newar = BKE_area_region_copy(sa->type, ar);
BLI_addtail(&sa->regionbase, newar);
- ///* lock views and set them */
- //if (sa->spacetype == SPACE_CLIP) {
- // View3D *v3d = sa->spacedata.first;
- // int index_qsplit = 0;
-
- // /* run ED_view3d_lock() so the correct 'rv3d->viewquat' is set,
- // * otherwise when restoring rv3d->localvd the 'viewquat' won't
- // * match the 'view', set on entering localview See: [#26315],
- // *
- // * We could avoid manipulating rv3d->localvd here if exiting
- // * localview with a 4-split would assign these view locks */
- // RegionView3D *rv3d = ar->regiondata;
- // const char viewlock = (rv3d->viewlock_quad & RV3D_VIEWLOCK_INIT) ?
- // (rv3d->viewlock_quad & ~RV3D_VIEWLOCK_INIT) : RV3D_LOCKED;
-
- // region_quadview_init_rv3d(sa, ar, viewlock, ED_view3d_lock_view_from_index(index_qsplit++), RV3D_ORTHO);
- // region_quadview_init_rv3d(sa, (ar = ar->next), viewlock, ED_view3d_lock_view_from_index(index_qsplit++), RV3D_ORTHO);
- // region_quadview_init_rv3d(sa, (ar = ar->next), viewlock, ED_view3d_lock_view_from_index(index_qsplit++), RV3D_ORTHO);
- //}
+ /* lock views and set them */
+ if (sa->spacetype == SPACE_CLIP) {
+ SpaceClip *sc = sa->spacedata.first;
+ int index_qsplit = 0;
+
+ /* run ED_view3d_lock() so the correct 'rv3d->viewquat' is set,
+ * otherwise when restoring rv3d->localvd the 'viewquat' won't
+ * match the 'view', set on entering localview See: [#26315],
+ *
+ * We could avoid manipulating rv3d->localvd here if exiting
+ * localview with a 4-split would assign these view locks */
+ RegionSpaceClip *rsc = ar->regiondata;
+ //const char viewlock = (rv3d->viewlock_quad & RV3D_VIEWLOCK_INIT) ?
+ // (rv3d->viewlock_quad & ~RV3D_VIEWLOCK_INIT) : RV3D_LOCKED;
+
+ //region_quadview_init_rv3d(sa, ar, viewlock, ED_view3d_lock_view_from_index(index_qsplit++), RV3D_ORTHO);
+ //region_quadview_init_rv3d(sa, (ar = ar->next), viewlock, ED_view3d_lock_view_from_index(index_qsplit++), RV3D_ORTHO);
+ //region_quadview_init_rv3d(sa, (ar = ar->next), viewlock, ED_view3d_lock_view_from_index(index_qsplit++), RV3D_ORTHO);
+ }
ED_area_tag_redraw(sa);
WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL);
}
diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c
index 0f85c69333c..924cd71a08a 100644
--- a/source/blender/editors/space_clip/clip_ops.c
+++ b/source/blender/editors/space_clip/clip_ops.c
@@ -91,24 +91,25 @@ static void sclip_zoom_set(const bContext *C, float zoom, float location[2])
SpaceClip *sc = CTX_wm_space_clip(C);
ARegion *ar = CTX_wm_region(C);
- float oldzoom = sc->zoom;
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
+ float oldzoom = rsc->zoom;
int width, height;
- sc->zoom = zoom;
+ rsc->zoom = zoom;
- if (sc->zoom < 0.1f || sc->zoom > 4.0f) {
+ if (rsc->zoom < 0.1f || rsc->zoom > 4.0f) {
/* check zoom limits */
ED_space_clip_get_size(sc, &width, &height);
- width *= sc->zoom;
- height *= sc->zoom;
+ width *= rsc->zoom;
+ height *= rsc->zoom;
if ((width < 4) && (height < 4))
- sc->zoom = oldzoom;
- else if (BLI_rcti_size_x(&ar->winrct) <= sc->zoom)
- sc->zoom = oldzoom;
- else if (BLI_rcti_size_y(&ar->winrct) <= sc->zoom)
- sc->zoom = oldzoom;
+ rsc->zoom = oldzoom;
+ else if (BLI_rcti_size_x(&ar->winrct) <= rsc->zoom)
+ rsc->zoom = oldzoom;
+ else if (BLI_rcti_size_y(&ar->winrct) <= rsc->zoom)
+ rsc->zoom = oldzoom;
}
if ((U.uiflag & USER_ZOOM_TO_MOUSEPOS) && location) {
@@ -116,8 +117,8 @@ static void sclip_zoom_set(const bContext *C, float zoom, float location[2])
ED_space_clip_get_size(sc, &width, &height);
- dx = ((location[0] - 0.5f) * width - sc->xof) * (sc->zoom - oldzoom) / sc->zoom;
- dy = ((location[1] - 0.5f) * height - sc->yof) * (sc->zoom - oldzoom) / sc->zoom;
+ dx = ((location[0] - 0.5f) * width - sc->xof) * (rsc->zoom - oldzoom) / rsc->zoom;
+ dy = ((location[1] - 0.5f) * height - sc->yof) * (rsc->zoom - oldzoom) / rsc->zoom;
if (sc->flag & SC_LOCK_SELECTION) {
sc->xlockof += dx;
@@ -132,9 +133,9 @@ static void sclip_zoom_set(const bContext *C, float zoom, float location[2])
static void sclip_zoom_set_factor(const bContext *C, float zoomfac, float location[2])
{
- SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_data(C);
- sclip_zoom_set(C, sc->zoom * zoomfac, location);
+ sclip_zoom_set(C, rsc->zoom * zoomfac, location);
}
static void sclip_zoom_set_factor_exec(bContext *C, const wmEvent *event, float factor)
@@ -530,11 +531,11 @@ static int view_pan_exec(bContext *C, wmOperator *op)
static int view_pan_invoke(bContext *C, wmOperator *op, const wmEvent *event)
{
if (event->type == MOUSEPAN) {
- SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
float offset[2];
- offset[0] = (event->prevx - event->x) / sc->zoom;
- offset[1] = (event->prevy - event->y) / sc->zoom;
+ offset[0] = (event->prevx - event->x) / rsc->zoom;
+ offset[1] = (event->prevy - event->y) / rsc->zoom;
RNA_float_set_array(op->ptr, "offset", offset);
@@ -551,15 +552,15 @@ static int view_pan_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int view_pan_modal(bContext *C, wmOperator *op, const wmEvent *event)
{
- SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ViewPanData *vpd = op->customdata;
float offset[2];
switch (event->type) {
case MOUSEMOVE:
copy_v2_v2(vpd->vec, &vpd->xorig);
- offset[0] = (vpd->x - event->x) / sc->zoom;
- offset[1] = (vpd->y - event->y) / sc->zoom;
+ offset[0] = (vpd->x - event->x) / rsc->zoom;
+ offset[1] = (vpd->y - event->y) / rsc->zoom;
RNA_float_set_array(op->ptr, "offset", offset);
view_pan_exec(C, op);
break;
@@ -624,6 +625,7 @@ typedef struct ViewZoomData {
static void view_zoom_init(bContext *C, wmOperator *op, const wmEvent *event)
{
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ARegion *ar = CTX_wm_region(C);
ViewZoomData *vpd;
@@ -638,7 +640,7 @@ static void view_zoom_init(bContext *C, wmOperator *op, const wmEvent *event)
vpd->x = event->x;
vpd->y = event->y;
- vpd->zoom = sc->zoom;
+ vpd->zoom = rsc->zoom;
vpd->event_type = event->type;
ED_clip_mouse_pos(sc, ar, event->mval, vpd->location);
@@ -648,11 +650,11 @@ static void view_zoom_init(bContext *C, wmOperator *op, const wmEvent *event)
static void view_zoom_exit(bContext *C, wmOperator *op, bool cancel)
{
- SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ViewZoomData *vpd = op->customdata;
if (cancel) {
- sc->zoom = vpd->zoom;
+ rsc->zoom = vpd->zoom;
ED_region_tag_redraw(CTX_wm_region(C));
}
@@ -705,7 +707,7 @@ static void view_zoom_apply(bContext *C,
float factor;
if (U.viewzoom == USER_ZOOM_CONT) {
- SpaceClip *sclip = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
double time = PIL_check_seconds_timer();
float time_step = (float)(time - vpd->timer_lastdraw);
float fac;
@@ -724,7 +726,7 @@ static void view_zoom_apply(bContext *C,
zfac = 1.0f + ((fac / 20.0f) * time_step);
vpd->timer_lastdraw = time;
- factor = (sclip->zoom * zfac) / vpd->zoom;
+ factor = (rsc->zoom * zfac) / vpd->zoom;
}
else {
float delta = event->x - vpd->x + event->y - vpd->y;
@@ -1551,6 +1553,7 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
return OPERATOR_CANCELLED;
else {
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ARegion *ar = CTX_wm_region(C);
float pan_vec[3];
@@ -1559,7 +1562,7 @@ static int clip_view_ndof_invoke(bContext *C, wmOperator *UNUSED(op), const wmEv
WM_event_ndof_pan_get(ndof, pan_vec, true);
- mul_v2_fl(pan_vec, (speed * ndof->dt) / sc->zoom);
+ mul_v2_fl(pan_vec, (speed * ndof->dt) / rsc->zoom);
pan_vec[2] *= -ndof->dt;
sclip_zoom_set_factor(C, 1.0f + pan_vec[2], NULL);
diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c
index 6480348ebe3..2f99e7d36f1 100644
--- a/source/blender/editors/space_clip/space_clip.c
+++ b/source/blender/editors/space_clip/space_clip.c
@@ -248,7 +248,7 @@ static SpaceLink *clip_new(const bContext *C)
sc->spacetype = SPACE_CLIP;
sc->flag = SC_SHOW_MARKER_PATTERN | SC_SHOW_TRACK_PATH |
SC_SHOW_GRAPH_TRACKS_MOTION | SC_SHOW_GRAPH_FRAMES | SC_SHOW_GPENCIL;
- sc->zoom = 1.0f;
+ //sc->zoom = 1.0f;
sc->path_length = 20;
sc->scopes.track_preview_height = 120;
sc->around = V3D_AROUND_LOCAL_ORIGINS;
@@ -303,6 +303,11 @@ static SpaceLink *clip_new(const bContext *C)
BLI_addtail(&sc->regionbase, ar);
ar->regiontype = RGN_TYPE_WINDOW;
+ /* region data for main region */
+ RegionSpaceClip *rsc = MEM_callocN(sizeof(RegionSpaceClip), "region data for clip");
+ rsc->zoom = 1.0f;
+ ar->regiondata = rsc;
+
return (SpaceLink *) sc;
}
@@ -1100,6 +1105,7 @@ static void clip_refresh(const bContext *C, ScrArea *sa)
static void movieclip_main_area_set_view2d(const bContext *C, ARegion *ar)
{
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
float x1, y1, w, h, aspx, aspy;
int width, height, winx, winy;
@@ -1122,19 +1128,19 @@ static void movieclip_main_area_set_view2d(const bContext *C, ARegion *ar)
ar->v2d.mask.ymax = winy;
/* which part of the image space do we see? */
- x1 = ar->winrct.xmin + (winx - sc->zoom * w) / 2.0f;
- y1 = ar->winrct.ymin + (winy - sc->zoom * h) / 2.0f;
+ x1 = ar->winrct.xmin + (winx - rsc->zoom * w) / 2.0f;
+ y1 = ar->winrct.ymin + (winy - rsc->zoom * h) / 2.0f;
- x1 -= sc->zoom * sc->xof;
- y1 -= sc->zoom * sc->yof;
+ x1 -= rsc->zoom * sc->xof;
+ y1 -= rsc->zoom * sc->yof;
/* relative display right */
- ar->v2d.cur.xmin = (ar->winrct.xmin - (float)x1) / sc->zoom;
- ar->v2d.cur.xmax = ar->v2d.cur.xmin + ((float)winx / sc->zoom);
+ ar->v2d.cur.xmin = (ar->winrct.xmin - (float)x1) / rsc->zoom;
+ ar->v2d.cur.xmax = ar->v2d.cur.xmin + ((float)winx / rsc->zoom);
/* relative display left */
- ar->v2d.cur.ymin = (ar->winrct.ymin - (float)y1) / sc->zoom;
- ar->v2d.cur.ymax = ar->v2d.cur.ymin + ((float)winy / sc->zoom);
+ ar->v2d.cur.ymin = (ar->winrct.ymin - (float)y1) / rsc->zoom;
+ ar->v2d.cur.ymax = ar->v2d.cur.ymin + ((float)winy / rsc->zoom);
/* normalize 0.0..1.0 */
ar->v2d.cur.xmin /= w;
@@ -1147,6 +1153,7 @@ static void movieclip_main_area_set_view2d(const bContext *C, ARegion *ar)
static void movieclip_secondary_clip_set_view2d(const bContext *C, ARegion *ar)
{
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = (RegionSpaceClip*) ar->regiondata;
float x1, y1, w, h, aspx, aspy;
int width, height, winx, winy;
@@ -1169,19 +1176,19 @@ static void movieclip_secondary_clip_set_view2d(const bContext *C, ARegion *ar)
ar->v2d.mask.ymax = winy;
/* which part of the image space do we see? */
- x1 = ar->winrct.xmin + (winx - sc->zoom * w) / 2.0f;
- y1 = ar->winrct.ymin + (winy - sc->zoom * h) / 2.0f;
+ x1 = ar->winrct.xmin + (winx - rsc->zoom * w) / 2.0f;
+ y1 = ar->winrct.ymin + (winy - rsc->zoom * h) / 2.0f;
- x1 -= sc->zoom * sc->xof;
- y1 -= sc->zoom * sc->yof;
+ x1 -= rsc->zoom * sc->xof;
+ y1 -= rsc->zoom * sc->yof;
/* relative display right */
- ar->v2d.cur.xmin = (ar->winrct.xmin - (float)x1) / sc->zoom;
- ar->v2d.cur.xmax = ar->v2d.cur.xmin + ((float)winx / sc->zoom);
+ ar->v2d.cur.xmin = (ar->winrct.xmin - (float)x1) / rsc->zoom;
+ ar->v2d.cur.xmax = ar->v2d.cur.xmin + ((float)winx / rsc->zoom);
/* relative display left */
- ar->v2d.cur.ymin = (ar->winrct.ymin - (float)y1) / sc->zoom;
- ar->v2d.cur.ymax = ar->v2d.cur.ymin + ((float)winy / sc->zoom);
+ ar->v2d.cur.ymin = (ar->winrct.ymin - (float)y1) / rsc->zoom;
+ ar->v2d.cur.ymax = ar->v2d.cur.ymin + ((float)winy / rsc->zoom);
/* normalize 0.0..1.0 */
ar->v2d.cur.xmin /= w;
diff --git a/source/blender/editors/space_clip/tracking_ops.c b/source/blender/editors/space_clip/tracking_ops.c
index 61bfa5b315b..79ae10ded06 100644
--- a/source/blender/editors/space_clip/tracking_ops.c
+++ b/source/blender/editors/space_clip/tracking_ops.c
@@ -594,6 +594,7 @@ MovieTrackingTrack *tracking_marker_check_slide(bContext *C,
{
const float distance_clip_squared = 12.0f * 12.0f;
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ARegion *ar = CTX_wm_region(C);
MovieClip *clip = ED_space_clip_get_clip(sc);
@@ -724,7 +725,7 @@ MovieTrackingTrack *tracking_marker_check_slide(bContext *C,
track = track->next;
}
- if (global_min_distance_squared < distance_clip_squared / sc->zoom) {
+ if (global_min_distance_squared < distance_clip_squared / rsc->zoom) {
if (area_r) {
*area_r = min_area;
}
@@ -856,6 +857,7 @@ static void free_slide_data(SlideMarkerData *data)
static int slide_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
{
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ARegion *ar = CTX_wm_region(C);
SlideMarkerData *data = (SlideMarkerData *)op->customdata;
@@ -881,13 +883,13 @@ static int slide_marker_modal(bContext *C, wmOperator *op, const wmEvent *event)
mdelta[0] = event->mval[0] - data->mval[0];
mdelta[1] = event->mval[1] - data->mval[1];
- dx = mdelta[0] / data->width / sc->zoom;
+ dx = mdelta[0] / data->width / rsc->zoom;
if (data->lock) {
dy = -dx / data->height * data->width;
}
else {
- dy = mdelta[1] / data->height / sc->zoom;
+ dy = mdelta[1] / data->height / rsc->zoom;
}
if (data->accurate) {
diff --git a/source/blender/editors/space_clip/tracking_ops_plane.c b/source/blender/editors/space_clip/tracking_ops_plane.c
index 4332f3ea765..f945c6baf9d 100644
--- a/source/blender/editors/space_clip/tracking_ops_plane.c
+++ b/source/blender/editors/space_clip/tracking_ops_plane.c
@@ -138,6 +138,7 @@ static MovieTrackingPlaneTrack *tracking_plane_marker_check_slide(
{
const float distance_clip_squared = 12.0f * 12.0f;
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
ARegion *ar = CTX_wm_region(C);
MovieClip *clip = ED_space_clip_get_clip(sc);
MovieTracking *tracking = &clip->tracking;
@@ -180,7 +181,7 @@ static MovieTrackingPlaneTrack *tracking_plane_marker_check_slide(
}
}
- if (min_distance_squared < distance_clip_squared / sc->zoom) {
+ if (min_distance_squared < distance_clip_squared / rsc->zoom) {
if (corner_r != NULL) {
*corner_r = min_corner;
}
@@ -286,6 +287,7 @@ static int slide_plane_marker_modal(bContext *C,
const wmEvent *event)
{
SpaceClip *sc = CTX_wm_space_clip(C);
+ RegionSpaceClip *rsc = CTX_wm_region_clip(C);
MovieClip *clip = ED_space_clip_get_clip(sc);
SlidePlaneMarkerData *data = (SlidePlaneMarkerData *) op->customdata;
float dx, dy, mdelta[2];
@@ -307,8 +309,8 @@ static int slide_plane_marker_modal(bContext *C,
mdelta[0] = event->mval[0] - data->previous_mval[0];
mdelta[1] = event->mval[1] - data->previous_mval[1];
- dx = mdelta[0] / data->width / sc->zoom;
- dy = mdelta[1] / data->height / sc->zoom;
+ dx = mdelta[0] / data->width / rsc->zoom;
+ dy = mdelta[1] / data->height / rsc->zoom;
if (data->accurate) {
dx /= 5.0f;