From e12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 17 Apr 2019 06:17:24 +0200 Subject: ClangFormat: apply to source, most of intern Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat --- source/blender/blenkernel/intern/subdiv.c | 267 ++++++++++++++---------------- 1 file changed, 127 insertions(+), 140 deletions(-) (limited to 'source/blender/blenkernel/intern/subdiv.c') diff --git a/source/blender/blenkernel/intern/subdiv.c b/source/blender/blenkernel/intern/subdiv.c index 48a7cb8f8d2..1f7cb225fc7 100644 --- a/source/blender/blenkernel/intern/subdiv.c +++ b/source/blender/blenkernel/intern/subdiv.c @@ -40,62 +40,56 @@ /* ========================== CONVERSION HELPERS ============================ */ -eSubdivFVarLinearInterpolation -BKE_subdiv_fvar_interpolation_from_uv_smooth(int uv_smooth) +eSubdivFVarLinearInterpolation BKE_subdiv_fvar_interpolation_from_uv_smooth(int uv_smooth) { - switch (uv_smooth) { - case SUBSURF_UV_SMOOTH_NONE: - return SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL; - case SUBSURF_UV_SMOOTH_PRESERVE_CORNERS: - return SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY; - case SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_AND_JUNCTIONS: - return SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS; - case SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_JUNCTIONS_AND_CONCAVE: - return SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE; - case SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES: - return SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES; - case SUBSURF_UV_SMOOTH_ALL: - return SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE; - } - BLI_assert(!"Unknown uv smooth flag"); - return SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL; + switch (uv_smooth) { + case SUBSURF_UV_SMOOTH_NONE: + return SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL; + case SUBSURF_UV_SMOOTH_PRESERVE_CORNERS: + return SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_ONLY; + case SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_AND_JUNCTIONS: + return SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_AND_JUNCTIONS; + case SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_JUNCTIONS_AND_CONCAVE: + return SUBDIV_FVAR_LINEAR_INTERPOLATION_CORNERS_JUNCTIONS_AND_CONCAVE; + case SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES: + return SUBDIV_FVAR_LINEAR_INTERPOLATION_BOUNDARIES; + case SUBSURF_UV_SMOOTH_ALL: + return SUBDIV_FVAR_LINEAR_INTERPOLATION_NONE; + } + BLI_assert(!"Unknown uv smooth flag"); + return SUBDIV_FVAR_LINEAR_INTERPOLATION_ALL; } /* ================================ SETTINGS ================================ */ static bool check_mesh_has_non_quad(const Mesh *mesh) { - for (int poly_index = 0; poly_index < mesh->totpoly; poly_index++) { - const MPoly *poly = &mesh->mpoly[poly_index]; - if (poly->totloop != 4) { - return true; - } - } - return false; + for (int poly_index = 0; poly_index < mesh->totpoly; poly_index++) { + const MPoly *poly = &mesh->mpoly[poly_index]; + if (poly->totloop != 4) { + return true; + } + } + return false; } -void BKE_subdiv_settings_validate_for_mesh(SubdivSettings *settings, - const Mesh *mesh) +void BKE_subdiv_settings_validate_for_mesh(SubdivSettings *settings, const Mesh *mesh) { - if (settings->level != 1) { - return; - } - if (check_mesh_has_non_quad(mesh)) { - settings->level = 2; - } + if (settings->level != 1) { + return; + } + if (check_mesh_has_non_quad(mesh)) { + settings->level = 2; + } } -bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, - const SubdivSettings *settings_b) +bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, const SubdivSettings *settings_b) { - return - (settings_a->is_simple == settings_b->is_simple && - settings_a->is_adaptive == settings_b->is_adaptive && - settings_a->level == settings_b->level && - settings_a->vtx_boundary_interpolation == - settings_b->vtx_boundary_interpolation && - settings_a->fvar_linear_interpolation == - settings_b->fvar_linear_interpolation); + return (settings_a->is_simple == settings_b->is_simple && + settings_a->is_adaptive == settings_b->is_adaptive && + settings_a->level == settings_b->level && + settings_a->vtx_boundary_interpolation == settings_b->vtx_boundary_interpolation && + settings_a->fvar_linear_interpolation == settings_b->fvar_linear_interpolation); } /* ============================== CONSTRUCTION ============================== */ @@ -105,44 +99,42 @@ bool BKE_subdiv_settings_equal(const SubdivSettings *settings_a, Subdiv *BKE_subdiv_new_from_converter(const SubdivSettings *settings, struct OpenSubdiv_Converter *converter) { - SubdivStats stats; - BKE_subdiv_stats_init(&stats); - BKE_subdiv_stats_begin(&stats, SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME); - OpenSubdiv_TopologyRefinerSettings topology_refiner_settings; - topology_refiner_settings.level = settings->level; - topology_refiner_settings.is_adaptive = settings->is_adaptive; - struct OpenSubdiv_TopologyRefiner *osd_topology_refiner = NULL; - if (converter->getNumVertices(converter) != 0) { - osd_topology_refiner = - openSubdiv_createTopologyRefinerFromConverter( - converter, &topology_refiner_settings); - } - else { - /* TODO(sergey): Check whether original geometry had any vertices. - * The thing here is: OpenSubdiv can only deal with faces, but our - * side of subdiv also deals with loose vertices and edges. */ - } - Subdiv *subdiv = MEM_callocN(sizeof(Subdiv), "subdiv from converetr"); - subdiv->settings = *settings; - subdiv->topology_refiner = osd_topology_refiner; - subdiv->evaluator = NULL; - subdiv->displacement_evaluator = NULL; - BKE_subdiv_stats_end(&stats, SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME); - subdiv->stats = stats; - return subdiv; + SubdivStats stats; + BKE_subdiv_stats_init(&stats); + BKE_subdiv_stats_begin(&stats, SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME); + OpenSubdiv_TopologyRefinerSettings topology_refiner_settings; + topology_refiner_settings.level = settings->level; + topology_refiner_settings.is_adaptive = settings->is_adaptive; + struct OpenSubdiv_TopologyRefiner *osd_topology_refiner = NULL; + if (converter->getNumVertices(converter) != 0) { + osd_topology_refiner = openSubdiv_createTopologyRefinerFromConverter( + converter, &topology_refiner_settings); + } + else { + /* TODO(sergey): Check whether original geometry had any vertices. + * The thing here is: OpenSubdiv can only deal with faces, but our + * side of subdiv also deals with loose vertices and edges. */ + } + Subdiv *subdiv = MEM_callocN(sizeof(Subdiv), "subdiv from converetr"); + subdiv->settings = *settings; + subdiv->topology_refiner = osd_topology_refiner; + subdiv->evaluator = NULL; + subdiv->displacement_evaluator = NULL; + BKE_subdiv_stats_end(&stats, SUBDIV_STATS_TOPOLOGY_REFINER_CREATION_TIME); + subdiv->stats = stats; + return subdiv; } -Subdiv *BKE_subdiv_new_from_mesh(const SubdivSettings *settings, - const Mesh *mesh) +Subdiv *BKE_subdiv_new_from_mesh(const SubdivSettings *settings, const Mesh *mesh) { - if (mesh->totvert == 0) { - return NULL; - } - OpenSubdiv_Converter converter; - BKE_subdiv_converter_init_for_mesh(&converter, settings, mesh); - Subdiv *subdiv = BKE_subdiv_new_from_converter(settings, &converter); - BKE_subdiv_converter_free(&converter); - return subdiv; + if (mesh->totvert == 0) { + return NULL; + } + OpenSubdiv_Converter converter; + BKE_subdiv_converter_init_for_mesh(&converter, settings, mesh); + Subdiv *subdiv = BKE_subdiv_new_from_converter(settings, &converter); + BKE_subdiv_converter_free(&converter); + return subdiv; } /* Creation with cached-aware semantic. */ @@ -151,84 +143,79 @@ Subdiv *BKE_subdiv_update_from_converter(Subdiv *subdiv, const SubdivSettings *settings, OpenSubdiv_Converter *converter) { - /* Check if the existing descriptor can be re-used. */ - bool can_reuse_subdiv = true; - if (subdiv != NULL && subdiv->topology_refiner != NULL) { - if (!BKE_subdiv_settings_equal(&subdiv->settings, settings)) { - can_reuse_subdiv = false; - } - else { - BKE_subdiv_stats_begin( - &subdiv->stats, SUBDIV_STATS_TOPOLOGY_COMPARE); - can_reuse_subdiv = openSubdiv_topologyRefinerCompareWithConverter( - subdiv->topology_refiner, converter); - BKE_subdiv_stats_end( - &subdiv->stats, SUBDIV_STATS_TOPOLOGY_COMPARE); - } - } - else { - can_reuse_subdiv = false; - } - if (can_reuse_subdiv) { - return subdiv; - } - /* Create new subdiv. */ - if (subdiv != NULL) { - BKE_subdiv_free(subdiv); - } - return BKE_subdiv_new_from_converter(settings, converter); + /* Check if the existing descriptor can be re-used. */ + bool can_reuse_subdiv = true; + if (subdiv != NULL && subdiv->topology_refiner != NULL) { + if (!BKE_subdiv_settings_equal(&subdiv->settings, settings)) { + can_reuse_subdiv = false; + } + else { + BKE_subdiv_stats_begin(&subdiv->stats, SUBDIV_STATS_TOPOLOGY_COMPARE); + can_reuse_subdiv = openSubdiv_topologyRefinerCompareWithConverter(subdiv->topology_refiner, + converter); + BKE_subdiv_stats_end(&subdiv->stats, SUBDIV_STATS_TOPOLOGY_COMPARE); + } + } + else { + can_reuse_subdiv = false; + } + if (can_reuse_subdiv) { + return subdiv; + } + /* Create new subdiv. */ + if (subdiv != NULL) { + BKE_subdiv_free(subdiv); + } + return BKE_subdiv_new_from_converter(settings, converter); } Subdiv *BKE_subdiv_update_from_mesh(Subdiv *subdiv, const SubdivSettings *settings, const Mesh *mesh) { - OpenSubdiv_Converter converter; - BKE_subdiv_converter_init_for_mesh(&converter, settings, mesh); - subdiv = BKE_subdiv_update_from_converter(subdiv, settings, &converter); - BKE_subdiv_converter_free(&converter); - return subdiv; + OpenSubdiv_Converter converter; + BKE_subdiv_converter_init_for_mesh(&converter, settings, mesh); + subdiv = BKE_subdiv_update_from_converter(subdiv, settings, &converter); + BKE_subdiv_converter_free(&converter); + return subdiv; } /* Memory release. */ void BKE_subdiv_free(Subdiv *subdiv) { - if (subdiv->evaluator != NULL) { - openSubdiv_deleteEvaluator(subdiv->evaluator); - } - if (subdiv->topology_refiner != NULL) { - openSubdiv_deleteTopologyRefiner(subdiv->topology_refiner); - } - BKE_subdiv_displacement_detach(subdiv); - if (subdiv->cache_.face_ptex_offset != NULL) { - MEM_freeN(subdiv->cache_.face_ptex_offset); - } - MEM_freeN(subdiv); + if (subdiv->evaluator != NULL) { + openSubdiv_deleteEvaluator(subdiv->evaluator); + } + if (subdiv->topology_refiner != NULL) { + openSubdiv_deleteTopologyRefiner(subdiv->topology_refiner); + } + BKE_subdiv_displacement_detach(subdiv); + if (subdiv->cache_.face_ptex_offset != NULL) { + MEM_freeN(subdiv->cache_.face_ptex_offset); + } + MEM_freeN(subdiv); } /* =========================== PTEX FACES AND GRIDS ========================= */ int *BKE_subdiv_face_ptex_offset_get(Subdiv *subdiv) { - if (subdiv->cache_.face_ptex_offset != NULL) { - return subdiv->cache_.face_ptex_offset; - } - OpenSubdiv_TopologyRefiner *topology_refiner = subdiv->topology_refiner; - if (topology_refiner == NULL) { - return NULL; - } - const int num_coarse_faces = - topology_refiner->getNumFaces(topology_refiner); - subdiv->cache_.face_ptex_offset = MEM_malloc_arrayN( - num_coarse_faces, sizeof(int), "subdiv face_ptex_offset"); - int ptex_offset = 0; - for (int face_index = 0; face_index < num_coarse_faces; face_index++) { - const int num_ptex_faces = - topology_refiner->getNumFacePtexFaces( - topology_refiner, face_index); - subdiv->cache_.face_ptex_offset[face_index] = ptex_offset; - ptex_offset += num_ptex_faces; - } - return subdiv->cache_.face_ptex_offset; + if (subdiv->cache_.face_ptex_offset != NULL) { + return subdiv->cache_.face_ptex_offset; + } + OpenSubdiv_TopologyRefiner *topology_refiner = subdiv->topology_refiner; + if (topology_refiner == NULL) { + return NULL; + } + const int num_coarse_faces = topology_refiner->getNumFaces(topology_refiner); + subdiv->cache_.face_ptex_offset = MEM_malloc_arrayN( + num_coarse_faces, sizeof(int), "subdiv face_ptex_offset"); + int ptex_offset = 0; + for (int face_index = 0; face_index < num_coarse_faces; face_index++) { + const int num_ptex_faces = topology_refiner->getNumFacePtexFaces(topology_refiner, face_index); + subdiv->cache_.face_ptex_offset[face_index] = ptex_offset; + ptex_offset += num_ptex_faces; + } + return subdiv->cache_.face_ptex_offset; } -- cgit v1.2.3