static int paintcurve_cursor_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event) { ePaintMode mode = BKE_paintmode_get_active_from_context(C); switch (mode) { case PAINT_MODE_TEXTURE_2D: { ARegion *ar = CTX_wm_region(C); SpaceImage *sima = CTX_wm_space_image(C); float location[2]; if (!sima) { return OPERATOR_CANCELLED; } UI_view2d_region_to_view( &ar->v2d, event->mval[0], event->mval[1], &location[0], &location[1]); copy_v2_v2(sima->cursor, location); WM_event_add_notifier(C, NC_SPACE | ND_SPACE_IMAGE, NULL); break; } default: ED_view3d_cursor3d_update(C, event->mval, true, V3D_CURSOR_ORIENT_VIEW); break; } return OPERATOR_FINISHED; }
static int paintcurve_draw_exec(bContext *C, wmOperator *UNUSED(op)) { ePaintMode mode = BKE_paintmode_get_active_from_context(C); const char *name; switch (mode) { case PAINT_MODE_TEXTURE_2D: case PAINT_MODE_TEXTURE_3D: name = "PAINT_OT_image_paint"; break; case PAINT_MODE_WEIGHT: name = "PAINT_OT_weight_paint"; break; case PAINT_MODE_VERTEX: name = "PAINT_OT_vertex_paint"; break; case PAINT_MODE_SCULPT: name = "SCULPT_OT_brush_stroke"; break; default: return OPERATOR_PASS_THROUGH; } return WM_operator_name_call(C, name, WM_OP_INVOKE_DEFAULT, NULL); }
static int paintcurve_draw_exec(bContext *C, wmOperator *UNUSED(op)) { ePaintMode mode = BKE_paintmode_get_active_from_context(C); const char *name; switch (mode) { case ePaintTexture2D: case ePaintTextureProjective: name = "PAINT_OT_image_paint"; break; case ePaintWeight: name = "PAINT_OT_weight_paint"; break; case ePaintVertex: name = "PAINT_OT_vertex_paint"; break; case ePaintSculpt: name = "SCULPT_OT_brush_stroke"; break; default: return OPERATOR_PASS_THROUGH; } return WM_operator_name_call(C, name, WM_OP_INVOKE_DEFAULT, NULL); }
static int stencil_control_poll(bContext *C) { PaintMode mode = BKE_paintmode_get_active_from_context(C); Paint *paint; Brush *br; if (!paint_supports_texture(mode)) return false; paint = BKE_paint_get_active_from_context(C); br = BKE_paint_brush(paint); return (br && (br->mtex.brush_map_mode == MTEX_MAP_MODE_STENCIL || br->mask_mtex.brush_map_mode == MTEX_MAP_MODE_STENCIL)); }
/* Brush operators */ static int brush_add_exec(bContext *C, wmOperator *UNUSED(op)) { /*int type = RNA_enum_get(op->ptr, "type");*/ Paint *paint = BKE_paint_get_active_from_context(C); Brush *br = BKE_paint_brush(paint); Main *bmain = CTX_data_main(C); PaintMode mode = BKE_paintmode_get_active_from_context(C); if (br) br = BKE_brush_copy(br); else br = BKE_brush_add(bmain, "Brush", BKE_paint_object_mode_from_paint_mode(mode)); BKE_paint_brush_set(paint, br); return OPERATOR_FINISHED; }
static int palette_color_add_exec(bContext *C, wmOperator *UNUSED(op)) { Scene *scene = CTX_data_scene(C); Paint *paint = BKE_paint_get_active_from_context(C); Brush *brush = paint->brush; PaintMode mode = BKE_paintmode_get_active_from_context(C); Palette *palette = paint->palette; PaletteColor *color; color = BKE_palette_color_add(palette); palette->active_color = BLI_listbase_count(&palette->colors) - 1; if (ELEM(mode, ePaintTextureProjective, ePaintTexture2D, ePaintVertex)) { copy_v3_v3(color->rgb, BKE_brush_color_get(scene, brush)); color->value = 0.0; } else if (mode == ePaintWeight) { zero_v3(color->rgb); color->value = brush->weight; } return OPERATOR_FINISHED; }