1. 11 Jul, 2018 1 commit
  2. 09 Dec, 2017 1 commit
    • Ell's avatar
      Bug 759287 - Canvas Tearing While in Rotated Canvas View · 8029508f
      Ell authored
      Based on a patch by Massimo.
      
      Move the entire image-space/screen-space transformation logic from
      gimp_display_shell_render() to gimp_display_shell_draw_image(), so
      that the former works entirely in image space, and do the chunking
      and clipping in screen-space, making sure that image-space chunks
      are never larger than
      GIMP_DISPLAY_RENDER_BUF_WIDTH x GIMP_DISPLAY_RENDER_BUF_HEIGHT,
      even when the window's scale factor is greater than 1.
      
      Add a GIMP_BRICK_WALL environment variable, which, when set, shows
      the screen-space chunk bounds.
      8029508f
  3. 02 Feb, 2013 1 commit
    • Chris Wilson's avatar
      app: Use SHM transport for data transfer for display · 4a81849e
      Chris Wilson authored
      Recent Cairo uses SHM transports when available, and exposes the ability
      for its users to manage images shared between it and the display.
      This allows us to eliminate copies, and if the architecture supports it
      even to upload directly into GPU addressable memory without any copies
      (all in normal system memory so we suffer no performance penalty when
      applying the filters). The caveat is that we need to be aware of the
      synchronize requirements, the cairo_surface_flush and
      cairo_surface_mark_dirty, around access to the transport image. To
      reduce the frequency of these barriers, we can subdivide the transport
      image into small chunks as to satisfy individual updates and delay the
      synchronisation barrier until we are forced to reuse earlier pixels.
      
      Note this bumps the required Cairo version to 1.12, and please be aware
      that the XSHM transport requires bug fixes from cairo.git (will be
      1.12.12)
      
      v2: After further reflections with Mitch, we realized we can share the
      transport surface between all canvases by attaching it to the common
      screen.
      
      v3: Fix a couple of typos in insert_node() introduced when switching
      variables names.
      
      v4: Encapsulating within an image surface rather than a subsurface was
      hiding the backing SHM segment from cairo, causing it to allocate
      further SHM resources to stream the upload. We should be able to use a
      sub-surface here, but it is more convenient to wrap the pixels in an
      image surface for rendering the filters (and conveniently masking the
      callee flushes from invalidating our parent transport surface).
      
      Cc: Michael Natterer <mitch@gimp.org>
      4a81849e
  4. 18 Jan, 2013 1 commit
  5. 29 Sep, 2010 3 commits
  6. 27 Aug, 2010 1 commit
  7. 01 Nov, 2009 1 commit
  8. 02 Oct, 2009 1 commit
  9. 17 Jan, 2009 1 commit
    • Michael Natterer's avatar
      Change licence to GPLv3 (and to LGPLv3 for libgimp). · d9b5207a
      Michael Natterer authored
      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
      d9b5207a
  10. 21 Nov, 2008 1 commit
  11. 10 Aug, 2008 1 commit
    • Martin Nordholts's avatar
      app/display/gimpdisplayshell-draw.[ch] · 7865481d
      Martin Nordholts authored
      2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>
      
      	* app/display/gimpdisplayshell-draw.[ch]
      	* app/display/gimpdisplayshell-render.[ch]
      	* app/display/gimpdisplayshell-transform.[ch]
      	* app/display/gimpdisplayshell-appearance.[ch]: Sprinkle as many
      	const qualifiers we can without any implementation changes.
      
      svn path=/trunk/; revision=26477
      7865481d
  12. 09 Dec, 2006 1 commit
  13. 19 Jul, 2005 1 commit
    • Michael Natterer's avatar
      app/widgets/Makefile.am new files keeping the render acceleration check · 19ea2a9d
      Michael Natterer authored
      2005-07-19  Michael Natterer  <mitch@gimp.org>
      
      	* app/widgets/Makefile.am
      	* app/widgets/gimprender.[ch]: new files keeping the render
      	acceleration check buffers.
      
      	* app/display/gimpdisplayshell-render.[ch]: removed them here.
      
      	* app/gui/gui.c: initialize/shutdown the new buffers.
      
      	* app/widgets/gimpcolormapeditor.c
      	* app/widgets/gimpviewrenderer.c
      	* app/widgets/gimpviewrenderergradient.c
      	* app/actions/view-actions.c
      	* app/display/gimpdisplayshell-appearance.c
      	* app/display/gimpdisplayshell-draw.c
      	* app/display/gimpdisplayshell.c: use the new stuff. Removes
      	lots of broken widgets -> display dependencies.
      19ea2a9d
  14. 01 Oct, 2004 1 commit
    • Sven Neumann's avatar
      no need to include gimpdisplayshell-render.h here. · 297b53a4
      Sven Neumann authored
      2004-10-01  Sven Neumann  <sven@gimp.org>
      
      	* app/display/gimpdisplayshell-callbacks.c: no need to include
      	gimpdisplayshell-render.h here.
      
      	* app/display/gimpdisplayshell-draw.c
      	* app/display/gimpdisplayshell-render.[ch]
      
      	* app/display/gimpdisplayshell.[ch]: added an API to highlight a
      	rectangle (specified in image coordinates). Actually it doesn't
      	highlight but dims the area outside the rectangle.
      
      	* app/tools/gimpcroptool.c: use the new functionality to show the
      	area to be cropped. Fixes bug #93360.
      297b53a4
  15. 26 Feb, 2003 1 commit
    • Michael Natterer's avatar
      added "gchar *stock_id" to the GimpViewable struct. It is used by the GUI · 305db405
      Michael Natterer authored
      2003-02-26  Michael Natterer  <mitch@gimp.org>
      
      	* app/core/gimpviewable.[ch]: added "gchar *stock_id" to the
      	GimpViewable struct. It is used by the GUI if the get_preview()
      	functions return NULL. Default to GTK_STOCK_DIALOG_QUESTION.
      
      	* app/core/gimptoolinfo.[ch]: set the tool's stock_id. Removed
      	the cached GdkPixbuf. Don't implement any preview function
      	so the GUI uses the stock_id.
      
      	* app/tools/tool_manager.c: removed GdkPixbuf creation, removed
      	the #warning about the buggy way we created the pixbuf.
      
      	* app/gui/dialogs-constructors.c
      	* app/gui/image-menu.c
      	* app/tools/gimpcroptool.c
      	* app/tools/gimphistogramtool.c
      	* app/tools/gimpimagemaptool.c
      	* app/tools/gimpmeasuretool.c
      	* app/tools/gimptransformtool.c
      	* app/widgets/gimptoolbox.c: use viewable->stock_id instead
      	of tool_info->stock_id.
      
      	* app/core/gimpbrush.c
      	* app/core/gimpgradient.c
      	* app/core/gimpimagefile.c
      	* app/core/gimpundo.c: simplified get_preview() implementations:
      
      	- never scale previews up, only down.
      	- don't render white or checks backgrounds but simply return
      	  TempBufs with alpha and let the preview system do its job.
      	- don't add padding but simply return previews smaller than
      	  requested.
      
      	* app/display/gimpdisplayshell-render.[ch]: added
      	"render_blend_white", a 2d lookup table for blending on white,
      	just as the check lookup tables. Added "render_white_buf".
      
      	* app/widgets/gimppreview.[ch]: changed a lot:
      
      	- don't render the preview's border into the buffer.
      	- added "GdkGC *border_gc" and draw the preview's border in expose()
      	  using gdk_draw_rectangle().
      	- added "GdkPixbuf *no_preview_pixbuf" and create it in
      	  gimp_preview_real_render() if gimp_viewable_get_preview()
      	  returned NULL.
      	- factored the actual preview rendering out to
      	  gimp_preview_render_to_buffer(). Added configurable background
      	  rendering for the preview itself and it's padding area
      	  (the area the preview is larger than the buffer returned
      	  by gimp_viewable_get_preview()).
      	- changed gimp_preview_render_and_flush() to
      	  gimp_preview_render_preview() and added "inside_bg" and
      	  "outside_bg" parameters.
      	- use the new render buffers for blending on white.
      
      	* app/widgets/gimpbrushpreview.c
      	* app/widgets/gimpbufferpreview.c
      	* app/widgets/gimpdrawablepreview.c
      	* app/widgets/gimpgradientpreview.c
      	* app/widgets/gimpimagepreview.c
      	* app/widgets/gimppalettepreview.c
      	* app/widgets/gimppatternpreview.c: don't create large white
      	TempBufs to center the previews in but simply set the TempBuf's
      	offsets to get them centered. Simplified & cleaned up many preview
      	render functions. Pass the correct GimpPreviewBG modes to
      	gimp_preview_render_preview().
      
      	* app/widgets/gimpcellrendererviewable.[ch]: new GtkCellRenderer
      	class derived from GtkCellRendererPixbuf which knows how
      	to use gimp_viewable_get_preview_size() and renders the
      	viewable's stock item if no preview can be created.
      
      	* app/widgets/gimpcontainertreeview.c: added a GtkTreeCellDataFunc
      	which creates the preview pixbuf if needed so we don't create it
      	unconditionally upon item insertion. Fixed preview size assertion
      	to use GIMP_PREVIEW_MAX_SIZE, not "64". Block "selection_changed"
      	while reordering the selected item.
      
      	* app/widgets/gimpcontainerview.c: cosmetic.
      
      	* app/widgets/gimpimagefilepreview.[ch]
      	* app/widgets/gimptoolinfopreview.[ch]
      	* app/widgets/gimpundopreview.[ch]: removed because the default
      	implementation is good enough.
      
      	* app/widgets/Makefile.am
      	* app/widgets/widgets-types.h
      	* app/widgets/gimppreview-utils.c: changed accordingly.
      
      	* app/gui/dialogs-constructors.[ch]
      	* app/gui/dialogs-menu.c
      	* app/gui/dialogs.c
      	* app/gui/image-menu.c
      	* app/gui/toolbox-menu.c: register grid and tree view variants
      	of the document history.
      
      	Unrelated:
      
      	* app/gui/gui.c (gui_exit_finish_callback): disconnect from
      	signals earlier.
      
      	* app/gui/user-install-dialog.c: create the "tool-options" subdir
      	of the user's ~/.gimp-1.3 directory.
      305db405
  16. 21 Nov, 2002 1 commit
    • Michael Natterer's avatar
      added tile_cache_init() and tile_cache_exit() as public functions. · 024061d9
      Michael Natterer authored
      2002-11-21  Michael Natterer  <mitch@gimp.org>
      
      	* app/base/tile-cache.[ch]: added tile_cache_init() and
      	tile_cache_exit() as public functions.
      
      	* app/base/base.c: call them. Connect to GimpBaseConfig's
      	notify::tile-cache-size.
      
      	* app/core/gimpimage.c: connect to notify::transparency-type and
      	notify::transparency-size and call
      	gimp_image_invalidate_layer_previews() in the callback.
      
      	* app/display/gimpdisplay-foreach.[ch]: removed
      	gdisplays_expose_full().
      
      	* app/display/gimpdisplayshell-handlers.c: connect to
      	notify::transparency-type and notify::transparency-size and expose
      	the shell in the callback.
      
      	* app/display/gimpdisplayshell-render.[ch]: added render_init()
      	and render_exit() functions and connect to
      	notify::transparency-type and notify::transparency-size for
      	setting up the render buffers.
      
      	* app/gui/gui.c: call the new functions instead of render_setup().
      	Connect to notify::show-tool-tips.
      
      	* app/gui/preferences-dialog.c: copy values between the global
      	config object and its local clone only when they have changed.
      	Wrap setting of lots of values in g_object_[freeze|thaw]_notify().
      	Added lots of mnemonics.
      
      	* app/gui/resolution-calibrate-dialog.c: added mnemonics.
      
      	* app/widgets/gimppropwidgets.c: g_object_set() the values edited
      	by the gimp_prop_coordinates() much less often by remembering the
      	old values and setting them only when they have changed.
      024061d9
  17. 30 Nov, 2001 1 commit
    • Michael Natterer's avatar
      app/display/Makefile.am removed. It was a wrapper around nothing since we · 57157b40
      Michael Natterer authored
      2001-11-30  Michael Natterer  <mitch@gimp.org>
      
      	* app/display/Makefile.am
      	* app/display/gximage.[ch]: removed. It was a wrapper around
      	nothing since we use GdkRGB.
      
      	* app/display/gimpdisplayshell-render.[ch]: added the render
      	buf size defines here, added the #if 0'ed display filter stuff
      	and the actual GdkRGB render stuff here too.
      
      	* app/display/gimpdisplayshell.[ch]: added shell->render_buf as
      	replacement for the global gximage buffer, renamed shell->scroll_gc
      	to shell->render_gc and use it all over the place when rendering
      	image data.
      
      	* app/display/gimpdisplayshell-callbacks.c
      	* app/display/gimpdisplayshell-scroll.c: changed accordingly.
      
      	* app/gui/gui.c: don't call gximage init/exit stuff.
      57157b40
  18. 17 Oct, 2001 1 commit
    • Michael Natterer's avatar
      app/gimpprogress.[ch] s/GDisplay/GimpDisplay/ · 18dd0728
      Michael Natterer authored
      2001-10-16  Michael Natterer  <mitch@gimp.org>
      
      	* app/gimpprogress.[ch]
      	* app/undo.c: s/GDisplay/GimpDisplay/
      
      	* app/plug_in.[ch]: removed unused boolean "destroy" field of
      	the PlugIn struct.
      
      	* app/core/gimpedit.c: don't include "app_procs.h"
      
      	* app/display/gimpdisplay-callbacks.c: moved the "grab_abd_scroll"
      	stuff from gimpdisplay-scroll.* here (less complicated and easier
      	to cleanup...)
      
      	* app/display/gimpdisplay-scroll.[ch]: removed here.
      
      	* app/display/gimpdisplay-render.[ch]
      	* app/display/gimpdisplay-selection.[ch]
      	* app/display/gimpdisplayshell.c: s/GDisplay/GimpDisplay/g
      
      	* app/display/gimpdisplay.[ch]: ditto, removed gdisplay_active()
      	which was just a wrapper around
      	"gimp_context_get_display (gimp_get_user_context (the_gimp))"
      	(which is more to type but makes the use of the global
      	"the_gimp" variable more obvious).
      
      	* app/gui/color-area.h
      	* app/gui/edit-commands.c
      	* app/gui/file-commands.c
      	* app/gui/file-dialog-utils.c
      	* app/gui/image-commands.c
      	* app/gui/info-window.h
      	* app/gui/paths-dialog.h
      	* app/gui/select-commands.c
      	* app/gui/tool-options-dialog.c
      	* app/gui/tools-commands.c
      	* app/gui/view-commands.c: s/GDisplay/GimpDisplay/, gdisplay_active()
      	removal, include "app_procs.h" for "the_gimp".
      
      	* app/tools/gimpbezierselecttool.h
      	* app/tools/gimpbrightnesscontrasttool.[ch]
      	* app/tools/gimpbycolorselecttool.c
      	* app/tools/gimpcolorbalancetool.[ch]
      	* app/tools/gimpcurvestool.[ch]
      	* app/tools/gimpeditselectiontool.h
      	* app/tools/gimphistogramtool.[ch]
      	* app/tools/gimphuesaturationtool.[ch]
      	* app/tools/gimplevelstool.[ch]
      	* app/tools/gimpmovetool.h
      	* app/tools/gimpperspectivetool.h
      	* app/tools/gimpposterizetool.[ch]
      	* app/tools/gimprotatetool.h
      	* app/tools/gimpscaletool.h
      	* app/tools/gimpsheartool.h
      	* app/tools/gimptexttool.h
      	* app/tools/gimpthresholdtool.[ch]
      	* app/tools/gimptool.[ch]
      	* app/tools/gimptransformtool.h
      	* app/tools/tool_manager.[ch]: lots of s/GDisplay/GimpDisplay/, made
      	all *_dialog_hide() functions private, cleanup.
      
      	* app/widgets/*: removed GtkType and gtk_type_* stuff entirely and
      	use GObject functions, removed lots of empty "destroy" methods and
      	use more type checking class cast macros instead of casting
      	directly.
      
      	* app/widgets/gimpcontainermenu.c: fixed item insert order.
      
      	* app/widgets/gimphistogramview.[ch]: cleaned up and renamed all
      	functions.
      
      	* app/widgets/gimpwidgets-utils.[ch]: removed gimp_dialog_hide() as
      	Gtk+ does the right thing (TM) now.
      
      	* tools/pdbgen/pdb/color.pdb: implemented "histogram" without
      	digging into tools/ and widgets/ (needs to be done for all
      	color PDB functions).
      
      	* tools/pdbgen/pdb/gimprc.pdb: no need to use "the_gimp" in a PDB
      	function as a "Gimp" pointer is passed to them all.
      
      	* tools/pdbgen/pdb/image.pdb: don't include "app_procs.h"
      
      	* app/pdb/color_cmds.c
      	* app/pdb/gimprc_cmds.c
      	* app/pdb/image_cmds.c: regenerated.
      
      	* app/pdb/procedural_db.c: don't include "app_procs.h"
      18dd0728
  19. 15 May, 2001 1 commit
    • Michael Natterer's avatar
      new directory app/base/ · d240f623
      Michael Natterer authored
      2001-05-15  Michael Natterer  <mitch@gimp.org>
      
      	* configure.in: new directory app/base/
      
      	* app/Makefile.am
      	* app/boundary.[ch]
      	* app/brush_scale.[ch]
      	* app/gimpchecks.h
      	* app/gimplut.[ch]
      	* app/pixel_processor.[ch]
      	* app/pixel_region.[ch]
      	* app/pixel_surround.[ch]
      	* app/temp_buf.[ch]
      	* app/tile.[ch]
      	* app/tile_cache.[ch]
      	* app/tile_manager.[ch]
      	* app/tile_manager_pvt.h
      	* app/tile_pvt.h
      	* app/tile_swap.[ch]: moved to base/
      
      	* app/base/Makefile.am
      	* app/base/base-types.h
      	* app/base/*: new directory for the sub-object pixel maniplation
      	and storage stuff. Does not include Gtk+ or anything outside
      	base/. Did some cleanup in all files.
      
      	* app/appenums.h
      	* app/apptypes.h
      	* app/core/gimpimage.h: removed types which are now in
      	base/base-types.h.
      
      	* app/base/base-config.[ch]
      	* app/gimprc.[ch]: put the config variables for base/ to their own
      	file so base/ doesn not have to include gimprc.h (does not yet
      	work, i.e. the variables are un-configurable right now)
      
      	* app/main.c: set a log handler for "Gimp-Base".
      
      	* app/paint-funcs/Makefile.am
      	* app/paint-funcs/paint-funcs.[ch]: removed the color hash which
      	maps RGB to color indices because it's a totally standalone system
      	which has nothing to do with the paint-funcs and introduced a
      	GimpImage dependency.
      
      	paint-funcs/ should be considered on the same sub-object
      	(glib-only) level as base/, only in a different directory.
      
      	* app/core/Makefile.am
      	* app/core/gimpimage-colorhash.[ch]: put the color hash here.
      
      	* app/gimage.c: don't invalidate the color hash here...
      
      	* app/core/gimpimage.c: ... but in the colormap_changed() default
      	inplementation. Initialize the hash in class_init().
      
      	* tools/pdbgen/Makefile.am: scan app/base/base-types.h for enums.
      
      	* tools/pdbgen/enums.pl: regenerated.
      
      	* app/[lots]
      	* app/core/[of]
      	* app/gui/[files]
      	* app/pdb/[all]
      	* app/tools/[over]
      	* app/widgets/[the]
      	* tools/pdbgen/pdb/[place]: changed #includes accordingly. And use
      	base_config->value instead of the stuff from gimprc.h.
      d240f623
  20. 21 Feb, 2001 1 commit
    • Daniel Egger's avatar
      New file containing the check types. · abaa110f
      Daniel Egger authored
      2001-02-21  Daniel Egger  <egger@suse.de>
      
      	* app/gimpchecks.h: New file containing the check types.
      
      	* app/image_render.h: ... definitions taken from here.
      	* app/temp_buf.c:
      	* app/temp_buf.h: New function temp_buf_new_check to create
      	a new checked temp_buf.
      abaa110f
  21. 30 Jan, 2001 1 commit
  22. 29 Dec, 2000 1 commit
    • Michael Natterer's avatar
      app/Makefile.am app/channel_pvt.h app/drawable_pvt.h app/gdisplayF.h · 8d6c335f
      Michael Natterer authored
      2000-12-29  Michael Natterer  <mitch@gimp.org>
      
      	* app/Makefile.am
      	* app/channel_pvt.h
      	* app/drawable_pvt.h
      	* app/gdisplayF.h
      	* app/gimpdrawableP.h
      	* app/gimpimageP.h
      	* app/layer_pvt.h
      	* app/toolsF.h: removed these files.
      
      	* app/apptypes.h
      	* tools/pdbgen/enums.pl: added tons of opaque typedefs and enums.
      
      	* tools/pdbgen/pdb/brush_select.pdb
      	* tools/pdbgen/pdb/brushes.pdb
      	* tools/pdbgen/pdb/channel.pdb
      	* tools/pdbgen/pdb/color.pdb
      	* tools/pdbgen/pdb/convert.pdb
      	* tools/pdbgen/pdb/display.pdb
      	* tools/pdbgen/pdb/drawable.pdb
      	* tools/pdbgen/pdb/fileops.pdb
      	* tools/pdbgen/pdb/gradient_select.pdb
      	* tools/pdbgen/pdb/gradients.pdb
      	* tools/pdbgen/pdb/help.pdb
      	* tools/pdbgen/pdb/image.pdb
      	* tools/pdbgen/pdb/layer.pdb
      	* tools/pdbgen/pdb/pattern_select.pdb
      	* tools/pdbgen/pdb/patterns.pdb
      	* tools/pdbgen/pdb/selection.pdb
      	* tools/pdbgen/pdb/tools.pdb
      	* app/*: chainsaw #include cleanup:
      
      	- Never (never!!) include stuff in header files except where we
      	  need access to structures' contents (like derived objects).
      	- Added prototypes and proper formating in many files.
      	- The #include order in *all* *.c files is as follows:
      
      	#include "config.h"
      
      	#include <system stuff>
      
      	#include <gtk/gtk.h>
      
      	#include "apptypes.h"
      
      	#include "gimp stuff"
      
      	#include "libgimp stuff"
      
      	#include "libgimp/gimpintl.h"
      
      	By following this scheme we can easily see a file's dependencies
      	from it's #include's and can grep for the inclusion to find out
      	where a file is used.
      
      	* tools/pdbgen/app.pl: changed to follow the include scheme above.
      
      	* libgimp/Makefile.am
      	* libgimp/gimpuitypes.h: new file, included from libgimp/gimpui.h
      	and from app/apptypes.h.
      
      	* libgimp/gimpcolorbutton.[ch]
      	* libgimp/gimpdialog.[ch]
      	* libgimp/gimphelpui.[ch]
      	* libgimp/gimpparasite.[ch]
      	* libgimp/gimppatheditor.[ch]
      	* libgimp/gimpprotocol.c
      	* libgimp/gimpquerybox.[ch]
      	* libgimp/gimpsizeentry.[ch]
      	* libgimp/gimptypes.h
      	* libgimp/gimpui.h
      	* libgimp/gimpunit.h
      	* libgimp/gimpunitmenu.[ch]
      	* libgimp/gimpwidgets.[ch]: changed accordingly.
      
      	* plug-ins/FractalExplorer/Dialogs.c
      	* plug-ins/gdyntext/message_window.c
      	* plug-ins/imagemap/imap_default_dialog.c
      	* plug-ins/imagemap/imap_file.c: these files used to include
      	"libgimp/gimpui.h" without including "libgimp/gimp.h". This is
      	no longer possible because the libgimpui headers don't inlcude
      	"libgimp/gimpunit.h" any more.
      8d6c335f
  23. 13 Apr, 1998 1 commit
  24. 24 Nov, 1997 1 commit