Class ObjectArrayStructure

ObjectArrayStructure class

Define la clase ObjectArrayStructure que normalmente contieneUnitArrayStructure array. Se utiliza en los recursos del archivo PSD, como PlLd Resource y SoLd Resource.

public sealed class ObjectArrayStructure : OSTypeStructure

Constructores

NombreDescripción
ObjectArrayStructure(string, string, OSTypeStructure[])Inicializa una nueva instancia delObjectArrayStructure clase.
ObjectArrayStructure(int, ClassID, ClassID, string, OSTypeStructure[])Inicializa una nueva instancia delObjectArrayStructure clase.

Propiedades

NombreDescripción
ClassID { get; set; }Obtiene o establece el ID de clase de la matriz de objetos.
ClassName { get; set; }Obtiene o establece el nombre de clase de la matriz de objetos.
override Key { get; }Obtiene la clave de estructura de la matriz de objetos.
KeyName { get; set; }Obtiene o establece el nombre de la clave.
override Length { get; }Obtiene elOSTypeStructure longitud en bytes.
StructureCount { get; }Obtiene el recuento de la subestructura de la matriz de objetos.
Structures { get; set; }Obtiene o establece una copia de una matriz de estructuras.

Métodos

NombreDescripción
virtual GetHeaderLength()Obtiene la longitud del encabezado.
Save(StreamContainer)Guarda la estructura en el contenedor de flujo especificado.
SaveWithoutKeyName(StreamContainer)Guarda la estructura en el contenedor de flujo especificado.

Campos

NombreDescripción
const StructureKeyIdentifica la clave de estructura ‘ObAr’.

Ejemplos

El código siguiente demuestra la compatibilidad con las firmas ObAr y UnFl.

[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);
}

Ver también