Class ObjectArrayStructure

ObjectArrayStructure class

Defines the ObjectArrayStructure class that usually holds UnitArrayStructure array. It is used in the PSD file resources, such as PlLd Resource and SoLd Resource.

public sealed class ObjectArrayStructure : OSTypeStructure

Constructors

NameDescription
ObjectArrayStructure(string, string, OSTypeStructure[])Initializes a new instance of the ObjectArrayStructure class.
ObjectArrayStructure(int, ClassID, ClassID, string, OSTypeStructure[])Initializes a new instance of the ObjectArrayStructure class.

Properties

NameDescription
ClassID { get; set; }Gets or sets the object array class ID.
ClassName { get; set; }Gets or sets the object array class name.
override Key { get; }Gets the object array structure key.
KeyName { get; set; }Gets or sets the key name.
override Length { get; }Gets the OSTypeStructure length in bytes.
StructureCount { get; }Gets the object array substructure count.
Structures { get; set; }Gets or sets a copy of an array of structures.

Methods

NameDescription
virtual GetHeaderLength()Gets the header length.
Save(StreamContainer)Saves the structure to the specified stream container.
SaveWithoutKeyName(StreamContainer)Saves the structure to the specified stream container.

Fields

NameDescription
const StructureKeyIdentifies the ‘ObAr’ structure key.

Examples

The following code demonstrates the support of the ObAr and UnFl signatures.

[C#]

void AssertAreEqual(object actual, object expected)
{
    if (!object.Equals(actual, expected))
    {
        throw new FormatException(string.Format("Actual value {0} are not equal to expected {1}.", actual, expected));
    }
}

var sourceFilePath = "LayeredSmartObjects8bit2.psd";
using (PsdImage image = (PsdImage)Image.Load(sourceFilePath))
{
    UnitArrayStructure verticalStructure = null;
    foreach (Layer imageLayer in image.Layers)
    {
        foreach (var imageResource in imageLayer.Resources)
        {
            var resource = imageResource as PlLdResource;
            if (resource != null && resource.IsCustom)
            {
                foreach (OSTypeStructure structure in resource.Items)
                {
                    if (structure.KeyName.ClassName == "customEnvelopeWarp")
                    {
                        AssertAreEqual(typeof(DescriptorStructure), structure.GetType());
                        var custom = (DescriptorStructure)structure;
                        AssertAreEqual(custom.Structures.Length, 1);
                        var mesh = custom.Structures[0];
                        AssertAreEqual(typeof(ObjectArrayStructure), mesh.GetType());
                        var meshObjectArray = (ObjectArrayStructure)mesh;
                        AssertAreEqual(meshObjectArray.Structures.Length, 2);
                        var vertical = meshObjectArray.Structures[1];
                        AssertAreEqual(typeof(UnitArrayStructure), vertical.GetType());
                        verticalStructure = (UnitArrayStructure)vertical;
                        AssertAreEqual(verticalStructure.UnitType, UnitTypes.Pixels);
                        AssertAreEqual(verticalStructure.ValueCount, 16);

                        break;
                    }
                }
            }
        }
    }

    AssertAreEqual(true, verticalStructure != null);
}

See Also