Update upstream
This commit is contained in:
@ -170,6 +170,9 @@ pika_tool_options_manager_init (Pika *pika)
|
||||
g_signal_connect (pika->config, "notify::global-font",
|
||||
G_CALLBACK (tool_options_manager_global_notify),
|
||||
manager);
|
||||
g_signal_connect (pika->config, "notify::global-expand",
|
||||
G_CALLBACK (tool_options_manager_global_notify),
|
||||
manager);
|
||||
|
||||
g_signal_connect (user_context, "tool-changed",
|
||||
G_CALLBACK (tool_options_manager_tool_changed),
|
||||
@ -254,6 +257,8 @@ tool_options_manager_get_global_props (PikaCoreConfig *config)
|
||||
global_props |= PIKA_CONTEXT_PROP_MASK_GRADIENT;
|
||||
if (config->global_font)
|
||||
global_props |= PIKA_CONTEXT_PROP_MASK_FONT;
|
||||
if (config->global_expand)
|
||||
global_props |= PIKA_CONTEXT_PROP_MASK_EXPAND;
|
||||
|
||||
return global_props;
|
||||
}
|
||||
@ -358,6 +363,12 @@ tool_options_manager_paint_options_notify (PikaPaintOptions *src,
|
||||
prop_mask |= PIKA_CONTEXT_PROP_MASK_GRADIENT;
|
||||
}
|
||||
|
||||
if ((active || config->global_expand) &&
|
||||
tool_info->context_props & PIKA_CONTEXT_PROP_MASK_EXPAND)
|
||||
{
|
||||
prop_mask |= PIKA_CONTEXT_PROP_MASK_EXPAND;
|
||||
}
|
||||
|
||||
if (pika_paint_options_is_prop (pspec->name, prop_mask))
|
||||
{
|
||||
GValue value = G_VALUE_INIT;
|
||||
|
@ -66,6 +66,8 @@ pika_airbrush_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_TYPE_AIRBRUSH_OPTIONS,
|
||||
pika_airbrush_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_GRADIENT,
|
||||
"pika-airbrush-tool",
|
||||
_("Airbrush"),
|
||||
|
@ -61,6 +61,7 @@ pika_clone_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_TYPE_CLONE_OPTIONS,
|
||||
pika_clone_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN,
|
||||
"pika-clone-tool",
|
||||
_("Clone"),
|
||||
|
@ -73,7 +73,9 @@ pika_convolve_tool_register (PikaToolRegisterCallback callback,
|
||||
(* callback) (PIKA_TYPE_CONVOLVE_TOOL,
|
||||
PIKA_TYPE_CONVOLVE_OPTIONS,
|
||||
pika_convolve_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND,
|
||||
"pika-convolve-tool",
|
||||
_("Blur / Sharpen"),
|
||||
_("Blur / Sharpen Tool: Selective blurring or unblurring using a brush"),
|
||||
|
@ -52,7 +52,9 @@ pika_heal_tool_register (PikaToolRegisterCallback callback,
|
||||
(* callback) (PIKA_TYPE_HEAL_TOOL,
|
||||
PIKA_TYPE_SOURCE_OPTIONS,
|
||||
pika_heal_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND,
|
||||
"pika-heal-tool",
|
||||
_("Healing"),
|
||||
_("Healing Tool: Heal image irregularities"),
|
||||
|
@ -50,6 +50,7 @@ pika_ink_options_gui (PikaToolOptions *tool_options)
|
||||
GtkWidget *frame;
|
||||
GtkWidget *vbox2;
|
||||
GtkWidget *scale;
|
||||
GtkWidget *combo_box;
|
||||
GtkWidget *blob_box;
|
||||
GtkWidget *hbox;
|
||||
GtkWidget *editor;
|
||||
@ -133,6 +134,28 @@ pika_ink_options_gui (PikaToolOptions *tool_options)
|
||||
gtk_container_add (GTK_CONTAINER (frame), editor);
|
||||
gtk_widget_show (editor);
|
||||
|
||||
/* Expand layer options */
|
||||
vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
|
||||
|
||||
scale = pika_prop_spin_scale_new (config, "expand-amount",
|
||||
1, 10, 2);
|
||||
pika_spin_scale_set_constrain_drag (PIKA_SPIN_SCALE (scale), TRUE);
|
||||
pika_spin_scale_set_scale_limits (PIKA_SPIN_SCALE (scale), 1.0, 1000.0);
|
||||
pika_spin_scale_set_gamma (PIKA_SPIN_SCALE (scale), 1.0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), scale, FALSE, FALSE, 0);
|
||||
|
||||
combo_box = pika_prop_enum_combo_box_new (config, "expand-fill-type", 0, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), combo_box, FALSE, FALSE, 0);
|
||||
|
||||
frame = pika_prop_enum_radio_frame_new (config, "expand-mask-fill-type",
|
||||
"Fill Layer Mask With", 0, 1);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 0);
|
||||
|
||||
frame = pika_prop_expanding_frame_new (config, "expand-use", NULL,
|
||||
vbox2, NULL);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
pika_config_connect (config, G_OBJECT (editor), "blob-type");
|
||||
pika_config_connect (config, G_OBJECT (editor), "blob-aspect");
|
||||
pika_config_connect (config, G_OBJECT (editor), "blob-angle");
|
||||
|
@ -68,7 +68,9 @@ pika_ink_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_CONTEXT_PROP_MASK_FOREGROUND |
|
||||
PIKA_CONTEXT_PROP_MASK_BACKGROUND |
|
||||
PIKA_CONTEXT_PROP_MASK_OPACITY |
|
||||
PIKA_CONTEXT_PROP_MASK_PAINT_MODE,
|
||||
PIKA_CONTEXT_PROP_MASK_PAINT_MODE |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND,
|
||||
"pika-ink-tool",
|
||||
_("Ink"),
|
||||
_("Ink Tool: Calligraphy-style painting"),
|
||||
|
@ -50,8 +50,11 @@ pika_mybrush_options_gui (PikaToolOptions *tool_options)
|
||||
{
|
||||
GObject *config = G_OBJECT (tool_options);
|
||||
GtkWidget *vbox = pika_paint_options_gui (tool_options);
|
||||
GtkWidget *vbox2;
|
||||
GtkWidget *button;
|
||||
GtkWidget *scale;
|
||||
GtkWidget *combo_box;
|
||||
GtkWidget *frame;
|
||||
|
||||
/* the brush */
|
||||
button = pika_prop_mybrush_box_new (NULL, PIKA_CONTEXT (tool_options),
|
||||
@ -82,5 +85,28 @@ pika_mybrush_options_gui (PikaToolOptions *tool_options)
|
||||
0.1, 1.0, 2);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
|
||||
|
||||
/* Expand layer options */
|
||||
vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
|
||||
|
||||
scale = pika_prop_spin_scale_new (config, "expand-amount",
|
||||
1, 10, 2);
|
||||
pika_spin_scale_set_constrain_drag (PIKA_SPIN_SCALE (scale), TRUE);
|
||||
pika_spin_scale_set_scale_limits (PIKA_SPIN_SCALE (scale), 1.0, 1000.0);
|
||||
pika_spin_scale_set_gamma (PIKA_SPIN_SCALE (scale), 1.0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), scale, FALSE, FALSE, 0);
|
||||
|
||||
combo_box = pika_prop_enum_combo_box_new (config, "expand-fill-type", 0, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), combo_box, FALSE, FALSE, 0);
|
||||
|
||||
frame = pika_prop_enum_radio_frame_new (config, "expand-mask-fill-type",
|
||||
"Fill Layer Mask With", 0, 1);
|
||||
gtk_box_pack_start (GTK_BOX (vbox2), frame, FALSE, FALSE, 0);
|
||||
|
||||
frame = pika_prop_expanding_frame_new (config, "expand-use", NULL,
|
||||
vbox2, NULL);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
return vbox;
|
||||
}
|
||||
|
@ -72,7 +72,9 @@ pika_mybrush_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_CONTEXT_PROP_MASK_BACKGROUND |
|
||||
PIKA_CONTEXT_PROP_MASK_OPACITY |
|
||||
PIKA_CONTEXT_PROP_MASK_PAINT_MODE |
|
||||
PIKA_CONTEXT_PROP_MASK_MYBRUSH,
|
||||
PIKA_CONTEXT_PROP_MASK_MYBRUSH |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND,
|
||||
"pika-mypaint-brush-tool",
|
||||
_("MyPaint Brush"),
|
||||
_("MyPaint Brush Tool: Use MyPaint brushes in PIKA"),
|
||||
|
@ -56,7 +56,9 @@ pika_paintbrush_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_TYPE_PAINT_OPTIONS,
|
||||
pika_paint_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_GRADIENT,
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND |
|
||||
PIKA_CONTEXT_PROP_MASK_GRADIENT |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN,
|
||||
"pika-paintbrush-tool",
|
||||
_("Paintbrush"),
|
||||
_("Paintbrush Tool: Paint smooth strokes using a brush"),
|
||||
|
@ -77,6 +77,8 @@ static GtkWidget * jitter_options_gui (PikaPaintOptions *paint_options,
|
||||
GType tool_type);
|
||||
static GtkWidget * smoothing_options_gui (PikaPaintOptions *paint_options,
|
||||
GType tool_type);
|
||||
static GtkWidget * expand_options_gui (PikaPaintOptions *paint_options,
|
||||
GType tool_type);
|
||||
|
||||
static GtkWidget * pika_paint_options_gui_scale_with_buttons
|
||||
(GObject *config,
|
||||
@ -274,6 +276,22 @@ pika_paint_options_gui (PikaToolOptions *tool_options)
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
}
|
||||
|
||||
/* the "expand layers" options */
|
||||
if (tool_type == PIKA_TYPE_PAINTBRUSH_TOOL ||
|
||||
tool_type == PIKA_TYPE_PENCIL_TOOL ||
|
||||
tool_type == PIKA_TYPE_AIRBRUSH_TOOL ||
|
||||
tool_type == PIKA_TYPE_CLONE_TOOL ||
|
||||
tool_type == PIKA_TYPE_HEAL_TOOL ||
|
||||
tool_type == PIKA_TYPE_CONVOLVE_TOOL ||
|
||||
tool_type == PIKA_TYPE_SMUDGE_TOOL)
|
||||
{
|
||||
GtkWidget *frame;
|
||||
|
||||
frame = expand_options_gui (options, tool_type);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
}
|
||||
|
||||
return vbox;
|
||||
}
|
||||
|
||||
@ -489,6 +507,39 @@ pika_paint_options_gui_reset_force (GtkWidget *button,
|
||||
NULL);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
expand_options_gui (PikaPaintOptions *paint_options,
|
||||
GType tool_type)
|
||||
{
|
||||
GObject *config = G_OBJECT (paint_options);
|
||||
GtkWidget *frame;
|
||||
GtkWidget *scale;
|
||||
GtkWidget *combo_box;
|
||||
GtkWidget *vbox;
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2);
|
||||
|
||||
scale = pika_prop_spin_scale_new (config, "expand-amount",
|
||||
1, 10, 2);
|
||||
pika_spin_scale_set_constrain_drag (PIKA_SPIN_SCALE (scale), TRUE);
|
||||
|
||||
pika_spin_scale_set_scale_limits (PIKA_SPIN_SCALE (scale), 1.0, 1000.0);
|
||||
pika_spin_scale_set_gamma (PIKA_SPIN_SCALE (scale), 1.0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0);
|
||||
|
||||
combo_box = pika_prop_enum_combo_box_new (config, "expand-fill-type", 0, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
|
||||
|
||||
frame = pika_prop_enum_radio_frame_new (config, "expand-mask-fill-type",
|
||||
"Fill Layer Mask With", 0, 1);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
|
||||
|
||||
frame = pika_prop_expanding_frame_new (config, "expand-use", NULL,
|
||||
vbox, NULL);
|
||||
|
||||
return frame;
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
pika_paint_options_gui_scale_with_buttons (GObject *config,
|
||||
gchar *prop_name,
|
||||
|
@ -30,6 +30,8 @@
|
||||
|
||||
#include "core/pikadrawable.h"
|
||||
#include "core/pikaimage.h"
|
||||
#include "core/pikalayer.h"
|
||||
#include "core/pikalayermask.h"
|
||||
#include "core/pikaprojection.h"
|
||||
|
||||
#include "paint/pikapaintcore.h"
|
||||
@ -41,6 +43,7 @@
|
||||
|
||||
#include "pikapainttool.h"
|
||||
#include "pikapainttool-paint.h"
|
||||
#include "pikatools-utils.h"
|
||||
|
||||
|
||||
#define DISPLAY_UPDATE_INTERVAL 10000 /* microseconds */
|
||||
@ -218,6 +221,27 @@ pika_paint_tool_paint_interpolate (PikaPaintTool *paint_tool,
|
||||
pika_paint_core_interpolate (core, data->drawables, paint_options,
|
||||
&data->coords, data->time);
|
||||
|
||||
/* Blink the lock box if required */
|
||||
if (core->lock_blink_state == PIKA_PAINT_LOCK_BLINK_PENDING)
|
||||
{
|
||||
GList *iter;
|
||||
PikaLayer *layer;
|
||||
|
||||
/* Blink the lock only once per stroke */
|
||||
core->lock_blink_state = PIKA_PAINT_LOCK_BLINKED;
|
||||
|
||||
for (iter = data->drawables; iter; iter = g_list_next (iter))
|
||||
{
|
||||
layer = PIKA_IS_LAYER_MASK (iter->data) ?
|
||||
PIKA_LAYER_MASK (iter->data)->layer :
|
||||
PIKA_LAYER (iter->data);
|
||||
|
||||
if (pika_item_get_lock_position (PIKA_ITEM (layer)))
|
||||
pika_tools_blink_lock_box (PIKA_CONTEXT (paint_options)->pika,
|
||||
PIKA_ITEM (layer));
|
||||
}
|
||||
}
|
||||
|
||||
g_list_free (data->drawables);
|
||||
g_slice_free (InterpolateData, data);
|
||||
}
|
||||
|
@ -50,6 +50,8 @@ pika_pencil_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_TYPE_PENCIL_OPTIONS,
|
||||
pika_paint_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_GRADIENT,
|
||||
"pika-pencil-tool",
|
||||
_("Pencil"),
|
||||
|
@ -54,6 +54,8 @@ pika_smudge_tool_register (PikaToolRegisterCallback callback,
|
||||
PIKA_TYPE_SMUDGE_OPTIONS,
|
||||
pika_smudge_options_gui,
|
||||
PIKA_PAINT_OPTIONS_CONTEXT_MASK |
|
||||
PIKA_CONTEXT_PROP_MASK_EXPAND |
|
||||
PIKA_CONTEXT_PROP_MASK_PATTERN |
|
||||
PIKA_CONTEXT_PROP_MASK_GRADIENT,
|
||||
"pika-smudge-tool",
|
||||
_("Smudge"),
|
||||
|
Reference in New Issue
Block a user