remove the pointer from BLI_bitmap's typedef,
hides that an arg passed is really an array which may be modified by other functions.
This commit is contained in:
		@@ -223,7 +223,7 @@ typedef struct PBVHVertexIter {
 | 
				
			|||||||
	struct CCGElem **grids;
 | 
						struct CCGElem **grids;
 | 
				
			||||||
	struct CCGElem *grid;
 | 
						struct CCGElem *grid;
 | 
				
			||||||
	struct CCGKey *key;
 | 
						struct CCGKey *key;
 | 
				
			||||||
	BLI_bitmap *grid_hidden, gh;
 | 
						BLI_bitmap **grid_hidden, *gh;
 | 
				
			||||||
	int *grid_indices;
 | 
						int *grid_indices;
 | 
				
			||||||
	int totgrid;
 | 
						int totgrid;
 | 
				
			||||||
	int gridsize;
 | 
						int gridsize;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2190,7 +2190,7 @@ void BKE_editmesh_statvis_calc(BMEditMesh *em, DerivedMesh *dm,
 | 
				
			|||||||
struct CageUserData {
 | 
					struct CageUserData {
 | 
				
			||||||
	int totvert;
 | 
						int totvert;
 | 
				
			||||||
	float (*cos_cage)[3];
 | 
						float (*cos_cage)[3];
 | 
				
			||||||
	BLI_bitmap visit_bitmap;
 | 
						BLI_bitmap *visit_bitmap;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void cage_mapped_verts_callback(void *userData, int index, const float co[3],
 | 
					static void cage_mapped_verts_callback(void *userData, int index, const float co[3],
 | 
				
			||||||
@@ -2207,7 +2207,7 @@ static void cage_mapped_verts_callback(void *userData, int index, const float co
 | 
				
			|||||||
float (*BKE_editmesh_vertexCos_get(BMEditMesh *em, Scene *scene, int *r_numVerts))[3]
 | 
					float (*BKE_editmesh_vertexCos_get(BMEditMesh *em, Scene *scene, int *r_numVerts))[3]
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	DerivedMesh *cage, *final;
 | 
						DerivedMesh *cage, *final;
 | 
				
			||||||
	BLI_bitmap visit_bitmap;
 | 
						BLI_bitmap *visit_bitmap;
 | 
				
			||||||
	struct CageUserData data;
 | 
						struct CageUserData data;
 | 
				
			||||||
	float (*cos_cage)[3];
 | 
						float (*cos_cage)[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -105,15 +105,15 @@ void multires_customdata_delete(Mesh *me)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Grid hiding **/
 | 
					/** Grid hiding **/
 | 
				
			||||||
static BLI_bitmap multires_mdisps_upsample_hidden(BLI_bitmap lo_hidden,
 | 
					static BLI_bitmap *multires_mdisps_upsample_hidden(BLI_bitmap *lo_hidden,
 | 
				
			||||||
                                                  int lo_level,
 | 
					                                                   int lo_level,
 | 
				
			||||||
                                                  int hi_level,
 | 
					                                                   int hi_level,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                                  /* assumed to be at hi_level (or
 | 
					                                                   /* assumed to be at hi_level (or
 | 
				
			||||||
                                                   *  null) */
 | 
					                                                    *  null) */
 | 
				
			||||||
                                                  BLI_bitmap prev_hidden)
 | 
					                                                   BLI_bitmap *prev_hidden)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BLI_bitmap subd;
 | 
						BLI_bitmap *subd;
 | 
				
			||||||
	int hi_gridsize = ccg_gridsize(hi_level);
 | 
						int hi_gridsize = ccg_gridsize(hi_level);
 | 
				
			||||||
	int lo_gridsize = ccg_gridsize(lo_level);
 | 
						int lo_gridsize = ccg_gridsize(lo_level);
 | 
				
			||||||
	int yh, xh, xl, yl, xo, yo, hi_ndx;
 | 
						int yh, xh, xl, yl, xo, yo, hi_ndx;
 | 
				
			||||||
@@ -168,11 +168,11 @@ static BLI_bitmap multires_mdisps_upsample_hidden(BLI_bitmap lo_hidden,
 | 
				
			|||||||
	return subd;
 | 
						return subd;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static BLI_bitmap multires_mdisps_downsample_hidden(BLI_bitmap old_hidden,
 | 
					static BLI_bitmap *multires_mdisps_downsample_hidden(BLI_bitmap *old_hidden,
 | 
				
			||||||
                                                    int old_level,
 | 
					                                                     int old_level,
 | 
				
			||||||
                                                    int new_level)
 | 
					                                                     int new_level)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BLI_bitmap new_hidden;
 | 
						BLI_bitmap *new_hidden;
 | 
				
			||||||
	int new_gridsize = ccg_gridsize(new_level);
 | 
						int new_gridsize = ccg_gridsize(new_level);
 | 
				
			||||||
	int old_gridsize = ccg_gridsize(old_level);
 | 
						int old_gridsize = ccg_gridsize(old_level);
 | 
				
			||||||
	int x, y, factor, old_value;
 | 
						int x, y, factor, old_value;
 | 
				
			||||||
@@ -200,7 +200,7 @@ static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm,
 | 
				
			|||||||
                                            Mesh *me, int level)
 | 
					                                            Mesh *me, int level)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
 | 
						const MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
 | 
				
			||||||
	BLI_bitmap *grid_hidden = ccgdm->gridHidden;
 | 
						BLI_bitmap **grid_hidden = ccgdm->gridHidden;
 | 
				
			||||||
	int *gridOffset;
 | 
						int *gridOffset;
 | 
				
			||||||
	int i, j;
 | 
						int i, j;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
@@ -210,7 +210,7 @@ static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm,
 | 
				
			|||||||
		for (j = 0; j < me->mpoly[i].totloop; j++) {
 | 
							for (j = 0; j < me->mpoly[i].totloop; j++) {
 | 
				
			||||||
			int g = gridOffset[i] + j;
 | 
								int g = gridOffset[i] + j;
 | 
				
			||||||
			const MDisps *md = &mdisps[g];
 | 
								const MDisps *md = &mdisps[g];
 | 
				
			||||||
			BLI_bitmap gh = md->hidden;
 | 
								BLI_bitmap *gh = md->hidden;
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
			if (gh) {
 | 
								if (gh) {
 | 
				
			||||||
				grid_hidden[g] =
 | 
									grid_hidden[g] =
 | 
				
			||||||
@@ -224,7 +224,7 @@ static void multires_output_hidden_to_ccgdm(CCGDerivedMesh *ccgdm,
 | 
				
			|||||||
 * the current level of md.hidden) */
 | 
					 * the current level of md.hidden) */
 | 
				
			||||||
static void multires_mdisps_subdivide_hidden(MDisps *md, int new_level)
 | 
					static void multires_mdisps_subdivide_hidden(MDisps *md, int new_level)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BLI_bitmap subd;
 | 
						BLI_bitmap *subd;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	BLI_assert(md->hidden);
 | 
						BLI_assert(md->hidden);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -647,7 +647,7 @@ static void multires_del_higher(MultiresModifierData *mmd, Object *ob, int lvl)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
					multires_copy_grid(ndisps, hdisps, nsize, hsize);
 | 
										multires_copy_grid(ndisps, hdisps, nsize, hsize);
 | 
				
			||||||
					if (mdisp->hidden) {
 | 
										if (mdisp->hidden) {
 | 
				
			||||||
						BLI_bitmap gh =
 | 
											BLI_bitmap *gh =
 | 
				
			||||||
						    multires_mdisps_downsample_hidden(mdisp->hidden,
 | 
											    multires_mdisps_downsample_hidden(mdisp->hidden,
 | 
				
			||||||
						                                      mdisp->level,
 | 
											                                      mdisp->level,
 | 
				
			||||||
						                                      lvl);
 | 
											                                      lvl);
 | 
				
			||||||
@@ -1251,7 +1251,7 @@ void multires_modifier_update_mdisps(struct DerivedMesh *dm)
 | 
				
			|||||||
void multires_modifier_update_hidden(DerivedMesh *dm)
 | 
					void multires_modifier_update_hidden(DerivedMesh *dm)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm;
 | 
						CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm;
 | 
				
			||||||
	BLI_bitmap *grid_hidden = ccgdm->gridHidden;
 | 
						BLI_bitmap **grid_hidden = ccgdm->gridHidden;
 | 
				
			||||||
	Mesh *me = ccgdm->multires.ob->data;
 | 
						Mesh *me = ccgdm->multires.ob->data;
 | 
				
			||||||
	MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
 | 
						MDisps *mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS);
 | 
				
			||||||
	int totlvl = ccgdm->multires.totlvl;
 | 
						int totlvl = ccgdm->multires.totlvl;
 | 
				
			||||||
@@ -1262,7 +1262,7 @@ void multires_modifier_update_hidden(DerivedMesh *dm)
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		for (i = 0; i < me->totloop; i++) {
 | 
							for (i = 0; i < me->totloop; i++) {
 | 
				
			||||||
			MDisps *md = &mdisps[i];
 | 
								MDisps *md = &mdisps[i];
 | 
				
			||||||
			BLI_bitmap gh = grid_hidden[i];
 | 
								BLI_bitmap *gh = grid_hidden[i];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!gh && md->hidden) {
 | 
								if (!gh && md->hidden) {
 | 
				
			||||||
				MEM_freeN(md->hidden);
 | 
									MEM_freeN(md->hidden);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -538,7 +538,7 @@ void BKE_pbvh_build_mesh(PBVH *bvh, MFace *faces, MVert *verts, int totface, int
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Do a full rebuild with on Grids data structure */
 | 
					/* Do a full rebuild with on Grids data structure */
 | 
				
			||||||
void BKE_pbvh_build_grids(PBVH *bvh, CCGElem **grids, DMGridAdjacency *gridadj,
 | 
					void BKE_pbvh_build_grids(PBVH *bvh, CCGElem **grids, DMGridAdjacency *gridadj,
 | 
				
			||||||
                          int totgrid, CCGKey *key, void **gridfaces, DMFlagMat *flagmats, BLI_bitmap *grid_hidden)
 | 
					                          int totgrid, CCGKey *key, void **gridfaces, DMFlagMat *flagmats, BLI_bitmap **grid_hidden)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BBC *prim_bbc = NULL;
 | 
						BBC *prim_bbc = NULL;
 | 
				
			||||||
	BB cb;
 | 
						BB cb;
 | 
				
			||||||
@@ -1253,7 +1253,7 @@ void BKE_pbvh_bounding_box(const PBVH *bvh, float min[3], float max[3])
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BLI_bitmap *BKE_pbvh_grid_hidden(const PBVH *bvh)
 | 
					BLI_bitmap **BKE_pbvh_grid_hidden(const PBVH *bvh)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BLI_assert(bvh->type == PBVH_GRIDS);
 | 
						BLI_assert(bvh->type == PBVH_GRIDS);
 | 
				
			||||||
	return bvh->grid_hidden;
 | 
						return bvh->grid_hidden;
 | 
				
			||||||
@@ -1469,7 +1469,7 @@ static int pbvh_grids_node_raycast(PBVH *bvh, PBVHNode *node,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < totgrid; ++i) {
 | 
						for (i = 0; i < totgrid; ++i) {
 | 
				
			||||||
		CCGElem *grid = bvh->grids[node->prim_indices[i]];
 | 
							CCGElem *grid = bvh->grids[node->prim_indices[i]];
 | 
				
			||||||
		BLI_bitmap gh;
 | 
							BLI_bitmap *gh;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!grid)
 | 
							if (!grid)
 | 
				
			||||||
			continue;
 | 
								continue;
 | 
				
			||||||
@@ -1664,7 +1664,7 @@ void BKE_pbvh_draw(PBVH *bvh, float (*planes)[4], float (*face_nors)[3],
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BKE_pbvh_grids_update(PBVH *bvh, CCGElem **grids, DMGridAdjacency *gridadj, void **gridfaces,
 | 
					void BKE_pbvh_grids_update(PBVH *bvh, CCGElem **grids, DMGridAdjacency *gridadj, void **gridfaces,
 | 
				
			||||||
                           DMFlagMat *flagmats, BLI_bitmap *grid_hidden)
 | 
					                           DMFlagMat *flagmats, BLI_bitmap **grid_hidden)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int a;
 | 
						int a;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -139,11 +139,11 @@ struct PBVH {
 | 
				
			|||||||
	void **gridfaces;
 | 
						void **gridfaces;
 | 
				
			||||||
	const DMFlagMat *grid_flag_mats;
 | 
						const DMFlagMat *grid_flag_mats;
 | 
				
			||||||
	int totgrid;
 | 
						int totgrid;
 | 
				
			||||||
	BLI_bitmap *grid_hidden;
 | 
						BLI_bitmap **grid_hidden;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Only used during BVH build and update,
 | 
						/* Only used during BVH build and update,
 | 
				
			||||||
	 * don't need to remain valid after */
 | 
						 * don't need to remain valid after */
 | 
				
			||||||
	BLI_bitmap vert_bitmap;
 | 
						BLI_bitmap *vert_bitmap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef PERFCNTRS
 | 
					#ifdef PERFCNTRS
 | 
				
			||||||
	int perf_modified;
 | 
						int perf_modified;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2930,7 +2930,7 @@ static void ccgdm_create_grids(DerivedMesh *dm)
 | 
				
			|||||||
	gridFaces = MEM_mallocN(sizeof(CCGFace *) * numGrids, "ccgdm.gridFaces");
 | 
						gridFaces = MEM_mallocN(sizeof(CCGFace *) * numGrids, "ccgdm.gridFaces");
 | 
				
			||||||
	gridFlagMats = MEM_mallocN(sizeof(DMFlagMat) * numGrids, "ccgdm.gridFlagMats");
 | 
						gridFlagMats = MEM_mallocN(sizeof(DMFlagMat) * numGrids, "ccgdm.gridFlagMats");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ccgdm->gridHidden = MEM_callocN(sizeof(BLI_bitmap) * numGrids, "ccgdm.gridHidden");
 | 
						ccgdm->gridHidden = MEM_callocN(sizeof(*ccgdm->gridHidden) * numGrids, "ccgdm.gridHidden");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (gIndex = 0, index = 0; index < numFaces; index++) {
 | 
						for (gIndex = 0, index = 0; index < numFaces; index++) {
 | 
				
			||||||
		CCGFace *f = ccgdm->faceMap[index].face;
 | 
							CCGFace *f = ccgdm->faceMap[index].face;
 | 
				
			||||||
@@ -3002,7 +3002,7 @@ static DMFlagMat *ccgDM_getGridFlagMats(DerivedMesh *dm)
 | 
				
			|||||||
	return ccgdm->gridFlagMats;
 | 
						return ccgdm->gridFlagMats;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static BLI_bitmap *ccgDM_getGridHidden(DerivedMesh *dm)
 | 
					static BLI_bitmap **ccgDM_getGridHidden(DerivedMesh *dm)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm;
 | 
						CCGDerivedMesh *ccgdm = (CCGDerivedMesh *)dm;
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@
 | 
				
			|||||||
#ifndef __BLI_BITMAP_H__
 | 
					#ifndef __BLI_BITMAP_H__
 | 
				
			||||||
#define __BLI_BITMAP_H__
 | 
					#define __BLI_BITMAP_H__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef unsigned int *BLI_bitmap;
 | 
					typedef unsigned int BLI_bitmap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* warning: the bitmap does not keep track of its own size or check
 | 
					/* warning: the bitmap does not keep track of its own size or check
 | 
				
			||||||
 * for out-of-bounds access */
 | 
					 * for out-of-bounds access */
 | 
				
			||||||
@@ -48,7 +48,7 @@ typedef unsigned int *BLI_bitmap;
 | 
				
			|||||||
/* allocate memory for a bitmap with '_tot' bits; free
 | 
					/* allocate memory for a bitmap with '_tot' bits; free
 | 
				
			||||||
 *  with MEM_freeN() */
 | 
					 *  with MEM_freeN() */
 | 
				
			||||||
#define BLI_BITMAP_NEW(_tot, _alloc_string) \
 | 
					#define BLI_BITMAP_NEW(_tot, _alloc_string) \
 | 
				
			||||||
	((BLI_bitmap)MEM_callocN(BLI_BITMAP_SIZE(_tot), \
 | 
						((BLI_bitmap *)MEM_callocN(BLI_BITMAP_SIZE(_tot), \
 | 
				
			||||||
	                         _alloc_string))
 | 
						                         _alloc_string))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* get the value of a single bit at '_index' */
 | 
					/* get the value of a single bit at '_index' */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5174,7 +5174,7 @@ static int select_more_exec(bContext *C, wmOperator *UNUSED(op))
 | 
				
			|||||||
	/* may not be optimal always (example: end of NURBS sphere)   */
 | 
						/* may not be optimal always (example: end of NURBS sphere)   */
 | 
				
			||||||
	if (obedit->type == OB_SURF) {
 | 
						if (obedit->type == OB_SURF) {
 | 
				
			||||||
		for (nu = editnurb->first; nu; nu = nu->next) {
 | 
							for (nu = editnurb->first; nu; nu = nu->next) {
 | 
				
			||||||
			BLI_bitmap selbpoints;
 | 
								BLI_bitmap *selbpoints;
 | 
				
			||||||
			a = nu->pntsu * nu->pntsv;
 | 
								a = nu->pntsu * nu->pntsv;
 | 
				
			||||||
			bp = nu->bp;
 | 
								bp = nu->bp;
 | 
				
			||||||
			selbpoints = BLI_BITMAP_NEW(a, "selectlist");
 | 
								selbpoints = BLI_BITMAP_NEW(a, "selectlist");
 | 
				
			||||||
@@ -5260,7 +5260,7 @@ static int select_less_exec(bContext *C, wmOperator *UNUSED(op))
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	if (obedit->type == OB_SURF) {
 | 
						if (obedit->type == OB_SURF) {
 | 
				
			||||||
		for (nu = editnurb->first; nu; nu = nu->next) {
 | 
							for (nu = editnurb->first; nu; nu = nu->next) {
 | 
				
			||||||
			BLI_bitmap selbpoints;
 | 
								BLI_bitmap *selbpoints;
 | 
				
			||||||
			a = nu->pntsu * nu->pntsv;
 | 
								a = nu->pntsu * nu->pntsv;
 | 
				
			||||||
			bp = nu->bp;
 | 
								bp = nu->bp;
 | 
				
			||||||
			selbpoints = BLI_BITMAP_NEW(a, "selectlist");
 | 
								selbpoints = BLI_BITMAP_NEW(a, "selectlist");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -198,8 +198,8 @@ static void select_linked_tfaces_with_seams(Mesh *me, const unsigned int index,
 | 
				
			|||||||
	bool do_it = true;
 | 
						bool do_it = true;
 | 
				
			||||||
	bool mark = false;
 | 
						bool mark = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	BLI_bitmap edge_tag = BLI_BITMAP_NEW(me->totedge, __func__);
 | 
						BLI_bitmap *edge_tag = BLI_BITMAP_NEW(me->totedge, __func__);
 | 
				
			||||||
	BLI_bitmap poly_tag = BLI_BITMAP_NEW(me->totpoly, __func__);
 | 
						BLI_bitmap *poly_tag = BLI_BITMAP_NEW(me->totpoly, __func__);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (index != (unsigned int)-1) {
 | 
						if (index != (unsigned int)-1) {
 | 
				
			||||||
		/* only put face under cursor in array */
 | 
							/* only put face under cursor in array */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -228,7 +228,7 @@ void LATTICE_OT_select_random(wmOperatorType *ot)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/************************** Select More/Less Operator *************************/
 | 
					/************************** Select More/Less Operator *************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool lattice_test_bitmap_uvw(Lattice *lt, BLI_bitmap selpoints, int u, int v, int w, const bool selected)
 | 
					static bool lattice_test_bitmap_uvw(Lattice *lt, BLI_bitmap *selpoints, int u, int v, int w, const bool selected)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if ((u < 0 || u >= lt->pntsu) ||
 | 
						if ((u < 0 || u >= lt->pntsu) ||
 | 
				
			||||||
	    (v < 0 || v >= lt->pntsv) ||
 | 
						    (v < 0 || v >= lt->pntsv) ||
 | 
				
			||||||
@@ -252,7 +252,7 @@ static int lattice_select_more_less(bContext *C, const bool select)
 | 
				
			|||||||
	BPoint *bp;
 | 
						BPoint *bp;
 | 
				
			||||||
	const int tot = lt->pntsu * lt->pntsv * lt->pntsw;
 | 
						const int tot = lt->pntsu * lt->pntsv * lt->pntsw;
 | 
				
			||||||
	int i, w, u, v;
 | 
						int i, w, u, v;
 | 
				
			||||||
	BLI_bitmap selpoints;
 | 
						BLI_bitmap *selpoints;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	lt->actbp = LT_ACTBP_NONE;
 | 
						lt->actbp = LT_ACTBP_NONE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1671,7 +1671,7 @@ void OBJECT_OT_skin_radii_equalize(wmOperatorType *ot)
 | 
				
			|||||||
static void skin_armature_bone_create(Object *skin_ob,
 | 
					static void skin_armature_bone_create(Object *skin_ob,
 | 
				
			||||||
                                      MVert *mvert, MEdge *medge,
 | 
					                                      MVert *mvert, MEdge *medge,
 | 
				
			||||||
                                      bArmature *arm,
 | 
					                                      bArmature *arm,
 | 
				
			||||||
                                      BLI_bitmap edges_visited,
 | 
					                                      BLI_bitmap *edges_visited,
 | 
				
			||||||
                                      const MeshElemMap *emap,
 | 
					                                      const MeshElemMap *emap,
 | 
				
			||||||
                                      EditBone *parent_bone,
 | 
					                                      EditBone *parent_bone,
 | 
				
			||||||
                                      int parent_v)
 | 
					                                      int parent_v)
 | 
				
			||||||
@@ -1720,7 +1720,7 @@ static void skin_armature_bone_create(Object *skin_ob,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
static Object *modifier_skin_armature_create(Main *bmain, Scene *scene, Object *skin_ob)
 | 
					static Object *modifier_skin_armature_create(Main *bmain, Scene *scene, Object *skin_ob)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BLI_bitmap edges_visited;
 | 
						BLI_bitmap *edges_visited;
 | 
				
			||||||
	DerivedMesh *deform_dm;
 | 
						DerivedMesh *deform_dm;
 | 
				
			||||||
	MVert *mvert;
 | 
						MVert *mvert;
 | 
				
			||||||
	Mesh *me = skin_ob->data;
 | 
						Mesh *me = skin_ob->data;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -154,7 +154,7 @@ static void partialvis_update_grids(Object *ob,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	CCGElem **grids;
 | 
						CCGElem **grids;
 | 
				
			||||||
	CCGKey key;
 | 
						CCGKey key;
 | 
				
			||||||
	BLI_bitmap *grid_hidden;
 | 
						BLI_bitmap **grid_hidden;
 | 
				
			||||||
	int any_visible = 0;
 | 
						int any_visible = 0;
 | 
				
			||||||
	int *grid_indices, totgrid, any_changed, i;
 | 
						int *grid_indices, totgrid, any_changed, i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -171,7 +171,7 @@ static void partialvis_update_grids(Object *ob,
 | 
				
			|||||||
	for (i = 0; i < totgrid; i++) {
 | 
						for (i = 0; i < totgrid; i++) {
 | 
				
			||||||
		int any_hidden = 0;
 | 
							int any_hidden = 0;
 | 
				
			||||||
		int g = grid_indices[i], x, y;
 | 
							int g = grid_indices[i], x, y;
 | 
				
			||||||
		BLI_bitmap gh = grid_hidden[g];
 | 
							BLI_bitmap *gh = grid_hidden[g];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (!gh) {
 | 
							if (!gh) {
 | 
				
			||||||
			switch (action) {
 | 
								switch (action) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1529,7 +1529,7 @@ static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *no
 | 
				
			|||||||
	float *tmpgrid_mask, *tmprow_mask;
 | 
						float *tmpgrid_mask, *tmprow_mask;
 | 
				
			||||||
	int v1, v2, v3, v4;
 | 
						int v1, v2, v3, v4;
 | 
				
			||||||
	int thread_num;
 | 
						int thread_num;
 | 
				
			||||||
	BLI_bitmap *grid_hidden;
 | 
						BLI_bitmap **grid_hidden;
 | 
				
			||||||
	int *grid_indices, totgrid, gridsize, i, x, y;
 | 
						int *grid_indices, totgrid, gridsize, i, x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sculpt_brush_test_init(ss, &test);
 | 
						sculpt_brush_test_init(ss, &test);
 | 
				
			||||||
@@ -1554,7 +1554,7 @@ static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *no
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < totgrid; ++i) {
 | 
						for (i = 0; i < totgrid; ++i) {
 | 
				
			||||||
		int gi = grid_indices[i];
 | 
							int gi = grid_indices[i];
 | 
				
			||||||
		BLI_bitmap gh = grid_hidden[gi];
 | 
							BLI_bitmap *gh = grid_hidden[gi];
 | 
				
			||||||
		data = griddata[gi];
 | 
							data = griddata[gi];
 | 
				
			||||||
		adj = &gridadj[gi];
 | 
							adj = &gridadj[gi];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -100,14 +100,14 @@ typedef struct SculptUndoNode {
 | 
				
			|||||||
	/* non-multires */
 | 
						/* non-multires */
 | 
				
			||||||
	int maxvert;                /* to verify if totvert it still the same */
 | 
						int maxvert;                /* to verify if totvert it still the same */
 | 
				
			||||||
	int *index;                 /* to restore into right location */
 | 
						int *index;                 /* to restore into right location */
 | 
				
			||||||
	BLI_bitmap vert_hidden;
 | 
						BLI_bitmap *vert_hidden;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* multires */
 | 
						/* multires */
 | 
				
			||||||
	int maxgrid;                /* same for grid */
 | 
						int maxgrid;                /* same for grid */
 | 
				
			||||||
	int gridsize;               /* same for grid */
 | 
						int gridsize;               /* same for grid */
 | 
				
			||||||
	int totgrid;                /* to restore into right location */
 | 
						int totgrid;                /* to restore into right location */
 | 
				
			||||||
	int *grids;                 /* to restore into right location */
 | 
						int *grids;                 /* to restore into right location */
 | 
				
			||||||
	BLI_bitmap *grid_hidden;
 | 
						BLI_bitmap **grid_hidden;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* bmesh */
 | 
						/* bmesh */
 | 
				
			||||||
	struct BMLogEntry *bm_entry;
 | 
						struct BMLogEntry *bm_entry;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -210,10 +210,10 @@ static int sculpt_undo_restore_hidden(bContext *C, DerivedMesh *dm,
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else if (unode->maxgrid && dm->getGridData) {
 | 
						else if (unode->maxgrid && dm->getGridData) {
 | 
				
			||||||
		BLI_bitmap *grid_hidden = dm->getGridHidden(dm);
 | 
							BLI_bitmap **grid_hidden = dm->getGridHidden(dm);
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		for (i = 0; i < unode->totgrid; i++) {
 | 
							for (i = 0; i < unode->totgrid; i++) {
 | 
				
			||||||
			SWAP(BLI_bitmap,
 | 
								SWAP(BLI_bitmap *,
 | 
				
			||||||
			     unode->grid_hidden[i],
 | 
								     unode->grid_hidden[i],
 | 
				
			||||||
			     grid_hidden[unode->grids[i]]);
 | 
								     grid_hidden[unode->grids[i]]);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
@@ -531,7 +531,7 @@ static void sculpt_undo_alloc_and_store_hidden(PBVH *pbvh,
 | 
				
			|||||||
                                               SculptUndoNode *unode)
 | 
					                                               SculptUndoNode *unode)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	PBVHNode *node = unode->node;
 | 
						PBVHNode *node = unode->node;
 | 
				
			||||||
	BLI_bitmap *grid_hidden;
 | 
						BLI_bitmap **grid_hidden;
 | 
				
			||||||
	int i, *grid_indices, totgrid;
 | 
						int i, *grid_indices, totgrid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	grid_hidden = BKE_pbvh_grid_hidden(pbvh);
 | 
						grid_hidden = BKE_pbvh_grid_hidden(pbvh);
 | 
				
			||||||
@@ -539,7 +539,7 @@ static void sculpt_undo_alloc_and_store_hidden(PBVH *pbvh,
 | 
				
			|||||||
	BKE_pbvh_node_get_grids(pbvh, node, &grid_indices, &totgrid,
 | 
						BKE_pbvh_node_get_grids(pbvh, node, &grid_indices, &totgrid,
 | 
				
			||||||
	                        NULL, NULL, NULL, NULL);
 | 
						                        NULL, NULL, NULL, NULL);
 | 
				
			||||||
			
 | 
								
 | 
				
			||||||
	unode->grid_hidden = MEM_mapallocN(sizeof(BLI_bitmap) * totgrid,
 | 
						unode->grid_hidden = MEM_mapallocN(sizeof(*unode->grid_hidden) * totgrid,
 | 
				
			||||||
	                                   "unode->grid_hidden");
 | 
						                                   "unode->grid_hidden");
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
	for (i = 0; i < totgrid; i++) {
 | 
						for (i = 0; i < totgrid; i++) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,7 @@
 | 
				
			|||||||
/* user data structures for derived mesh callbacks */
 | 
					/* user data structures for derived mesh callbacks */
 | 
				
			||||||
typedef struct drawMeshFaceSelect_userData {
 | 
					typedef struct drawMeshFaceSelect_userData {
 | 
				
			||||||
	Mesh *me;
 | 
						Mesh *me;
 | 
				
			||||||
	BLI_bitmap edge_flags; /* pairs of edge options (visible, select) */
 | 
						BLI_bitmap *edge_flags; /* pairs of edge options (visible, select) */
 | 
				
			||||||
} drawMeshFaceSelect_userData;
 | 
					} drawMeshFaceSelect_userData;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct drawEMTFMapped_userData {
 | 
					typedef struct drawEMTFMapped_userData {
 | 
				
			||||||
@@ -100,9 +100,9 @@ typedef struct drawTFace_userData {
 | 
				
			|||||||
BLI_INLINE int edge_vis_index(const int index) { return index * 2; }
 | 
					BLI_INLINE int edge_vis_index(const int index) { return index * 2; }
 | 
				
			||||||
BLI_INLINE int edge_sel_index(const int index) { return index * 2 + 1; }
 | 
					BLI_INLINE int edge_sel_index(const int index) { return index * 2 + 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static BLI_bitmap get_tface_mesh_marked_edge_info(Mesh *me)
 | 
					static BLI_bitmap *get_tface_mesh_marked_edge_info(Mesh *me)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	BLI_bitmap bitmap_edge_flags = BLI_BITMAP_NEW(me->totedge * 2, __func__);
 | 
						BLI_bitmap *bitmap_edge_flags = BLI_BITMAP_NEW(me->totedge * 2, __func__);
 | 
				
			||||||
	MPoly *mp;
 | 
						MPoly *mp;
 | 
				
			||||||
	MLoop *ml;
 | 
						MLoop *ml;
 | 
				
			||||||
	int i, j;
 | 
						int i, j;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1266,7 +1266,7 @@ struct GPU_Buffers {
 | 
				
			|||||||
	CCGKey gridkey;
 | 
						CCGKey gridkey;
 | 
				
			||||||
	CCGElem **grids;
 | 
						CCGElem **grids;
 | 
				
			||||||
	const DMFlagMat *grid_flag_mats;
 | 
						const DMFlagMat *grid_flag_mats;
 | 
				
			||||||
	const BLI_bitmap *grid_hidden;
 | 
						BLI_bitmap * const *grid_hidden;
 | 
				
			||||||
	int *grid_indices;
 | 
						int *grid_indices;
 | 
				
			||||||
	int totgrid;
 | 
						int totgrid;
 | 
				
			||||||
	int has_hidden;
 | 
						int has_hidden;
 | 
				
			||||||
@@ -1686,7 +1686,7 @@ void GPU_update_grid_buffers(GPU_Buffers *buffers, CCGElem **grids,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Returns the number of visible quads in the nodes' grids. */
 | 
					/* Returns the number of visible quads in the nodes' grids. */
 | 
				
			||||||
static int gpu_count_grid_quads(BLI_bitmap *grid_hidden,
 | 
					static int gpu_count_grid_quads(BLI_bitmap **grid_hidden,
 | 
				
			||||||
                                int *grid_indices, int totgrid,
 | 
					                                int *grid_indices, int totgrid,
 | 
				
			||||||
                                int gridsize)
 | 
					                                int gridsize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -1697,7 +1697,7 @@ static int gpu_count_grid_quads(BLI_bitmap *grid_hidden,
 | 
				
			|||||||
	 * visibility */
 | 
						 * visibility */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0, totquad = 0; i < totgrid; i++) {
 | 
						for (i = 0, totquad = 0; i < totgrid; i++) {
 | 
				
			||||||
		const BLI_bitmap gh = grid_hidden[grid_indices[i]];
 | 
							const BLI_bitmap *gh = grid_hidden[grid_indices[i]];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (gh) {
 | 
							if (gh) {
 | 
				
			||||||
			/* grid hidden are present, have to check each element */
 | 
								/* grid hidden are present, have to check each element */
 | 
				
			||||||
@@ -1732,7 +1732,7 @@ static int gpu_count_grid_quads(BLI_bitmap *grid_hidden,
 | 
				
			|||||||
		                           GL_WRITE_ONLY_ARB);                  \
 | 
							                           GL_WRITE_ONLY_ARB);                  \
 | 
				
			||||||
		if (quad_data) {                                                \
 | 
							if (quad_data) {                                                \
 | 
				
			||||||
			for (i = 0; i < totgrid; ++i) {                             \
 | 
								for (i = 0; i < totgrid; ++i) {                             \
 | 
				
			||||||
				BLI_bitmap gh = NULL;                                   \
 | 
									BLI_bitmap *gh = NULL;                                  \
 | 
				
			||||||
				if (grid_hidden)                                        \
 | 
									if (grid_hidden)                                        \
 | 
				
			||||||
					gh = grid_hidden[(grid_indices)[i]];                \
 | 
										gh = grid_hidden[(grid_indices)[i]];                \
 | 
				
			||||||
																		\
 | 
																							\
 | 
				
			||||||
@@ -1770,7 +1770,7 @@ static GLuint gpu_get_grid_buffer(int gridsize, GLenum *index_type, unsigned *to
 | 
				
			|||||||
	static unsigned prev_totquad;
 | 
						static unsigned prev_totquad;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* used in the FILL_QUAD_BUFFER macro */
 | 
						/* used in the FILL_QUAD_BUFFER macro */
 | 
				
			||||||
	const BLI_bitmap *grid_hidden = NULL;
 | 
						BLI_bitmap * const *grid_hidden = NULL;
 | 
				
			||||||
	int *grid_indices = NULL;
 | 
						int *grid_indices = NULL;
 | 
				
			||||||
	int totgrid = 1;
 | 
						int totgrid = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1815,7 +1815,7 @@ static GLuint gpu_get_grid_buffer(int gridsize, GLenum *index_type, unsigned *to
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GPU_Buffers *GPU_build_grid_buffers(int *grid_indices, int totgrid,
 | 
					GPU_Buffers *GPU_build_grid_buffers(int *grid_indices, int totgrid,
 | 
				
			||||||
                                    BLI_bitmap *grid_hidden, int gridsize)
 | 
					                                    BLI_bitmap **grid_hidden, int gridsize)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	GPU_Buffers *buffers;
 | 
						GPU_Buffers *buffers;
 | 
				
			||||||
	int totquad;
 | 
						int totquad;
 | 
				
			||||||
@@ -2200,7 +2200,7 @@ static void gpu_draw_buffers_legacy_grids(GPU_Buffers *buffers)
 | 
				
			|||||||
	for (i = 0; i < buffers->totgrid; ++i) {
 | 
						for (i = 0; i < buffers->totgrid; ++i) {
 | 
				
			||||||
		int g = buffers->grid_indices[i];
 | 
							int g = buffers->grid_indices[i];
 | 
				
			||||||
		CCGElem *grid = buffers->grids[g];
 | 
							CCGElem *grid = buffers->grids[g];
 | 
				
			||||||
		BLI_bitmap gh = buffers->grid_hidden[g];
 | 
							BLI_bitmap *gh = buffers->grid_hidden[g];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/* TODO: could use strips with hiding as well */
 | 
							/* TODO: could use strips with hiding as well */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user