/* main modal status check */ static int eyedropper_colorband_modal(bContext *C, wmOperator *op, const wmEvent *event) { EyedropperColorband *eye = op->customdata; /* handle modal keymap */ if (event->type == EVT_MODAL_MAP) { switch (event->val) { case EYE_MODAL_CANCEL: eyedropper_colorband_cancel(C, op); return OPERATOR_CANCELLED; case EYE_MODAL_SAMPLE_CONFIRM: eyedropper_colorband_sample_segment(C, eye, event->x, event->y); eyedropper_colorband_apply(C, op); eyedropper_colorband_exit(C, op); return OPERATOR_FINISHED; case EYE_MODAL_SAMPLE_BEGIN: /* enable accum and make first sample */ eye->sample_start = true; eyedropper_colorband_sample_point(C, eye, event->x, event->y); eyedropper_colorband_apply(C, op); eye->last_x = event->x; eye->last_y = event->y; break; case EYE_MODAL_SAMPLE_RESET: break; } } else if (event->type == MOUSEMOVE) { if (eye->sample_start) { eyedropper_colorband_sample_segment(C, eye, event->x, event->y); eyedropper_colorband_apply(C, op); } } return OPERATOR_RUNNING_MODAL; }
static int eyedropper_colorband_point_modal(bContext *C, wmOperator *op, const wmEvent *event) { EyedropperColorband *eye = op->customdata; /* handle modal keymap */ if (event->type == EVT_MODAL_MAP) { switch (event->val) { case EYE_MODAL_POINT_CANCEL: eyedropper_colorband_cancel(C, op); return OPERATOR_CANCELLED; case EYE_MODAL_POINT_CONFIRM: eyedropper_colorband_apply(C, op); eyedropper_colorband_exit(C, op); return OPERATOR_FINISHED; case EYE_MODAL_POINT_REMOVE_LAST: if (eye->color_buffer_len > 0) { eye->color_buffer_len -= 1; eyedropper_colorband_apply(C, op); } break; case EYE_MODAL_POINT_SAMPLE: eyedropper_colorband_sample_point(C, eye, event->x, event->y); eyedropper_colorband_apply(C, op); if (eye->color_buffer_len == MAXCOLORBAND) { eyedropper_colorband_exit(C, op); return OPERATOR_FINISHED; } break; case EYE_MODAL_SAMPLE_RESET: *eye->color_band = eye->init_color_band; RNA_property_update(C, &eye->ptr, eye->prop); eye->color_buffer_len = 0; break; } } return OPERATOR_RUNNING_MODAL; }