forked from bartvdbraak/blender
move mask and draw settings into its own struct to be shared between spaces.
This commit is contained in:
parent
8509e94d3a
commit
d9dbea1836
@ -1484,8 +1484,8 @@ void BKE_mask_unlink(Main *bmain, Mask *mask)
|
|||||||
if (sl->spacetype == SPACE_CLIP) {
|
if (sl->spacetype == SPACE_CLIP) {
|
||||||
SpaceClip *sc = (SpaceClip *) sl;
|
SpaceClip *sc = (SpaceClip *) sl;
|
||||||
|
|
||||||
if (sc->mask == mask)
|
if (sc->mask_info.mask == mask)
|
||||||
sc->mask = NULL;
|
sc->mask_info.mask = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5297,7 +5297,8 @@ static void lib_link_screen(FileData *fd, Main *main)
|
|||||||
SpaceImage *sima = (SpaceImage *)sl;
|
SpaceImage *sima = (SpaceImage *)sl;
|
||||||
|
|
||||||
sima->image = newlibadr_us(fd, sc->id.lib, sima->image);
|
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
|
/* 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!
|
* so fingers crossed this works fine!
|
||||||
*/
|
*/
|
||||||
@ -5383,7 +5384,7 @@ static void lib_link_screen(FileData *fd, Main *main)
|
|||||||
SpaceClip *sclip = (SpaceClip *)sl;
|
SpaceClip *sclip = (SpaceClip *)sl;
|
||||||
|
|
||||||
sclip->clip = newlibadr_us(fd, sc->id.lib, sclip->clip);
|
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_search = NULL;
|
||||||
sclip->scopes.track_preview = 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;
|
SpaceClip *sclip = (SpaceClip *)sl;
|
||||||
|
|
||||||
sclip->clip = restore_pointer_by_name(newmain, (ID *)sclip->clip, 1);
|
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;
|
sclip->scopes.ok = 0;
|
||||||
}
|
}
|
||||||
|
@ -1951,8 +1951,8 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op)
|
|||||||
{
|
{
|
||||||
SpaceClip *sc = CTX_wm_space_clip(C);
|
SpaceClip *sc = CTX_wm_space_clip(C);
|
||||||
if (sc) {
|
if (sc) {
|
||||||
if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask) {
|
if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask_info.mask) {
|
||||||
MaskLayer *masklay = BKE_mask_layer_active(sc->mask);
|
MaskLayer *masklay = BKE_mask_layer_active(sc->mask_info.mask);
|
||||||
mask_to_keylist(&ads, masklay, &keys);
|
mask_to_keylist(&ads, masklay, &keys);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,8 +198,8 @@ static void draw_movieclip_cache(SpaceClip *sc, ARegion *ar, MovieClip *clip, Sc
|
|||||||
clip_draw_curfra_label(sc, x, 8.0f);
|
clip_draw_curfra_label(sc, x, 8.0f);
|
||||||
|
|
||||||
/* movie clip animation */
|
/* movie clip animation */
|
||||||
if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask) {
|
if ((sc->mode == SC_MODE_MASKEDIT) && sc->mask_info.mask) {
|
||||||
MaskLayer *masklay = BKE_mask_layer_active(sc->mask);
|
MaskLayer *masklay = BKE_mask_layer_active(sc->mask_info.mask);
|
||||||
if (masklay) {
|
if (masklay) {
|
||||||
MaskLayerShape *masklay_shape;
|
MaskLayerShape *masklay_shape;
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ int ED_space_clip_maskedit_mask_poll(bContext *C)
|
|||||||
if (clip) {
|
if (clip) {
|
||||||
SpaceClip *sc = CTX_wm_space_clip(C);
|
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)
|
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)
|
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;
|
sc->clip->id.us = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -766,8 +766,8 @@ static int clip_context(const bContext *C, const char *member, bContextDataResul
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
else if (CTX_data_equals(member, "edit_mask")) {
|
else if (CTX_data_equals(member, "edit_mask")) {
|
||||||
if (sc->mask)
|
if (sc->mask_info.mask)
|
||||||
CTX_data_id_pointer_set(result, &sc->mask->id);
|
CTX_data_id_pointer_set(result, &sc->mask_info.mask->id);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1120,7 +1120,7 @@ static void clip_main_area_draw(const bContext *C, ARegion *ar)
|
|||||||
int width, height;
|
int width, height;
|
||||||
ED_mask_size(C, &width, &height);
|
ED_mask_size(C, &width, &height);
|
||||||
ED_mask_draw_region(mask, ar,
|
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,
|
width, height,
|
||||||
TRUE, TRUE,
|
TRUE, TRUE,
|
||||||
sc->stabmat, C);
|
sc->stabmat, C);
|
||||||
|
@ -513,6 +513,15 @@ typedef enum eSpaceSeq_Proxy_RenderSize {
|
|||||||
SEQ_PROXY_RENDER_SIZE_FULL = 100
|
SEQ_PROXY_RENDER_SIZE_FULL = 100
|
||||||
} eSpaceSeq_Proxy_RenderSize;
|
} 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 ========================================== */
|
/* File Selector ========================================== */
|
||||||
|
|
||||||
@ -689,6 +698,8 @@ typedef struct SpaceImage {
|
|||||||
char sticky; /* sticky selection type */
|
char sticky; /* sticky selection type */
|
||||||
char dt_uvstretch;
|
char dt_uvstretch;
|
||||||
char around;
|
char around;
|
||||||
|
|
||||||
|
MaskSpaceInfo mask_info;
|
||||||
} SpaceImage;
|
} SpaceImage;
|
||||||
|
|
||||||
|
|
||||||
@ -1012,12 +1023,7 @@ typedef struct SpaceClip {
|
|||||||
|
|
||||||
int around, pad4; /* pivot point for transforms */
|
int around, pad4; /* pivot point for transforms */
|
||||||
|
|
||||||
/* **** mask editing **** */
|
MaskSpaceInfo mask_info;
|
||||||
struct Mask *mask;
|
|
||||||
/* draw options */
|
|
||||||
char mask_draw_flag;
|
|
||||||
char mask_draw_type;
|
|
||||||
char pad3[6];
|
|
||||||
} SpaceClip;
|
} SpaceClip;
|
||||||
|
|
||||||
/* SpaceClip->flag */
|
/* SpaceClip->flag */
|
||||||
|
@ -1103,6 +1103,31 @@ static void rna_def_space(BlenderRNA *brna)
|
|||||||
RNA_def_property_ui_text(prop, "Type", "Space data type");
|
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)
|
static void rna_def_space_image_uv(BlenderRNA *brna)
|
||||||
{
|
{
|
||||||
StructRNA *srna;
|
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_enum_items(prop, pivot_items);
|
||||||
RNA_def_property_ui_text(prop, "Pivot", "Rotation/Scaling Pivot");
|
RNA_def_property_ui_text(prop, "Pivot", "Rotation/Scaling Pivot");
|
||||||
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_IMAGE, NULL);
|
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)
|
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);
|
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_CLIP, NULL);
|
||||||
|
|
||||||
/* mask */
|
/* mask */
|
||||||
prop = RNA_def_property(srna, "mask", PROP_POINTER, PROP_NONE);
|
mask_space_info(srna, NC_SPACE | ND_SPACE_CLIP, "rna_SpaceClipEditor_mask_set");
|
||||||
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);
|
|
||||||
|
|
||||||
|
|
||||||
/* mode */
|
/* mode */
|
||||||
prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
|
prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
|
||||||
|
Loading…
Reference in New Issue
Block a user