1. 21 Jan, 2020 3 commits
    • Elad Shahar's avatar
      app: Fix Mandala Symmetry Kaleidoscope mode - brush transform and stroke order · ed6517f0
      Elad Shahar authored
      Changed the reflection method to find the middle of the slice the
      user is drawing on, and reflecting on that. This reflects the slice
      in place, making it easier to rotate it to the intended location.
      This fix preserves the order the dabs are drawn on the
      slices, to be counterclockwise.
      
      Fixed the brush transform, by setting the reflect output variable,
      and calculating accordingly.
      ed6517f0
    • Ell's avatar
      app: avoid deleting empty layer groups when downscaling image · b99a2631
      Ell authored
      When dowscaling an image (or a layer group), empty layer groups
      can be discarded as a result of their new dimensions being too
      small, since we're calculating their new dimensions according to
      their fake 1x1 dimensions.  However, these dimensions are purely an
      implementation detail and shouldn't affect the result, and neither
      do we show a warning for them.
      
      Instead, simply avoid discarding empty layer groups.
      b99a2631
    • Ell's avatar
      icons: replace gimp-visible symbolic icon again · 885d4fb1
      Ell authored
      885d4fb1
  2. 20 Jan, 2020 1 commit
  3. 19 Jan, 2020 4 commits
    • Ell's avatar
      app: restrict whole-drawable updates to groups with filters · 18870975
      Ell authored
      Restrict last commit's workaround to layer groups only (which is
      the only relevant case ATM), since it negatively impacts the warp
      tool, which does rely on the ability to perform (accurate) partial
      updates with filters to improve performance.  It's only a temporary
      hack anyway.
      18870975
    • Ell's avatar
      app: always update full drawable region if it has filters · 8be0e646
      Ell authored
      When a drawable has filters attached, they may influence the area
      affected by drawable updates.  Currently, we ignore that, updating
      the original region regardless.  This can lead to drawable updates
      not affecting the correct regions.  This couldn't be triggered
      until now, but since layer groups can now have a transform op
      attached as a filter, updates to their sublayers -- which can
      happen while the transform tool is active -- run into this problem.
      
      Fix it for now by simply updating the full drawable region when the
      drawable has filters.  This is a very conservative approach -- we
      don't even bother checking if we're only dealing with point
      filters, as this change only influences transformed groups right
      now.  Ultimately, we need to rely on node invalidation to drive
      updates, which takes this into account.
      8be0e646
    • Ell's avatar
      app: don't emit GimpImage::linked-items-changed for non-attached items · 1e26ce8a
      Ell authored
      In gimp_item_set_linked(), don't emit the
      GimpImage::linked-items-changed signal if the item is not attached.
      1e26ce8a
    • Piotr Drąg's avatar
      Update Polish translation · 1cee6521
      Piotr Drąg authored
      1cee6521
  4. 18 Jan, 2020 5 commits
    • Alex Samorukov's avatar
      Fix meson build on macos · 5d0b0ad4
      Alex Samorukov authored
      5d0b0ad4
    • Ell's avatar
      app: add "Preview linked items" option to transform tools · d2471334
      Ell authored
      Add a new "Preview linked items" option to the transform-grid
      tools.  When this option is enabled, together with composited
      previews, the transform preview includes all linked layers/channels
      when transforming a layer/channel.  Note that paths aren't included
      for now.
      
      Ultimately, we'd probably want to cut down on the various preview
      options and enable this by default, but let's make this optional
      for now.
      
      This commit also improves composited-preview clipping in some
      cases.
      d2471334
    • Ell's avatar
      app: add GimpImage::linked-items-changed signal · 7d6737fe
      Ell authored
      Add a new GimpImage::linked-items-changed signal, which is emitted
      whenever the set of linked items in an image changes.
      7d6737fe
    • Ell's avatar
      app: suspend tile validation while setting extent of validate-handler buffer · fcc1c3d3
      Ell authored
      In gimp_tile_handler_validate_buffer_set_extent(), suspend tile
      validation while calling gimp_gegl_buffer_set_extent(), so that if
      the call triggers clearing of partial tiles, these tiles don't get
      unnecessarily validated.
      fcc1c3d3
    • Ell's avatar
      app: disable transform clipping for layer groups · 203bc9d8
      Ell authored
      Using any clipping mode other than ADJUST is currently broken for
      layer groups, since each layer in the group is clipped
      individually, instead of clipping being applied to the group as a
      whole.  Ultimately, we should fix that, but for now, simply disable
      clipping for layer groups, by overriding GimpItem::get_clip() to
      always return ADJUST.
      203bc9d8
  5. 17 Jan, 2020 10 commits
  6. 16 Jan, 2020 2 commits
    • Ell's avatar
      app: silence warning in gimp_transform_resize_crop() · 0103fe2c
      Ell authored
      The crop-to-result and crop-with-aspect transform-boundary
      algorithms seem to consistently fail in some cases, and spit out a
      warning, which can be too verbose if it triggers the debug dialog.
      
      Demote the warning to a g_printerr(), with an eye to just dropping
      these algorithms altogether.
      0103fe2c
    • Ell's avatar
      app: add "Synchronous preview" option to transform tools · 52cd27f0
      Ell authored
      Add a "Synchronous preview" option to the transform-grid tools,
      which renders the composited preview synchronously.  This reduces
      the lag for painting the preview, but can harm responsiveness for
      bigger images, where rendering the preview is slow.
      
      This is mostly an experimental option for now; it will become more
      interesting once we have mipmap rendering.
      52cd27f0
  7. 15 Jan, 2020 15 commits
    • Ell's avatar
      app: in GimpTileHandlerValidate, fix tile-data pointer for negative coords · d39822bc
      Ell authored
      In gimp_tile_handler_validate_validate_tile(), when validating a
      partial tile with negative coordinates, make sure to adjust the
      result of the modulo when calculating the tile-realtive coordinates
      so that they're non-negative, to fix the tile-data pointer offset.
      d39822bc
    • Ell's avatar
      app: add "Composited preview" option to transform tools · a3358278
      Ell authored
      Add a "Composited preview" option to all transform-grid tools,
      which displays the transform preview as part of the image
      composition (i.e., as it would actually look when applying the
      transformation, keeping the layer at the right position in the
      stack, and with the right layer mode), instead of using an overlay.
      
      This option is off by default, since it's generally slower to
      render than an overlay, due to the lack of mipmap rendering.  We're
      also still using an overlay when transfoming a selection, and not a
      whole layer.
      a3358278
    • Ell's avatar
      app: freeze drawable preview in transform tools · 2e26603a
      Ell authored
      In GimpTransformGridTool, when transforming a drawable, freeze the
      drawable's preview while the tool is active, so that its ancestors'
      previews don't get unnecessarily updated in response to hiding it.
      2e26603a
    • Ell's avatar
      libgimpmath: add gimp_matrix3_equal() · 006f300f
      Ell authored
      ... which compares two matrices.
      006f300f
    • Ell's avatar
      app: add gimp_drawable_filter_set_override_constraints() · b9a801f7
      Ell authored
      In GimpDrawableFilter, add a
      gimp_drawable_filter_set_override_constraints() function, which
      allows bypassing certain constraints applied to the filter, based
      on the drawable type and state.
      
      Yes, this is a bit of a hack, added mostly as a quick-and-dirty way
      to allow us to add filters to layer masks that affect their
      bounding box, in preparation for composited transform previews.
      b9a801f7
    • Ell's avatar
      app: add gimp_drawable_filter_set_add_alpha() · 1f81c314
      Ell authored
      Add an optional "format" parameter to gimp_drawable_merge_filter(),
      which specifies the format to use for the output, possibly changing
      the drawable's format.
      
      In GimpDrawableFilter, add a gimp_drawable_filter_set_add_alpha()
      function, which allows the filter to add an alpha channel to the
      drawable when committed (by passing an appropriate format to
      gimp_drawable_merge_filter()).
      1f81c314
    • Ell's avatar
      app: calculate drawable bounding box according to graph by default · cb5a63e2
      Ell authored
      Change the default implementation of
      GimpDrawable::get_bounding_box() to return the drawable source
      node's bounding box, instead of the drawable's item bounds.  This
      allows filters to affect the size of all drawables, including, in
      particular, layer masks.
      
      Change GimpLayer's implementation of get_bounding_box() to return
      the intersection of the layer's own bounding box, and the layer
      mask's bounding box (if it has one), and update the layer's
      bounding box when the mask is enabled/disabled, or when its
      bounding box changes.
      cb5a63e2
    • Jehan's avatar
      libgimp: (meson) build GIR file silently. · 4a4359d3
      Jehan authored
      In case of errors or warnings, they will still be displayed, but it is
      better to not show outputs when everything is building fine.
      4a4359d3
    • Ell's avatar
      app: implement GimpPickable::flush in GimpGroupLayer · 7f84f101
      Ell authored
      ... by synchronously flushing the group's projection.  This is
      necessary for pass-through groups, since their projection is
      normally flushed asynchronously.
      7f84f101
    • Ell's avatar
      app: handle GimpTileHandlerValidate::invalidated in gimp:buffer-source-validate · bb8ee0e6
      Ell authored
      In gimp:buffer-source-validate, invalidate the node in response to
      GimpTileHandlerValidate::invalidated, added in the previous commit,
      in addition to GeglBuffer::changed.
      bb8ee0e6
    • Ell's avatar
      app: add GimpTileHandlerValidate::invalidated signal · 3ea39160
      Ell authored
      Add a new GimpTileHandlerValidate::invalidated signal, which is
      emitted when a region of the buffer is invalidated.  This would
      allow us to properly invalidate the graph in response; this
      normally happens in response to GeglBuffer::changed, but this
      signal is not emitted when a region is merely invalidated.
      3ea39160
    • Ell's avatar
      app: allow calling gimp_tile_handler_validate_validate() with a NULL rect · ba6040bb
      Ell authored
      ... and validate the entire buffer.
      ba6040bb
    • Alex Samorukov's avatar
    • Ell's avatar
      0271f4c8
    • Ell's avatar
      icons: fix PNG 3D-transform icons in makefile · 469f8d61
      Ell authored
      469f8d61