forked from bartvdbraak/blender
Revert "Merge branch 'master' into blender-v2.81-release"
This reverts commit 20b2acf336cb8f6965fd39728a746922d1b8ae42, reversing changes made to f185cc0ca55c8c817903d53bf5c107f3efd4e0db. Merges should only go form the release branch to master. For backporting commits, use cherry-pick.
This commit is contained in:
parent
20b2acf336
commit
3842519a38
22
.github/stale.yml
vendored
22
.github/stale.yml
vendored
@ -1,22 +0,0 @@
|
||||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
# This file is used on Blender's GitHub mirror to automatically close any pull request
|
||||
# and invite contributors to join the official development platform on blender.org
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 1
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
|
||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||
daysUntilClose: 1
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: stale
|
||||
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
closeComment: >
|
||||
This issue has been automatically closed, because this repository is only
|
||||
used as a mirror of git.blender.org. Blender development happens on
|
||||
developer.blender.org.
|
||||
|
||||
To get started contributing code, please read:
|
||||
https://wiki.blender.org/wiki/Process/Contributing_Code
|
@ -38,7 +38,7 @@ PROJECT_NAME = Blender
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = "V2.82"
|
||||
PROJECT_NUMBER = "V2.81"
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 7a6516c3e98ffa9cec21f490be733ee6d49a6424
|
||||
Subproject commit 120d31a17c0eb571420b828425fc1fe6ef13db2d
|
@ -5869,18 +5869,6 @@ def km_3d_view_tool_paint_gpencil_cutter(params):
|
||||
)
|
||||
|
||||
|
||||
def km_3d_view_tool_paint_gpencil_eyedropper(params):
|
||||
return (
|
||||
"3D View Tool: Paint Gpencil, Eyedropper",
|
||||
{"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
|
||||
{"items": [
|
||||
("ui.eyedropper_gpencil_color", {"type": params.tool_mouse, "value": 'PRESS'}, None),
|
||||
("ui.eyedropper_gpencil_color", {"type": params.tool_mouse, "value": 'PRESS', "shift": True}, None),
|
||||
("ui.eyedropper_gpencil_color", {"type": params.tool_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, None),
|
||||
]},
|
||||
)
|
||||
|
||||
|
||||
def km_3d_view_tool_edit_gpencil_select(params):
|
||||
return (
|
||||
"3D View Tool: Edit Gpencil, Tweak",
|
||||
@ -6218,7 +6206,6 @@ def generate_keymaps(params=None):
|
||||
km_3d_view_tool_paint_gpencil_arc(params),
|
||||
km_3d_view_tool_paint_gpencil_curve(params),
|
||||
km_3d_view_tool_paint_gpencil_cutter(params),
|
||||
km_3d_view_tool_paint_gpencil_eyedropper(params),
|
||||
km_3d_view_tool_edit_gpencil_select(params),
|
||||
km_3d_view_tool_edit_gpencil_select_box(params),
|
||||
km_3d_view_tool_edit_gpencil_select_circle(params),
|
||||
|
@ -367,7 +367,7 @@ def brush_basic_sculpt_settings(layout, context, brush, *, compact=False):
|
||||
layout.row().prop(brush, "direction", expand=True, **({"text": ""} if compact else {}))
|
||||
|
||||
|
||||
def brush_basic_gpencil_paint_settings(layout, _context, brush, tool, *, compact=True, is_toolbar=False):
|
||||
def brush_basic_gpencil_paint_settings(layout, _context, brush, *, compact=True):
|
||||
gp_settings = brush.gpencil_settings
|
||||
|
||||
# Brush details
|
||||
@ -395,23 +395,6 @@ def brush_basic_gpencil_paint_settings(layout, _context, brush, tool, *, compact
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "fill_draw_mode", text="Boundary")
|
||||
row.prop(gp_settings, "show_fill_boundary", text="", icon='GRID')
|
||||
# Fill options
|
||||
if is_toolbar:
|
||||
settings = _context.tool_settings.gpencil_sculpt
|
||||
row = layout.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.popover(
|
||||
panel="TOPBAR_PT_gpencil_fill",
|
||||
text="Fill Options",
|
||||
)
|
||||
else:
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "fill_factor", text="Resolution")
|
||||
if gp_settings.fill_draw_mode != 'STROKE':
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "show_fill", text="Ignore Transparent Strokes")
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "fill_threshold", text="Threshold")
|
||||
else: # brush.gpencil_tool == 'DRAW':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
@ -420,25 +403,6 @@ def brush_basic_gpencil_paint_settings(layout, _context, brush, tool, *, compact
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
|
||||
if tool.idname in {"builtin.arc", "builtin.curve", "builtin.line", "builtin.box", "builtin.circle"}:
|
||||
settings = _context.tool_settings.gpencil_sculpt
|
||||
if is_toolbar:
|
||||
row = layout.row(align=True)
|
||||
row.prop(settings, "use_thickness_curve", text="", icon='CURVE_DATA')
|
||||
sub = row.row(align=True)
|
||||
sub.active = settings.use_thickness_curve
|
||||
sub.popover(
|
||||
panel="TOPBAR_PT_gpencil_primitive",
|
||||
text="Thickness Profile",
|
||||
)
|
||||
else:
|
||||
row = layout.row(align=True)
|
||||
row.prop(settings, "use_thickness_curve", text="Use Thickness Profile")
|
||||
sub = row.row(align=True)
|
||||
if settings.use_thickness_curve:
|
||||
# Curve
|
||||
layout.template_curve_mapping(settings, "thickness_primitive_curve", brush=True)
|
||||
|
||||
|
||||
def brush_basic_gpencil_sculpt_settings(layout, context, brush, *, compact=False):
|
||||
tool_settings = context.tool_settings
|
||||
|
@ -1393,17 +1393,6 @@ class _defs_gpencil_paint:
|
||||
)
|
||||
|
||||
|
||||
@ToolDef.from_fn
|
||||
def eyedropper():
|
||||
return dict(
|
||||
idname="builtin.eyedropper",
|
||||
label="Eyedropper",
|
||||
icon="ops.paint.weight_sample",
|
||||
cursor='EYEDROPPER',
|
||||
widget=None,
|
||||
keymap=(),
|
||||
)
|
||||
|
||||
class _defs_gpencil_edit:
|
||||
@ToolDef.from_fn
|
||||
def bend():
|
||||
@ -2055,8 +2044,6 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
|
||||
_defs_gpencil_paint.generate_from_brushes,
|
||||
_defs_gpencil_paint.cutter,
|
||||
None,
|
||||
_defs_gpencil_paint.eyedropper,
|
||||
None,
|
||||
_defs_gpencil_paint.line,
|
||||
_defs_gpencil_paint.arc,
|
||||
_defs_gpencil_paint.curve,
|
||||
|
@ -351,7 +351,28 @@ class _draw_tool_settings_context_mode:
|
||||
from bl_ui.properties_paint_common import (
|
||||
brush_basic_gpencil_paint_settings,
|
||||
)
|
||||
brush_basic_gpencil_paint_settings(layout, context, brush, tool, compact=True, is_toolbar=True)
|
||||
brush_basic_gpencil_paint_settings(layout, context, brush, compact=True)
|
||||
|
||||
# FIXME: tools must use their own UI drawing!
|
||||
if tool.idname in {"builtin.arc", "builtin.curve", "builtin.line", "builtin.box", "builtin.circle"}:
|
||||
settings = context.tool_settings.gpencil_sculpt
|
||||
row = layout.row(align=True)
|
||||
row.prop(settings, "use_thickness_curve", text="", icon='CURVE_DATA')
|
||||
sub = row.row(align=True)
|
||||
sub.active = settings.use_thickness_curve
|
||||
sub.popover(
|
||||
panel="TOPBAR_PT_gpencil_primitive",
|
||||
text="Thickness Profile",
|
||||
)
|
||||
|
||||
if brush.gpencil_tool == 'FILL':
|
||||
settings = context.tool_settings.gpencil_sculpt
|
||||
row = layout.row(align=True)
|
||||
sub = row.row(align=True)
|
||||
sub.popover(
|
||||
panel="TOPBAR_PT_gpencil_fill",
|
||||
text="Fill Options",
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def SCULPT_GPENCIL(context, layout, tool):
|
||||
|
@ -1873,8 +1873,7 @@ class VIEW3D_PT_tools_grease_pencil_brush(View3DPanel, Panel):
|
||||
from bl_ui.properties_paint_common import (
|
||||
brush_basic_gpencil_paint_settings,
|
||||
)
|
||||
tool = context.workspace.tools.from_space_view3d_mode(context.mode, create=False)
|
||||
brush_basic_gpencil_paint_settings(layout, context, brush, tool, compact=True, is_toolbar=False)
|
||||
brush_basic_gpencil_paint_settings(layout, context, brush, compact=True)
|
||||
|
||||
|
||||
# Grease Pencil drawing brushes options
|
||||
|
@ -26,8 +26,8 @@
|
||||
*
|
||||
* \note Use #STRINGIFY() rather than defining with quotes.
|
||||
*/
|
||||
#define BLENDER_VERSION 282
|
||||
#define BLENDER_SUBVERSION 0
|
||||
#define BLENDER_VERSION 281
|
||||
#define BLENDER_SUBVERSION 15
|
||||
/** Several breakages with 280, e.g. collections vs layers. */
|
||||
#define BLENDER_MINVERSION 280
|
||||
#define BLENDER_MINSUBVERSION 0
|
||||
@ -36,7 +36,7 @@
|
||||
/** Can be left blank, otherwise a,b,c... etc with no quotes. */
|
||||
#define BLENDER_VERSION_CHAR
|
||||
/** alpha/beta/rc/release, docs use this. */
|
||||
#define BLENDER_VERSION_CYCLE alpha
|
||||
#define BLENDER_VERSION_CYCLE beta
|
||||
/** Optionally set to 1,2,... for example to to get alpha1 or rc2. */
|
||||
#define BLENDER_VERSION_CYCLE_NUMBER
|
||||
|
||||
|
@ -50,7 +50,6 @@ set(SRC
|
||||
interface_eyedropper_datablock.c
|
||||
interface_eyedropper_depth.c
|
||||
interface_eyedropper_driver.c
|
||||
interface_eyedropper_gpencil_color.c
|
||||
interface_handlers.c
|
||||
interface_icons.c
|
||||
interface_icons_event.c
|
||||
|
@ -69,7 +69,6 @@ wmKeyMap *eyedropper_modal_keymap(wmKeyConfig *keyconf)
|
||||
WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_id");
|
||||
WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_depth");
|
||||
WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_driver");
|
||||
WM_modalkeymap_assign(keymap, "UI_OT_eyedropper_gpencil_color");
|
||||
|
||||
return keymap;
|
||||
}
|
||||
|
@ -1,324 +0,0 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2009 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*/
|
||||
|
||||
/** \file
|
||||
* \ingroup edinterface
|
||||
*
|
||||
* Eyedropper (RGB Color)
|
||||
*
|
||||
* Defines:
|
||||
* - #UI_OT_eyedropper_gpencil_color
|
||||
*/
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "BLI_string.h"
|
||||
|
||||
#include "BLT_translation.h"
|
||||
|
||||
#include "DNA_gpencil_types.h"
|
||||
#include "DNA_space_types.h"
|
||||
|
||||
#include "BKE_context.h"
|
||||
#include "BKE_gpencil.h"
|
||||
#include "BKE_main.h"
|
||||
#include "BKE_material.h"
|
||||
#include "BKE_report.h"
|
||||
|
||||
#include "UI_interface.h"
|
||||
|
||||
#include "IMB_colormanagement.h"
|
||||
|
||||
#include "WM_api.h"
|
||||
#include "WM_types.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
#include "RNA_define.h"
|
||||
|
||||
#include "ED_gpencil.h"
|
||||
#include "ED_screen.h"
|
||||
#include "ED_undo.h"
|
||||
|
||||
#include "DEG_depsgraph.h"
|
||||
#include "DEG_depsgraph_build.h"
|
||||
|
||||
#include "interface_intern.h"
|
||||
#include "interface_eyedropper_intern.h"
|
||||
|
||||
typedef struct EyedropperGPencil {
|
||||
struct ColorManagedDisplay *display;
|
||||
/** color under cursor RGB */
|
||||
float color[3];
|
||||
} EyedropperGPencil;
|
||||
|
||||
/* Helper: Draw status message while the user is running the operator */
|
||||
static void eyedropper_gpencil_status_indicators(bContext *C)
|
||||
{
|
||||
char msg_str[UI_MAX_DRAW_STR];
|
||||
BLI_strncpy(
|
||||
msg_str, TIP_("LMB: Stroke - Shift: Fill - Shift+Ctrl: Stroke + Fill"), UI_MAX_DRAW_STR);
|
||||
|
||||
ED_workspace_status_text(C, msg_str);
|
||||
}
|
||||
|
||||
/* Initialize. */
|
||||
static bool eyedropper_gpencil_init(bContext *C, wmOperator *op)
|
||||
{
|
||||
EyedropperGPencil *eye = MEM_callocN(sizeof(EyedropperGPencil), __func__);
|
||||
|
||||
op->customdata = eye;
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
|
||||
const char *display_device;
|
||||
display_device = scene->display_settings.display_device;
|
||||
eye->display = IMB_colormanagement_display_get_named(display_device);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Exit and free memory. */
|
||||
static void eyedropper_gpencil_exit(bContext *C, wmOperator *op)
|
||||
{
|
||||
/* Clear status message area. */
|
||||
ED_workspace_status_text(C, NULL);
|
||||
|
||||
MEM_SAFE_FREE(op->customdata);
|
||||
}
|
||||
|
||||
/* Set the material. */
|
||||
static void eyedropper_gpencil_color_set(bContext *C, const wmEvent *event, EyedropperGPencil *eye)
|
||||
{
|
||||
Main *bmain = CTX_data_main(C);
|
||||
Object *ob = CTX_data_active_object(C);
|
||||
Material *ma = NULL;
|
||||
|
||||
const bool only_stroke = ((!event->ctrl) && (!event->shift));
|
||||
const bool only_fill = ((!event->ctrl) && (event->shift));
|
||||
const bool both = ((event->ctrl) && (event->shift));
|
||||
|
||||
float col_conv[4];
|
||||
bool found = false;
|
||||
|
||||
/* Convert from linear rgb space to display space because grease pencil colors are in display
|
||||
* space, and this conversion is needed to undo the conversion to linear performed by
|
||||
* eyedropper_color_sample_fl. */
|
||||
if (eye->display) {
|
||||
copy_v3_v3(col_conv, eye->color);
|
||||
IMB_colormanagement_scene_linear_to_display_v3(col_conv, eye->display);
|
||||
}
|
||||
else {
|
||||
copy_v3_v3(col_conv, eye->color);
|
||||
}
|
||||
|
||||
/* Look for a similar material in grease pencil slots. */
|
||||
short *totcol = give_totcolp(ob);
|
||||
for (short i = 0; i < *totcol; i++) {
|
||||
ma = give_current_material(ob, i + 1);
|
||||
if (ma == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
MaterialGPencilStyle *gp_style = ma->gp_style;
|
||||
if (gp_style != NULL) {
|
||||
/* Check stroke color. */
|
||||
bool found_stroke = compare_v3v3(gp_style->stroke_rgba, col_conv, 0.01f) &&
|
||||
(gp_style->flag & GP_STYLE_STROKE_SHOW);
|
||||
/* Check fill color. */
|
||||
bool found_fill = compare_v3v3(gp_style->fill_rgba, col_conv, 0.01f) &&
|
||||
(gp_style->flag & GP_STYLE_FILL_SHOW);
|
||||
|
||||
if ((only_stroke) && (found_stroke) && ((gp_style->flag & GP_STYLE_FILL_SHOW) == 0)) {
|
||||
found = true;
|
||||
}
|
||||
else if ((only_fill) && (found_fill) && ((gp_style->flag & GP_STYLE_STROKE_SHOW) == 0)) {
|
||||
found = true;
|
||||
}
|
||||
else if ((both) && (found_stroke) && (found_fill)) {
|
||||
found = true;
|
||||
}
|
||||
|
||||
/* Found existing material. */
|
||||
if (found) {
|
||||
ob->actcol = i + 1;
|
||||
WM_main_add_notifier(NC_MATERIAL | ND_SHADING_LINKS, NULL);
|
||||
WM_main_add_notifier(NC_SPACE | ND_SPACE_VIEW3D, NULL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* If material was not found add a new material with stroke and/or fill color
|
||||
* depending of the secondary key (LMB: Stroke, Shift: Fill, Shift+Ctrl: Stroke/Fill)
|
||||
*/
|
||||
int idx;
|
||||
Material *ma_new = BKE_gpencil_object_material_new(bmain, ob, "Material", &idx);
|
||||
WM_main_add_notifier(NC_OBJECT | ND_OB_SHADING, &ob->id);
|
||||
WM_main_add_notifier(NC_MATERIAL | ND_SHADING_LINKS, NULL);
|
||||
DEG_relations_tag_update(bmain);
|
||||
|
||||
BLI_assert(ma_new != NULL);
|
||||
|
||||
MaterialGPencilStyle *gp_style_new = ma_new->gp_style;
|
||||
BLI_assert(gp_style_new != NULL);
|
||||
|
||||
/* Only create Stroke (default option). */
|
||||
if (only_stroke) {
|
||||
/* Stroke color. */
|
||||
gp_style_new->flag |= GP_STYLE_STROKE_SHOW;
|
||||
gp_style_new->flag &= ~GP_STYLE_FILL_SHOW;
|
||||
copy_v3_v3(gp_style_new->stroke_rgba, col_conv);
|
||||
zero_v4(gp_style_new->fill_rgba);
|
||||
}
|
||||
/* Fill Only. */
|
||||
else if (only_fill) {
|
||||
/* Fill color. */
|
||||
gp_style_new->flag &= ~GP_STYLE_STROKE_SHOW;
|
||||
gp_style_new->flag |= GP_STYLE_FILL_SHOW;
|
||||
zero_v4(gp_style_new->stroke_rgba);
|
||||
copy_v3_v3(gp_style_new->fill_rgba, col_conv);
|
||||
}
|
||||
/* Stroke and Fill. */
|
||||
else if (both) {
|
||||
gp_style_new->flag |= GP_STYLE_STROKE_SHOW | GP_STYLE_FILL_SHOW;
|
||||
copy_v3_v3(gp_style_new->stroke_rgba, col_conv);
|
||||
copy_v3_v3(gp_style_new->fill_rgba, col_conv);
|
||||
}
|
||||
/* Push undo for new created material. */
|
||||
ED_undo_push(C, "Add Grease Pencil Material");
|
||||
}
|
||||
|
||||
/* Sample the color below cursor. */
|
||||
static void eyedropper_gpencil_color_sample(bContext *C, EyedropperGPencil *eye, int mx, int my)
|
||||
{
|
||||
eyedropper_color_sample_fl(C, mx, my, eye->color);
|
||||
}
|
||||
|
||||
/* Cancel operator. */
|
||||
static void eyedropper_gpencil_cancel(bContext *C, wmOperator *op)
|
||||
{
|
||||
eyedropper_gpencil_exit(C, op);
|
||||
}
|
||||
|
||||
/* Main modal status check. */
|
||||
static int eyedropper_gpencil_modal(bContext *C, wmOperator *op, const wmEvent *event)
|
||||
{
|
||||
EyedropperGPencil *eye = (EyedropperGPencil *)op->customdata;
|
||||
/* Handle modal keymap */
|
||||
switch (event->type) {
|
||||
case EVT_MODAL_MAP: {
|
||||
switch (event->val) {
|
||||
case EYE_MODAL_SAMPLE_BEGIN: {
|
||||
return OPERATOR_RUNNING_MODAL;
|
||||
}
|
||||
case EYE_MODAL_CANCEL: {
|
||||
eyedropper_gpencil_cancel(C, op);
|
||||
return OPERATOR_CANCELLED;
|
||||
}
|
||||
case EYE_MODAL_SAMPLE_CONFIRM: {
|
||||
eyedropper_gpencil_color_sample(C, eye, event->x, event->y);
|
||||
|
||||
/* Create material. */
|
||||
eyedropper_gpencil_color_set(C, event, eye);
|
||||
WM_main_add_notifier(NC_GPENCIL | ND_DATA | NA_EDITED, NULL);
|
||||
|
||||
eyedropper_gpencil_exit(C, op);
|
||||
return OPERATOR_FINISHED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case MOUSEMOVE:
|
||||
case INBETWEEN_MOUSEMOVE: {
|
||||
eyedropper_gpencil_color_sample(C, eye, event->x, event->y);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return OPERATOR_RUNNING_MODAL;
|
||||
}
|
||||
|
||||
/* Modal Operator init */
|
||||
static int eyedropper_gpencil_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
|
||||
{
|
||||
/* Init. */
|
||||
if (eyedropper_gpencil_init(C, op)) {
|
||||
/* Add modal temp handler. */
|
||||
WM_event_add_modal_handler(C, op);
|
||||
/* Status message. */
|
||||
eyedropper_gpencil_status_indicators(C);
|
||||
|
||||
return OPERATOR_RUNNING_MODAL;
|
||||
}
|
||||
else {
|
||||
return OPERATOR_PASS_THROUGH;
|
||||
}
|
||||
}
|
||||
|
||||
/* Repeat operator */
|
||||
static int eyedropper_gpencil_exec(bContext *C, wmOperator *op)
|
||||
{
|
||||
/* init */
|
||||
if (eyedropper_gpencil_init(C, op)) {
|
||||
|
||||
/* cleanup */
|
||||
eyedropper_gpencil_exit(C, op);
|
||||
|
||||
return OPERATOR_FINISHED;
|
||||
}
|
||||
else {
|
||||
return OPERATOR_PASS_THROUGH;
|
||||
}
|
||||
}
|
||||
|
||||
static bool eyedropper_gpencil_poll(bContext *C)
|
||||
{
|
||||
/* Only valid if the current active object is grease pencil. */
|
||||
Object *obact = CTX_data_active_object(C);
|
||||
if ((obact == NULL) || (obact->type != OB_GPENCIL)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Test we have a window below. */
|
||||
return (CTX_wm_window(C) != NULL);
|
||||
}
|
||||
|
||||
void UI_OT_eyedropper_gpencil_color(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name = "Grease Pencil Eyedropper";
|
||||
ot->idname = "UI_OT_eyedropper_gpencil_color";
|
||||
ot->description = "Sample a color from the Blender Window and create Grease Pencil material";
|
||||
|
||||
/* api callbacks */
|
||||
ot->invoke = eyedropper_gpencil_invoke;
|
||||
ot->modal = eyedropper_gpencil_modal;
|
||||
ot->cancel = eyedropper_gpencil_cancel;
|
||||
ot->exec = eyedropper_gpencil_exec;
|
||||
ot->poll = eyedropper_gpencil_poll;
|
||||
|
||||
/* flags */
|
||||
ot->flag = OPTYPE_UNDO | OPTYPE_BLOCKING;
|
||||
}
|
@ -971,9 +971,6 @@ void UI_OT_eyedropper_depth(struct wmOperatorType *ot);
|
||||
/* interface_eyedropper_driver.c */
|
||||
void UI_OT_eyedropper_driver(struct wmOperatorType *ot);
|
||||
|
||||
/* interface_eyedropper_gpencil_color.c */
|
||||
void UI_OT_eyedropper_gpencil_color(struct wmOperatorType *ot);
|
||||
|
||||
/* interface_util.c */
|
||||
|
||||
/**
|
||||
|
@ -1751,7 +1751,6 @@ void ED_operatortypes_ui(void)
|
||||
WM_operatortype_append(UI_OT_eyedropper_id);
|
||||
WM_operatortype_append(UI_OT_eyedropper_depth);
|
||||
WM_operatortype_append(UI_OT_eyedropper_driver);
|
||||
WM_operatortype_append(UI_OT_eyedropper_gpencil_color);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1422,24 +1422,18 @@ static void draw_grid_unit_name(
|
||||
{
|
||||
if (!rv3d->is_persp && RV3D_VIEW_IS_AXIS(rv3d->view)) {
|
||||
const char *grid_unit = NULL;
|
||||
int font_id = BLF_default();
|
||||
ED_view3d_grid_view_scale(scene, v3d, rv3d, &grid_unit);
|
||||
|
||||
if (grid_unit) {
|
||||
char numstr[32] = "";
|
||||
UI_FontThemeColor(font_id, TH_TEXT_HI);
|
||||
UI_FontThemeColor(BLF_default(), TH_TEXT_HI);
|
||||
if (v3d->grid != 1.0f) {
|
||||
BLI_snprintf(numstr, sizeof(numstr), "%s x %.4g", grid_unit, v3d->grid);
|
||||
}
|
||||
|
||||
*yoffset -= U.widget_unit;
|
||||
BLF_enable(font_id, BLF_SHADOW);
|
||||
BLF_shadow(font_id, 5, (const float[4]){0.0f, 0.0f, 0.0f, 1.0f});
|
||||
BLF_shadow_offset(font_id, 1, -1);
|
||||
BLF_draw_default_ascii(
|
||||
xoffset, *yoffset, 0.0f, numstr[0] ? numstr : grid_unit, sizeof(numstr));
|
||||
|
||||
BLF_disable(font_id, BLF_SHADOW);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit d8c4ae2c23a36d9609d47142dc72f243551258f1
|
||||
Subproject commit 4ad446dbddd1b23acc185b8c056474d27b69278b
|
Loading…
Reference in New Issue
Block a user