#!/usr/bin/env python3

import psd_tools
import os
import sys

def getLayers(psd):
    allLayers = []
    def dfs(layer, path=''):
        if layer.is_group():
            for i in layer:
                dfs(i, path + layer.name + '/')
        else:
            a, b, c, d = layer.bbox
            npdata = layer.numpy()
            npdata[:, :, 0], npdata[:, :, 2] = npdata[:, :, 2].copy(), npdata[:, :, 0].copy()
            allLayers.append({'name': path + layer.name, 'location': (b, a, d, c), 'npdata': npdata})
    for layer in psd:
        dfs(layer)
    return allLayers, psd.size


testFilename = "2layers.psd"
testFilepath = [ os.path.join("tests", "psd_files"),
                 os.path.join("..", "..", "tests", "psd_files") ]

img = None
for p in testFilepath:
    try:
        img = psd_tools.PSDImage.open(os.path.join(p, testFilename))
    except:
        continue
    break

if (not img):
    print ("Fail to load test file");
    sys.exit(1)
    
layers, size = getLayers(img)

assert size == (101, 55), "size doesn't match"
assert len(layers) == 2, "number of layers doesn't match"



