adjustments to recent commit:
* inv_ -> inverted_ * flagged image dirty after invert. * restored properties accidently cut out of unpack operator. brecht.beers[lmg]++ thanks for paying attention! :)
This commit is contained in:
@@ -158,23 +158,23 @@ class IMAGE_MT_image_invert(bpy.types.Menu):
|
|||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
op = layout.operator("image.invert", text="Invert Image Colors");
|
op = layout.operator("image.invert", text="Invert Image Colors");
|
||||||
op.inv_r = True;
|
op.invert_r = True;
|
||||||
op.inv_g = True;
|
op.invert_g = True;
|
||||||
op.inv_b = True;
|
op.invert_b = True;
|
||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
|
|
||||||
op = layout.operator("image.invert", text="Invert Red Channel");
|
op = layout.operator("image.invert", text="Invert Red Channel");
|
||||||
op.inv_r = True;
|
op.invert_r = True;
|
||||||
|
|
||||||
op = layout.operator("image.invert", text="Invert Green Channel");
|
op = layout.operator("image.invert", text="Invert Green Channel");
|
||||||
op.inv_g = True;
|
op.invert_g = True;
|
||||||
|
|
||||||
op = layout.operator("image.invert", text="Invert Blue Channel");
|
op = layout.operator("image.invert", text="Invert Blue Channel");
|
||||||
op.inv_b = True;
|
op.invert_b = True;
|
||||||
|
|
||||||
op = layout.operator("image.invert", text="Invert Alpha Channel");
|
op = layout.operator("image.invert", text="Invert Alpha Channel");
|
||||||
op.inv_a = True;
|
op.invert_a = True;
|
||||||
|
|
||||||
|
|
||||||
class IMAGE_MT_uvs_showhide(bpy.types.Menu):
|
class IMAGE_MT_uvs_showhide(bpy.types.Menu):
|
||||||
|
|||||||
@@ -1353,12 +1353,12 @@ static int image_invert_exec(bContext *C, wmOperator *op) {
|
|||||||
|
|
||||||
// flags indicate if this channel should be inverted
|
// flags indicate if this channel should be inverted
|
||||||
short r,g,b,a;
|
short r,g,b,a;
|
||||||
int i;
|
int i, dirty = 0;
|
||||||
|
|
||||||
r = RNA_boolean_get(op->ptr, "inv_r");
|
r = RNA_boolean_get(op->ptr, "invert_r");
|
||||||
g = RNA_boolean_get(op->ptr, "inv_g");
|
g = RNA_boolean_get(op->ptr, "invert_g");
|
||||||
b = RNA_boolean_get(op->ptr, "inv_b");
|
b = RNA_boolean_get(op->ptr, "invert_b");
|
||||||
a = RNA_boolean_get(op->ptr, "inv_a");
|
a = RNA_boolean_get(op->ptr, "invert_a");
|
||||||
|
|
||||||
/* TODO: make this into an IMB_invert_channels(ibuf,r,g,b,a) method!? */
|
/* TODO: make this into an IMB_invert_channels(ibuf,r,g,b,a) method!? */
|
||||||
if (ibuf->rect_float) {
|
if (ibuf->rect_float) {
|
||||||
@@ -1370,6 +1370,7 @@ static int image_invert_exec(bContext *C, wmOperator *op) {
|
|||||||
if( b ) fp[2] = 1.0f - fp[2];
|
if( b ) fp[2] = 1.0f - fp[2];
|
||||||
if( a ) fp[3] = 1.0f - fp[3];
|
if( a ) fp[3] = 1.0f - fp[3];
|
||||||
}
|
}
|
||||||
|
dirty = 1;
|
||||||
IMB_rect_from_float(ibuf);
|
IMB_rect_from_float(ibuf);
|
||||||
}
|
}
|
||||||
else if(ibuf->rect) {
|
else if(ibuf->rect) {
|
||||||
@@ -1381,10 +1382,12 @@ static int image_invert_exec(bContext *C, wmOperator *op) {
|
|||||||
if( b ) cp[2] = 255 - cp[2];
|
if( b ) cp[2] = 255 - cp[2];
|
||||||
if( a ) cp[3] = 255 - cp[3];
|
if( a ) cp[3] = 255 - cp[3];
|
||||||
}
|
}
|
||||||
|
dirty = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return OPERATOR_CANCELLED;
|
return OPERATOR_CANCELLED;
|
||||||
|
|
||||||
|
ibuf->userflags |= IB_BITMAPDIRTY; // mark as modified
|
||||||
WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima);
|
WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima);
|
||||||
|
|
||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
@@ -1400,10 +1403,10 @@ void IMAGE_OT_invert(wmOperatorType *ot) {
|
|||||||
ot->exec= image_invert_exec;
|
ot->exec= image_invert_exec;
|
||||||
|
|
||||||
/* properties */
|
/* properties */
|
||||||
RNA_def_boolean(ot->srna, "inv_r", 0, "Red", "Invert Red Channel");
|
RNA_def_boolean(ot->srna, "invert_r", 0, "Red", "Invert Red Channel");
|
||||||
RNA_def_boolean(ot->srna, "inv_g", 0, "Green", "Invert Green Channel");
|
RNA_def_boolean(ot->srna, "invert_g", 0, "Green", "Invert Green Channel");
|
||||||
RNA_def_boolean(ot->srna, "inv_b", 0, "Blue", "Invert Blue Channel");
|
RNA_def_boolean(ot->srna, "invert_b", 0, "Blue", "Invert Blue Channel");
|
||||||
RNA_def_boolean(ot->srna, "inv_a", 0, "Alpha", "Invert Alpha Channel");
|
RNA_def_boolean(ot->srna, "invert_a", 0, "Alpha", "Invert Alpha Channel");
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||||
@@ -1563,6 +1566,10 @@ void IMAGE_OT_unpack(wmOperatorType *ot)
|
|||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
|
||||||
|
|
||||||
|
/* properties */
|
||||||
|
RNA_def_enum(ot->srna, "method", unpack_method_items, PF_USE_LOCAL, "Method", "How to unpack.");
|
||||||
|
RNA_def_string(ot->srna, "id", "", 21, "Image Name", "Image datablock name to unpack."); /* XXX, weark!, will fail with library, name collisions */
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************** sample image operator ********************/
|
/******************** sample image operator ********************/
|
||||||
|
|||||||
Reference in New Issue
Block a user