Blender  V3.3
subdiv_ccg_material.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2018 Blender Foundation. All rights reserved. */
3 
8 #include "BKE_subdiv_ccg.h"
9 
10 #include "MEM_guardedalloc.h"
11 
12 #include "DNA_mesh_types.h"
13 #include "DNA_meshdata_types.h"
14 
15 typedef struct CCGMaterialFromMeshData {
16  const Mesh *mesh;
18 
20  SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator, const int coarse_face_index)
21 {
22  CCGMaterialFromMeshData *data = (CCGMaterialFromMeshData *)material_flags_evaluator->user_data;
23  const Mesh *mesh = data->mesh;
24  BLI_assert(coarse_face_index < mesh->totpoly);
25  const MPoly *mpoly = mesh->mpoly;
26  const MPoly *poly = &mpoly[coarse_face_index];
27  DMFlagMat material_flags;
28  material_flags.flag = poly->flag;
29  material_flags.mat_nr = poly->mat_nr;
30  return material_flags;
31 }
32 
34  SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator)
35 {
36  MEM_freeN(material_flags_evaluator->user_data);
37 }
38 
40  SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator, const Mesh *mesh)
41 {
43  "ccg material eval");
44  data->mesh = mesh;
45  material_flags_evaluator->eval_material_flags = subdiv_ccg_material_flags_eval;
46  material_flags_evaluator->free = subdiv_ccg_material_flags_free;
47  material_flags_evaluator->user_data = data;
48 }
#define BLI_assert(a)
Definition: BLI_assert.h:46
Read Guarded memory(de)allocation.
void(* MEM_freeN)(void *vmemh)
Definition: mallocn.c:27
void *(* MEM_mallocN)(size_t len, const char *str)
Definition: mallocn.c:33
short mat_nr
struct MPoly * mpoly
DMFlagMat(* eval_material_flags)(struct SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator, int coarse_face_index)
void(* free)(struct SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator)
struct CCGMaterialFromMeshData CCGMaterialFromMeshData
void BKE_subdiv_ccg_material_flags_init_from_mesh(SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator, const Mesh *mesh)
static void subdiv_ccg_material_flags_free(SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator)
static DMFlagMat subdiv_ccg_material_flags_eval(SubdivCCGMaterialFlagsEvaluator *material_flags_evaluator, const int coarse_face_index)