1. 05 Jan, 2019 1 commit
  2. 02 Jan, 2019 1 commit
    • Michael Natterer's avatar
      Issue #1788 - Inconsistency between FG color and selected color in... · abd7cbfc
      Michael Natterer authored
      ...palette views despite selected color being in the currently
      selected pallette
      As suggested by Massimo, changing the color comparison EPSILON in
      gimppalette.c from 1e-10 to 1e-6 fixes this, and is really small
      Also, generally clean up color comparison epsilons:
      - use a #define, not hardcoded values for all uses of
      - call the #defines RGB_EPSILON and RGBA_EPSILON
      - make them all 1e-6 or larger
  3. 31 Dec, 2018 1 commit
  4. 27 Dec, 2018 1 commit
    • Ell's avatar
      app: remove "Edit -> Fade..." · ed7ea51f
      Ell authored
      This commit completely removes the "Edit -> Fade..." feature,
      - The main reason is that "fade" requires us to keep two buffers,
        instead of one, for each fadeable undo step, doubling (or worse,
        since the extra buffer might have higher precision than the
        drawable) the space consumed by these steps.  This has notable
        impact when editing large images.  This overhead is incurred even
        when not actually using "fade", and since it seems to be very
        rarely used, this is too wasteful.
      - "Fade" is broken in 2.10: when comitting a filter, we copy the
        cached parts of the result into the apply buffer.  However, the
        result cache sits after the mode node, while the apply buffer
        should contain the result of the filter *before* the mode node,
        which can lead to wrong results in the general case.
      - The same behavior can be trivially achieved "manually", by
        duplicating the layer, editing the duplicate, and changing its
      - If we really want this feature, now that most filters are GEGL
        ops, it makes more sense to just add opacity/mode options to the
        filter tool, instead of having this be a separate step.
  5. 02 Dec, 2018 1 commit
    • Ell's avatar
      app: add "direct" parameter to gimp_projection_flush_now() · dac9bfe3
      Ell authored
      Add a boolean "direct" parameter to gimp_projection_flush_now(),
      which specifies if the projection buffer should only be invalidated
      (FALSE), or rendered directly (TRUE).
      Pass TRUE when flushing the projection during painting, so that the
      affected regions are rendered in a single step, instead of tile-by-
      tile.  We previously only invalidated the projection buffer, but
      since we synchronously flush the display right after that, the
      invalidated regions would still get rendered, albeit less
      Likewise, pass TRUE when benchmarking the projection through the
      debug action, and avoid flushing the display, to more accurately
      measure the render time.
  6. 13 Nov, 2018 1 commit
  7. 23 Oct, 2018 1 commit
  8. 22 Oct, 2018 1 commit
  9. 07 Oct, 2018 1 commit
    • Michael Natterer's avatar
      app: remove the image's "Enable Color Management" toggle · c399b894
      Michael Natterer authored
      It was not doing anything right since space invasion. We now treat the
      built-in sRGB profile like any other profile and never bypass
      conversions based on some weird toggle.
      Instead, introduce a "Use sRGB Profile" toggle which, when enabled,
      hides whatever profile away so the image actually uses the built-in
      sRGB profile.
      This is different from discarding and then re-assigning the same
      profile only by being faster and more convenient.
  10. 03 Oct, 2018 1 commit
    • Ell's avatar
      Issue #2303 - Please add Constant type of gradient interpolation ... · 68bf99e8
      Ell authored
      ... to make multi-color hard-edge gradient fills possible
      Add a new "step" gradient-segment blending function, which is 0
      before the midpoint, and 1 at, and after, the midpoint.  This
      creates a hard-edge transition between the two adjacent color stops
      at the midpoint.  Creating such a transition was already possible,
      but required duplicating the same color at the opposing ends of two
      adjacent stops, which is cumbersome.
  11. 23 Sep, 2018 1 commit
  12. 16 Sep, 2018 1 commit
  13. 02 Sep, 2018 2 commits
    • Ell's avatar
      app, icons, menus: add performance-log recording to the dashboard · 36477bb2
      Ell authored
      Add an option to record a performance log through the dashboard.
      The log contains a series of samples of the dashboard variables, as
      well as the full program backtrace, when available.  As such, it
      essentially acts as a built-in profiler, which allows us to
      correlate program execution with the information available through
      the dashboard.  It is meant to be used for creating logs to
      accompany perofrmance-related bug reports, as well as for profiling
      GIMP during development.
      The sample frequency defaults to 10 samples per second, but can be
      environment variable.  Backtraces are included by default when
      available, but can be suppressed using the
      GIMP_PERFORMANCE_LOG_NO_BACKTRACE environment variable.
      Logs are created through the new "record" button at the bottom of
      the dashboard dialog.  When pressed, a file dialog is opened to
      select the log file, and, once confirmed, data is being recorded to
      the selected file.  Recording is stopped by pressing the "record"
      button again (we use a highlight to indicate that recording is
      While recording, the "reset" button is replaced with an "add marker"
      button, which can be used to add event markers to the log.  These
      can be used to mark events of interest, such as "started painting"
      and "stopped painting", which then appear in the log as part of the
      sample stream.  Markers are numbered sequentually, and the number
      of the next (to-be-added) marker appears on the button.  Shift-
      clicking the button adds an empty (description-less) marker, which
      is only identified by its number; this can be used when markers
      need to be added quickly.
      The log is an XML file, containing some extra information (such as
      the output of "$ gimp -v", and symbol information) in addition to
      the samples.  The data in the file is delta-encoded to reduce the
      file size, meaning that samples (as well as some other elements)
      only specify the changes since the previous sample.  This adds a
      necessary decoding step before data can be processed; the next
      commit adds a tool that does that.
      There are currently no tools to actually analyze the data -- that's
      still TBD -- but at least we can start gathering it.
    • Ell's avatar
      app: add mnemonics to dashboard action labels · a109a77d
      Ell authored
  14. 09 Aug, 2018 1 commit
  15. 02 Aug, 2018 3 commits
  16. 30 Jul, 2018 1 commit
    • ONO Yoshio's avatar
      MR !19: Add support for vertical text writing. · 587d9bbb
      ONO Yoshio authored
      Squashed commit of the following:
      commit ee1ff7d502658cfa1248a13a3f0348495db07eda
      Author: ONO Yoshio <ohtsuka.yoshio@gmail.com>
      Date:   Sun Jul 29 00:31:47 2018 +0900
          Fixed that gimp-text-dir-ttb-* icons are lacked in Symbolic.
      commit d87d012d697628da28fe90199cc04b95b72ba8ef
      Author: ONO Yoshio <ohtsuka.yoshio@gmail.com>
      Date:   Sat Jul 28 16:23:10 2018 +0900
          Fix a typo.
      commit cf0238bf7df56c384cdf3b7ec69557d14740f853
      Author: ONO Yoshio <ohtsuka.yoshio@gmail.com>
      Date:   Sat Jul 28 15:50:57 2018 +0900
          Fixed seg fault error.
      commit b07f60d0
      Author: ONO Yoshio <ohtsuka.yoshio@gmail.com>
      Date:   Fri Jul 27 17:15:34 2018 +0900
          Add support for vertical text writing.
  17. 21 Jul, 2018 1 commit
    • Michael Natterer's avatar
      Initial space invasion commit in GIMP · e09e563a
      Michael Natterer authored
      All babl formats now have a space equivalent to a color profile,
      determining the format's primaries and TRCs. This commit makes GIMP
      aware of this.
      - enum GimpPrecision: rename GAMMA values to NON_LINEAR and keep GAMMA
        as deprecated aliases, add PERCEPTUAL values so we now have LINEAR,
        NON_LINEAR and PERCPTUAL for each encoding, matching the babl
        encoding variants RGB, R'G'B' and R~G~B~.
      - gimp_color_transform_can_gegl_copy() now returns TRUE if both
        profiles can return a babl space, increasing the amount of fast babl
        color conversions significantly.
      - TODO: no solution yet for getting libgimp drawable proxy buffers in
        the right format with space.
      - follow the GimpPrecision change.
      - TODO: everything else unchanged and partly broken or sub-optimal,
        like setting a new image's color profile too late.
      - add enum GimpTRCType { LINEAR, NON_LINEAR, PERCEPTUAL } as
        replacement for all "linear" booleans.
      - change gimp-babl functions to take babl spaces and GimpTRCType
        parameters and support all sorts of new perceptual ~ formats.
      - a lot of places changed in the early days of goat invasion didn't
        take advantage of gimp-babl utility functions and constructed
        formats manually. They all needed revisiting and many now use much
        simpler code calling gimp-babl API.
      - change gimp_babl_format_get_color_profile() to really extract a
        newly allocated color profile from the format, and add
        gimp_babl_get_builtin_color_profile() which does the same as
        gimp_babl_format_get_color_profile() did before. Visited all callers
        to decide whether they are looking for the format's actual profile,
        or for one of the builtin profiles, simplifying code that only needs
        builtin profiles.
      - drawables have a new get_space_api(), get_linear() is now get_trc().
      - images now have a "layer space" and an API to get it,
        gimp_image_get_layer_format() returns formats in that space.
      - an image's layer space is created from the image's color profile,
        change gimpimage-color-profile to deal with that correctly
      - change many babl_format() calls to babl_format_with_space() and take
        the space from passed formats or drawables
      - add function gimp_layer_fix_format_space() which replaces the
        layer's buffer with one that has the image's layer format, but
        doesn't change pixel values
      - use gimp_layer_fix_format_space() to make sure layers loaded from
        XCF and created by plug-ins have the right space when added to the
        image, because it's impossible to always assign the right space upon
        layer creation
      - "assign color profile" and "discard color profile" now require use
        of gimp_layer_fix_format_space() too because the profile is now
        embedded in all formats via the space.  Add
        gimp_image_assign_color_profile() which does all that and call it
        instead of a simple gimp_image_set_color_profile(), also from the
        PDB set-color-profile functions, which are essentially "assign" and
        "discard" calls.
      - generally, make sure a new image's color profile is set before
        adding layers to it, gimp_image_set_color_profile() is more than
        before considered know-what-you-are-doing API.
      - take special precaution in all places that call
        gimp_drawable_convert_type(), we now must pass a new_profile from
        all callers that convert layers within the same image (such as
        image_convert_type, image_convert_precision), because the layer's
        new space can't be determined from the image's layer format during
        the call.
      - change all "linear" properties to "trc", in all config objects like
        for levels and curves, in the histogram, in the widgets. This results
        in some GUI that now has three choices instead of two.
        TODO: we might want to reduce that back to two later.
      - keep "linear" boolean properties around as compat if needed for file
        pasring, but always convert the parsed parsed boolean to
      - TODO: the image's "enable color management" switch is currently
        broken, will fix that in another commit.
  18. 13 Jul, 2018 1 commit
  19. 11 Jul, 2018 1 commit
  20. 07 Jul, 2018 1 commit
    • Jehan's avatar
      app: a skeleton for the extension GUI. · ff12c2d9
      Jehan authored
      This is using GTK+3 widgets, so I make sure to keep it well separated
      from core code. The gimp-2-10 version will have to rework the GUI, but
      the GtkListBox and GtkSwitch are nice and make things easier, so it is
      worth using them here).
  21. 05 Jul, 2018 1 commit
  22. 02 Jul, 2018 1 commit
  23. 24 Jun, 2018 3 commits
  24. 22 Jun, 2018 4 commits
  25. 21 Jun, 2018 3 commits
  26. 20 Jun, 2018 3 commits
  27. 13 Jun, 2018 1 commit
  28. 08 Jun, 2018 1 commit