diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-07-25 00:33:55 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-07-25 00:33:55 +0400 |
commit | d9dbea183622916cc62d259764a23d80f5122b5f (patch) | |
tree | ddd9dc44c56676a64985780bb1e51059cd7d8aa0 | |
parent | 8509e94d3ad69aaa2bb3b14c5669ea9d596e3fd0 (diff) |
move mask and draw settings into its own struct to be shared between spaces.
-rw-r--r-- | source/blender/blenkernel/intern/mask.c | 4 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 7 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_draw.c | 4 | ||||
-rw-r--r-- | source/blender/editors/space_clip/clip_editor.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_clip/space_clip.c | 6 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_space_types.h | 18 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_space.c | 47 |
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); |