Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/customdata.c
| Context not available. | |||||
| #include "bmesh.h" | #include "bmesh.h" | ||||
| #include "CLG_log.h" | |||||
| /* only for customdata_data_transfer_interp_normal_normals */ | /* only for customdata_data_transfer_interp_normal_normals */ | ||||
| #include "data_transfer_intern.h" | #include "data_transfer_intern.h" | ||||
| Context not available. | |||||
| /* ensure typemap size is ok */ | /* ensure typemap size is ok */ | ||||
| BLI_STATIC_ASSERT(ARRAY_SIZE(((CustomData *)NULL)->typemap) == CD_NUMTYPES, "size mismatch"); | BLI_STATIC_ASSERT(ARRAY_SIZE(((CustomData *)NULL)->typemap) == CD_NUMTYPES, "size mismatch"); | ||||
| static CLG_LogRef LOG = { "bke.customdata" }; | |||||
| /********************* Layer type information **********************/ | /********************* Layer type information **********************/ | ||||
| typedef struct LayerTypeInfo { | typedef struct LayerTypeInfo { | ||||
| Context not available. | |||||
| d[i].disps = MEM_calloc_arrayN(d[i].totdisp, 3 * sizeof(float), "mdisps read"); | d[i].disps = MEM_calloc_arrayN(d[i].totdisp, 3 * sizeof(float), "mdisps read"); | ||||
| if (!cdf_read_data(cdf, d[i].totdisp * 3 * sizeof(float), d[i].disps)) { | if (!cdf_read_data(cdf, d[i].totdisp * 3 * sizeof(float), d[i].disps)) { | ||||
| printf("failed to read multires displacement %d/%d %d\n", i, count, d[i].totdisp); | CLOG_ERROR(&LOG, "failed to read multires displacement %d/%d %d", i, count, d[i].totdisp); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| } | } | ||||
| Context not available. | |||||
| for (i = 0; i < count; ++i) { | for (i = 0; i < count; ++i) { | ||||
| if (!cdf_write_data(cdf, d[i].totdisp * 3 * sizeof(float), d[i].disps)) { | if (!cdf_write_data(cdf, d[i].totdisp * 3 * sizeof(float), d[i].disps)) { | ||||
| printf("failed to write multires displacement %d/%d %d\n", i, count, d[i].totdisp); | CLOG_ERROR(&LOG, "failed to write multires displacement %d/%d %d", i, count, d[i].totdisp); | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| } | } | ||||
| Context not available. | |||||
| if (!count || !src_data || !dst_data) { | if (!count || !src_data || !dst_data) { | ||||
| if (count && !(src_data == NULL && dst_data == NULL)) { | if (count && !(src_data == NULL && dst_data == NULL)) { | ||||
| printf("%s: warning null data for %s type (%p --> %p), skipping\n", | CLOG_WARN(&LOG, "null data for %s type (%p --> %p), skipping", | ||||
| __func__, layerType_getName(source->layers[src_i].type), | layerType_getName(source->layers[src_i].type), | ||||
| (void *)src_data, (void *)dst_data); | (void *)src_data, (void *)dst_data); | ||||
| } | } | ||||
| return; | return; | ||||
| } | } | ||||
| Context not available. | |||||
| CustomDataLayer *layer = &data->layers[i]; | CustomDataLayer *layer = &data->layers[i]; | ||||
| if (layer->flag & CD_FLAG_NOCOPY) { /* Layers with this flag set are not written to file. */ | if (layer->flag & CD_FLAG_NOCOPY) { /* Layers with this flag set are not written to file. */ | ||||
| data->totlayer--; | data->totlayer--; | ||||
| /* printf("%s: skipping layer %p (%s)\n", __func__, layer, layer->name); */ | /* CLOG_WARN(&LOG, "skipping layer %p (%s)", layer, layer->name); */ | ||||
| } | } | ||||
| else { | else { | ||||
| if (UNLIKELY((size_t)j >= write_layers_size)) { | if (UNLIKELY((size_t)j >= write_layers_size)) { | ||||
| Context not available. | |||||
| cdf = cdf_create(CDF_TYPE_MESH); | cdf = cdf_create(CDF_TYPE_MESH); | ||||
| if (!cdf_read_open(cdf, filename)) { | if (!cdf_read_open(cdf, filename)) { | ||||
| cdf_free(cdf); | cdf_free(cdf); | ||||
| fprintf(stderr, "Failed to read %s layer from %s.\n", layerType_getName(layer->type), filename); | CLOG_ERROR(&LOG, "Failed to read %s layer from %s.", layerType_getName(layer->type), filename); | ||||
| return; | return; | ||||
| } | } | ||||
| Context not available. | |||||
| } | } | ||||
| if (!cdf_write_open(cdf, filename)) { | if (!cdf_write_open(cdf, filename)) { | ||||
| fprintf(stderr, "Failed to open %s for writing.\n", filename); | CLOG_ERROR(&LOG, "Failed to open %s for writing.", filename); | ||||
| cdf_free(cdf); | cdf_free(cdf); | ||||
| return; | return; | ||||
| } | } | ||||
| Context not available. | |||||
| } | } | ||||
| if (i != data->totlayer) { | if (i != data->totlayer) { | ||||
| fprintf(stderr, "Failed to write data to %s.\n", filename); | CLOG_ERROR(&LOG, "Failed to write data to %s.", filename); | ||||
| cdf_write_close(cdf); | cdf_write_close(cdf); | ||||
| cdf_free(cdf); | cdf_free(cdf); | ||||
| return; | return; | ||||
| Context not available. | |||||
| COPY_BIT_FLAG(uint64_t, dst, src, flag); | COPY_BIT_FLAG(uint64_t, dst, src, flag); | ||||
| break; | break; | ||||
| default: | default: | ||||
| //printf("ERROR %s: Unknown flags-container size (%zu)\n", __func__, datasize); | //CLOG_ERROR(&LOG, "Unknown flags-container size (%zu)", datasize); | ||||
| break; | break; | ||||
| } | } | ||||
| Context not available. | |||||
| case 8: | case 8: | ||||
| return ((*((uint64_t *)data) & ((uint64_t)flag)) != 0); | return ((*((uint64_t *)data) & ((uint64_t)flag)) != 0); | ||||
| default: | default: | ||||
| //printf("ERROR %s: Unknown flags-container size (%zu)\n", __func__, datasize); | //CLOG_ERROR(&LOG, "Unknown flags-container size (%zu)", datasize); | ||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| Context not available. | |||||