83 header +=
IFACE_(
"Current: ");
85 const bool is_ctrl = (
event->modifier &
KM_CTRL) != 0;
86 const bool is_shift = (
event->modifier &
KM_SHIFT) != 0;
91 if (is_ctrl && !is_shift) {
94 if (is_shift && !is_ctrl) {
97 if (is_ctrl && is_shift) {
103 header +=
IFACE_(
"Stroke");
116 header +=
IFACE_(
", Ctrl: Stroke, Shift: Fill, Shift+Ctrl: Both");
128 const char *display_device;
145 MEM_delete<EyedropperGreasePencil>(eye);
162 for (
short i = 0; i < *totcol; i++) {
169 if (gp_style !=
nullptr) {
219 gp_style_new->
flag &= ~GP_MATERIAL_FILL_SHOW;
226 gp_style_new->
flag &= ~GP_MATERIAL_STROKE_SHOW;
253 if (paint->
palette ==
nullptr) {
259 if (vertexpaint->
palette ==
nullptr) {
289 if (brush ==
nullptr) {
302 const bool is_ctrl = (
event->modifier &
KM_CTRL) != 0;
303 const bool is_shift = (
event->modifier &
KM_SHIFT) != 0;
306 if (is_ctrl && !is_shift) {
309 if (is_shift && !is_ctrl) {
312 if (is_ctrl && is_shift) {
370 switch (event->
type) {
372 switch (event->
val) {
465 {int(EyeMode::Material),
"MATERIAL", 0,
"Material",
""},
466 {int(EyeMode::Palette),
"PALETTE", 0,
"Palette",
""},
467 {int(EyeMode::Brush),
"BRUSH", 0,
"Brush",
""},
468 {0,
nullptr, 0,
nullptr,
nullptr},
472 {int(MaterialMode::Stroke),
"STROKE", 0,
"Stroke",
""},
473 {int(MaterialMode::Fill),
"FILL", 0,
"Fill",
""},
474 {int(MaterialMode::Both),
"BOTH", 0,
"Both",
""},
475 {0,
nullptr, 0,
nullptr,
nullptr},
479 ot->
name =
"Grease Pencil Eyedropper";
480 ot->
idname =
"UI_OT_eyedropper_grease_pencil_color";
481 ot->
description =
"Sample a color from the Blender Window and create Grease Pencil material";
484 ot->
invoke = eyedropper_grease_pencil_invoke;
485 ot->
modal = eyedropper_grease_pencil_modal;
486 ot->
cancel = eyedropper_grease_pencil_cancel;
487 ot->
exec = eyedropper_grease_pencil_exec;
488 ot->
poll = eyedropper_grease_pencil_poll;
498 int(MaterialMode::Stroke),
void BKE_brush_tag_unsaved_changes(Brush *brush)
wmWindow * CTX_wm_window(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
Low-level operations for grease pencil.
Material * BKE_grease_pencil_object_material_new(Main *bmain, Object *ob, const char *name, int *r_index)
General operations, lookup, etc. for materials.
short * BKE_object_material_len_p(Object *ob)
Material * BKE_object_material_get(Object *ob, short act)
PaletteColor * BKE_palette_color_add(Palette *palette)
Palette * BKE_palette_add(Main *bmain, const char *name)
Brush * BKE_paint_brush(Paint *paint)
void BKE_paint_palette_set(Paint *paint, Palette *palette)
#define LISTBASE_FOREACH_INDEX(type, var, list, index_var)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void zero_v4(float r[4])
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], float limit) ATTR_WARN_UNUSED_RESULT
void DEG_relations_tag_update(Main *bmain)
@ GP_MATERIAL_STROKE_SHOW
void ED_workspace_status_text(bContext *C, const char *str)
void ED_undo_push(bContext *C, const char *str)
const ColorManagedDisplay * IMB_colormanagement_display_get_named(const char *name)
void IMB_colormanagement_scene_linear_to_display_v3(float pixel[3], const ColorManagedDisplay *display)
Read Guarded memory(de)allocation.
bool eyedropper_color_sample_fl(bContext *C, Eyedropper *eye, const int event_xy[2], float r_col[3])
void UI_OT_eyedropper_grease_pencil_color(wmOperatorType *ot)
@ EYE_MODAL_SAMPLE_CONFIRM
static bool eyedropper_grease_pencil_poll(bContext *C)
static wmOperatorStatus eyedropper_grease_pencil_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void eyedropper_add_palette_color(bContext *C, const float3 col_conv)
static void eyedropper_set_brush_color(bContext *C, const float3 &col_conv)
static void eyedropper_grease_pencil_color_sample(bContext *C, EyedropperGreasePencil *eye, const int m_xy[2])
static void eyedropper_grease_pencil_exit(bContext *C, wmOperator *op)
static bool eyedropper_grease_pencil_init(bContext *C, wmOperator *op)
static void eyedropper_grease_pencil_status_indicators(bContext *C, wmOperator *op, const wmEvent *event)
static void eyedropper_grease_pencil_cancel(bContext *C, wmOperator *op)
static void eyedropper_add_material(bContext *C, const float3 col_conv, const MaterialMode mat_mode)
static wmOperatorStatus eyedropper_grease_pencil_modal(bContext *C, wmOperator *op, const wmEvent *event)
static wmOperatorStatus eyedropper_grease_pencil_exec(bContext *C, wmOperator *op)
static void eyedropper_grease_pencil_color_set(bContext *C, const wmEvent *event, EyedropperGreasePencil *eye)
VecBase< float, 3 > float3
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
struct MaterialGPencilStyle * gp_style
struct ToolSettings * toolsettings
ColorManagedDisplaySettings display_settings
const ColorManagedDisplay * display
wmOperatorStatus(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
wmOperatorStatus(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
wmOperatorStatus(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
void(* cancel)(bContext *C, wmOperator *op)
void WM_main_add_notifier(uint type, void *reference)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)