[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49170] trunk/blender/source/blender: generalize mask poll functions and sequencer mask code.

Campbell Barton ideasman42 at gmail.com
Tue Jul 24 11:53:30 CEST 2012


Revision: 49170
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49170
Author:   campbellbarton
Date:     2012-07-24 09:53:29 +0000 (Tue, 24 Jul 2012)
Log Message:
-----------
generalize mask poll functions and sequencer mask code.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenkernel/intern/sequencer.c
    trunk/blender/source/blender/editors/include/ED_sequencer.h
    trunk/blender/source/blender/editors/mask/mask_draw.c
    trunk/blender/source/blender/editors/mask/mask_edit.c
    trunk/blender/source/blender/editors/space_clip/space_clip.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
    trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2012-07-24 09:53:29 UTC (rev 49170)
@@ -182,8 +182,8 @@
 int              BKE_sequencer_active_get_pair(struct Scene *scene,
                                                struct Sequence **seq_act, struct Sequence **seq_other);
 void             BKE_sequencer_active_set(struct Scene *scene, struct Sequence *seq);
+struct Mask      *BKE_sequencer_mask_get(struct Scene *scene);
 
-
 /* apply functions recursively */
 int seqbase_recursive_apply(struct ListBase *seqbase, int (*apply_func)(struct Sequence *seq, void *), void *arg);
 int seq_recursive_apply(struct Sequence *seq, int (*apply_func)(struct Sequence *, void *), void *arg);

Modified: trunk/blender/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/blenkernel/intern/sequencer.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -3810,6 +3810,18 @@
 	}
 }
 
+Mask *BKE_sequencer_mask_get(Scene *scene)
+{
+	Sequence *seq_act = BKE_sequencer_active_get(scene);
+
+	if (seq_act && seq_act->type == SEQ_TYPE_MASK) {
+		return seq_act->mask;
+	}
+	else {
+		return NULL;
+	}
+}
+
 /* api like funcs for adding */
 
 void seq_load_apply(Scene *scene, Sequence *seq, SeqLoadInfo *seq_load)

Modified: trunk/blender/source/blender/editors/include/ED_sequencer.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_sequencer.h	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/include/ED_sequencer.h	2012-07-24 09:53:29 UTC (rev 49170)
@@ -29,10 +29,15 @@
 
 struct Scene;
 struct Sequence;
+struct SpaceSeq;
 
 void ED_sequencer_select_sequence_single(struct Scene *scene, struct Sequence *seq, int deselect_all);
 void ED_sequencer_deselect_all(struct Scene *scene);
 
+int ED_space_sequencer_maskedit_mask_poll(struct bContext *C);
+int ED_space_sequencer_check_show_maskedit(struct SpaceSeq *sseq, struct Scene *scene);
+int ED_space_sequencer_maskedit_poll(bContext *C);
+
 void ED_operatormacros_sequencer(void);
 
 #endif /*  __ED_SEQUENCER_H__ */

Modified: trunk/blender/source/blender/editors/mask/mask_draw.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_draw.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/mask/mask_draw.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -129,7 +129,8 @@
 	if (!spline->tot_point)
 		return;
 
-	hsize = UI_GetThemeValuef(TH_HANDLE_VERTEX_SIZE);
+	/* TODO, add this to sequence editor */
+	hsize = 4; /* UI_GetThemeValuef(TH_HANDLE_VERTEX_SIZE); */
 
 	glPointSize(hsize);
 

Modified: trunk/blender/source/blender/editors/mask/mask_edit.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_edit.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/mask/mask_edit.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -44,6 +44,7 @@
 #include "ED_mask.h"  /* own include */
 #include "ED_object.h" /* ED_keymap_proportional_maskmode only */
 #include "ED_clip.h"
+#include "ED_sequencer.h"
 #include "ED_transform.h"
 
 #include "RNA_access.h"
@@ -54,23 +55,29 @@
 
 int ED_maskedit_poll(bContext *C)
 {
-	SpaceClip *sc = CTX_wm_space_clip(C);
-
-	if (sc) {
-		return ED_space_clip_maskedit_poll(C);
+	ScrArea *sa = CTX_wm_area(C);
+	if (sa) {
+		switch (sa->spacetype) {
+			case SPACE_CLIP:
+				return ED_space_clip_maskedit_poll(C);
+			case SPACE_SEQ:
+				return ED_space_sequencer_maskedit_poll(C);
+		}
 	}
-
 	return FALSE;
 }
 
 int ED_maskedit_mask_poll(bContext *C)
 {
-	SpaceClip *sc = CTX_wm_space_clip(C);
-
-	if (sc) {
-		return ED_space_clip_maskedit_mask_poll(C);
+	ScrArea *sa = CTX_wm_area(C);
+	if (sa) {
+		switch (sa->spacetype) {
+			case SPACE_CLIP:
+				return ED_space_clip_maskedit_mask_poll(C);
+			case SPACE_SEQ:
+				return ED_space_sequencer_maskedit_mask_poll(C);
+		}
 	}
-
 	return FALSE;
 }
 

Modified: trunk/blender/source/blender/editors/space_clip/space_clip.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -1066,10 +1066,10 @@
 
 	UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
 
-	/* own keymap */
 	keymap = WM_keymap_find(wm->defaultconf, "Mask Editing", 0, 0);
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
 
+	/* own keymap */
 	keymap = WM_keymap_find(wm->defaultconf, "Clip", SPACE_CLIP, 0);
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -798,6 +798,61 @@
 	else special_seq_update = NULL;
 }
 
+static void sequencer_main_area_draw_mask(const bContext *C, Scene *scene, ARegion *ar)
+{
+	Mask *mask = BKE_sequencer_mask_get(scene);
+
+	if (mask) {
+		struct View2D *v2d = &ar->v2d;
+
+		int x, y;
+		int width, height;
+		float zoomx, zoomy;
+
+		/* frame image */
+		float maxdim;
+		float xofs, yofs;
+
+		/* find window pixel coordinates of origin */
+		UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x, &y);
+
+		width = v2d->tot.xmax - v2d->tot.xmin;
+		height = v2d->tot.ymax - v2d->tot.ymin;
+
+		zoomx = (float)(ar->winrct.xmax - ar->winrct.xmin + 1) / (float)((ar->v2d.cur.xmax - ar->v2d.cur.xmin));
+		zoomy = (float)(ar->winrct.ymax - ar->winrct.ymin + 1) / (float)((ar->v2d.cur.ymax - ar->v2d.cur.ymin));
+
+		x += v2d->tot.xmin * zoomx;
+		y += v2d->tot.ymin * zoomy;
+
+		/* frame the image */
+		maxdim = maxf(width, height);
+		if (width == height) {
+			xofs = yofs = 0;
+		}
+		else if (width < height) {
+			xofs = ((height - width) / -2.0f) * zoomx;
+			yofs = 0.0f;
+		}
+		else { /* (width > height) */
+			xofs = 0.0f;
+			yofs = ((width - height) / -2.0f) * zoomy;
+		}
+
+		/* apply transformation so mask editing tools will assume drawing from the origin in normalized space */
+		glPushMatrix();
+		glTranslatef(x + xofs, y + yofs, 0);
+		glScalef(maxdim * zoomx, maxdim * zoomy, 0);
+
+		ED_mask_draw((bContext *)C, 0, 0); // sc->mask_draw_flag, sc->mask_draw_type
+
+		ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST_VIEW);
+
+		glPopMatrix();
+	}
+}
+
+
 void draw_image_seq(const bContext *C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs)
 {
 	struct Main *bmain = CTX_data_main(C);
@@ -992,54 +1047,7 @@
 
 	//if (sc->mode == SC_MODE_MASKEDIT) {
 	if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
-		Sequence *seq_act = BKE_sequencer_active_get(scene);
-
-		if (seq_act && seq_act->type == SEQ_TYPE_MASK && seq_act->mask) {
-			int x, y;
-			int width, height;
-			float zoomx, zoomy;
-
-			/* frame image */
-			float maxdim;
-			float xofs, yofs;
-
-			/* find window pixel coordinates of origin */
-			UI_view2d_to_region_no_clip(&ar->v2d, 0.0f, 0.0f, &x, &y);
-
-			width = v2d->tot.xmax - v2d->tot.xmin;
-			height = v2d->tot.ymax - v2d->tot.ymin;
-
-			zoomx = (float)(ar->winrct.xmax - ar->winrct.xmin + 1) / (float)((ar->v2d.cur.xmax - ar->v2d.cur.xmin));
-			zoomy = (float)(ar->winrct.ymax - ar->winrct.ymin + 1) / (float)((ar->v2d.cur.ymax - ar->v2d.cur.ymin));
-
-			x += v2d->tot.xmin * zoomx;
-			y += v2d->tot.ymin * zoomy;
-
-			/* frame the image */
-			maxdim = maxf(width, height);
-			if (width == height) {
-				xofs = yofs = 0;
-			}
-			else if (width < height) {
-				xofs = ((height - width) / -2.0f) * zoomx;
-				yofs = 0.0f;
-			}
-			else { /* (width > height) */
-				xofs = 0.0f;
-				yofs = ((width - height) / -2.0f) * zoomy;
-			}
-
-			/* apply transformation so mask editing tools will assume drawing from the origin in normalized space */
-			glPushMatrix();
-			glTranslatef(x + xofs, y + yofs, 0);
-			glScalef(maxdim * zoomx, maxdim * zoomy, 0);
-
-			ED_mask_draw((bContext *)C, 0, 0); // sc->mask_draw_flag, sc->mask_draw_type
-
-			ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST_VIEW);
-
-			glPopMatrix();
-		}
+		sequencer_main_area_draw_mask(C, scene, ar);
 	}
 
 }

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_edit.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -466,6 +466,33 @@
 	}
 }
 
+int ED_space_sequencer_maskedit_mask_poll(bContext *C)
+{
+	/* in this case both funcs are the same, for clip editor not */
+	return ED_space_sequencer_maskedit_poll(C);
+}
+
+int ED_space_sequencer_check_show_maskedit(SpaceSeq *sseq, Scene *scene)
+{
+	if (sseq && sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
+		return (BKE_sequencer_mask_get(scene) != NULL);
+	}
+
+	return FALSE;
+}
+
+int ED_space_sequencer_maskedit_poll(bContext *C)
+{
+	SpaceSeq *sseq = CTX_wm_space_seq(C);
+
+	if (sseq) {
+		Scene *scene = CTX_data_scene(C);
+		return ED_space_sequencer_check_show_maskedit(sseq, scene);
+	}
+
+	return FALSE;
+}
+
 int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequence **selseq1, Sequence **selseq2, Sequence **selseq3, const char **error_str)
 {
 	Editing *ed = BKE_sequencer_editing_get(scene, FALSE);

Modified: trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c	2012-07-24 09:08:27 UTC (rev 49169)
+++ trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c	2012-07-24 09:53:29 UTC (rev 49170)
@@ -300,7 +300,10 @@
 	ListBase *lb;
 	

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list