mirror of https://github.com/GNOME/gimp.git
app: add gimp_applicator_set_active()
... which allows temporarily turning the applicator into a NOP, without destroying cached data. This commit also improves gimp_applicator_set_{src,dest}_buffer().
This commit is contained in:
parent
878804fb01
commit
e324e2d4b3
|
@ -57,6 +57,7 @@ gimp_applicator_class_init (GimpApplicatorClass *klass)
|
||||||
static void
|
static void
|
||||||
gimp_applicator_init (GimpApplicator *applicator)
|
gimp_applicator_init (GimpApplicator *applicator)
|
||||||
{
|
{
|
||||||
|
applicator->active = TRUE;
|
||||||
applicator->opacity = 1.0;
|
applicator->opacity = 1.0;
|
||||||
applicator->paint_mode = GIMP_LAYER_MODE_NORMAL;
|
applicator->paint_mode = GIMP_LAYER_MODE_NORMAL;
|
||||||
applicator->blend_space = GIMP_LAYER_COLOR_SPACE_AUTO;
|
applicator->blend_space = GIMP_LAYER_COLOR_SPACE_AUTO;
|
||||||
|
@ -202,6 +203,23 @@ gimp_applicator_new (GeglNode *parent)
|
||||||
return applicator;
|
return applicator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gimp_applicator_set_active (GimpApplicator *applicator,
|
||||||
|
gboolean active)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GIMP_IS_APPLICATOR (applicator));
|
||||||
|
|
||||||
|
if (active != applicator->active)
|
||||||
|
{
|
||||||
|
applicator->active = active;
|
||||||
|
|
||||||
|
if (active)
|
||||||
|
gegl_node_link (applicator->crop_node, applicator->output_node);
|
||||||
|
else
|
||||||
|
gegl_node_link (applicator->input_node, applicator->output_node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_applicator_set_src_buffer (GimpApplicator *applicator,
|
gimp_applicator_set_src_buffer (GimpApplicator *applicator,
|
||||||
GeglBuffer *src_buffer)
|
GeglBuffer *src_buffer)
|
||||||
|
@ -230,19 +248,15 @@ gimp_applicator_set_src_buffer (GimpApplicator *applicator,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! applicator->src_buffer)
|
if (! applicator->src_buffer)
|
||||||
{
|
gegl_node_link (applicator->src_node, applicator->input_node);
|
||||||
gegl_node_connect_to (applicator->src_node, "output",
|
|
||||||
applicator->mode_node, "input");
|
|
||||||
gegl_node_connect_to (applicator->src_node, "output",
|
|
||||||
applicator->affect_node, "input");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (applicator->src_buffer)
|
else if (applicator->src_buffer)
|
||||||
{
|
{
|
||||||
gegl_node_connect_to (applicator->input_node, "output",
|
gegl_node_disconnect (applicator->input_node, "input");
|
||||||
applicator->mode_node, "input");
|
|
||||||
gegl_node_connect_to (applicator->input_node, "output",
|
gegl_node_set (applicator->src_node,
|
||||||
applicator->affect_node, "input");
|
"buffer", NULL,
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
applicator->src_buffer = src_buffer;
|
applicator->src_buffer = src_buffer;
|
||||||
|
@ -276,19 +290,15 @@ gimp_applicator_set_dest_buffer (GimpApplicator *applicator,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! applicator->dest_buffer)
|
if (! applicator->dest_buffer)
|
||||||
{
|
gegl_node_link (applicator->affect_node, applicator->dest_node);
|
||||||
gegl_node_disconnect (applicator->output_node, "input");
|
|
||||||
|
|
||||||
gegl_node_connect_to (applicator->affect_node, "output",
|
|
||||||
applicator->dest_node, "input");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (applicator->dest_buffer)
|
else if (applicator->dest_buffer)
|
||||||
{
|
{
|
||||||
gegl_node_disconnect (applicator->dest_node, "input");
|
gegl_node_disconnect (applicator->dest_node, "input");
|
||||||
|
|
||||||
gegl_node_connect_to (applicator->affect_node, "output",
|
gegl_node_set (applicator->dest_node,
|
||||||
applicator->output_node, "input");
|
"buffer", NULL,
|
||||||
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
applicator->dest_buffer = dest_buffer;
|
applicator->dest_buffer = dest_buffer;
|
||||||
|
|
|
@ -41,6 +41,8 @@ struct _GimpApplicator
|
||||||
GeglNode *aux_node;
|
GeglNode *aux_node;
|
||||||
GeglNode *output_node;
|
GeglNode *output_node;
|
||||||
|
|
||||||
|
gboolean active;
|
||||||
|
|
||||||
GeglBuffer *apply_buffer;
|
GeglBuffer *apply_buffer;
|
||||||
GeglNode *apply_src_node;
|
GeglNode *apply_src_node;
|
||||||
|
|
||||||
|
@ -92,6 +94,9 @@ GType gimp_applicator_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
GimpApplicator * gimp_applicator_new (GeglNode *parent);
|
GimpApplicator * gimp_applicator_new (GeglNode *parent);
|
||||||
|
|
||||||
|
void gimp_applicator_set_active (GimpApplicator *applicator,
|
||||||
|
gboolean active);
|
||||||
|
|
||||||
void gimp_applicator_set_src_buffer (GimpApplicator *applicator,
|
void gimp_applicator_set_src_buffer (GimpApplicator *applicator,
|
||||||
GeglBuffer *dest_buffer);
|
GeglBuffer *dest_buffer);
|
||||||
void gimp_applicator_set_dest_buffer (GimpApplicator *applicator,
|
void gimp_applicator_set_dest_buffer (GimpApplicator *applicator,
|
||||||
|
|
Loading…
Reference in New Issue