1. 15 May, 2019 4 commits
    • Ell's avatar
      app: fix indentation in gimppaintbrush.h · 86a7c053
      Ell authored
      86a7c053
    • Ell's avatar
      app: in GimpPaintbrush, reuse existing paint buffer · edc99531
      Ell authored
      In GimpPaintbrush, avoid refilling the paint buffer at each dab if
      the paint color/pixmap hasn't changed, as gimp_paint_core_paste()
      no longer modifies the buffer since the commit before last.
      
      Additionally, fix color-from-gradient dynamics when the image has a
      profile.
      edc99531
    • Ell's avatar
      app: add gimp_brush_core_get_brush_pixmap() · fcd19a2a
      Ell authored
      In GimpBrushCore, replace the private
      gimp_brush_core_transform_pixmap() function with a public
      gimp_brush_core_get_brush_pixmap() function, which, similarly to
      gimp_brush_core_get_brush_mask(), returns the transformed brush
      pixmap, and can be used by subclasses.
      fcd19a2a
    • Ell's avatar
      app: don't modify paint buffer when pasting to canvas · f24bca51
      Ell authored
      We now have enough machinery in gimppaintcore-loops to avoid
      modifying the paint buffer in gimp_paint_core_paste() in the no-
      applicator case, by using the same set of algorithms as
      gimp_paint_core_replace().  Other than reducing the number of
      different code paths we have, this is both more efficient, and
      allows us to reuse the paint buffer across dabs, as done in the
      following commits.
      
      Implement gimp_paint_core_replace() in terms of
      gimp_paint_core_paste().  We keep the two functions separate, since
      their implementation is still differnet when using an applicator.
      
      Suppress the paint-buffer-modifying algorithms in
      gimppaintcore-loops, but keep them around; using the same logic for
      normal painting as we use for REPLACE painting is possible due to
      the fact that all our current non-REPLACE modes treat alpha values
      and mask values interchangeably.  In the future we might have modes
      that distinguish between alpha and mask values, requiring the old
      algorithms.
      f24bca51
  2. 14 May, 2019 1 commit
  3. 13 May, 2019 1 commit
  4. 12 May, 2019 1 commit
  5. 11 May, 2019 2 commits
  6. 10 May, 2019 1 commit
  7. 09 May, 2019 4 commits
  8. 08 May, 2019 7 commits
  9. 07 May, 2019 2 commits
  10. 06 May, 2019 1 commit
    • Jehan's avatar
      plug-ins: follow the assigned profile TRC. · 417f2c87
      Jehan authored
      GIMP should not convert assigned profile to sRGB just because we stored
      as linear on the XCF. In other words, we should not look at the image
      precision to decide whether to export as linear (previously only 8-bit
      linear images), but at the profile TRC. There are basically 3 cases:
      (1) We don't save a profile, then convert to sRGB whatever the source
      precision (because readers would assume sRGB for a no-profile jpeg).
      (2) We save the default profiles: convert to sRGB because it's usually
      a better choice for 8-bit formats and even working at 32-bit float
      *linear* doesn't mean you want to export as 8-bit int *linear*. As the
      image creator made no explicit export choice, we make an acceptable
      default one.
      (3) We save an explicitly assigned profile: keep the profile TRC, don't
      convert!
      
      Note that this apparently won't work perfectly right now, as GIMP
      replaces the original TRC with the linear default TRC when converting to
      linear. So the expected TRC is lost in such case when you have not
      explicitly reset the correct profile. Yet this is on GIMP side and this
      part of the issue should be fixed with the space invasion merge. For
      now, this is how the plug-in should work.
      
      This is based on my late discussion with Ell. Please everyone, and Ell
      especially, review! :-)
      
      (cherry picked from commit c5f7bac2)
      417f2c87
  11. 05 May, 2019 4 commits
  12. 01 May, 2019 4 commits
  13. 30 Apr, 2019 3 commits
    • Ell's avatar
      Issue #3306 - Memory leak using Crop tool · 84e183e5
      Ell authored
      In gimp_canvas_passe_partout_get_extents(), free the inner region
      after XORing it with the outer region.
      84e183e5
    • Ell's avatar
      Issue #3304 - Invalid write when halting filter tool with controller · 068df34a
      Ell authored
      In GimpFilterTool, properly clean up the controller's widget weak-
      pointer and signal-handlers upon destruction, to avoid invalid
      memory access when the widget is destroyed, if the widget outlives
      the controller.
      068df34a
    • Ell's avatar
      app: in gimp-gegl-nodes, set underlying operation · 928e5957
      Ell authored
      In the vairous gimp_gegl_create_foo_node() functions, set the
      parent node's underlying operation node, so that
      gimp_gegl_apply_cached_operation() avoids duplicating the source
      buffer when applying these nodes (all underlying operations are
      currently point ops.)
      928e5957
  14. 29 Apr, 2019 3 commits
    • Jehan's avatar
      app: have the extension GUI listen to manager install/remove events. · f760a333
      Jehan authored
      The GUI is uglier than ever. I added a frame in a frame to put an
      uninstall button. Please don't mind it, this is temporary. I just needed
      to test uninstallation and don't know yet what are the proper widgets
      to use for a nice design. :P
      f760a333
    • Jehan's avatar
      app: add extension installation in GimpExtensionManager. · 50aa7233
      Jehan authored
      This completes my earlier commit 406279e4.
      Extension installation is not about just decompressing a file in the
      right folder. We must also make the extension manager and the GUI aware
      of this newly available extension.
      50aa7233
    • Jehan's avatar
      app: add ability to remove an extension. · f7e483dd
      Jehan authored
      Removing an extension means just unloading it and temporarily move it to
      an "uninstalled" list. The actual files will only be deleted when
      cleanly exiting the program, hence finalizing the extension manager.
      This will allow undoing an extension removal easily.
      f7e483dd
  15. 28 Apr, 2019 2 commits
    • Piotr Drąg's avatar
      Update Polish translation · 15a62eea
      Piotr Drąg authored
      15a62eea
    • Jehan's avatar
      Issue 2949: Newly Installed Fonts not Registering. · 88f97aed
      Jehan authored
      Apparently Microsoft added just recently the feature to install user
      font (as opposed to system-wide fonts), without administration rights
      (yes, only now, how crazy is that?). Right now GIMP does not see fonts
      there.
      
      We have an upstream report at fontconfig where such a default search
      path should happen.
      See: https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/144
      Until it gets fixed there, let's just add the user fonts dir ourselves
      in GIMP. This code should get killed later.
      
      Notes:
      - I renamed various DEFAULT_* data macros to GIMP_DEFAULT_* because
      DEFAULT_PALETTE was conflicting with another macro in Windows API!
      - Also I removed the DATADIR macro set under app/config/ because it is
      also conflicting and anyway we use it in no files on this level.
      - This is not perfectly tested on Windows. Please everyone with Windows
      access, could you build and test if it works fine before release?
      88f97aed