Commit Graph

301 Commits

Author SHA1 Message Date
Michael Natterer 293d909cf4 plug-ins: port file-psd to GimpPlugIn
and remove all save arguments, they are completely unused, wtf?
2019-08-18 00:26:13 +02:00
luz.paz c1585d609b Misc typo fixes in plug-ins/ 2019-08-13 11:50:51 -04:00
Michael Natterer a08293dc74 Issue #3532 - Wrong color profile on nikon taken photos, it's...
...always AdobeRGB!

Change all file plug-ins to never call gimp_image_metadata_load_finish()
with the GIMP_METADATA_LOAD_COLORSPACE when they loaded a color profile.

This keeps gimp_image_metadata_load_finish() from assigning a profile
from DCT even if the loaded profile was GIMP's built-in sRGB.
2019-06-20 18:08:59 +02:00
Michael Natterer a35b243f9b plug-ins: always save the color profile in file-psd
by using gimp_image_get_effective_color_profile() instead of just
_get_color_profile(). Don't look at the preference setting because PSD
should behave more like "save" than "export" and save everything.
2018-12-03 19:24:52 +01:00
Ell 053e5edc93 libgimpcolor, app, modules, plug-ins: remove GEGL_ITERATOR2 define
... it's no longer needed, since GEGL commit
gegl@9dcd2cde63f95a080bf16a58c10e9ffbdd99aace.

Partially reverts commits:

6fca9959c7
cc10af72cc
49c53568d7
8edbc0d491
29f63616d2
3a2014984d
ee48ec6877
4165a315d5
764085278f
b7633c722e
6ab12061b7
754a3c5b18
22b4b647bd
55b3438328
c6d23add65
f03a84d607
822f9f0d2b
95358ca1fa
cdda37f4ee
41e8035635
6761da42b2
fb5d7832a8
97ed7817d8
46e9036578
ea9c5e6a49
24fbdfb591
beb4ecb238
4b77831e03
fcf113a39c
567ffe94ff
2018-12-02 11:15:37 -05:00
Øyvind Kolås 3a2014984d plug-ins: migrate psd plug-ins to new iterator api 2018-09-11 02:02:50 +02:00
Michael Natterer e09e563a70 Initial space invasion commit in GIMP
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.

libgimp:

- 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.

plug-ins:

- follow the GimpPrecision change.

- TODO: everything else unchanged and partly broken or sub-optimal,
  like setting a new image's color profile too late.

app:

- 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
  GimpTRCType.

- TODO: the image's "enable color management" switch is currently
  broken, will fix that in another commit.
2018-07-21 16:42:57 +02:00
Ell 0320126254 Issue #1825 - PSD files are loaded as merged by default ...
... depending on UI language

Use gimp_register_file_handler_priority(), added in the previous
commit, to increase the priority of the merged PSD loader, so that
the non-merged loader is always preferred over it (unless
explicitly chosen), regardless of the UI language.
2018-07-17 02:56:20 -04:00
Michael Natterer 5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
Ell 1d9a8a91ab plug-ins: add support for loading merged image data from PSD files
PSD files may include a "merged", pre-composited, version of the
image (in Photoshop, this is the case when saving files with
"Maximize Compatibility" enabled; GIMP always saves the merged
image data in exported PSD files.)  This commit adds support for
loading the merged image version from PSDs, instead of the full
layer hierarchy.  This is useful when loading PSD files that use
features that we don't currently support, and therefore can't
render correctly, such as adjustment layers.

When loading the merged image version, we avoid loading certain
additional data from the file, such as channels, paths, and
guides, while still loading metadata, making this akin to loading
other "flat" image formats.

This option is currently exposed as an additional file type
("Photoshop image (merged)"), which has to be explicitly selected
from the file-type list when opening the image.
2018-06-18 06:34:32 -04:00
Ell 8a01866af0 Issue #1621 - Alpha incorrectly exported in PSD
In file-psd, fix the creation of the "merged" image data, saved in
PSD files along with the actual layer data.
2018-06-11 21:05:12 -04:00
Jehan 870ca6334d plug-ins: install plug-ins in subfolder.
I am going to forbid plug-ins from being installed directly in the root
of the plug-ins/ directory. They will have to be installed in a
subdirectory named the same as the entry point binary.
This may seem useless for our core plug-ins which are nearly all
self-contained in single binaries, but this is actually a necessary
restriction to eliminate totally the DLL hell issue on Windows. Moving
core plug-ins in subfolders is only a necessary consequence for it.
2018-05-20 21:06:35 +02:00
Ell 474e27b27a Bug 795693 - GIMP doesn't enable visibility of vector layers in PSD
In the file-psd plug-in, ignore the 'irrelevant' flag of layers
when loading PSD files; in particular, don't hide such layers
unconditionally.  The 'irrelevant' flag seems to indicate that the
layer's content can be entirely derived without using the layer's
pixel data, and not that the layer itself it irrelevant.
2018-05-01 02:49:19 -04:00
luz.paz 4a77ff2d3d Bug 795557 - Misc. typo fixes in source, comments and doxygen (pt3)
Found via `codespell` and grep.
2018-04-25 23:49:06 +02:00
luz.paz 147c09f19e Bug 795161 - Misc. typo fixes in source comments and doxygen
Found via `codespell`
Follow-up to  commit 7fdb963e01
2018-04-18 21:06:57 +02:00
Ell a7f3a2dd9f app, pdb, libgimp, plug-ins, menus: rename layer composite modes
Our composite modes don't correspond directly to the Porter-Duff
operators after which they're named, and these names aren't too
descriptive anyway.

Rename the composite modes as follows:

  Source Over       =>  Union
  Source Atop       =>  Clip to Backdrop
  Destination Atop  =>  Clip to Layer
  Source In         =>  Intersection

Update relevant code, including UI text, enumerator names, function
names, and action names.
2018-03-14 16:19:09 -04:00
Ell af6b891b64 plug-ins: in file-psd, read and write group-layer masks
Add support for loading and saving group-layer masks from/to PSD
files.
2018-02-05 16:22:12 -05:00
Massimo Valentini cb78618d75 Bug 783703: no progress bar changes when exporting to psd format 2018-01-14 23:28:12 +01:00
Massimo Valentini a5b2139ca3 Bug 765651: file-psd-load.exe crashes importing file
Rather skip extra layer masks than crash.
2018-01-06 12:44:28 +01:00
Ell 67e685758d plug-ins: in file-psd, insert layers to image after writing buffers
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.
2017-12-06 10:20:01 -05:00
Ell 54ec9373fb Bug 789981 - Wrong layer structure in PSDs with deeply nested layer groups
Photoshop CS5 adds support for layer groups whose nesting depth is
above 5.  The end markers of these groups use an undocumented
"lsdk" key for their section dividers, rather than the usual
"lsct".  This caused the PSD plugin to treat them as regular
layers, resulting in wrong layer-tree structure.

Add support for "lsdk" section dividers upon loading, and also
generate "lsdk" section dividers upon saving sufficiently-deep
groups.
2017-11-11 17:51:02 -05:00
Ell 6708af3976 plug-ins: in file-psd, repalce tabs with spaces 2017-11-11 17:51:02 -05:00
Ell 4165ba2a03 plug-ins: in file-psd, fix active layer selection upon loading
When loading a PSD, set the active layer after adding all the
layers to the image, instead of at the time of its creation, since
the active layer may change when adding subsequent layers.
2017-10-22 12:30:22 -04:00
Ell 6fb497247d plug-ins: in file-psd, read/write layer group expanded state
Use the new gimp-item-{get,set}-expanded() PDB functions to read
and write group-layer expanded state in PSDs.
2017-10-22 12:30:22 -04:00
Ell adff950d58 app: in file-psd, make layer-group saving more Photoshop-like
Tweak the layer group saving code so that the saved PSDs match
Photoshop-produced PSDs a bit more closely.  For the most part, it
doesn't seem to matter much, but it does somewhat improve
compatibility with other programs that read PSDs.
2017-10-09 10:45:52 -04:00
Ell 9e015f4b7d plug-ins: in file-psd, fix bad sign extension in decode_packbits() 2017-10-09 08:48:03 -04:00
Ell eb2741ed70 Bug 592533 - Mask positions move to top-left when saving as PSD
And: Bug 593251 - Mask positions may be incorrect when opening a PSD

The position-relative flag of layer masks doesn't specify how the
mask position is represented in the PSD -- it's always absolute --
but rather whether the layer and the mask are linked or unlinked.
Since masks are always linked to their layers in GIMP, just ignore
this flag (and, when saving, clear the flag so that the mask is
linked to layer when loaded in PS.)
2017-09-04 16:03:10 -04:00
Ell 3cfa35ec07 plug-ins: in file-psd, fix active layer selection during loading 2017-09-04 13:58:37 -04:00
Ell 6ecce4cbf9 plug-ins: in file-psd, fix potential group-layer naming conflict during loading
Set the layer name of group layers early on, while processing their
end marker, so that the default group name won't collide with the
names of subsequent layers, leading to wrong layer names.  The real
name of the group layer is set again when processing its start
marker.
2017-09-04 13:58:37 -04:00
Ell dc89e380c8 plug-ins: in file-psd, improve layer opacity loading/saving
Avoid losing precision and improve rounding when rescaling layer
opacity during loading and saving, respectively.
2017-09-04 13:58:37 -04:00
Ell 58f2bbfdbd plug-ins: in file-psd, refactor layer creation code during loading
Reduce code duplication for layer creation and property
initialization across normal layers, empty layers, and group
layers.
2017-09-04 13:58:37 -04:00
Juan Palacios f3d684b0fc plug-ins: in file-psd, fix missing some attributes loading empty layers 2017-08-27 15:16:19 -04:00
Michael Natterer e16c8a2352 Move the new "default_new_layer_mode" APIs to the image...
...in both the core and libgimp.

Images now know what the default mode for new layers is:

- NORMAL for empty images
- NORMAL for images with any non-legacy layer
- NORMAL_LEGAVY for images with only legacy layers

This changes behavior when layers are created from the UI, but *also*
when created by plug-ins (yes there is a compat issue here):

- Most (all?) single-layer file importers now create NORMAL layers
- Screenshot, Webpage etc also create NORMAL layers

Scripts that create images from scratch (logos etc) should not be
affected because they usually have NORMAL_LEGACY hardcoded.

3rd party plug-ins and scripts will also behave old-style unless they
get ported to gimp_image_get_default_new_layer_mode().
2017-08-21 20:18:00 +02:00
Ell e40ebde536 plug-ins: in file-psd, add support for exporting layer groups
Preserve layer-group structure when exporting to PSD, instead of
flattening the groups.

Fix active-layer index saving (the index was reversed.)
2017-08-20 17:16:28 -04:00
Ell 33255a439b plug-ins: in file-psd, improve PS <-> GIMP layer-mode mapping
Streamline the layer-mode mapping code, to reduce duplication.

Add mappings for the following modes:  Subtract, Divide, Luma/
luminance darken only (Darker Color), Luma/luminance lighten only
(Lighter Color), and Luminance (Luminosity).
2017-08-20 17:15:32 -04:00
Michael Natterer 838449254a plug-ins: use gimp_get_default_new_layer_mode() for most new layers
instead of hardcoding NORMAL_LEGACY.
2017-08-20 17:12:46 +02:00
Ell dccaa5d5d1 plug-ins: in file-psd, use SRC_OVER and RGB_PERCEPTUAL for all layers
Use SRC_OVER, instead of SRC_ATOP, as the composite mode for all
layers (or use AUTO, when it results in SRC_OVER), to match
Photoshop's behavior.  Use RGB_PERCEPTUAL as the blend and composite
space, instead of AUTO, whose interpretation depends on the specific
layer mode, to match Photoshop's behavior for RGB images.  Use NORMAL
mode, instead of NORMAL_LEGACY, with the above properties, for normal
layers, for consistency with the other layer modes, which don't (and,
indeed, can't) use the legacy modes.
2017-08-09 09:59:39 -04:00
Ell 4d3481ca7a plug-ins: small cleanup to last commit 2017-08-09 08:38:08 -04:00
Ell e8f6a3888b plug-ins: in file-psd, read blend mode info of lsct layer records
The section-divider (lsct) layer resource may contain blend mode
information, which apparently overrides the blend mode specified in
the layer record.  When reading such a resource, replace the layer's
blend mode with the one specified by the resource.

It seems like pass-through group layers specify normal mode in their
layer record, but pass-through in their section-divider resource, so
this commit allows correctly loading such layers.
2017-08-09 08:33:29 -04:00
Alexandre Prokoudine 63b041046e Some basics of loading and exporting the pass-through mode of layer groups in PSD.
The plug-in is still missing two essential bits:

1) setting blend mode to a layer group;
2) preserving layer group when exporting to PSD.
2017-08-09 01:31:44 +03:00
Ell 03756d0980 app: rename "Color (HSV) (legacy)" mode to "Color (HSL) (legacy)"
The color-space qualification is, in fact, a 2.9 thing, so there's no
historic reason to keep the wrong name for the legacy mode.
2017-03-16 06:23:30 -04:00
Ell b22c09e7b7 app: implement color-erase mode as a GimpOperationLayerMode blendfun
... and get rid of the dedicated op.  This gives us support for all
the blend/composite options for this mode.

Rename COLOR_ERASE to COLOR_ERASE_LEGACY, with perceptual blending/
compositing and immutable everything, and add a new COLOR_ERASE
mode, defaulting to linear blending/compositing, with mutable
everything.  Modify affected code.
2017-03-08 14:13:51 -05:00
Michael Natterer 3cf423f0cd *: rename NORMAL to NORMAL_LEGACY and NORMAL_LINEAR to NORMAL
and make NORMAL_LEGACY immutable.
2017-02-26 16:26:34 +01:00
Michael Natterer 63f1ec4101 app, libgimp, plug-ins: remove the _LINEAR layer mode variants
Missing: PDB API to set the various sub-modes we now have for layer modes.
2017-02-19 23:15:59 +01:00
Juan Palacios 9b636ff798 Bug 778571 - Add support to import/export layer color tags from/to psd files
Except GIMP's "brown" tag which is not supported by PS.
2017-02-13 21:30:26 +01:00
Alexandre Prokoudine b3e4588a5f psd: add support for loading and exporting Hard Mix layer mode
Also remove warning from the Vivid Light loader, we are good now.
2017-02-05 16:36:41 +03:00
Alexandre Prokoudine 832c79e8d8 Activate exporting more layer modes from XCF to PSD 2017-02-04 18:43:34 +03:00
Alexandre Prokoudine 2bce09ff9b Add Linear Burn to PSD exporting, update the list of XCF layer modes 2017-02-04 18:03:59 +03:00
Alexandre Prokoudine 023cdd159e Update XCF to PSD layer mode mappings 2017-02-04 17:55:18 +03:00
Alexandre Prokoudine 0584fc0e45 psd: add stubs for Darker Color and Lighter Color layer modes 2017-02-04 17:28:13 +03:00
Alexandre Prokoudine b471c90aee Update PSD to GIMP layer mode mappings 2017-02-04 17:22:07 +03:00
Michael Natterer 393ce1d53b plug-ins: use the new composite mode API in file-psd
No clue if this is right.
2017-02-02 00:40:37 +01:00
Michael Natterer 152adbb1bd Rename GIMP_LAYER_MODE_FOO_BROKEN to GIMP_LAYER_MODE_FOO_LEGACY
"Broken" sounds like it needs fixing, but it's legacy compat stuff
that will have to stay for all eternity.
2017-01-09 01:27:20 +01:00
Michael Natterer 66060e3307 app, libgimp*, plug-ins: replace enum GimpLayerModeEffects by GimpLayerMode
with proper value names. Mark most values as _BROKEN because they use
weird alpha compositing that has to die. Move GimpLayerModeEffects to
libgimpbase, deprecate it, and set it as compat enum for GimpLayerMode.
Add the GimpLayerModeEffects values as compat constants to script-fu
and pygimp.
2017-01-08 23:00:19 +01:00
Hartmut Kuhse 66bc98d299 Revert "New GimpMetadata as subclass of GExiv2Metadata"
This reverts commit 3ab08c8bfd.
2017-01-03 19:36:22 +01:00
Hartmut Kuhse 3ab08c8bfd New GimpMetadata as subclass of GExiv2Metadata 2017-01-03 19:26:35 +01:00
Jehan e83ed61178 plug-ins: cleaning out some indentation tabs. 2016-11-03 23:02:19 +01:00
Matthias Junker-Petschick 3139cb9305 Bug 771558 - PSD files with a layer additional data length...
...not divisible by 4 are incorrectly reported as corrupt

file-psd: Do not round up the extra data length field when reading
layer info.

Fixes the PSD layer extra information handling in read_layer_info() by
not rounding up the data length field to a multiple of 4.

Layers can contain extra data, which is encoded at the end of layer
records. The length of this data should always be stored rounded up to
an even byte count. When loading a PSD file, it can be expected that
this value is already rounded up and this operation should not be
necessary. If an uneven byte count is encountered, a warning is
emitted but the loading process is not aborted.
2016-10-09 22:29:51 +02:00
Richard Kreckel dd9b0fc55b Bug 768044 - Fix many typos
This fixes many typos in comments and one in a user-visible string (msgid
"center abscisse" changed to "center abscissa" in affected po files. too).
2016-06-26 00:35:24 +02:00
Jehan 8a37c928eb app, plug-ins, libgimp*: clean out all remaining trailing spaces/tabs.
Rather than just discovering them by chance, a simple grep and some
search and replace are much more efficient! :-)
Cleaning only done on C and automake files.
2016-06-02 02:04:26 +02:00
Jehan ec27b539ea plug-ins: various s/save/export/ replacement on visible strings. 2016-02-16 02:35:43 +01:00
Massimo Valentini 32469d53b7 Bug 684295: wrong layer group structure in gimp 2.8.2...
... (read PSD file from PS CS3)

use a position of 0 when inserting normal layers
as they're always inserted on top of their group

-1 means inside the group when the active drawable is
a group or above it when it's not. This used to work
before layer groups or in simple cases.
2016-01-04 12:55:58 +01:00
Massimo Valentini e79632728d Bug 760029: PSD loader fails to load files with...
... adjustment or fill layers

the length of the compressed channel data was truncated
for the wrong type used in read_channel_data signature
2016-01-04 12:55:58 +01:00
Michael Natterer 67597f42ad Bug 754727 - gimp 2.9.1 git compilation fails in file-psd
Fix some glitches in patches I recently applied blindly :)
2015-09-08 18:54:02 +02:00
Julien Nabet 5a2757c6ec Bug 753986 - manage layer resource block lnsr
Layer name source (id on 4 characters encoded in MacRoman).
psd from PS>5 have "luni" (Layer Unicode)

See https://bugzilla.gnome.org/show_bug.cgi?id=753986#c4 for more details

Janitorial on lyvr:
move IFDBG at the beginning of the function
+change the content of it
2015-09-06 16:57:11 +02:00
Julien Nabet 8fb017342c Bug 753980 - manage layer resource block lyvr
Layer version appeared in PS7
Just warns if version is < 70 but nothing more
2015-08-23 13:51:05 +02:00
Michael Natterer 01df24c47e plug-ins: remove obsolete #defines from file-psd/psd.h 2015-08-20 11:26:59 +02:00
Michael Natterer 1d37c67879 plug-ins: use the GimpColorProfile API instead of the "icc-profile" parasite 2015-08-20 11:15:26 +02:00
ShadowKyogre 925ee21750 Bug 750594 - Colors in PSD files are far lighter on import and far darker on export
GIMP's PSD plugin was assuming that colors in PSD files are linearly interpolated
on both export and import. This commit fixes the issue by doing the following:

- when importing, assume the colors are gamma interpolated in the entire image
- when importing and exporting, treat the colors in each layer as gamma interpolated
- when importing and exporting, treat indexed colors as actually indexed colors
- when exporting, treat the interpolation in the channels and masks as linearly interpolated
2015-06-24 19:02:17 +02:00
Massimo Valentini 6138b58f14 file-psd: use correct size for high bit depth extra channels
it was missing a '* bps' in the size of data passed to GEGL
and the lower half of an extra-channel from a 16bit psd
appeared as garbage in GIMP
2015-06-19 18:58:39 +02:00
Massimo Valentini b07cf7fbee file-psd: improve high bit depth and compression support
see:
Bug 750729 - Importing *.PSDs with greater than
 8-bit depth lose their masks and appear funny
2015-06-13 18:33:00 +02:00
Michael Natterer 34c788d34e plug-ins: fix indentation of calls to read_channel_data() in psd-load.c 2015-05-01 16:36:51 -04:00
Michael Natterer c6ac3550d3 plug-ins: replace ">> 3" by "/ 8" in psd-load.c 2015-05-01 16:31:21 -04:00
Michael Natterer cf4cc504cf plug-ins: set G_LOG_DOMAIN in file-psd so it's possible to see the debug output 2015-05-01 16:19:52 -04:00
Michael Natterer bc4cf9918f Bug 673501 - Issue with Overlay
GIMP's OVERLAY mode was identical to SOFTLIGHT. This commit fixes the
issue and introduces a NEW_OVERLAY mode and enum value.

- change gimp:overlay-mode to be a real (svg-ish) overlay mode
- when compositing, map OVERLAY to gimp:softlight-mode
- when compisiting, map NEW_OVERLAY to gimp:overlay-mode
- bump the XCF version when NEW_OVERLAY is used
- map OVERLAY to SOFTLIGHT when loading and saving XCF
- map OVERLAY to softlight in all PDB setters
- map OVERLAY to softlight when deserializing a GimpContext
- change all paint mode menus to show an entry for NEW_OVERLAY
  instead of OVERLAY
- change PSP, PSD and OpenRaster to use NEW_OVERLAY

These changes should (redundantly) make sure that no OVERLAY enum
value is used in the core any longer because it gets mapped to
SOFTLIGHT at all entry points, with the downside of introducing a
setter/getter asymmetry when OVERLAY was set in a PDB api.
2015-04-29 13:32:58 -04:00
Michael Natterer 48618b88dc plug-ins: update file-psd/.gitignore 2015-04-26 15:50:13 -04:00
Michael Natterer 37c8e5602d plug-ins: merge file-psd-load and file-psd-save into one binary file-psd
which share the psd.c file for query() and run(), instead of having
save's stuff commented out in psd.c, and having it duplicated in
psd-save.c for the separate binary.
2015-04-26 15:37:31 -04:00
Michael Natterer 68ba2037c9 Bug 748488 - Unable to export to *.psd
Fix multiple small but crashing bugs:

- call gegl_init()
- gegl_buffer_get()'s scale must be 1.0 not 0
- don't unref the metadata object twice
2015-04-26 15:06:16 -04:00
Michael Natterer 3d3f1d6855 Bug 748487 - Thumbnails sometimes don't render correctly with *.PSD files
Using the right Babl format (JPEG previews don't have an alpha
channel), and fixing the main scanline loading loop (which was totally
busted) make the PSD previews look like images.
2015-04-26 13:31:01 -04:00
Massimo Valentini b42e764d9c Bug 698859: PSD import filter: opening a PSD file causes...
...file-psd-load segfault.

Fix loading of PSDs where the number of "end group" markers doesn't
match the number of "start group" markers, which seems to be what is
saved by Photoshop in some cases/versions/whatever.
2015-04-25 23:26:30 -04:00
Michael Natterer 9c5ef53c66 plug-ins: convert tabs to spaces in file-psd/psd-load.c 2015-04-25 23:20:00 -04:00
Michael Natterer 7c4f3f02c7 Bug 747156 - Gimp Development version crashes on processing masks from psds
Fix the other pixel format issue in this bug: split up
get_pixel_format() into 3 functions get_layer,channel,mask_format() so
we use the right one for the right drawable type, get_layer_format()
has an "alpha" parameter that is taken from the loaded layer instead
of from the PSDimage struct.
2015-04-25 23:02:54 -04:00
Michael Natterer 0d7d96d09f Bug 747156 - Gimp Development version crashes on processing masks from psds
Don't use the image's layer format to load layer mask and channels,
use a grayscale format instead.
2015-04-19 00:16:57 +02:00
Michael Natterer 3cda160fc1 plug-ins: the "icc-profile" parasite must be undoable 2015-04-18 23:57:10 +02:00
Simon Budig 7928be2255 fix a few potential use-before-check errors
Spotted by Andrey Karpov using static code analysis:
   http://www.viva64.com/en/b/0273/
2014-08-16 00:59:19 +02:00
Simon Budig 218b78241c fix errors in the psd loader code.
triggered by Andrey Karpov finding a stupid if-elseif-elseif-... sequence
using static code analysis:
   http://www.viva64.com/en/b/0273/
2014-08-16 00:37:14 +02:00
Michael Natterer f28878b6d3 plug-ins: start the progress before opening files for loading/saving
so the user gets feedback as early as possible.
2014-07-23 21:37:13 +02:00
Michael Natterer b5530e9e3d Use the new GeglAccessMode enum instead of the old values 2014-07-02 02:00:35 +02:00
Michael Natterer 3a4fedea7c libgimp: make gimp_image_metadata_save_prepare() suggest GimpMetadataSaveFlags
Return flags based on what metadata is actually present in the image.
Returning of a suggested value for GIMP_METADATA_SAVE_THUMBNAIL needs
support from gimp_image_metadata_load_prepare() and is still missing.

Port all plug-ins to use the new API, the suggested values are however
overridden by parasites and whatever special code was devised for the
individual plug-ins. This needs to be fixed.
2014-06-05 02:07:13 +02:00
Michael Natterer 425748dab0 libgimpbase, *: rename GimpFillType values: GIMP_FOO_FILL -> GIMP_FILL_FOO
Change all users accordingly and add compat enum values and compat
constants to script-fu and pygimp.
2014-06-03 01:11:32 +02:00
Michael Natterer 22c222291d libgimpbase,*: clean up enum values in gimpbaseenums.h
GIMP_ADD_foo_MASK -> GIMP_ADD_MASK_foo
GIMP_foo_MODE -> GIMP_BLEND_foo
GIMP_foo_CLONE -> GIMP_CLONE_foo
GIMP_foo -> GIMP_DODGE_BURN_TYPE_foo
GIMP_foo -> GIMP_TRANSFER_foo

Add compat values for the old names and compat code to script-fu
and pygimp.
2014-04-29 20:58:30 +02:00
Hartmut Kuhse 7b078a6e57 Bug 727832 - file-psd-load infinite loop
If a layer mask is completely outside the layer boundaries,
the layer mask is omitted
2014-04-21 19:25:18 +02:00
Michael Natterer eafe1b9be3 plug-ins: some general cleanup in file-psd (no code changes) 2014-02-09 19:38:19 +01:00
Simon Lui fd997447e5 plug-ins: merge soc-2013-psd branch, squashed into one commit
This ports PSD loading/saving to GEGL and adds parsing of more
PSD structs.
2014-02-09 19:16:05 +01:00
Michael Natterer 03df8c6af4 plug-ins: pass the format's name again in calls to gimp_export_image()
and clean up the formatting of the call and the lines around it. Now
we can check the various (disabled) export options for regressions
again by changing a single line in gimp_export_image().
2013-11-10 00:18:48 +01:00
Michael Schumacher 8db3b4312d Global EXIF -> Exif string change (official spelling) 2013-10-29 22:48:46 +01:00
Michael Natterer 940d615218 plug-ins: trust the PSD's resolution over its metadata's resolution 2013-10-27 19:01:22 +01:00
Michael Natterer a44e06d059 plug-ins: reverse the logic for setting GimpMetadataSaveFlags
start with flags = ALL (which now includes all possible current and
future flags), and optionally *remove* individual flags instead of
adding them. This way the plug-ins default to TRUE for future flags.
2013-10-27 15:38:42 +01:00
Michael Natterer 7cbe83d911 libgimp,plug-ins: split metadata loading into prepare() and finish()
So the plug-in has the chance to decide whether it wants to trust the
metadata information (e.g. resolution). Also reorder parameters in
gimp_image_metadata_save_finish(). Change all plug-ins accordingly.
2013-10-27 15:22:35 +01:00
Hartmut Kuhse 21bed1e2fb Completely rewrite metadata handling using gexiv2
Based on original patches from Hartmut Kuhse and modified
by Michael Natterer. Changes include:

- remove libexif dependency and add a hard dependency on gexiv2
- typedef GExiv2Metadata to GimpMetadata to avoid having to
  include gexiv2 globally
- add basic GimpMetadata handling functions to libgimpbase
- add image and image file specific metadata functions to libgimp,
  including the exif orientation image rotate dialog
- port plug-ins to use the new APIs
- port file-tiff-save's UI to GtkBuilder
- add new plug-in "metadata" to view the image's metadata
- keep metadata around as GimpImage member in the core
- update the image's metadata on image size, resolution and precision
  changes
- obsolete the old metadata parasites
- migrate the old parasites to new GimpMetadata object on XCF load
2013-10-27 01:02:17 +02:00
Clayton Walker 264d09b417 Rename colour and greyscale to color and grayscale respectively 2013-06-06 23:26:16 +02:00
Michael Natterer ec786816bb */Makefile.am: merge INCLUDES into AM_CPPFLAGS
automake-1.13 finally warns about this anachronism.
2013-06-05 20:48:37 +02:00
Ville Skyttä 6b0d1038cc Bug 692641 - Various spelling fixes 2013-01-27 18:59:02 +01:00
Michael Henning 0f6044ef2b plug-ins: fix memory leak in psd-save
Found using clang's scan-build.
2013-01-15 17:10:33 -05:00
Michael Natterer 890ae48330 Bug 686602 - missing EXIF_CFLAGS when building plug-ins/file-psd
Apply patch from John Hein which adds EXIF_CFLAGS to INCLUDES.
2012-10-22 14:59:51 +02:00
Øyvind Kolås d1ced11415 plug-ins: add GEGL_CFLAGS to many Makefile.am's 2012-05-02 17:46:08 +02:00
Mike Melancon 1ef3fe7f07 Bug 643348 - Working Path not imported from a PSD
The unsaved "Working Path" was not being loaded from the PSD. Passed
this Working Path resource through the same function call as the
normal path resources, and named it "Working Path"
2011-11-30 23:17:09 +01:00
Mukund Sivaraman a7e218ba51 file-psd: Delete dead variable and assignment 2011-10-08 18:12:57 +05:30
Mukund Sivaraman 7fbc0fe540 file-psd: Delete dead variable and assignment 2011-10-06 19:51:04 +05:30
Mukund Sivaraman b613969d8b file-psd: Move variables to local block 2011-10-06 19:49:47 +05:30
Mukund Sivaraman ea7abb2922 file-psd: Remove unused but set variable (fill) 2011-10-03 11:18:22 +05:30
Mukund Sivaraman c7466e4f8a file-psd: Move run_mode decl to where it is conditionally used 2011-10-03 11:00:22 +05:30
Mukund Sivaraman 2aae54226c build: Rename HAVE_EXIF define to HAVE_LIBEXIF 2011-09-18 07:04:44 +05:30
Bruce Cowan 841c8a7ebe String review: fix some spelling and formatting issues 2011-08-28 20:07:55 +02:00
Nelson A. de Oliveira ce3db28f5a Fix some memleaks 2011-08-18 13:37:35 -04:00
Dave Lichterman ba324c06f5 Bug 569550 - Can not handle PSD layers/groups
Add support to file-psd plugin for layer group reading.
2011-05-23 20:01:43 +02:00
Yoshinori Yamakawa 759fad8189 file-psd: Make file-psd-save embed color profile 2011-05-06 20:08:57 +05:30
Michael Natterer 8c4d99f883 Bug 645456 - Inconsistent window (role) naming scheme
Applied patch from Christoph Kappel which adds a "gimp-" prefix to all
plug-in dialog window roles.
2011-04-08 20:31:34 +02:00
Michael Natterer 87646e9ace libgimp: deprecate and rename the image parasite functions
in exactly the way the drawable functios were turned into item ones.
2011-03-08 13:19:21 +01:00
Nelson A. de Oliveira 7666e5cf36 Fix memory and descriptor leaks 2010-11-12 21:56:17 +01:00
Simon Budig 5111498e11 More input validation in the psd load plugin
plug-ins/file-psd/psd-load.c: Avoid dereferencing a random pointer
on chn_a[cidx].data[i] when comp_mode is unrecognized.
Spotted by Mikael Magnusson <mikachu@gmail.com>.
2010-10-28 20:34:44 +02:00
Mukund Sivaraman ea29074bf8 plug-ins: Increase size of values array to allow for values[3] access 2010-10-07 17:50:36 +05:30
Michael Natterer bbd7ec6b5c plug-ins: port from gimp_image_add_foo() to gimp_image_insert_foo()
I'm sure some plug-ins need to add their items *not* at the toplevel,
but since making plug-ins really tree-aware is a lot more work than
just fixing insert positions, I went for passing -1 as parent in
almost all cases. And because of laziness...
2010-09-06 11:40:46 +02:00
Michael Schumacher e77dd90fc0 Bug 574018 - Add a manifest to executables
Created a resource file for plug-ins and a rule to link it to them.
The application icon file is smaller than the default one, there's no
point in doubling the size of a plug-in executable just for an icon.

If no problems turn up, this will close the bug.
2010-09-01 08:24:45 +02:00
Michael Natterer c6a2eaa5c4 plug-ins: use new item API instead of deprecated drawable API 2010-07-09 12:27:36 +02:00
Simon Budig 9cc8d78ff3 Harden the PSD plugin against integer overflows.
Issues discovered by Stefan Cornelius, Secunia Research, advisory SA37232
and CVE identifier CVE-2009-3909. Fixes bug #600741.
2009-11-17 11:14:16 +01:00
Simon Budig 0e440cb6d4 Fix the PSD structs to use signed ints for bounding box coordinates. 2009-11-17 01:13:52 +01:00
Martin Nordholts 19fe919dce plug-ins: Port file plug-ins to new export API 2009-07-21 16:03:58 +02:00
Massimo Valentini 48a6b0c59c Bug 585665 – Exporting to PSD with a blank text layer creates a corrupt file
Use write_gchar() to write an empty string, not write_gint16().
2009-07-16 22:21:40 +02:00
Michael Schumacher eed061efbb Adding Microsoft Windows executables to the .gitignore files
All binaries have been added individually.
Old binaries are supposed to show up as untracked.
2009-06-19 00:14:17 +02:00
Martin Nordholts 4d7a6b10d1 Added .gitignore files generated with git svn create-ignore.
svn path=/trunk/; revision=27972
2009-01-31 11:37:44 +00:00
Michael Natterer 4ea1437646 plug-ins/common/*.c plug-ins/color-rotate/color-rotate.c
2009-01-19  Michael Natterer  <mitch@gimp.org>

	* plug-ins/common/*.c
	* plug-ins/color-rotate/color-rotate.c
	* plug-ins/file-bmp/bmp.c
	* plug-ins/file-faxg3/faxg3.c
	* plug-ins/file-fits/fits.c
	* plug-ins/file-fli/fli-gimp.c
	* plug-ins/file-ico/ico.c
	* plug-ins/file-jpeg/jpeg.c
	* plug-ins/file-psd/psd-save.c
	* plug-ins/file-psd/psd.c
	* plug-ins/file-sgi/sgi.c
	* plug-ins/file-uri/uri.c
	* plug-ins/file-xjt/xjt.c
	* plug-ins/flame/flame.c
	* plug-ins/fractal-explorer/fractal-explorer.c
	* plug-ins/gfig/gfig.c
	* plug-ins/gimpressionist/gimp.c
	* plug-ins/gradient-flare/gradient-flare.c
	* plug-ins/help-browser/help-browser.c
	* plug-ins/ifs-compose/ifs-compose.c
	* plug-ins/imagemap/imap_main.c
	* plug-ins/lighting/lighting-main.c
	* plug-ins/map-object/map-object-main.c
	* plug-ins/maze/maze.c
	* plug-ins/metadata/metadata.c
	* plug-ins/pagecurl/pagecurl.c
	* plug-ins/print/print.c
	* plug-ins/pygimp/gimpfu.py
	* plug-ins/script-fu/script-fu-script.c
	* plug-ins/script-fu/script-fu.c
	* plug-ins/selection-to-path/selection-to-path.c
	* plug-ins/twain/twain.c
	* plug-ins/win-snap/winsnap.c: document the "run-mode" parameter
	as we document enums for core procedures.


svn path=/trunk/; revision=27922
2009-01-19 20:11:36 +00:00
Michael Natterer d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
Martin Nordholts 9730756266 Bug 559239 – Error while loading psd-data
* plug-ins/file-psd/psd-layer-res-load.c (load_layer_resource):
Layer resource data should not be padded.

svn path=/trunk/; revision=27680
2008-11-18 19:54:45 +00:00
Martin Nordholts 76ba090647 plug-ins/file-psd/psd-save.c Add support for reading/writing PSDs with the
* plug-ins/file-psd/psd-save.c
* plug-ins/file-psd/psd-util.c: Add support for reading/writing
PSDs with the Linear Dodge layer mode which is the same as GIMPs
Addition layer mode.

svn path=/trunk/; revision=27407
2008-10-25 16:23:19 +00:00
Sven Neumann 2b892dd8b2 Bug 556741 – Alpha layer automatically added (in psd format) but not
2008-10-22  Sven Neumann  <sven@gimp.org>

	Bug 556741 – Alpha layer automatically added (in psd format) but
	not desired

	* plug-ins/file-psd/psd-save.c: applied patch from Dennis Ranke
	that flattens the projection for indexed images.


svn path=/trunk/; revision=27358
2008-10-22 06:47:18 +00:00
Sven Neumann 4d44235e6a fixed handling of empty strings. Don't quit silently, write an error
2008-10-17  Sven Neumann  <sven@gimp.org>

	* plug-ins/file-psd/psd-save.c (xfwrite): fixed handling of 
empty
	strings. Don't quit silently, write an error message to stderr 
at
	least.


svn path=/trunk/; revision=27302
2008-10-17 20:30:07 +00:00
Martin Nordholts c7a49fdeb1 Bug 555587 – PSD file crashes PSD plug-in
* plug-ins/file-psd/psd-load.c (add_merged_image): Handle
img_a->alpha_names being NULL.

svn path=/trunk/; revision=27181
2008-10-08 19:59:36 +00:00
Martin Nordholts c88595fd82 Decrease scope of comp_mode and initialize it.
* plug-ins/file-psd/psd-load.c (add_layers): Decrease scope of
comp_mode and initialize it.

svn path=/trunk/; revision=27176
2008-10-08 18:09:47 +00:00
Martin Nordholts 74402e2eb0 Bug 555222 – PSD Load Plugin: unsupported compression mode
* plug-ins/file-psd/psd-load.c (add_layers): Some PSD files can
have channels where a compression method used for the channel data
is specified, but without any actual channel data. Handle this
case. Fix inspired by patch from Chris Mohler.

svn path=/trunk/; revision=27175
2008-10-08 18:00:48 +00:00
Sven Neumann 01a9a1bce8 don't leak the GimpDrawable.
2008-09-09  Sven Neumann  <sven@gimp.org>

	* plug-ins/file-psd/psd-save.c (create_merged_image): don't leak
	the GimpDrawable.


svn path=/trunk/; revision=26905
2008-09-09 08:01:49 +00:00
Martin Nordholts 9d37148ae9 Formating.
* plug-ins/file-psd/psd-save.c (save_data): Formating.

svn path=/trunk/; revision=26904
2008-09-09 05:12:09 +00:00
Sven Neumann 8e29280319 applied patch from Dennis Ranke as attached to bug #551231. Changes the
2008-09-08  Sven Neumann  <sven@gimp.org>

	* plug-ins/file-psd/psd-save.c: applied patch from Dennis Ranke 
as
	attached to bug #551231. Changes the PSD save plug-in to store
	transparency data in the image data section. Also fixes bug 
#551232
	(saving an indexed image with multiple layers as PSD modifies 
the
	image).


svn path=/trunk/; revision=26902
2008-09-08 20:42:55 +00:00
Martin Nordholts 9ae47b764f Use the new COMP_MODE_SIZE constant instead of a magic number.
* plug-ins/file-psd/psd-load.c (add_merged_image): Use the new
COMP_MODE_SIZE constant instead of a magic number.

svn path=/trunk/; revision=26889
2008-09-06 15:22:30 +00:00
Martin Nordholts 9983251f8a Bug 544939 – PSD Plugin crash (maybe only PSD files created by
Paintshop Pro)

* plug-ins/file-psd/psd-load.c (add_layers): Fix integer underflow
and only attempt to read channel data if there is any channel
data.

svn path=/trunk/; revision=26888
2008-09-06 15:10:40 +00:00
Martin Nordholts a6c74bcf39 Also consider unknown compression methods unsupported. This gives an error
* plug-ins/file-psd/psd-load.c (add_layers): Also consider unknown
compression methods unsupported. This gives an error message
instead of a crash for bug #544939. The PSD loader still fails to
read the correct compression method however.

svn path=/trunk/; revision=26886
2008-09-06 12:21:18 +00:00
Sven Neumann 5e347ed24b plug-ins/file-psd/psd.c plug-ins/file-psd/psd-load.[ch]
2008-08-20  Sven Neumann  <sven@gimp.org>

	* plug-ins/file-psd/psd.c
	* plug-ins/file-psd/psd-load.[ch]
	* plug-ins/file-psd/psd-save.c 
	* plug-ins/file-psd/psd-thumb-load.[ch]: pass error messages 
with
	the return values instead of calling g_message().


svn path=/trunk/; revision=26671
2008-08-20 07:36:25 +00:00
Sven Neumann 3fa2cbe022 changed to use g_set_error().
2008-08-17  Sven Neumann  <sven@gimp.org>

	* plug-ins/file-psd/psd-util.c (psd_set_error): changed to use
	g_set_error().


svn path=/trunk/; revision=26618
2008-08-17 11:14:13 +00:00
Sven Neumann 1277bb4415 changed to use g_error_new_literal().
2008-08-17  Sven Neumann  <sven@gimp.org>

	* plug-ins/file-psd/psd-util.c (psd_set_error): changed to use
	g_error_new_literal().


svn path=/trunk/; revision=26617
2008-08-17 11:04:04 +00:00
Michael Natterer 67a0daf045 change all LIBFOO variables to FOO_LIBS for consistency, could get rid of
2008-08-11  Michael Natterer  <mitch@gimp.org>

	* configure.in: change all LIBFOO variables to FOO_LIBS for
	consistency, could get rid of some variables alltogether since
	PNG_CHECK_MODULES() already defined FOO_LIBS.

	* tools/Makefile.am
	* modules/Makefile.am
	* plug-ins/file-ico/Makefile.am
	* plug-ins/file-jpeg/Makefile.am
	* plug-ins/file-psd/Makefile.am
	* plug-ins/file-xjt/Makefile.am
	* plug-ins/common/plugin-defs.pl
	* plug-ins/common/mkgen.pl: changed accordingly.

	* plug-ins/common/Makefile.am: regenerated.


svn path=/trunk/; revision=26498
2008-08-11 14:40:48 +00:00
Michael Natterer 3d75c95f95 plug-ins/bmp/* plug-ins/faxg3/* plug-ins/fits/* plug-ins/fli/*
2008-08-11  Michael Natterer  <mitch@gimp.org>

	* plug-ins/bmp/*
	* plug-ins/faxg3/*
	* plug-ins/fits/*
	* plug-ins/fli/*
	* plug-ins/ico/*
	* plug-ins/jpeg/*
	* plug-ins/psd/*
	* plug-ins/sgi/*
	* plug-ins/uri/*
	* plug-ins/xjt/*: removed these...

	* plug-ins/file-bmp/*
	* plug-ins/file-faxg3/*
	* plug-ins/file-fits/*
	* plug-ins/file-fli/*
	* plug-ins/file-ico/*
	* plug-ins/file-jpeg/*
	* plug-ins/file-psd/*
	* plug-ins/file-sgi/*
	* plug-ins/file-uri/*
	* plug-ins/file-xjt/*: and moved them here. Changed executable
	names to "file-foo".

	* plug-ins/Makefile.am: changed accordingly.

	* plug-ins/common/*: rename all file plug-ins to file-foo.c. Get
	rid of the names "poppler" and "postscript" and call them
	"file-pdf" and "file-ps" because the conflict with standard
	autofoo targets is gone.

	* plug-ins/common/plugin-defs.pl: changed accordingly.

	* plug-ins/common/mkgen.pl: make sure cflags variables are named
	"PLUG_IN_NAME_CFLAGS" and not "PLUG-IN-NAME_CFLAGS"

	* plug-ins/common/Makefile.am: regenerated.

	* configure.in: change folders and variable names to match above
	changes.


svn path=/trunk/; revision=26494
2008-08-11 10:06:13 +00:00