psdump icon indicating copy to clipboard operation
psdump copied to clipboard

psd_setup_layer_group

Open irov opened this issue 8 years ago • 0 comments

    // 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;
        }
    }
}

irov avatar Aug 03 '16 15:08 irov