1. 23 Feb, 2019 1 commit
  2. 22 Feb, 2019 2 commits
    • Ell's avatar
      Issue #2997 - Error importing PCX · 11defa42
      Ell authored
      Commit dc069e42 removed the
      assumption that 1-bpp PCX files are B&W, in favor of using the
      provided palette, which is (supposedly?) the correct behavior.
      However, there are evidently B&W files that do not specify a
      palette, resulting in an all-black image (i.e., a 2-color indexed
      image, whose both palette entries are black).  Since other
      software, including older versions of GIMP, load such files
      "correctly", let's fix this by falling back to a B&W palette when
      the provded palette is uniform.
      11defa42
    • Ell's avatar
      app: add temp-buf-total varaible to the dashboard · bb645bae
      Ell authored
      Add a temp-buf-total variable to the dashboard's misc group,
      showing the total size of all GimpTempBuf objects.
      bb645bae
  3. 21 Feb, 2019 5 commits
  4. 20 Feb, 2019 1 commit
    • Ell's avatar
      app, libgimp: communicate dark-theme preference to plug-ins through theme.css · 8c96c3d1
      Ell authored
      The GUI implementation of gimp_wait() relies on the ability to run
      plug-ins (namely, the busy-dialog plug-in) without entering the
      main loop.  This prohibits the said plug-ins from making any PDB
      calls, which would result in a deadlock.  However, we're currently
      calling gimp_gimprc_query() to fetch the prefer-dark-theme option
      during gimp_ui_init() (or any time the theme.css file changes).
      
      Instead, communicate this preference through the theme.css file
      itself, by writing a /* prefer-dark-theme */ comment to the file
      when the option is set.  Yes, it's a bit of a hack :P
      8c96c3d1
  5. 19 Feb, 2019 6 commits
  6. 18 Feb, 2019 2 commits
  7. 17 Feb, 2019 1 commit
  8. 16 Feb, 2019 16 commits
    • Ell's avatar
      app: in gimppaintcore-loops, unsuppress COMBINE_PAINT_MASK_TO_CANVAS_BUFFER algorithm · 6fe57a94
      Ell authored
      In gimppaintcore-loops, unsuppress the
      COMBINE_PAINT_MASK_TO_CANVAS_BUFFER algorithm (partially
      reverts commit b717ead1.)
      
      In gimp_paint_core_paste() it's always used together with
      CANVAS_BUFFER_TO_PAINT_BUF_ALPHA, which matches a combined
      algorithm, preventing it from being called, however, it can still
      be called through gimp_paint_core_replace(), which uses it
      together with CANVAS_BUFFER_TO_COMP_MASK, which doesn't have a
      combined algorithm.  We can, however, filter out
      CANVAS_BUFFER_TO_PAINT_BUF_ALPHA whenver
      COMBINE_PAINT_MASK_TO_CANVAS_BUFFER is matched (since the combined
      algorithm will be matched beforehand when both algorithms are
      included).
      6fe57a94
    • Ell's avatar
      7c1429d1
    • Ell's avatar
      app: in GimpDrawableFilter, don't mask-out alpha comonent for alpha-less drawables · af2c7d1b
      Ell authored
      In gimp_drawable_filter_sync_affect(), don't mask-out the filter's
      alpha component when the drawable doesn't have an alpha channel,
      since this is no longer necessary -- we now explicitly convert the
      output to the drawable format as part of the graph -- and it
      prevents the gimp:mask-components node from becoming a NOP.
      af2c7d1b
    • Ell's avatar
      app: set/clear component-mask alpha-bit of alpha-less drawables, to make mask uniform · 1b900bfa
      Ell authored
      In gimp_drawable_get_active_mask(), when the drawable doesn't have
      an alpha channel, set or clear the mask's alpha bit, according to
      the state of the other bits, so that it never gets in the way of a
      fully set/clear mask.  The value of the alpha bit doesn't matter
      when there's no alpha channel, however, having a uniform mask
      allows us to skip component masking altogether.
      
      Additionally, provide a default implementation for
      GimpDrawable::get_active_mask() which returns a full mask, and
      remove the equivalent implementation for GimpChannel.
      1b900bfa
    • Michael Natterer's avatar
      app, plug-ins: move brush (gbr) saving to the core · 90164c49
      Michael Natterer authored
      just the export logic remains in the plug-in, just as for patterns.
      90164c49
    • Michael Natterer's avatar
    • Ell's avatar
    • Ell's avatar
      app: use MASK_COMPONENTS algorithm in gimp_paint_core_{paste,replace}() · c7d8d9ba
      Ell authored
      Remove the mask_components_onto() gimppaintcore-loops function, and
      the GimpPaintCore::comp_buffer member.  Instead, in
      gimp_paint_core_paste() and gimp_paint_core_replace(), use the
      MASK_COMPONENTS algorithm, added in the previous commit.
      c7d8d9ba
    • Ell's avatar
      app: in gimppaintcore-loops, add MASK_COMPONENTS algorithm · 08fa46ea
      Ell authored
      In gimppaintcore-loops, add a new MASK_COMPONENTS algorithm, which
      masks the output of compositing into the destination buffer,
      according to a component mask.  The algorithm uses the same code as
      gimp:mask-comopnents, and can be used as part of a
      gimp_paint_core_loops_process() pipeline, instead of using a
      separate function.
      08fa46ea
    • Ell's avatar
      app: in gimppaintcore-loops, add [Temp]CompBuffer algorithm helper-classes · 858f30a6
      Ell authored
      In gimppaintcore-loops, add a CompBuffer algorithm helper-class,
      which provides access to the output buffer used for compositing,
      to be used by the DO_LAYER_BLEND algorithm instead of the
      destination buffer.
      
      CompVuffer itself doesn't provide the storage for the buffer; this
      is rather the responsibility of the algorithms that use it.  The
      TempCompBuffer algorithm helper-class provides temporary storage
      for the compositing buffer, and can be used by algorithms that need
      a temporary buffer.
      858f30a6
    • Ell's avatar
      app: in gimppaintcore-loops, mark algorithms as mandatory/suppressed · b717ead1
      Ell authored
      In gimppaintcore-loops, use {Mandatory,Supressed}AlgorithmDispatch,
      added in the previous commit, to mark certain algorithms as always
      occuring, or never occuring, in all hierarchies.
      b717ead1
    • Ell's avatar
      app: in gimppaintcore-loops, add {Mandatory,Suppressed}AlgorithmDispatch · fc7ffc71
      Ell authored
      In gimppaintcore-loops, add MandatoryAlgorithmDispatch and
      SuppressedAlgorithmDispatch class templates, which implement
      dispatch functions suitable for algorithms which are always part of
      the hierarchy, or never part of the hierarchy, respectively.  Using
      one of these classes as the dispatch function for a given algorithm
      verifies that the algorithm is/isn't included in the requested-
      algorithm set, but doesn't otherwise increase the number of
      instanciated hierarchies, since only one of these cases has to be
      handled.
      fc7ffc71
    • Ell's avatar
      app: in gimppaintcore-loops, remove individual-algorithm functions · 95761db5
      Ell authored
      In gimppaintcore-loops, remove the individual-algorithm convenience
      functions, which are merely wrappers around
      gimp_paint_core_loops_process(), and aren't used anywhere anymore.
      This allows us to avoid instanciating certain algorithm-hierarchies
      which aren't used in practice, as will be done by the following
      commits.
      95761db5
    • Ell's avatar
      app: improve gimp:mask-components · ee156b8f
      Ell authored
      Add specialized versions of gimp:mask-components for 8-, 16-, and
      32-bpc formats, to improve efficiency, and to preserve the contents
      of masked-out components exactly.
      
      Provide public functions for format-selection and processing, which
      we'll use in the painting code, instead of reimplementing component
      masking.
      ee156b8f
    • Ell's avatar
      app: convert gimp:mask-components to C++ · a7f7a485
      Ell authored
      ... in preperation for next commit.
      a7f7a485
    • Jehan's avatar
      app: some small improvements in line art code. · 248477a1
      Jehan authored
      Mostly I am adding a counter to the insignifiant zone fill, to be double
      sure we are not going to fill huge areas (this should not happen already
      anyway) and also it is no use to sample the line art buffer in such
      case.
      248477a1
  9. 15 Feb, 2019 4 commits
  10. 14 Feb, 2019 2 commits