1. 01 Jul, 2017 1 commit
  2. 30 Jun, 2017 1 commit
  3. 29 Jun, 2017 2 commits
  4. 23 Jun, 2017 2 commits
  5. 17 Jun, 2017 1 commit
  6. 05 Jun, 2017 1 commit
  7. 04 Jun, 2017 1 commit
  8. 22 May, 2017 7 commits
  9. 21 May, 2017 2 commits
  10. 20 May, 2017 2 commits
  11. 19 May, 2017 4 commits
    • Ell's avatar
      warp: improve stamp force calculation · 0ee20162
      Ell authored
      In particular, don't interpolate the force LUT values at the edge
      of the stamp for hardness==1, since the force function is a step
      function in this case, and interpolation results in visible
      artifacts.
      0ee20162
    • Ell's avatar
      warp: improve abyss sampling · fe247674
      Ell authored
      When a displacement vector falls outside of the input bounds, behave
      as if the input had a (0, 0) vector at that point, instead of
      bailing.  Note that we don't actually write any data outside the
      input bounds, so even if a stroke would logically alter an out-of-
      bounds pixel, it would still be read as (0, 0) by the next stroke.
      fe247674
    • Ell's avatar
      map-{absolute,relative}: add abyss-policy property · c1328588
      Ell authored
      ... which controls the abyss policy for the input buffer, instead
      of a hardcoded NONE.
      c1328588
    • Ell's avatar
      warp: performance, performance, performance · 5fe9c687
      Ell authored
      Avoid copying the entire buffer on each stamp; open it for linear
      access only once per process() call, and only for the necessary
      region.  Convert inner loop to float-only.  Simplify expressions.
      Avoid processing the op's input in more cases.
      5fe9c687
  12. 17 May, 2017 3 commits
    • Ell's avatar
      map-{absolute,relative}: don't require entire aux region for output · 41645223
      Ell authored
      We only need the entire input region; for aux, the output region
      is enough.
      41645223
    • Ell's avatar
      warp: avoid processing input when the cached output is valid · e8b674b2
      Ell authored
      When the previously processed stroke is valid, we pass the cached
      buffer directly as output, and don't need the input.  Make sure
      GEGL doesn't process the op's input for nothing.
      
      OTH, when the processed stroke is invalid, require the entire input,
      since the next call to process() is going to cache it.
      e8b674b2
    • Ell's avatar
      warp: process stroke incrementally; misc improvements · 4cd57c78
      Ell authored
      When processing a stroke, keep a record of the processed path, and
      keep the processed buffer around.  When the path changes, check if
      the previously processed path is an initial segment of the new path,
      in which case, only process the new points in the path, working on
      top of the existing buffer.  As a result, since the GIMP warp tool
      only ever appends points to the stroke path, it never has to
      reprocess the entire path during a stroke, as it did before.
      
      Cache the processed buffer ourselves, and pass it directly as output,
      avoiding copying.
      
      Stamp the first point of the path, and stroke segments such that the
      final endpoint of the segment is always stamped, making the behvaior
      more consistent.
      
      Add a "spacing" property, controlling the stroke spacing, as a
      fraction of the "brush" size.  This property defaults to 0.01, as
      was previously hardcoded.  This allows GIMP to use higher values
      for this property; 0.01 is too low for interactive use.
      4cd57c78
  13. 15 May, 2017 5 commits
    • Ell's avatar
      displace: fix alpha/abyss behavior; add center{,-{x,y}} props; gummify · a265c299
      Ell authored
      Fix the way the displacement buffers' alpha affects the displacement
      amount (probably a hiccup during conversion of old GIMP code).
      
      Use ABYSS_NONE for the displacement buffers, instead of using the same
      policy as for the input buffer.  The two are unrelated, and other
      policies can cause artifacts.
      
      Add a center, center-x and center-y properties.  Center is a boolean
      flag that, when set, causes the displacement to be centered around
      the point specified by center-x and center-y.  In cartesian mode,
      this amounts to offsetting the displacement buffers so that they are
      centered around that point; in polar mode, we also use that point as
      the coordinate-system origin.
      
      Gummify amount-x and amount-y to show more relevant labels/
      descriptions.
      a265c299
    • Ell's avatar
      buffer-source: split invalidation during buffer change into two parts · 2dd72b51
      Ell authored
      When changing the buffer, call buffer_changed() on the old/new buffer
      before/after updating the op's buffer property, respectively, so that
      code executed as a result of the invalidtion sees the op while it
      corresponds to the right buffer.
      2dd72b51
    • Ell's avatar
      spiral: invert "balance" direction · a5d4cd26
      Ell authored
      ... so that positive values increase the relative area of color1,
      and negative values increase the relative area of color2.  Feels
      more natural.
      a5d4cd26
    • Øyvind "pippin" Kolås's avatar
      0111b735
    • Øyvind "pippin" Kolås's avatar
      7b56f336
  14. 13 May, 2017 1 commit
    • Ell's avatar
      operations: sprinkle some GUM over a bunch of ops · 37afd470
      Ell authored
      GUM is a small language for controlling some UI attributes of operation
      properties dynamically, based on context.  It is currently used by GIMP,
      as of commit bb2417c29943e68baecd87f6c8c7808ebc3d091e.  See the comment
      at the top of app/widget/gimppropgui-eval.c, in the GIMP tree, for a
      description of the language.
      
      This commit adds ui_meta keys containing GUM expression for a bunch of
      ops, to make their UI more context aware.  The list of ops is not
      necessarily exhaustive -- there may be more ops that can be GUMified.
      
      Note that the new ui_meta keys augment, rather than replace, the existing
      static attributes of properties (in particular, their label and
      description), so that they still retain a meaningful value for users that
      don't support GUM.
      37afd470
  15. 11 May, 2017 2 commits
  16. 09 May, 2017 2 commits
  17. 07 May, 2017 2 commits
  18. 05 May, 2017 1 commit