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:
authorCampbell Barton <ideasman42@gmail.com>2012-07-25 00:33:55 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-07-25 00:33:55 +0400
commitd9dbea183622916cc62d259764a23d80f5122b5f (patch)
treeddd9dc44c56676a64985780bb1e51059cd7d8aa0
parent8509e94d3ad69aaa2bb3b14c5669ea9d596e3fd0 (diff)
move mask and draw settings into its own struct to be shared between spaces.
-rw-r--r--source/blender/blenkernel/intern/mask.c4
-rw-r--r--source/blender/blenloader/intern/readfile.c7
-rw-r--r--source/blender/editors/screen/screen_ops.c4
-rw-r--r--source/blender/editors/space_clip/clip_draw.c4
-rw-r--r--source/blender/editors/space_clip/clip_editor.c8
-rw-r--r--source/blender/editors/space_clip/space_clip.c6
-rw-r--r--source/blender/makesdna/DNA_space_types.h18
-rw-r--r--source/blender/makesrna/intern/rna_space.c47
8 files changed, 58 insertions, 40 deletions
diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c
index 6fe838666c5..6d49137d892 100644
--- a/source/blender/blenkernel/intern/mask.c
+++ b/source/blender/blenkernel/intern/mask.c
@@ -1484,8 +1484,8 @@ void BKE_mask_unlink(Main *bmain, Mask *mask)
if (sl->spacetype == SPACE_CLIP) {
SpaceClip *sc = (SpaceClip *) sl;
- if (sc->mask == mask)
- sc->mask = NULL;
+ if (sc->mask_info.mask == mask)
+ sc->mask_info.mask = NULL;
}
}
}
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index ffc62135607..68252fd7e25 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -5297,7 +5297,8 @@ static void lib_link_screen(FileData *fd, Main *main)
SpaceImage *sima = (SpaceImage *)sl;
sima->image = newlibadr_us(fd, sc->id.lib, sima->image);
-
+ sima->mask_info.mask = newlibadr_us(fd, sc->id.lib, sima->mask_info.mask);
+
/* NOTE: pre-2.5, this was local data not lib data, but now we need this as lib data
* so fingers crossed this works fine!
*/
@@ -5383,7 +5384,7 @@ static void lib_link_screen(FileData *fd, Main *main)
SpaceClip *sclip = (SpaceClip *)sl;
sclip->clip = newlibadr_us(fd, sc->id.lib, sclip->clip);
- sclip->mask = newlibadr_us(fd, sc->id.lib, sclip->mask);
+ sclip->mask_info.mask = newlibadr_us(fd, sc->id.lib, sclip->mask_info.mask);
sclip->scopes.track_search = NULL;
sclip->scopes.track_preview = NULL;
@@ -5672,7 +5673,7 @@ void lib_link_screen_restore(Main *newmain, bScreen *curscreen, Scene *curscene)
SpaceClip *sclip = (SpaceClip *)sl;
sclip->clip = restore_pointer_by_name(newmain, (ID *)sclip->clip, 1);
- sclip->mask = restore_pointer_by_name(newmain, (ID *)sclip->mask, 1);
+ sclip->mask_info.mask = restore_pointer_by_name(newmain, (ID *)sclip->mask_info.mask, 1);
sclip->scopes.ok = 0;
}
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 2391d6c909e..b63703a728d 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -1951,8 +1951,8 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
{
SpaceClip *sc = CTX_wm_space_clip(C);
if (sc) {
- if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask) {
- MaskLayer *masklay = BKE_mask_layer_active(sc->mask);
+ if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask_info.mask) {
+ MaskLayer *masklay = BKE_mask_layer_active(sc->mask_info.mask);
mask_to_keylist(&ads, masklay, &keys);
}
}
diff --git a/source/blender/editors/space_clip/clip_draw.c b/source/blender/editors/space_clip/clip_draw.c
index 37da40e11b3..7734661aa96 100644
--- a/source/blender/editors/space_clip/clip_draw.c
+++ b/source/blender/editors/space_clip/clip_draw.c
@@ -198,8 +198,8 @@ static void draw_movieclip_cache(SpaceClip *sc, ARegion *ar, MovieClip *clip, Sc
clip_draw_curfra_label(sc, x, 8.0f);
/* movie clip animation */
- if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask) {
- MaskLayer *masklay = BKE_mask_layer_active(sc->mask);
+ if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask_info.mask) {
+ MaskLayer *masklay = BKE_mask_layer_active(sc->mask_info.mask);
if (masklay) {
MaskLayerShape *masklay_shape;
diff --git a/source/blender/editors/space_clip/clip_editor.c b/source/blender/editors/space_clip/clip_editor.c
index 224a250fe4c..9bde3a3d4d5 100644
--- a/source/blender/editors/space_clip/clip_editor.c
+++ b/source/blender/editors/space_clip/clip_editor.c
@@ -115,7 +115,7 @@ int ED_space_clip_maskedit_mask_poll(bContext *C)
if (clip) {
SpaceClip *sc = CTX_wm_space_clip(C);
- return sc->mask != NULL;
+ return sc->mask_info.mask != NULL;
}
}
@@ -509,14 +509,14 @@ void ED_space_clip_set_clip(bContext *C, bScreen *screen, SpaceClip *sc, MovieCl
Mask *ED_space_clip_get_mask(SpaceClip *sc)
{
- return sc->mask;
+ return sc->mask_info.mask;
}
void ED_space_clip_set_mask(bContext *C, SpaceClip *sc, Mask *mask)
{
- sc->mask = mask;
+ sc->mask_info.mask = mask;
- if (sc->mask && sc->mask->id.us == 0) {
+ if (sc->mask_info.mask && sc->mask_info.mask->id.us == 0) {
sc->clip->id.us = 1;
}
diff --git a/source/blender/editors/space_clip/space_clip.c b/source/blender/editors/space_clip/space_clip.c
index bdbfa250674..9b1ffcf31b1 100644
--- a/source/blender/editors/space_clip/space_clip.c
+++ b/source/blender/editors/space_clip/space_clip.c
@@ -766,8 +766,8 @@ static int clip_context(const bContext *C, const char *member, bContextDataResul
return TRUE;
}
else if (CTX_data_equals(member, "edit_mask")) {
- if (sc->mask)
- CTX_data_id_pointer_set(result, &sc->mask->id);
+ if (sc->mask_info.mask)
+ CTX_data_id_pointer_set(result, &sc->mask_info.mask->id);
return TRUE;
}
@@ -1120,7 +1120,7 @@ static void clip_main_area_draw(const bContext *C, ARegion *ar)
int width, height;
ED_mask_size(C, &width, &height);
ED_mask_draw_region(mask, ar,
- sc->mask_draw_flag, sc->mask_draw_type,
+ sc->mask_info.draw_flag, sc->mask_info.draw_type,
width, height,
TRUE, TRUE,
sc->stabmat, C);
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 7e1094ef93b..0ab3b74f2e0 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -513,6 +513,15 @@ typedef enum eSpaceSeq_Proxy_RenderSize {
SEQ_PROXY_RENDER_SIZE_FULL = 100
} eSpaceSeq_Proxy_RenderSize;
+typedef struct MaskSpaceInfo
+{
+ /* **** mask editing **** */
+ struct Mask *mask;
+ /* draw options */
+ char draw_flag;
+ char draw_type;
+ char pad3[6];
+} MaskSpaceInfo;
/* File Selector ========================================== */
@@ -689,6 +698,8 @@ typedef struct SpaceImage {
char sticky; /* sticky selection type */
char dt_uvstretch;
char around;
+
+ MaskSpaceInfo mask_info;
} SpaceImage;
@@ -1012,12 +1023,7 @@ typedef struct SpaceClip {
int around, pad4; /* pivot point for transforms */
- /* **** mask editing **** */
- struct Mask *mask;
- /* draw options */
- char mask_draw_flag;
- char mask_draw_type;
- char pad3[6];
+ MaskSpaceInfo mask_info;
} SpaceClip;
/* SpaceClip->flag */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 4473a9ef0f6..9f8fbea6a15 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -1103,6 +1103,31 @@ static void rna_def_space(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "Space data type");
}
+/* for all spaces that use a mask */
+void mask_space_info(StructRNA *srna, int noteflag, const char *mask_set_func)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "mask", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "mask_info.mask");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Mask", "Mask displayed and edited in this space");
+ RNA_def_property_pointer_funcs(prop, NULL, mask_set_func, NULL, NULL);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
+
+ /* mask drawing */
+ prop = RNA_def_property(srna, "mask_draw_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "mask_info.draw_type");
+ RNA_def_property_enum_items(prop, dt_uv_items);
+ RNA_def_property_ui_text(prop, "Edge Draw Type", "Draw type for mask splines");
+ RNA_def_property_update(prop, noteflag, NULL);
+
+ prop = RNA_def_property(srna, "show_mask_smooth", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mask_info.draw_flag", MASK_DRAWFLAG_SMOOTH);
+ RNA_def_property_ui_text(prop, "Draw Smooth Splines", "");
+ RNA_def_property_update(prop, noteflag, NULL);
+}
+
static void rna_def_space_image_uv(BlenderRNA *brna)
{
StructRNA *srna;
@@ -1220,6 +1245,9 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
RNA_def_property_enum_items(prop, pivot_items);
RNA_def_property_ui_text(prop, "Pivot", "Rotation/Scaling Pivot");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_IMAGE, NULL);
+
+ /* mask */
+ mask_space_info(srna, NC_SPACE | ND_SPACE_IMAGE, NULL);
}
static void rna_def_space_outliner(BlenderRNA *brna)
@@ -3064,24 +3092,7 @@ static void rna_def_space_clip(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
/* mask */
- prop = RNA_def_property(srna, "mask", PROP_POINTER, PROP_NONE);
- RNA_def_property_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Mask", "Mask displayed and edited in this space");
- RNA_def_property_pointer_funcs(prop, NULL, "rna_SpaceClipEditor_mask_set", NULL, NULL);
- RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
-
- /* mask drawing */
- prop = RNA_def_property(srna, "mask_draw_type", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, NULL, "mask_draw_type");
- RNA_def_property_enum_items(prop, dt_uv_items);
- RNA_def_property_ui_text(prop, "Edge Draw Type", "Draw type for mask splines");
- RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
-
- prop = RNA_def_property(srna, "show_mask_smooth", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mask_draw_flag", MASK_DRAWFLAG_SMOOTH);
- RNA_def_property_ui_text(prop, "Draw Smooth Splines", "");
- RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
-
+ mask_space_info(srna, NC_SPACE | ND_SPACE_CLIP, "rna_SpaceClipEditor_mask_set");
/* mode */
prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);