From c776f3ea67a742c11533f00c1e147453039b6e44 Mon Sep 17 00:00:00 2001
From: Per Hedbor <ph@opera.com>
Date: Tue, 2 Nov 1999 10:46:43 +0100
Subject: [PATCH] Now it actually works for non-layer images as well

Rev: lib/modules/_Image_PSD.pmod:1.7
---
 lib/modules/_Image_PSD.pmod | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/lib/modules/_Image_PSD.pmod b/lib/modules/_Image_PSD.pmod
index e55e902b9e..df5486f502 100644
--- a/lib/modules/_Image_PSD.pmod
+++ b/lib/modules/_Image_PSD.pmod
@@ -216,9 +216,6 @@ mapping __decode( mapping|string what, mapping|void options )
 array(object) decode_background( mapping data )
 {
   object img;
-  if( data->depth == 1 &&
-      data->mode != Greyscale )
-    return ({ 0, 0 });
 
   if( data->image_data )
     img = ___decode_image_data(data->width,       data->height, 
@@ -278,23 +275,27 @@ array decode_layers( string|mapping what, mapping|void opts )
   
   mapping lopts = ([ "tiled":1, ]);
 
-   if( opts->background )
-   {
-     lopts->image = Image.Image( 32, 32, opts->background );
-     lopts->alpha = Image.Image( 32, 32, Image.Color.white );
-     lopts->alpha_value = 1.0;
-   }
-
-  [object img,object alpha] = decode_background( what );
-  if( img )
+  if( opts->background )
   {
-    lopts->image = img;
-    if( alpha )
-      lopts->alpha = alpha;
-    else
-      lopts->alpha = 0;
+    lopts->image = Image.Image( 32, 32, opts->background );
+    lopts->alpha = Image.Image( 32, 32, Image.Color.white );
     lopts->alpha_value = 1.0;
   }
+
+  object img, alpha;
+  if( !what->layers || !sizeof(what->layers))
+  {
+    [ img, alpha ] = decode_background( what );
+    if( img )
+    {
+      lopts->image = img;
+      if( alpha )
+        lopts->alpha = alpha;
+      else
+        lopts->alpha = 0;
+      lopts->alpha_value = 1.0;
+    }
+  }
   array layers;
   if( lopts->image )
     layers = ({ Image.Layer( lopts ) });
-- 
GitLab