Commit Graph

199 Commits

Author SHA1 Message Date
Michael Natterer 5273a6dbab app: the paint_mask buffer in gimp_paint_core_replace() contains a GimpTempBuf
not a TileManager, so use the right API to get a PixelRegion on it.
2012-05-02 17:51:12 +02:00
Michael Natterer 685a48d59a app: move gimp_gegl_buffer_get_temp_buf() to gimptempbuf.[ch] 2012-05-02 17:51:02 +02:00
Øyvind Kolås 25030ce6c4 app: no need to clear newly created buffers
Freshly created GeglBuffers, that are native GeglBuffers are already sparse
and all tiles are implicit COW empty tiles.
2012-05-02 17:51:01 +02:00
Michael Natterer bdf6b48138 app: move GimpTempBuf from base/ to core/
and forget about include policy in base/, it's scheduled for removal
anyway.
2012-05-02 17:51:01 +02:00
Michael Natterer 36fb008197 app: port GimpPaintCore's paste and replase APIs to GeglBuffer 2012-05-02 17:50:54 +02:00
Øyvind Kolås 6efd812d08 app: s/GIMP_GEGL_RECT/GEGL_RECTANGLE/
Defining GeglRectangle inline is so useful that it has been added to
GEGL.
2012-05-02 17:50:52 +02:00
Michael Natterer c5c555c834 app: add "take_ownerspip" param to gimp_temp_buf_create_buffer()
and get rid of some more intermediate buffer creation/destruction, and
some redundant temp_buf_free() plus g_object_unref().
2012-05-02 17:50:51 +02:00
Michael Natterer 7b5252ac54 app: replace GimpPaintCore::get_paint_area() by ::get_paint_buffer()
and remove the public TempBuf based get_paint_area() API.
2012-05-02 17:50:51 +02:00
Michael Natterer 60ae55f87b app: don't return bogus paint buffers if get_paint_area() returned NULL 2012-05-02 17:50:50 +02:00
Michael Natterer 12ac0bea13 app: add gimp_paint_core_get_paint_buffer()
which is the same as gimp_paint_core_get_paint_area() but returns a
GeglBuffer to paint to, not a TempBuf.
2012-05-02 17:50:47 +02:00
Michael Natterer 1dbadb772d app: rename GimpPaintCore->canvas_buf to ->paint_area
because that's what it's called in public API. This has confused me
long enough now.
2012-05-02 17:50:46 +02:00
Michael Natterer 2af0681587 app: don't create copies in gimp_paint_core_get_orig_image,proj()
and instead simply return the paint_core owned buffers. Also, move
graph creation and source buffer fiddling out of perspective clone's
inner loop, and set an area to be processed manually, which makes it
responsive again.
2012-05-02 17:50:46 +02:00
Michael Natterer 7c2c671703 app: make gimp_paint_core_get_orig_image,proj() return GeglBuffers
and change their users accordingly, getting rid of temp buffers and
useless copies.
2012-05-02 17:50:44 +02:00
Michael Natterer eb2e658408 app: replace GimpPaintCore->canvas_buf by a GeglBuffer 2012-05-02 17:50:43 +02:00
Michael Natterer c9d0386e0c app: replace GimpPaintCore->saved_proj_tiles by a GeglBuffer 2012-05-02 17:50:43 +02:00
Michael Natterer 2a853cd1ee app: remove GimpPickable::get_bytes() 2012-05-02 17:50:42 +02:00
Michael Natterer 7223af17a2 app: completely port GimpDrawable::apply_region()'s API to GeglBuffer
and pass lots of coords that were hidden inside PixelRegions
explicitly.
2012-05-02 17:46:12 +02:00
Michael Natterer 061e044e0a app: change GimpDrawable::replace_region() by ::replace_buffer() 2012-05-02 17:46:12 +02:00
Michael Natterer 3bb973f24b app: pass the right undo buffer and extents to gimp_drawable_push_undo()
the coords need to be in drawable bounds now that we got rid of the
weird sparse logic.
2012-05-02 17:46:11 +02:00
Michael Natterer 4bcddb04a2 app: turn gimp_drawable_apply_buffer()'s src1_tiles argument into base_buffer 2012-05-02 17:46:11 +02:00
Michael Natterer ca734f91b7 app: port gimp_paint_core_paste() to gimp_drawable_apply_buffer()
using the new TempBuf-GeglBuffer.
2012-05-02 17:46:11 +02:00
Michael Natterer 6c59c45612 app: replace GimpPaintCore's undo_tiles by a GeglBuffer
and simply use a dumb straight copy of the drawable, it's GEGL's job
to do proper COW.
2012-05-02 17:46:10 +02:00
Michael Natterer a0c1007b66 app: port GimpDrawableUndo, GimpDrawable::push_undo() and ::swap_tiles()
which gets rid of the manual implementation of sparse undo buffers,
but GEGL will take care of proper COW here soo enough.
2012-05-02 17:46:08 +02:00
Massimo Valentini 39368a410d plugged memory leaks 2012-02-07 17:32:02 +01:00
Alexia Death d32fa80d1d app: Move smooth to painttool and clean up the rest 2011-09-14 20:44:45 +03:00
Alexia Death 79dfee2c9e Revert "app: Remove obsolete way of keeping track of last painted dab"
This reverts commit 1b62a7bff3.
2011-09-11 22:47:55 +03:00
Alexia Death 1b62a7bff3 app: Remove obsolete way of keeping track of last painted dab 2011-09-11 13:23:05 +03:00
Alexia Death 9711995d88 app: remove duplicate call to coord smooth
Interpolation function is taking care of
the smooth now. This caused bugs with
spacing while using smooth.
2011-09-11 13:23:05 +03:00
Alexia Death 2068498b5c app: fix a bug with smooth affecting spacing 2011-04-20 22:03:49 +03:00
Alexia Death 41b1bd36da app: Fix smooth intreaction with airbrush 2011-03-16 22:08:19 +02:00
Michael Natterer 16b020fc42 app: clean up paint core cleanup 2011-02-06 11:22:23 +01:00
Alexia Death 1cf5295d2e app: Fix couple of bugs in smooth code 2011-02-06 00:17:51 +02:00
Alexia Death 803df9b58a app: Make smooth paint core internal 2011-01-09 22:59:01 +02:00
Michael Natterer c29aefccc2 app: fix coding style in the new smoothing code 2011-01-08 22:18:56 +01:00
Alexia Death 339deed1da app: Clean up smooth so it would be acceptable for master 2011-01-08 22:19:27 +02:00
Alexia Death 082aa272a4 app: G-Pen algorithm for GIMP trunk. Now smoothing function works for Ink and Brush tools.
Rebased/fixed to go on top of current master. Next commit will add cleanup.
Had to change author tag because gnome is not accepting random stuff
in email fields. Original author is tarai, from gimp painter project
in sourceforge.
2011-01-08 22:17:26 +02:00
Michael Natterer c55753f2ad Bug 610478 - Layer preview suddenly stops getting updated
gimp_paint_core_finish(): when bailing out early because nothing was
painted (e.g. because we repeatedly shift-click on the same pixel,
which doesn't advance the interpolation distance), don't forget to
call gimp_viewable_preview_thaw() or the drawable preview will be
frozen forever.
2010-02-19 20:59:25 +01:00
Michael Natterer bdd8d8e3fb Use more x,y,width,height instead of x1,y1,x2,y2
(gimp_paint_core_get_orig_image)
(gimp_paint_core_get_orig_proj): changed parameters to x,y,width,height.
Update callers accordingly and use x,y,width,height there too except
in gimpperspectiveclone.c which does better with a bounding box.
2009-06-17 20:46:28 +02:00
Michael Natterer 13cb156a80 Get rid of more x1,y1,x2,y2 uglyness
(gimp_drawable_push_undo): change x1,y1,x2,y2 parameters to
x,y,witdh,height and update all callers accordingly.
2009-06-16 22:59:07 +02:00
Michael Natterer 06a3b3a85a Bug 586008 - GIMP crashes when right-click canceling a drawing action initiated outside layer boundaries
(gimp_paint_core_cancel): don't pass out-of-drawable coordinates to
gimp_paint_core_copy_valid_tiles().
2009-06-16 22:09:48 +02:00
Michael Natterer 53c661312b Add GimpCoords* parameter to gimp_paint_core_interpolate()
Pass the current coords to the function instead of setting them
on the paint core before calling it. Doesn't exactly make the code
in the paint tool  simpler, but that needs further refactoring anyway.
2009-05-25 20:49:34 +02:00
Michael Natterer cee39b090f Add more GimpCoords* parameters to reduce usage of global paint_core states
Add GimpCoords* to GimpPaintCore::get_paint_area(),
gimp_brush_core_paste_canvas(), gimp_brush_core_replace_canvas(),
gimp_brush_core_get_brush_mask(), gimp_brush_core_color_area_with_pixmap()
and change callers accordingly.
2009-05-17 22:45:06 +02:00
Michael Natterer 0da1c4cb7c Some style cleanup. 2009-05-03 12:19:07 +02:00
Michael Natterer 07ba32d6f8 Stop accessing GimpPaintCore's coords members directly (no encapsulation yet).
* app/paint/gimppaintcore.[ch]: add
  gimp_paint_core_{get|set}_{current|last}_coords(), add "const GimpCoords*"
  parameter to ::paint() which gets core->cur_coords passed.

* app/paint/gimpsourcecore.[ch]: add "const GimpCoords*" to ::motion().

* app/paint/gimpbrushcore.c: use the new coords getters/setters instead
  of accessing GimpPaintCore members directly.

* 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/gimpink.c
* app/paint/gimppaintbrush.[ch]
* app/paint/gimpperspectiveclone.c
* app/paint/gimpsmudge.c: change implementations of GimpPaintCore::paint()
  and GimpSourceCore::motion() accordingly. app/paint/ is now virtually
  free of direct access to the paint core's coords members. More to come...
2009-05-03 12:08:21 +02:00
Michael Natterer 42b28066b8 Move the straight line constrain code to GimpPaintCore.
* app/paint/gimppaintcore.[ch]: add gimp_paint_core_round_line()

* app/tools/gimppainttool.c: remove gimp_paint_tool_round_line() and call
above new function instead.
2009-04-22 21:22:08 +02:00
Michael Natterer 50199a542c Made GimpCoords* parameter of GimpPaintCore::start() const.
* app/paint/gimppaintcore.[ch]: made GimpCoords* parameter of
GimpPaintCore::start() const.

* app/paint/gimpbrushcore.c
* app/paint/gimpclone.c
* app/paint/gimpheal.c
* app/paint/gimpperspectiveclone.c
* app/paint/gimpsourcecore.c: changed accordingly.
2009-04-17 22:29:25 +02:00
Michael Natterer d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
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
2009-01-17 22:28:01 +00:00
Sven Neumann f1c78b1df0 copy-on-write from the projection is not any longer broken, so use it
2008-12-27  Sven Neumann  <sven@gimp.org>

	* app/paint/gimppaintcore.c
	(gimp_paint_core_validate_saved_proj_tiles): copy-on-write from
	the projection is not any longer broken, so use it here.


svn path=/trunk/; revision=27837
2008-12-27 16:11:54 +00:00
Sven Neumann a4daf7f210 Bug 564087 – Using clone tool on a layer with a part out of canvas
2008-12-27  Sven Neumann  <sven@gimp.org>

        Bug 564087 – Using clone tool on a layer with a part out of 
canvas
        causes crashes

        * app/paint/gimppaintcore.c (gimp_paint_core_paste): intersect 
the
        rectangle with the extents of the saved projection.


svn path=/trunk/; revision=27835
2008-12-27 16:04:43 +00:00
Michael Natterer 198416450d add optional parameter "PixelRegion *destPR" to
2008-11-08  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpdrawable.[ch]: add optional parameter "PixelRegion
	*destPR" to GimpDrawable::apply_region().

	* app/core/gimpdrawable-combine.[ch]: if the passed destPR is !=
	NULL, write the result of the combination into that region instead
	of the drawable's tiles. The region must have the exact size of
	the result.

	* app/core/gimp-edit.c
	* app/core/gimpchannel.c
	* app/core/gimpdrawable-blend.c
	* app/core/gimpdrawable-bucket-fill.c
	* app/core/gimpdrawable-shadow.c
	* app/core/gimpdrawable-stroke.c
	* app/core/gimpimagemap.c
	* app/core/gimplayer-floating-sel.c
	* app/paint/gimppaintcore.c: pass NULL as destPR. Code actually
	using this feature follows.


svn path=/trunk/; revision=27574
2008-11-08 19:52:18 +00:00