psdump
psdump copied to clipboard
psd_setup_layer_group
// group layer
//for(i = context->layer_count - 1, group_layer = NULL; i >= 0; i --)
//{
// layer = &context->layer_records[i];
// switch(layer->layer_type)
// {
// case psd_layer_type_normal:
// layer->group_layer = group_layer;
// break;
// case psd_layer_type_folder:
// layer->group_layer = group_layer;
// group_layer = layer;
// break;
// case psd_layer_type_hidden:
// group_layer = NULL;
// break;
// }
//}
replace to
psd_short iterator = 0;
psd_setup_layer_group(context->layer_records, NULL, &iterator, context->layer_count);
and add function
static void psd_setup_layer_group(psd_layer_record * _records, psd_layer_record * _group, psd_short * iterator, psd_short count)
{
while((*iterator)++ != count)
{
psd_layer_record * layer = _records + (count - (*iterator));
switch(layer->layer_type)
{
case psd_layer_type_normal:
layer->group_layer = _group;
break;
case psd_layer_type_folder:
layer->group_layer = _group;
psd_setup_layer_group(_records, layer, iterator, count);
break;
case psd_layer_type_hidden:
return;
break;
}
}
}