1. 08 Aug, 2017 1 commit
  2. 29 May, 2016 1 commit
  3. 26 May, 2016 1 commit
    • Michael Natterer's avatar
      libgimpcolor: add new object GimpColorTransform · cc928879
      Michael Natterer authored
      which encapsulates a cmsHTRANSFORM and does all the pixel format
      conversion magic. It has API to create transforms and proofing
      transforms, and to convert pixels arrays and GeglBuffers.
      
      Before, each place which has a transform had to keep around the
      transform and its input and output Babl formats, and had to implement
      lots of stuff itself. Now all that lives in GimpColorTransform,
      removing lots of logic from many places, and pretty much removing lcms
      from the public API entirely.
      
      This removes including <lcms2.h>, LCMS_LIBS and LCMS_CFLAGS from
      almost all directories and potentially allows to replace lcms by
      something else.
      cc928879
  4. 05 Feb, 2016 1 commit
  5. 12 Jun, 2015 1 commit
    • Michael Natterer's avatar
      Bug 750874 - Displayed colors look clipped after profile conversion... · c876e281
      Michael Natterer authored
      but they aren't clipped
      
      Add gimp_display_shell_profile_can_convert_to_u8() which returns
      whether the lcms transform can safely write directly into an u8 buffer
      without destroying out-of-gammut pixel values, which we assume is the
      case for all integer formats. If the function returns FALSE, always
      convert via the R'G'B'A float filter_buffer.
      
      Also connect to the image's "precision-changed" signal and update the
      profile transform when it's emitted.
      c876e281
  6. 01 Jun, 2015 2 commits
    • Michael Natterer's avatar
      app: add member GimpDisplayShell.filter_format · 460948e0
      Michael Natterer authored
      and use it where we used to hardcode "R'G'B'A float".
      460948e0
    • Michael Natterer's avatar
      app: switch gimpdisplayshell-render.c to the new profile filter code · 08545ad5
      Michael Natterer authored
      - disable auto-adding of the lcms display filter module
      
      - change profile convert dest formats to be always R'G'B'A, a display
        profile transform outputs something that can be displayed directly,
        so no additional gamma transform must happen when the pixels are
        copied to a cairo-ARGB32 buffer
      
      - add a medium forest of if() branches to gimpdisplayshell-filter.c
        which cover all combinations of profile and display filter
        transforms
      
      - all of this is still very broken when changing an image to linear,
        because the configured RGB profile from prefs will do horrible
        nonsense (things work fine though with a per-image profile that is
        for linear data)
      08545ad5
  7. 03 Jul, 2014 1 commit
  8. 29 Jun, 2014 1 commit
  9. 11 Jun, 2014 1 commit
  10. 20 Apr, 2014 1 commit
    • Michael Natterer's avatar
      Bug 681968 - Disabling 'Dot for Dot' glitches display · 051a3e4a
      Michael Natterer authored
      Enhance the existing but unused display scaling (hidpi/retina) support
      to work independently in x and y direction, and adjust the scaling
      factors accordingly when dot-for-dot is off and xres != yres.
      
      Increase GIMP_DISPLAY_RENDER_MAX_SCALE from 2.0 to 4.0 and adjust the
      rendering chunk size dynamically so we never render chunks that do
      not fit into the GimpDisplayXfer buffers.
      051a3e4a
  11. 14 Mar, 2014 1 commit
  12. 02 Nov, 2013 2 commits
  13. 01 Nov, 2013 1 commit
  14. 14 Jul, 2013 1 commit
  15. 22 Jun, 2013 1 commit
    • Michael Natterer's avatar
      Bug 702369 - foreground selection doesnt work with image precision >8 bit · 31e9cc2a
      Michael Natterer authored
      This removes the obsolete check which makes the tool fail from
      gimp_display_shell_set_mask(). Also change the foreground select tool
      and the display mask from using GimpChannel to GeglBuffer, because
      that's what it needs, simply buffers. Most changed files simply newly
      include <gegl.h> because a GeglBuffer appeared in two headers.
      31e9cc2a
  16. 29 Apr, 2013 1 commit
  17. 26 Apr, 2013 1 commit
  18. 21 Apr, 2013 1 commit
    • Michael Natterer's avatar
      app: fix image rendering atifacts in rotated views · ee2e5fb5
      Michael Natterer authored
      - stroke around the drawn area to work around the impossibility of
        tiling antialiased stuff.
      - don't use the display xfer stuff because if we overdraw we must
        not have anything in the source pattern outside the drawn region
      ee2e5fb5
  19. 03 Feb, 2013 1 commit
  20. 02 Feb, 2013 2 commits
    • Michael Natterer's avatar
      d0a5879f
    • 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
  21. 18 Jan, 2013 1 commit
  22. 05 Jul, 2012 1 commit
  23. 20 Jun, 2012 1 commit
    • Michael Natterer's avatar
      app: completely remove TileManager and friends (base/ and paint-funcs/) · 373a4e74
      Michael Natterer authored
      And along with it a lot of stuff like the drawable preview cache, the
      gegl tile manager backend, temporary gimp_gegl_buffer_foo() stuff, and
      the remaining bits of performance.
      
      The projection is in an evil semi-ported state which makes it work
      ok-ish for stuff like layer moving, but absolutely unbearable for
      painting, there is also an off-by-one rendering glitch at some zoom
      levels.
      373a4e74
  24. 09 Jun, 2012 1 commit
  25. 06 May, 2012 1 commit
  26. 02 May, 2012 1 commit
  27. 02 Oct, 2011 1 commit
  28. 08 Sep, 2011 1 commit
  29. 18 May, 2011 1 commit
  30. 28 Apr, 2011 1 commit
  31. 25 Jan, 2011 1 commit
  32. 29 Sep, 2010 6 commits