[gimp] Bug 753980 - manage layer resource block lyvr



commit 8fb017342c9e3a895cd07ae6e2845f716c6f7c0d
Author: Julien Nabet <serval2412 yahoo fr>
Date:   Sun Aug 23 11:35:13 2015 +0200

    Bug 753980 - manage layer resource block lyvr
    
    Layer version appeared in PS7
    Just warns if version is < 70 but nothing more

 plug-ins/file-psd/psd-layer-res-load.c |   35 ++++++++++++++++++++++++++++++++
 plug-ins/file-psd/psd.h                |    1 +
 2 files changed, 36 insertions(+), 0 deletions(-)
---
diff --git a/plug-ins/file-psd/psd-layer-res-load.c b/plug-ins/file-psd/psd-layer-res-load.c
index bd942f0..c8424bf 100644
--- a/plug-ins/file-psd/psd-layer-res-load.c
+++ b/plug-ins/file-psd/psd-layer-res-load.c
@@ -64,6 +64,7 @@
   PSD_LPRP_PROTECT        "lspf"        -       * Protected setting (PS6) *
   PSD_LPRP_COLOR          "lclr"        -       * Sheet color setting (PS6) *
   PSD_LPRP_REF_POINT      "fxrp"        -       * Reference point (PS6) *
+  PSD_LPRP_VERSION        "lyvr"     Loaded     * Layer version (PS7) *
 
   * Vector mask *
   PSD_LMSK_VMASK          "vmsk"        -       * Vector mask setting (PS6) *
@@ -178,6 +179,11 @@ static gint     load_resource_lrfx    (const PSDlayerres     *res_a,
                                       FILE                  *f,
                                       GError               **error);
 
+static gint     load_resource_lyvr    (const PSDlayerres     *res_a,
+                                      PSDlayer              *lyr_a,
+                                      FILE                  *f,
+                                      GError               **error);
+
 /* Public Functions */
 gint
 get_layer_resource_header (PSDlayerres  *res_a,
@@ -261,6 +267,9 @@ load_layer_resource (PSDlayerres  *res_a,
 
       else if (memcmp (res_a->key, PSD_LFX_FX, 4) == 0)
        load_resource_lrfx (res_a, lyr_a, f, error);
+
+      else if (memcmp (res_a->key, PSD_LPRP_VERSION, 4) == 0)
+       load_resource_lyvr (res_a, lyr_a, f, error);
       else
         load_resource_unknown (res_a, lyr_a, f, error);
     }
@@ -812,3 +821,29 @@ load_resource_lrfx (const PSDlayerres  *res_a,
 
   return 0;
 }
+
+static gint
+load_resource_lyvr (const PSDlayerres  *res_a,
+                    PSDlayer           *lyr_a,
+                    FILE               *f,
+                    GError            **error)
+{
+  gint32    version;
+  if (fread (&version, 4, 1, f) < 1)
+    {
+      psd_set_error (feof (f), errno, error);
+      return -1;
+    }
+  version = GINT32_FROM_BE(version);
+
+  /* minimum value is 70 according to specs but there's no reason to
+   * stop the loading
+   */
+  if (version < 70)
+    {
+      g_message ('Invalid version layer');
+    }
+
+  IFDBG(2) g_debug ("Process layer resource block %.4s: Version effects", res_a->key);
+
+}
diff --git a/plug-ins/file-psd/psd.h b/plug-ins/file-psd/psd.h
index aff8c5b..6002cb5 100644
--- a/plug-ins/file-psd/psd.h
+++ b/plug-ins/file-psd/psd.h
@@ -95,6 +95,7 @@
 #define PSD_LPRP_PROTECT        "lspf"          /* Protected setting (PS6) */
 #define PSD_LPRP_COLOR          "lclr"          /* Sheet color setting (PS6) */
 #define PSD_LPRP_REF_POINT      "fxrp"          /* Reference point (PS6) */
+#define PSD_LPRP_VERSION        "lyvr"          /* Layer version (PS7) */
 
 /* Vector mask */
 #define PSD_LMSK_VMASK          "vmsk"          /* Vector mask setting (PS6) */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]