alco / alco/psdump

fix/psd_parser_layer_mask_and_adjustment

Abierto
#5 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C
Estrellas
84
Forks
22
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

layer_mask.c line:659

```
// LAYER MASK / ADJUSTMENT LAYER DATA
// Size of the data: 36, 20, or 0. If zero, the following fields are not present
size = psd_stream_get_int(context);
//psd_assert(size == 36 || size == 20 || size == 0);
if(size > 0)
{
// Rectangle enclosing layer mask: Top, left, bottom, right
layer->layer_mask_info.top = psd_stream_get_int(context);
layer->layer_mask_info.left = psd_stream_get_int(context);
layer->layer_mask_info.bottom = psd_stream_get_int(context);
layer->layer_mask_info.right = psd_stream_get_int(context);
layer->layer_mask_info.width = layer->layer_mask_info.right - layer->layer_mask_info.left;
layer->layer_mask_info.height = layer->layer_mask_info.bottom - layer->layer_mask_info.top;

// Default color. 0 or 255
layer->layer_mask_info.default_color = psd_stream_get_char(context);
psd_assert(layer->layer_mask_info.default_color == 0 ||
layer->layer_mask_info.default_color == 255);

// Flags
flags = psd_stream_get_char(context);
// bit 0 = position relative to layer
layer->layer_mask_info.relative = flags & 0x01;
// bit 1 = layer mask disabled
layer->layer_mask_info.disabled = (flags & (0x01 << 1)) > 0;
// bit 2 = invert layer mask when blending
layer->layer_mask_info.invert = (flags & (0x01 << 2)) > 0;

psd_bool some3 = (flags & (0x01 << 3)) > 0;
psd_bool some4 = (flags & (0x01 << 4)) > 0;

if(size == 20)
{
// Padding. Only present if size = 20. Otherwise the following is present
psd_stream_get_short(context);
}
else
{
if( some4 == 1 )
{
psd_uchar mask_parameter = psd_stream_get_char( context );

if( (mask_parameter & (0x01 << 0)) > 0 )
{
psd_stream_get_char( context );
}

if( (mask_parameter & (0x01 << 1)) > 0 )
{
psd_stream_get_double( context );
}

if( (mask_parameter & (0x01 << 2)) > 0 )
{
psd_stream_get_char( context );
}

if( (mask_parameter & (0x01 << 3)) > 0 )
{
psd_stream_get_double( context );
}
}
else
{
// Real Flags. Same as Flags information above.
flags = psd_stream_get_char( context );
// bit 0 = position relative to layer
layer->layer_mask_info.relative = flags & 0x01;
// bit 1 = layer mask disabled
layer->layer_mask_info.disabled = (flags & (0x01 << 1)) > 0;
// bit 2 = invert layer mask when blending
layer->layer_mask_info.invert = (flags & (0x01 << 2)) > 0;

// Real user mask background. 0 or 255. Same as Flags information above.
layer->layer_mask_info.default_color = psd_stream_get_char( context );
psd_assert( layer->layer_mask_info.default_color == 0 ||
layer->layer_mask_info.default_color == 255 );

// Rectangle enclosing layer mask: Top, left, bottom, right.
layer->layer_mask_info.top = psd_stream_get_int( context );
layer->layer_mask_info.left = psd_stream_get_int( context );
layer->layer_mask_info.bottom = psd_stream_get_int( context );
layer->layer_mask_info.right = psd_stream_get_int( context );
layer->layer_mask_info.width = layer->layer_mask_info.right - layer->layer_mask_info.left;
layer->layer_mask_info.height = layer->layer_mask_info.bottom - layer->layer_mask_info.top;
}
}
}
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.