Whether to use fade at all is a user input, so should be controllable
independently from its dynamic mapping. The reborn property is not
used again yet.
* app/paint/gimppaintoptions.c: Add initialization for fading dynamics. Add fading related variables similar to Random. Adjust get_dynamics_mix function. Add fading calculation in get_dynamics_x functions. Adjust get_dynamic_x functions for fade dynamics.
* app/paint/gimppaintoptions.h: Add fading_options in GimpDynamicOptions.
* app/tools/gimppaintoptions-gui.c: Add the function fading_options_gui.
* app/paint/gimpclone.c
* app/paint/gimpdodgeburn.c
* app/paint/gimperaser.c
* app/paint/gimpheal.c
* app/paint/gimppaintbrush.c
* app/paint/gimpsmudge.c
* app/paint/gimpairbrush.c
* app/paint/gimpbrushcore.c
* app/paint/gimpconvolve.c: Adjust function calls. get_dynamic_opacity function calls were adjusted to have one more parameter, paint_core->pixel_dist.
some key words:
get_dynamic_
pixel_dist
paint_core->pixel_dist
2009-02-18 Sven Neumann <sven@gimp.org>
Bug 99457 – Support for dynamics on tilt
* app/tools/gimppaintoptions-gui.c
* app/paint/gimppaintoptions.[ch]: applied patch from Alexia
Death
that allows to map tilt to the dynamic brush parameters.
svn path=/trunk/; revision=28049
2009-02-08 Michael Natterer <mitch@gimp.org>
Bug 520078 – Rotate brushes
Applied a slightly modified patch from Alexia Death:
* app/core/core-types.h (struct GimpCoords): add "direction" member.
* app/core/gimpcoords.c: take direction into account in mix(),
scalarprod(), length_squared(), manhattan_dist() and equal().
* app/core/gimpcoords-interpolate.c
(gimp_coords_interpolate_catmull): same here.
* app/display/gimpdisplayshell-coords.c
(gimp_display_shell_eval_event): same here.
* app/paint/gimppaintoptions.[ch]: add properties for direction
dynamics and adapt dynamics mixing accordingly.
* app/paint/gimpbrushcore.c (gimp_brush_core_interpolate):
"interpolate" direction too (in fact, just copy it from
last_coords since it doesn't change along a straight line).
* app/paint/gimppaintcore-stroke.c
(gimp_paint_core_stroke_emulate_dynamics): emulate direction too.
* app/tools/gimppaintoptions-gui.c: add GUI for direction dynamics.
svn path=/trunk/; revision=28001
2009-02-05 Sven Neumann <sven@gimp.org>
Bug 520078 – Rotate brushes
Applied patch from Alexia Death:
* app/core/gimpbrush.[ch]
* app/core/gimpbrushgenerated.c
* app/core/gimpbrush-transform.[ch]: affine transformations for
brushes. So far only scaling and rotation is supported. The
transformation is done using nearest-neighbour. This is a
regression and we need to add back interpolation before the next
release.
* app/paint/gimpsmudge.c
* app/paint/gimppaintoptions.[ch]
* app/paint/gimpbrushcore.[ch]: allow to control the brush
rotation angle.
* app/tools/gimppaintoptions-gui.c
* app/tools/gimpbrushtool.c: added UI for controlling the
brush rotation angle.
* app/actions/tools-actions.c
* app/actions/tools-commands.[ch]: add actions for controlling
the
brush rotation angle.
svn path=/trunk/; revision=27987
2009-01-17 Michael Natterer <mitch@gimp.org>
* all files with a GPL header and all COPYING files:
Change licence to GPLv3 (and to LGPLv3 for libgimp).
Cleaned up some copyright headers and regenerated the parsers in
the ImageMap plugin.
svn path=/trunk/; revision=27913
2008-08-26 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c (gimp_paint_options_gui): don't
hardcode the attach coords for the fixed containing the dynamics
labels but use the table's real width instead. Fixes broken table
layout in the airbrush options.
svn path=/trunk/; revision=26771
2008-07-07 Sven Neumann <sven@gimp.org>
* app/tools/gimppaintoptions-gui.c (tool_has_size_dynamics):
check
for tools derived from GimpPaintBrushTool just as we do in
tool_has_opacity_dynamics().
(tool_has_hardness_dynamics): enable hardness dynamics for the
eraser tool (bug #541691).
svn path=/trunk/; revision=26083
2008-06-27 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c (gimp_paint_options_gui): swap
the angles of the dynamics matrix' labels in RTL and LTR mode so
the beginning of the words are aligned and on bottom.
svn path=/trunk/; revision=25995
2008-05-27 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c: don't add the gradient box for
the blend tool. Clean up the code by moving the checks for the
tool type out of the utility functions into the main
gimp_paint_options_gui() function.
* app/tools/gimpblendoptions.c: add the gradient box here.
svn path=/trunk/; revision=25826
2008-05-26 Michael Natterer <mitch@gimp.org>
Applied modified patch from Alexia Death. Addresses bug #534770:
* app/paint/gimppaintoptions.[ch]: add properties for scaling
the effects of pressure, velocity and hardness and honor them
in the various get_dynamic_foo() functions.
(gimp_paint_options_get_dynamic_size): look at
pressure_options->size again, that code got lost in one of the
earlier patches.
* app/tools/gimppaintoptions-gui.c: add GimpScaleButtons to the
table for the new properties.
* app/display/gimpdisplayshell-coords.c: don't let "velocity"
reach 1.0, use 0.9999 instead.
svn path=/trunk/; revision=25816
2008-05-26 Michael Natterer <mitch@gimp.org>
* app/paint/gimppaintoptions.[ch]: replace the identical
GimpPressureOptions, GimpVelocityOptions and GimpRandomOptions
struct by a single GimpDynamicOptions struct.
* app/tools/gimppaintoptions-gui.c: don't pass the various
sub-structs to the _options_gui() function because they are not
needed.
svn path=/trunk/; revision=25814
2008-05-24 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c: fix dynamics grid label
positions for RTL mode by attaching the fixed to the table *after*
the toggle buttons (eek). See comment in the code.
svn path=/trunk/; revision=25790
2008-05-23 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c: left-align the labels in the
new dynamics matrix. Add some code for RTL layout that doesn't
work properly yet.
svn path=/trunk/; revision=25772
2008-05-22 Michael Natterer <mitch@gimp.org>
* app/paint/gimppaintoptions.[ch]: replace the pressure-expanded,
velocity-expanded and random-expanded properties by a single
dynamics-expanded property.
* app/tools/gimppaintoptions-gui.c: pack the toggle matrix into an
expander, some cleanup.
svn path=/trunk/; revision=25765
2008-05-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c: revert accidential change of
all occurences of "hardness" to "pressure" in strings and function
names.
svn path=/trunk/; revision=25764
2008-05-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c: factor out a utility function
that creates a dynamics check button.
svn path=/trunk/; revision=25763
2008-05-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c: first version of a matrix of
toggles for the dynamics parameters instead of three expanders.
svn path=/trunk/; revision=25762
2008-05-22 Michael Natterer <mitch@gimp.org>
Applied slightly modified and fixed patch from Alexia Death which
adds a "random" axis to the paint dynamics and fixes some issues
in the previous paint dynamics commits. Fixes bug #529431.
* app/core/core-types.h: add a "random" axis to GimpCoords.
* app/display/gimpdisplayshell-coords.c: set it to a random value.
* app/display/gimpdisplayshell-callbacks.c: on button_press,
use the dynamics from the last motion event to avoid blotches
at the beginning of paint strokes.
* app/paint/gimppaintoptions.[ch]: add random properties the same
way we do pressure and velocity. Add get_dynamic_size(),
get_dynamic_color() and get_dynamic_hardness() functions which
look at all dynamic parameters of the passed coords.
* app/tools/gimppaintoptions-gui.c: add gui for the random options.
* app/paint/gimpbrushcore.[ch]: remove calc_brush_scale() and use
gimp_paint_options_get_dynamic_size_instead().
Add "dynamic_hardness" parameters to paste_canvas(),
replace_canvas() and get_brush_mask().
* app/paint/gimpairbrushoptions.c
* app/paint/gimpclone.c
* app/paint/gimpconvolve.c
* app/paint/gimpdodgeburn.c
* app/paint/gimperaser.c
* app/paint/gimpheal.c
* app/paint/gimppaintbrush.c
* app/paint/gimpsmudge.c: calculate the dynamic hardness and pass
it to above brush core functions. Use the get_dynamic_color() to
calculate the gradient color.
svn path=/trunk/; revision=25758
2008-05-10 Michael Natterer <mitch@gimp.org>
Applied modified patch from Alexia Death which adds velocity
support to paint tools in the spirit of the pressure support we
already have. Fixes bug #529431.
* app/display/gimpdisplayshell-coords.c
(gimp_display_shell_eval_event): tweak velocity calculation to
work in screen coordinates.
* app/paint/gimppaintoptions.[ch]: add velocity options in the
same way as there are pressure options. Add utility functions
which return dynamic opatity and dynamic rate according to the the
option's settings and some GimpCoords' pressure and velocity.
* app/tools/gimppaintoptions-gui.c: add GUI for the velocity
options.
* app/paint/gimpbrushcore.h: remove PRESSURE_SCALE define, it's
now in gimppaintoptions.h.
* app/paint/gimpbrushcore.c (gimp_brush_core_interpolate):
inerpolate velocity too.
(gimp_brush_core_calc_brush_scale): take velocity into account.
(gimp_brush_core_get_brush_mask): always pressurize the mask in
the GIMP_BRUSH_PRESSURE because there always is velocity (unlike
pressure which is only there on tablets).
* app/paint/gimpairbrush.c
* app/paint/gimpclone.c
* app/paint/gimpconvolve.c
* app/paint/gimpdodgeburn.c
* app/paint/gimperaser.c
* app/paint/gimpheal.c
* app/paint/gimppaintbrush.c
* app/paint/gimpsmudge.c: get opacity and rate from the new paint
options utility functions which take both pressure and velocity
into account.
* app/paint/gimppaintbrush.c: take velocity into account when
calculating the gradient color offset.
* app/paint/gimpairbrush.c: do some additional fiddling with
velocity in the asynchronous airbrush timeout.
* app/paint/gimpairbrushoptions.c: override the velocity-size
property and have it default to FALSE.
svn path=/trunk/; revision=25604
2007-11-13 Michael Natterer <mitch@gimp.org>
Enable brush scaling for smudge (but only before, not while
painting). Fixes bug #471348.
* app/paint/gimpbrushcore.[ch] (struct GimpBrushCoreClass): rename
member "use_scale" to "handles_scaling_brush".
(gimp_brush_core_calc_brush_scale): apply pressure scale only if
both "handles_scaling_brush" and "use_pressure" are TRUE, and
apply the scaling from the options unconditionally.
(gimp_brush_core_get_paint_area): don't re-fetch core->scale if
"handles_scaling_brush" is FALSE to keep the brush from scaling
*while* painting.
(gimp_brush_core_create_bound_segs): use the brush scale from the
options unconditionally since that's always used now.
* app/paint/gimpsmudge.c (gimp_smudge_brush_coords): use
gimp_brush_scale_size() to figure the accum_buffer's size instead
of using the brush mask's size directly.
* app/tools/gimppaintoptions-gui.c (gimp_paint_options_gui): show
the brush scale controls for all brush tools.
svn path=/trunk/; revision=24140
2007-10-22 Sven Neumann <sven@gimp.org>
* app/tools/gimppaintoptions-gui.c: changed aspect ratio of the
wrap-box used for the "Pressure sensitivity" controls to make
them
fit better into the tool-options.
svn path=/trunk/; revision=23910
2007-03-15 Michael Natterer <mitch@gimp.org>
* app/tools/gimppaintoptions-gui.c (gimp_paint_options_gui): "adj"
is a GtkObject not a GtkWidget, also moved it to its local scope.
svn path=/trunk/; revision=22127
2007-03-14 Martin Nordholts <martinn@svn.gnome.org>
Made brushes upscalable by using scale_region. Downscaling still
uses functions in app/base/brush-scale.c (because of better
performance). Parametric brushes of course recalculates masks
instead of using bitmap scaling. Fixes bug #65030.
* app/core/gimpbrush.[ch]: Added a private scale_buf method which
uses scale_region (with GIMP_INTERPOLATION_LINEAR) to scale its
masks and pixmaps. Also added public virtual method scale_size to
GimpBrush (overridden by GimpBrushGenerated) which calculates the
buffer sizes for a given brush scaled with a given scale.
* app/core/gimpbrushgenerated.c: Implemented the new scale_size
method inherited from GimpBrush, and modified
gimp_brush_generated_calc to use this helper function.
* app/tools/gimppaintoptions-gui.c (gimp_paint_options_gui): Made
the brush Scale-slider logarithmic.
* app/paint/gimppaintoptions.c (gimp_paint_options_class_init):
Changed Scale scale to [0.0, 10.0].
* app/paint/gimpbrushcore.c:
(gimp_brush_core_calc_brush_size): Refactored 'get brush size' code
to where it belongs, in GimpBrush-classes, and allowed scales
larger than 1.0.
svn path=/trunk/; revision=22113
2007-03-12 Michael Natterer <mitch@gimp.org>
* app/core/gimpbrush.[ch]
* app/core/gimpbrushgenerated.c
* app/tools/gimppaintoptions-gui.c
* app/base/brush-scale.[ch]
* app/base/temp-buf.[ch]
* app/paint/gimppaintoptions.c
* app/paint/gimpbrushcore.c: revert last commit. The patch needs
more review and it's easier to start from quare one than have
patches on top of patches.
svn path=/trunk/; revision=22101
2007-03-11 Michael Schumacher <schumaml@cvs.gnome.org>
Made brushes scalable (both up and down) by using existing
scaling routines, and also refactored some brush-code. Patch by
Martin Nordholts. Fixes bug #65030.
* app/paint/gimpbrushcore.c:
(gimp_brush_core_calc_brush_length_scale) Refactored 'get brush
size' code to where it belongs, in GimpBrush-classes, and renamed
gimp_brush_core_calc_brush_size to
gimp_brush_core_calc_brush_length_scale.
* app/paint/gimppaintoptions.c (gimp_paint_options_class_init):
Changed Scale scale to [0.0, 100.0].
* app/base/temp-buf.[ch] (mask_buf_new): Change signature to also
take a bpp parameter.
* app/base/brush-scale.[ch]: Changed brush_scale_(mask|pixmap) to
the new brush_scale_buf, which uses existing scaling routines
(scale_region) instead of dedicated down-scaling only routines.
* app/tools/gimppaintoptions-gui.c (gimp_paint_options_gui): Made
the brush Scale-slider logarithmic.
* app/core/gimpbrushgenerated.c: Implemented the new
get_scaled_size method inherited from GimpBrush, and modified
gimp_brush_generated_calc to use this helper function.
* app/core/gimpbrush.[ch]: Added public virtual method
get_scaled_size to GimpBrush, overridden by GimpBrushGenerated,
which calculates the buffer sizes for a given brush scaled with a
given scale. Also changed calls to brush_scale_(mask|pixmap) to
the new brush_scale_buf.
svn path=/trunk/; revision=22099
2006-11-22 Michael Natterer <mitch@gimp.org>
* app/actions/actions.c (action_select_property): add support for
G_TYPE_INT properties.
* app/actions/tools-actions.c
* app/actions/tools-commands.[ch]: add actions and callback which
affect the foreground select tool's stroke-width property.
* app/tools/gimpforegroundselecttool.c: map tool-action-value-2
(tool tip size) to the new action.
* app/tools/gimppaintoptions-gui.c: fixed visibility of the brush
scale slider.
2006-11-16 Michael Natterer <mitch@gimp.org>
Made all brushes scalable from the tool options. So far only
downscaling is supported since we lack an algorithm for bitmap
brush upscaling. Addresses bug #65030.
* app/paint/gimppaintoptions.[ch]: added "brush-scale" property.
* app/paint/gimpbrushcore.[ch]: separate pressure logic from brush
scaling logic and take paint_options->brush_scale into account.
Added gimp_brush_core_create_bound_segs() which returns BoundSegs
of the correctly scaled brush mask for the brush preview on the
canvas.
* app/tools/gimpbrushtool.c: use gimp_brush_core_create_bound_segs()
instead of doing this here (also removes all knowledge about lowlevel
stuff from this file). Connect to notify::brush-scale of the
paint options and invalidate the brush core's brush accordingly.
* app/tools/gimppaintoptions-gui.c: added brush scale slider.
2006-10-21 Michael Natterer <mitch@gimp.org>
Added "Edit -> Fade" which allows to modify the paint mode and
opacity of the last drawable operation (fill, plugins etc.).
Started from a patch by Bill Skaggs. Fixes bug #170707.
* app/base/base-enums.[ch] (enum GimpLayerModeEffects): register
the values REPLACE_MODE, ERASE_MODE and ANTI_ERASE_MODE with
the type system.
* app/widgets/gimppropwidgets.[ch]
* app/widgets/gimpwidgets-constructors.[ch]: added "gboolean
with_replace_modes" to the paint mode menu constructors.
* app/tools/gimppaintoptions-gui.c
* app/widgets/gimpbrushselect.c
* app/widgets/gimplayertreeview.c: pass with_replace_modes = FALSE.
* app/core/gimpdrawableundo.[ch]: added members which keep tiles,
paint mode and opacity of the pasted pixels.
* app/core/gimpimage-undo.[ch] (gimp_image_undo_get_fadeable):
returns a GimpUndo suitable for a fade operation, or NULL.
* app/core/gimp-edit.[ch] (gimp_edit_fade): implements the actual
fade by undoing the last operation and then re-applying the pixels
with different paint mode and opacity.
* app/core/gimpdrawable-combine.c: store the pasted pixels in
the GimpDrawableUndo.
* app/actions/edit-actions.c
* app/actions/edit-commands.[ch]: action and callback for fade.
* app/dialogs/Makefile.am
* app/dialogs/fade-dialog.[ch]: the fade dialog.
* app/widgets/gimphelp-ids.h: the fade help ID.
* menus/image-menu.xml.in: added a menu entry in "Edit".
2006-10-18 Michael Natterer <mitch@gimp.org>
* app/widgets/gimppropwidgets.[ch]: added
gimp_prop_expanding_frame_new() which creates a frame with a
toggle button in the title.
* app/tools/gimpblendoptions.c
* app/tools/gimppaintoptions-gui.c
* app/tools/gimprectangleoptions.c
* app/tools/gimprectangleselectoptions.c
* app/tools/gimpselectionoptions.c: use it instead of duplicating
this code all over the place.
2006-09-07 Michael Natterer <mitch@gimp.org>
Merged the "soc-2006-perspective-clone" branch. That branch is
now officially closed and all further fixes and changes have to
be applied to HEAD.
Did some minor adjustments, mostly small indentation and spacing
fixes. Derive the tool from GimpBrushTool and renamed the enum
added to paint-enums.h and it values, added stock icon and menu
entry.
Thanks a lot to Pedro Alonso Ferrer!
* app/paint/paint-enums.[ch]: new enum GimpPerspectiveCloneMode.
* app/paint/Makefile.am
* app/paint/gimpperspectiveclone.[ch]
* app/paint/gimpperspectivecloneoptions.[ch]: the perspective
clone core and its options.
* app/paint/gimp-paint.c: register it.
* app/tools/Makefile.am
* app/tools/gimpperspectiveclonetool.[ch]: the perspective clone tool.
* app/tools/gimp-tools.c: register it.
* app/tools/gimppaintoptions-gui.c: show the widgets that are used
by perspective clone.
* app/widgets/gimphelp-ids.h: the help ID.
* themes/Default/images/Makefile.am
* themes/Default/images/tools/stock-tool-perspective-clone-16.png
* themes/Default/images/tools/stock-tool-perspective-clone-22.png
* libgimpwidgets/gimpstock.[ch]: its stock ID and icons.
* menus/image-menu.xml.in: added it to the menu.
2006-09-02 Michael Natterer <mitch@gimp.org>
Merged the "soc-2006-healing-brush" branch. That branch is now
officially closed and all further fixes and changes have to be
applied to HEAD.
Did some minor adjustments, mostly small indentation and spacing
fixes. Derive the tool from the newly introduced GimpBrushTool
which did not exist when the branch was created.
Thanks a lot to Kevin Sookocheff for this nice contribution!
* app/paint/paint-enums.[ch]: new enum GimpHealAlignMode.
* app/paint/Makefile.am
* app/paint/makefile.msc
* app/paint/gimpheal.[ch]
* app/paint/gimphealoptions.[ch]: the heal core and its options.
* app/paint/gimp-paint.c: register the heal core.
* app/tools/Makefile.am
* app/tools/makefile.msc
* app/tools/gimphealtool.[ch]: the heal tool.
* app/tools/gimp-tools.c: register the heal tool.
* app/tools/gimppaintoptions-gui.c: show the widgets that are used
by heal.
* app/widgets/gimphelp-ids.h: the heal help ID.
* tools/pdbgen/stddefs.pdb
* tools/pdbgen/pdb/paint_tools.pdb: the heal PDB wrappers.
* app/widgets/widgets-enums.h
* app/widgets/gimpcursor.c
* cursors/Makefile.am
* cursors/makefile.msc
* cursors/tool-heal.png
* cursors/xbm/tool-heal.xbm
* cursors/xbm/tool-heal-mask.xbm: a new cursor for the heal tool.
* libgimpwidgets/gimpstock.[ch]
* themes/Default/images/Makefile.am
* themes/Default/images/makefile.msc
* themes/Default/images/tools/stock-tool-heal-16.png
* themes/Default/images/tools/stock-tool-heal-22.png: new stock
icons for the heal tool.
* app/pdb/internal_procs.c
* app/pdb/paint_tools_cmds.c
* libgimp/gimppainttools_pdb.[ch]: regenerated.
2006-01-14 Michael Natterer <mitch@gimp.org>
* app/config/gimpconfig-utils.[ch] (gimp_config_connect_full):
variant of gimp_config_connect() which allows the connected
objects to have different propertynames.
* app/widgets/widgets-enums.[ch]: removed enum GimpViewType...
* app/core/core-enums.[ch]: ...and added it here.
* app/widgets/gimpviewablebutton.[ch] (gimp_viewable_button_new):
added "button_preview_size" parameter so the button and popup
preview sizes can be specified separately.
* app/widgets/gimptemplateeditor.c: changed accordingly.
* app/widgets/gimpviewablebox.[ch] (gimp_prop_*_box_new):
new functions which take additional "view_type_prop" and
"view_size_prop" parameters and sync the passed context's
properties with the resp. properties of the viewable button.
* app/paint/gimppaintoptions.[ch]
* app/tools/gimpbucketfilloptions.c
* app/tools/gimpclonetool.c
* app/tools/gimppaintoptions-gui.c
* app/tools/gimptextoptions.[ch]: added view-type and view-size
properties to the options objects and use the new viewable box
constructors so the selected view types and sizes are persistant
across sessions. Fixes bug #315443.
* gimp/app/paint/gimpbrushcore.c
* gimp/app/paint/gimpbrushcore.h
* gimp/app/paint/gimpclone.c
* gimp/app/paint/gimppaintbrush.c
* gimp/app/paint/gimppaintoptions.c
* gimp/app/paint/gimppaintoptions.h
* gimp/app/tools/gimppaintoptions-gui.c: Apply patch from
Adrian Likins to add "jitter" to paint tools (bug #163049),
with small fixes for coding style and default jitter set
to 0.2 instead of 0.0.