1. 24 Aug, 2017 1 commit
  2. 18 Aug, 2017 1 commit
    • Michael Natterer's avatar
      Bug 783755 - Smudge should blend the smudged colors using linear RGB · 94c6bb46
      Michael Natterer authored
      Looked a bit deeper into heal: while I didn't try to understand what
      it's actually doing, this is strange: there is a comment that says
      that healing should done in perceptual space, and the code uses
      R'G'B'A float (at least it completely did before the last commit).
      
      On the other hand, the code adds and subtracts temporary buffers,
      which screams "gamma artifacts" unless done in linear space.
      
      This commit changes everything to use linear float buffers,
      and removes the comment. It "looks" right to me now, please test.
      94c6bb46
  3. 17 Aug, 2017 1 commit
    • Ell's avatar
      app: layer mode code shuffling · 71bbd88e
      Ell authored
      Commit 3635cf04 moved the special
      handling of bottom-layer compositing to GimpOperationLayerMode.
      This required giving the op more control over the process()
      function of its subclasses.  As a temporary workaround, the commit
      bypassed the subclasses entirely, using "gimp:layer-mode" for all
      modes.  This is the reckoning :)
      
      Add a process() virtual function to GimpOperationLayerMode, which
      its subclasses should override instead of
      GeglOperationPointComposer3's process() functions.  Reinstate the
      subclasses (by returning the correct op in
      gimp_layer_mode_get_oepration()), and have them override this
      function.
      
      Improve the way gimp_operation_layer_mode_process() dispatches to
      the actual process function, to slightly lower its overhead and
      fix some thread-safety issues.
      
      Remove the "function" field of the layer-mode info array, and have
      gimp_layer_mode_get_function() return the
      GimpOperationLayerMode::process() function of the corresponding
      op's class (caching the result, to keep it cheap.)  This reduces
      redundancy, allows us to make the ops' process() functions private,
      and simplifies SSE dispatching (only used by NORMAL mode,
      currently.)
      
      Move the blend and composite functions of the non-specialized
      layer modes to gimpoperationlayermode-{blend,composite}.[hc],
      respectively, to improve code organization.
      
      Move the SSE2 composite functions to a separate file, so that they
      can be built as part of libapplayermodes_sse2, allowing
      libapplayermodes to be built without SSE2 compiler flags.  This
      allows building GIMP with SSE acceleration enabled, while running
      the resulting binary on a target with no SSE accelration.
      
      Add a "blend_function" field to the layer-mode info array, and use
      it to specify the blend function for the non-specialized modes.
      This replaces the separate switch() statement that we used
      previously.
      
      Remove the "affected_region" field of the layer-mode info array.
      We don't need it anymore, since we can go back to using
      GimpOperationLayerMode's virtual get_affected_region() function.
      
      Last but not least, a bunch of code cleanups and consistency
      adjustments.
      71bbd88e
  4. 12 Aug, 2017 1 commit
  5. 23 Jul, 2017 1 commit
  6. 15 Jul, 2017 2 commits
  7. 02 Jun, 2017 1 commit
  8. 23 May, 2017 1 commit
    • Ell's avatar
      enums: run gimp-mkenums from the build dir · 5bcde32c
      Ell authored
      Commit 1e6acbd4 modified the
      generated enum recipes to run gimp-mkenums from the source
      directory, instead of the build directory, so that only the
      basenames of the corresponding header files would appear in
      the comment at the top of the generated files.  This was a
      mistake -- $(GIMP_MKENUMS) is expecting to be invoked from the
      build directory.
      
      Switch back to running gimp-mkenums from the build directory.  To
      avoid including the relative path from the build directory to the
      source directory in the generated file, add a @basename@ production
      variable to gimp-mkenums, which exapnds to the basename of the
      input file, and use it instead of @filename@ in the recipes for the
      generated enum files.
      5bcde32c
  9. 22 May, 2017 1 commit
    • Ell's avatar
      enums: don't write generated enum files to src-dir if unchanged · f9fa0d1b
      Ell authored
      When regenerating an enum file, don't copy it back to the source
      directory if it hasn't actually changed.  This allows using a read-
      only source directory where the enum header is newer than the
      generated file, as long as they're not really out of sync.
      
      OTOH, *do* touch the generated source-dir file even when unchanged,
      in order to avoid re-running its recipe on the next build, however,
      allow this to silently fail (which is harmless).
      f9fa0d1b
  10. 06 May, 2017 1 commit
    • Ell's avatar
      enums: generate enum files in source dir · 1e6acbd4
      Ell authored
      We check them into git, so this makes it easier to keep them in
      sync when using a separate build directory.
      
      Case in point -- this commit also syncs a few enum files that went
      out-of-sync with their headers.
      1e6acbd4
  11. 04 May, 2017 2 commits
    • Jehan's avatar
      app: "Reset to default values" does not properly reset generated... · ab56f524
      Jehan authored
      ... brush features.
      My previous commit only fixed aspect ratio reset, but I realize that
      much more brush options are affected by defaults of generated brushes
      (size, hardness, aspect ratio, angle and spacing). Let's reset all these
      after the basic property reset.
      ab56f524
    • Jehan's avatar
      app: "Reset to default values" does not properly reset aspect ratio. · 129a0e4b
      Jehan authored
      Generated brushes can have specific aspect ratio, hence resetting to
      fixed property defaults may be wrong. Therefore GimpPaintOptions needs
      to redefine the reset() method from GimpConfigInterface.
      Note: the specific "Reset aspect ratio to brush's native aspect ratio"
      button was alright. But the broader "Reset to default values" was not.
      129a0e4b
  12. 22 Apr, 2017 1 commit
  13. 20 Apr, 2017 1 commit
  14. 10 Apr, 2017 1 commit
  15. 03 Apr, 2017 2 commits
    • Ell's avatar
      Bug 779632 - Clone tool jittering · 6c8ba750
      Ell authored
      The expression `src_offset_x - coords->x + origin->x` is parsed as
      `(src_offset_x - coords->x) + origin->x`; since floating point
      arithmetic is not generally associative, even when
      `coords->x == origin->x` (in particular, when there is no active
      symmetry), it may still yield a different result than plain
      `src_offset_x` if there's not enough precision for the intermediary
      result (which is usually the case when `{origin,coords}->x` is
      noninteger.)  Since `src_offset_x` is an integer, and since the result
      of this expression is rounded to an integer, if the error happens to
      be in the direction of the rounding, it's magnified to a whole pixel,
      which causes visible "jitter".  (Ditto for `src_offset_y` and co.)
      
      Regardless of this issue, we want to individually round `origin->[xy]`
      and `coord->[xy]` down before taking their difference, since the
      original offset is calculated according to rounded-down coordinates.
      This solves the original issue along the way.
      6c8ba750
    • Ell's avatar
      app: integer-ify position/offset members of GimpSourceCore · 7c7a1b63
      Ell authored
      We don't support subpixel source sampling, so there's no use in
      pretending that we do.  Demoting everything to int as soon as
      possible helps guarantee that these values are at least rounded
      properly and in fewer places.
      
      Make sure we always round coordinates down, and not toward zero.
      
      Keep using floats only in the signatures of the relevant PDB
      functions.
      7c7a1b63
  16. 26 Feb, 2017 1 commit
  17. 21 Feb, 2017 1 commit
  18. 17 Feb, 2017 1 commit
    • Ell's avatar
      app: remove GIMP_LAYER_MODE_FLAG_WANTS_LINEAR_DATA and friends · 74021275
      Ell authored
      Instead, add a gimp_layer_mode_get_format() function, which takes
      the layer mode, composite space, and blend space, and returns the
      I/O format.
      
      Currently, we always use the composite space format as the I/O
      format.  This simplifies gimp_composite_blend(), and gives us
      composite-space support for the "special" layer mode ops for free.
      74021275
  19. 15 Feb, 2017 1 commit
  20. 14 Feb, 2017 1 commit
  21. 12 Feb, 2017 1 commit
  22. 05 Feb, 2017 2 commits
  23. 01 Feb, 2017 1 commit
  24. 31 Jan, 2017 1 commit
  25. 22 Jan, 2017 2 commits
  26. 21 Jan, 2017 2 commits
  27. 20 Jan, 2017 3 commits
  28. 19 Jan, 2017 3 commits
  29. 17 Jan, 2017 1 commit
    • Michael Natterer's avatar
      app: remove "gboolean linear" parameters · 12623705
      Michael Natterer authored
      from gimp_applicator_new() and gimp_gegl_mode_node_set_mode().
      Compositing doesn't depend on the layer format any longer, only on the
      layer mode. Painting with "use applicator" unchecked is still broken
      in some cases and needs more fixing.
      12623705
  30. 16 Jan, 2017 1 commit