1. 09 Dec, 2017 11 commits
    • Jehan's avatar
      plug-ins: minor cleaning and fixes. · 88ccdb4e
      Jehan authored
      - Add some parentheses to sizeof (*pointer). Maybe it's just me, but it
        is just a bit clearer to me.
      - Free in_raw when out_raw allocation failed.
      - Use strrchr() instead of strchr() to get the extension (I had a case
        when testing where the file was inside a folder named similarly with a
        ".hgt" and it would break the comparison test).
      - Do a case-insensitive comparison. Even though the original files from
        NASA use lowercase, just to be sure.
    • Massimo Valentini's avatar
      Bug 771661: Extend the raw data import plugin to open .hgt files · c572bdf6
      Massimo Valentini authored and Jehan's avatar Jehan committed
      add support to load single channel 16 bit, signed/unsigned,
      little/big endian 2d raster data as a 16 bit RGB gamma GIMP image
    • Jehan's avatar
      plug-ins: s/Windows.h/windows.h/. · 36daa6db
      Jehan authored
      I just cross-compiled for Windows after a long time. The header file is
      all lowercase on a cross-compilation MinGW-w64 environment. I'm not sure
      what is the case on Windows, but since this platform is case-insensitive
      for file names, I believe this won't break anything on native builds.
    • Jehan's avatar
      plug-ins: fix a bunch of coding style. · bf13c13e
      Jehan authored
      The screenshot-win32.c file was absolutely not following our coding
      style. A lot of things are still wrong (like camelCase functions), but
      at least I fixed a bunch of indentations, space between function and
      arguments, alignments, curly brackets at start of lines, etc.
    • Ell's avatar
      app: use FAST filter when painting xfer surface · 36258a67
      Ell authored
      Use CAIRO_FILTER_FAST when painting the xfer surface to the
      screen.  This notably improves performance when the canvas is
      rotated, at the cost of lower filtering quality.
    • Ell's avatar
      app: another off-by-one chunking fix · 6d19e9e8
      Ell authored
    • Ell's avatar
      app: fix off-by-one error in last commit · 709c929d
      Ell authored
    • Ell's avatar
      Bug 759287 - Canvas Tearing While in Rotated Canvas View · 8029508f
      Ell authored
      Based on a patch by Massimo.
      Move the entire image-space/screen-space transformation logic from
      gimp_display_shell_render() to gimp_display_shell_draw_image(), so
      that the former works entirely in image space, and do the chunking
      and clipping in screen-space, making sure that image-space chunks
      are never larger than
      even when the window's scale factor is greater than 1.
      Add a GIMP_BRICK_WALL environment variable, which, when set, shows
      the screen-space chunk bounds.
    • João Sebastião de Oliveira Bueno's avatar
    • Jehan's avatar
      Bug 791352 - Screenshot delay is broken for region shots in GNOME. · 614bcf6d
      Jehan authored
      Delay should indeed happen before root and window screenshots, but must
      happen in-between region selection and region screenshot.
      One can notice that the logics is different for Windows screenshot in
      X11. The reason is that X11 window screenshot has an additional window
      selection step (and therefore delay must happen in between selection and
      actual screenshot). Window screenshot in Wayland doesn't have this step
      and simply screenshots whatever is the currently active Window.
    • Jehan's avatar
      Bug 791352 - Screenshot delay is broken for region-grab screenshot. · d9cd4b61
      Jehan authored
      Fix first the delay in X11.
      Actually both for region and window screenshots, it makes no sense to
      delay *before* region or window selection. Usually when one uses a
      delay, the point is to prepare in-between selection and shot. For
      instance, I often used a delay to snap the contents of a menu because
      PrintScreen key would not work when a menu is opened. So I would set a
      delay, select my window/region, then quickly open the menu before the
      delay is counting down. This would not be possible with the way delay
      occurred (before selection), which just has no use that I can see of.
  2. 08 Dec, 2017 9 commits
    • Jehan's avatar
      libgimpwidgets: add private headers for GimpPickButton implementations. · ef6559b3
      Jehan authored
      Though forward declarations of the implementations are ok, it is cleaner
      to have proper header files for each variant (default, kwin, quartz
      right now). Of course these new header files are not installed and must
      be kept private for build only.
    • Jehan's avatar
      Bug 780375 - Color picker won't pick on Wayland. · 06bbf3e4
      Jehan authored
      Add support for KWin API, for KDE on Wayland.
      Unfortunately though, KWin's "pick" API seems to have failures, so I
      fallback to the default color picking when this happens. This will still
      not work on Wayland, but at least won't cause regression for color
      picking on KDE/X11.
      See also KDE bug: https://bugs.kde.org/show_bug.cgi?id=387720
    • Jehan's avatar
      plug-ins: fix indentation. · 3f1dcaad
      Jehan authored
      The risk of search and replace. Bad me!
    • Jehan's avatar
      Bug 781020 - GIMP UI vector icons are drawn way too small. · 3023227f
      Jehan authored
      Though the bug was mostly fixed, it seems to still happen on Windows XP,
      where apparently no content type had been registered for SVG.
      GTK+ developers don't seem too keen to patch GTK+ 2.24 for a platform
      which they don't support anymore.
      Also if not mistaken, GIMP does not officially support Windows XP
      anymore either. A patch though has already been provided by Edward E.
      and it really doesn't look like it could break anything since it just
      adds a last "else if" when everything else failed (and inside a #ifdef
      affecting only WIN32 builds).
      So let's just add it in our builds at least. We still don't have support
      for it, but I see no reason to just refuse a minor patch which won't
      break anything else.
    • Jehan's avatar
      Bug 791360 - Add Screenshot implementation for KDE/Wayland. · b9034e26
      Jehan authored
      Only thing I could not properly figure out yet is how to select an area.
      The "screenshotArea" method is there in KDE API, but it needs
      coordinates and I can't find the API to grab coordinates in Wayland (as
      in GNOME shell API).
    • Ell's avatar
      app: update GimpContainerView row expanded state ... · 5d544c2a
      Ell authored
      ... when inserting/reordering items
      Otherwise, newly inserted/reordered group layers are always
    • Ell's avatar
      app: copy expanded state of duplicated items · 4c554179
      Ell authored
      ... so that duplicated group layers maintain the expanded state of
      the original.
    • Ell's avatar
      app: remove redundant opacity clamp from gimp_layer_new() · 06f41db6
      Ell authored
      The opacity will be clamped by gimp_layer_set_opacity().
    • Ell's avatar
      Bug 791386 - New layer with AUTO everything always uses normal mode · 776b4a9a
      Ell authored
      In gimp_layer_new(), set opacity and mode using the setter
      functions, instead of modifying the members directly, so that all
      the necessary side effects take place.
  3. 07 Dec, 2017 5 commits
  4. 06 Dec, 2017 10 commits
    • Jehan's avatar
      app: add/update some comments. · f28cb1c5
      Jehan authored
      Keep multi-threading disable on the cage transform operation. It is now
      fixed but is a lot much slower than when single-threaded, making it
      painful to use on bigger images.
      So let's reenable later if we can improve this. See bug 787663.
    • Massimo Valentini's avatar
      Bug 787663 - Cage tool creates artifacts with multi-threading · f727e885
      Massimo Valentini authored and Jehan's avatar Jehan committed
      Stop recursion only when all 3 vertices of the triangle are outside the
      roi (left/right or above/below).
    • Jehan's avatar
      build: remove flatpak files duplicated in the flathub repository. · 63f830be
      Jehan authored
      The BaseApp json used for all 3 builds (stable, dev and nightly) is
      common so just keep the one made available in the flathub upstream
      repository. The patch also applies to the BaseApp only.
    • Jehan's avatar
      build: add the flathub stable repository as a submodule. · 580782dc
      Jehan authored
      This will only be used for our development/nightly flatpak builds and
      this submodule does not have to be pulled for normal GIMP development.
    • Ell's avatar
      app: strength-reduce pass-through groups to normal groups · fa9a023c
      Ell authored
      Override GimpLayer::get_effective_mode() in GimpGroupLayer, to
      perform strength-reduction of pass-through groups to normal groups
      under certain conditions (see gimp_group_layer_get_effective_mode()
      for the logic.)
      The main motivation for this is the fact that Photoshop uses pass-
      through mode as the default mode for groups, resulting in many PSDs
      using pass-through groups generously and unnecessarily.  Since
      pass-through groups are more expensive that normal groups, reducing
      them to normal groups when possible can make a big difference.
      Note that, while the results of the strength-reduced composition
      are theoretically equivalent, there may be small differences in
      practice due to numerical errors, especially when using low
      precision.  This is unlikely to be an issue, but, just in case,
      allow disabling this optimization using the
    • Ell's avatar
      app: add gimp_layer_get_effective_mode() · bdba43e4
      Ell authored
      gimp_layer_get_effective_mode() returns the actual layer mode,
      blend space, comosite space, and composite mode used for the
      layer's mode node, allowing them to be different from the values of
      the corresponding layer properties.  The aim is to allow us to
      replace expensive layer configurations with cheaper but equivalent
      ones transparently.  This is used in the next commit to replace
      pass-through groups with normal groups under certain conditions.
      The effective values are computed by the new
      GimpLayer::get_effective_mode() virtual function.  The default
      implementation provided by GimpLayer returns the corresponding
      layer properties as-is (replaceing AUTO with concrete values).
      Subclasses can override this function, providing more
      sophisticated logic.
    • Ell's avatar
      plug-ins: in file-psd, insert layers to image after writing buffers · 67e68575
      Ell authored
      When loading PSDs, insert layers to the image as the last step of
      layer creation, after writing the pixel data to their buffers, so
      that the data of child layers is available when their parent
      group's projection is subseqeuently invalidated; otherwise, we'd
      need an additional gimp_drawable_update() call after writing the
      data to the buffers.
    • Ell's avatar
      app: remove gimp_filter_is_active() prototype · 93ed1048
      Ell authored
      Leftover from commit f5d1686a, not
      actually defined.
    • Jehan's avatar
      Bug 787663 - Cage tool creates artifacts with multi-threading. · 87aaf576
      Jehan authored
      Temporarily disable multi-threading on the cage transform so that it
      performs sanely until it is fixed.
    • Ell's avatar
      app: fix git-version.h when building linked working tree · 09c2ba4c
      Ell authored
      When building a linked working tree, $(top_srcdir)/.git is a
      regular file, and not a directory.  Change the recipe for
      git-version.h to allow that.
  5. 05 Dec, 2017 5 commits
    • Alexandre Prokoudine's avatar
      Update Russian translation · 7b6d040f
      Alexandre Prokoudine authored
    • Ell's avatar
      app: handle visbility/excludes-backdrop changes in floating sel. · 6a7c0d62
      Ell authored
      When attaching a layer as a floating selection to a drawable,
      unbind its visiblility from its activeness, as per the previous
      commit, and use its visibility to control the activeness of the
      drawable's floating selection filter.
      Properly update the drawable when the floating selection's
      visibility and excludes-backdrop properties change.
    • Ell's avatar
      app: add GimpFilter::active property; move ::visible to GimpItem · f5d1686a
      Ell authored
      Add an "active" property to GimpFilter, which replaces its
      "visible" property.  The new property assumes the lower-level role
      "visible" had -- controlling whether the filter has any effect as
      part of its parent filter-stack.
      Add a "visible" property to GimpItem, separate from the "active"
      property, which assumes the higher-level role "visible" had --
      controlling whether the item is considered "visible", as per the
      GUI.  By default, the item's "visible" property is bound to the
      filter's "active" property, so that changes in visibility directly
      affect the filter's "activeness"; this binding can be controlled
      using the new gimp_item_bind_visible_to_active() function.
      This distinction is currently necessary for floating selections.
      Floating selection layers must not be active in their parent stack,
      regardless of their visibility, in particular, so that their mode
      node doesn't hide the entire backdrop when their composite mode
      excludes the backdrop (i.e., when it's dst-atop or src-in).
      Instead, their visibility should affect the activeness of the
      floating-selection filter of the drawable they're attached to.
      This is handled by the next commit.
    • Ell's avatar
      app: exclude invisible filters from filter-stack graph · e02cb6ad
      Ell authored
      Currently, when a GimpFilter's visibility changes, we rely on its
      various visibility-changed signal handlers to rewire the filter
      node's graph to reflect the change.  This has two main
        - There's no easy, generic way to toggle a filter's  effect,
          especially one that is not subclassed, since GimpFilter only
          takes care of the case where visibility becomes FALSE, and does
          nothing by itself when it becomes TRUE again.
        - While GimpDrawable does handle the visibility => TRUE case, it
          doesn't disconnect the filter's input from its mode and
          (potentially) source nodes when it becomes invisible.  As a
          result, while none of the drawable's graph is processed as part
          of the composition when not visible, the mode and source nodes
          do get invalidated when the filter's input is invalidated, such
          as while painting on a layer below the drawable.  This is
          particularly bad for pass-through groups, since their source
          node can be an arbitrarily complex graph, whose invlidation
          incurs a nontrivial overhead.
      Instead, don't touch the filter's node at all when visibility
      changes, and rather have GimpFilterStack remove it from the graph
      entirely when the filter becomes invisible, and re-add it once it
      becomes visible again.  This solves both of the above problems, as
      well as simplifies the code.
    • Ell's avatar
      app: restore operation src node in gimp_gegl_apply_[cached_]operation() · 73d7a81a
      Ell authored
      When merging a drawable filter, we call
      gimp_gegl_apply_cached_operation() on a node that's part of the
      drawable's filter stack graph.  The function rewires the node's
      input, and doesn't restore its original input connection before
      returning, leaving the graph in an inconsistent state.  Currently,
      this doesn't matter, since we remove the filter right after that,
      but the next commit expects the filter stack graph to remain
      Remember the original source node of "operation" in
      gimp_gegl_apply_cached_operation(), and restore it upon exit, to
      fix that.