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
Name | Description |
---|
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
Name | Description |
---|
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
Name | Description |
---|
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
Name | Description |
---|
const StructureKey | Identifies 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