style cleanup: also add debugging print function for derived mesh DM_debug_print_cdlayers()

This commit is contained in:
Campbell Barton 2012-09-03 02:41:12 +00:00
parent 721c37072e
commit 56534ecdcb
11 changed files with 194 additions and 164 deletions

@ -698,6 +698,7 @@ void DM_init_origspace(DerivedMesh *dm);
#ifndef NDEBUG
char *DM_debug_info(DerivedMesh *dm);
void DM_debug_print(DerivedMesh *dm);
void DM_debug_print_cdlayers(CustomData *cdata);
#endif
#endif

@ -3187,4 +3187,25 @@ void DM_debug_print(DerivedMesh *dm)
MEM_freeN(str);
}
void DM_debug_print_cdlayers(CustomData *data)
{
int i;
CustomDataLayer *layer;
printf("{\n");
for (i = 0, layer = data->layers; i < data->totlayer; i++, layer++) {
const char *name = CustomData_layertype_name(layer->type);
const int size = CustomData_sizeof(layer->type);
const char *structname;
int structnum;
CustomData_file_write_info(layer->type, &structname, &structnum);
printf(" dict(name='%s', struct='%s', type=%d, ptr='%p', elem=%d, length=%d),\n",
name, structname, layer->type, (void *)layer->data, size, (int)(MEM_allocN_len(layer->data) / size));
}
printf("}\n");
}
#endif /* NDEBUG */

@ -257,7 +257,7 @@ uiStyle *UI_GetStyle(void)
{
uiStyle *style = NULL;
/* offset is two struct uiStyle pointers */
/* style = BLI_findstring( &U.uistyles, "Unifont Style", sizeof(style)*2 ) */;
/* style = BLI_findstring(&U.uistyles, "Unifont Style", sizeof(style) * 2) */;
return (style != NULL) ? style : U.uistyles.first;
}

@ -160,7 +160,7 @@ typedef struct KnifeTool_OpData {
int totlinehit;
/* Data for mouse-position-derived data (cur) and previous click (prev) */
KnifePosData cur, prev;
KnifePosData curr, prev;
int totkedge, totkvert;
@ -368,22 +368,22 @@ static KnifeEdge *get_bm_knife_edge(KnifeTool_OpData *kcd, BMEdge *e)
* Copy the current position data into prev. */
static void knife_start_cut(KnifeTool_OpData *kcd)
{
kcd->prev = kcd->cur;
kcd->cur.is_space = 0; /*TODO: why do we do this? */
kcd->prev = kcd->curr;
kcd->curr.is_space = 0; /*TODO: why do we do this? */
if (kcd->prev.vert == NULL && kcd->prev.edge == NULL && is_zero_v3(kcd->prev.cage)) {
/* Make prevcage a point on the view ray to mouse closest to a point on model: choose vertex 0 */
float origin[3], ray[3], co[3];
BMVert *v0;
knife_input_ray_cast(kcd, kcd->cur.mval, origin, ray);
knife_input_ray_cast(kcd, kcd->curr.mval, origin, ray);
add_v3_v3v3(co, origin, ray);
v0 = BM_vert_at_index(kcd->em->bm, 0);
if (v0) {
closest_to_line_v3(kcd->prev.cage, v0->co, co, origin);
copy_v3_v3(kcd->prev.co, kcd->prev.cage); /*TODO: do we need this? */
copy_v3_v3(kcd->cur.cage, kcd->prev.cage);
copy_v3_v3(kcd->cur.co, kcd->prev.co);
copy_v3_v3(kcd->curr.cage, kcd->prev.cage);
copy_v3_v3(kcd->curr.co, kcd->prev.co);
}
}
}
@ -471,15 +471,15 @@ static KnifeVert *knife_split_edge(KnifeTool_OpData *kcd, KnifeEdge *kfe, float
return newkfe->v2;
}
/* Make a single KnifeEdge for cut from kcd->prev to kcd->cur.
/* Make a single KnifeEdge for cut from kcd->prev to kcd->curr.
* and move cur data to prev. */
static void knife_add_single_cut(KnifeTool_OpData *kcd)
{
KnifeEdge *kfe = new_knife_edge(kcd), *kfe2 = NULL, *kfe3 = NULL;
if (kcd->prev.vert && kcd->prev.vert == kcd->cur.vert)
if (kcd->prev.vert && kcd->prev.vert == kcd->curr.vert)
return;
if (kcd->prev.edge && kcd->prev.edge == kcd->cur.edge)
if (kcd->prev.edge && kcd->prev.edge == kcd->curr.edge)
return;
kfe->draw = 1;
@ -500,25 +500,25 @@ static void knife_add_single_cut(KnifeTool_OpData *kcd)
knife_append_list(kcd, &kfe->v1->faces, kcd->prev.bmface);
}
if (kcd->cur.vert) {
kfe->v2 = kcd->cur.vert;
if (kcd->curr.vert) {
kfe->v2 = kcd->curr.vert;
}
else if (kcd->cur.edge) {
kfe->v2 = knife_split_edge(kcd, kcd->cur.edge, kcd->cur.co, &kfe3);
kcd->cur.vert = kfe->v2;
else if (kcd->curr.edge) {
kfe->v2 = knife_split_edge(kcd, kcd->curr.edge, kcd->curr.co, &kfe3);
kcd->curr.vert = kfe->v2;
}
else {
kfe->v2 = new_knife_vert(kcd, kcd->cur.co, kcd->cur.co);
kfe->v2->draw = !kcd->cur.is_space;
kfe->v2 = new_knife_vert(kcd, kcd->curr.co, kcd->curr.co);
kfe->v2->draw = !kcd->curr.is_space;
kfe->v2->isface = 1;
kfe->v2->inspace = kcd->cur.is_space;
if (kfe->v2->draw && kcd->cur.bmface)
knife_append_list(kcd, &kfe->v2->faces, kcd->cur.bmface);
kfe->v2->inspace = kcd->curr.is_space;
if (kfe->v2->draw && kcd->curr.bmface)
knife_append_list(kcd, &kfe->v2->faces, kcd->curr.bmface);
if (kcd->cur.is_space)
if (kcd->curr.is_space)
kfe->draw = 0;
kcd->cur.vert = kfe->v2;
kcd->curr.vert = kfe->v2;
}
knife_find_basef(kfe);
@ -529,12 +529,12 @@ static void knife_add_single_cut(KnifeTool_OpData *kcd)
knife_edge_append_face(kcd, kfe, kfe->basef);
/* sanity check to make sure we're in the right edge/face lists */
if (kcd->cur.bmface) {
if (!find_ref(&kfe->faces, kcd->cur.bmface)) {
knife_edge_append_face(kcd, kfe, kcd->cur.bmface);
if (kcd->curr.bmface) {
if (!find_ref(&kfe->faces, kcd->curr.bmface)) {
knife_edge_append_face(kcd, kfe, kcd->curr.bmface);
}
if (kcd->prev.bmface && kcd->prev.bmface != kcd->cur.bmface) {
if (kcd->prev.bmface && kcd->prev.bmface != kcd->curr.bmface) {
if (!find_ref(&kfe->faces, kcd->prev.bmface)) {
knife_edge_append_face(kcd, kfe, kcd->prev.bmface);
}
@ -542,7 +542,7 @@ static void knife_add_single_cut(KnifeTool_OpData *kcd)
}
/* set up for next cut */
kcd->prev = kcd->cur;
kcd->prev = kcd->curr;
}
static int verge_linehit(const void *vlh1, const void *vlh2)
@ -622,25 +622,25 @@ static void knife_cut_through(KnifeTool_OpData *kcd)
splitkfe = MEM_callocN(kcd->totlinehit * sizeof(KnifeEdge *), "knife_cut_through");
if (kcd->prev.vert) {
if (kcd->prev.vert == kcd->cur.vert)
if (kcd->prev.vert == kcd->curr.vert)
return;
firstv = kcd->prev.vert;
knife_get_vert_faces(kcd, firstv, kcd->prev.bmface, &firstfaces);
}
else if (kcd->prev.edge) {
if (kcd->prev.edge == kcd->cur.edge)
if (kcd->prev.edge == kcd->curr.edge)
return;
firstv = knife_split_edge(kcd, kcd->prev.edge, kcd->prev.co, &kfe3);
knife_get_edge_faces(kcd, kcd->prev.edge, &firstfaces);
}
if (kcd->cur.vert) {
lastv = kcd->cur.vert;
knife_get_vert_faces(kcd, lastv, kcd->cur.bmface, &lastfaces);
if (kcd->curr.vert) {
lastv = kcd->curr.vert;
knife_get_vert_faces(kcd, lastv, kcd->curr.bmface, &lastfaces);
}
else if (kcd->cur.edge) {
lastv = knife_split_edge(kcd, kcd->cur.edge, kcd->cur.co, &kfe3);
knife_get_edge_faces(kcd, kcd->cur.edge, &lastfaces);
else if (kcd->curr.edge) {
lastv = knife_split_edge(kcd, kcd->curr.edge, kcd->curr.co, &kfe3);
knife_get_edge_faces(kcd, kcd->curr.edge, &lastfaces);
}
if (firstv) {
@ -709,7 +709,7 @@ static void knife_cut_through(KnifeTool_OpData *kcd)
kcd->totlinehit = 0;
/* set up for next cut */
kcd->prev = kcd->cur;
kcd->prev = kcd->curr;
}
/* User has just left-clicked after the first time.
@ -717,7 +717,7 @@ static void knife_cut_through(KnifeTool_OpData *kcd)
* If that line crossed edges then kcd->linehits will be non-NULL. */
static void knife_add_cut(KnifeTool_OpData *kcd)
{
KnifePosData savcur = kcd->cur;
KnifePosData savcur = kcd->curr;
if (kcd->cut_through) {
knife_cut_through(kcd);
@ -755,7 +755,7 @@ static void knife_add_cut(KnifeTool_OpData *kcd)
if (len_v3v3(kcd->prev.cage, lh->realhit) < FLT_EPSILON * 80)
continue;
if (len_v3v3(kcd->cur.cage, lh->realhit) < FLT_EPSILON * 80)
if (len_v3v3(kcd->curr.cage, lh->realhit) < FLT_EPSILON * 80)
continue;
if (kcd->prev.is_space) {
@ -768,12 +768,12 @@ static void knife_add_cut(KnifeTool_OpData *kcd)
continue;
}
kcd->cur.is_space = 0;
kcd->cur.edge = lh->kfe;
kcd->cur.bmface = lh->f;
kcd->cur.vert = lh->v;
copy_v3_v3(kcd->cur.co, lh->hit);
copy_v3_v3(kcd->cur.cage, lh->cagehit);
kcd->curr.is_space = 0;
kcd->curr.edge = lh->kfe;
kcd->curr.bmface = lh->f;
kcd->curr.vert = lh->v;
copy_v3_v3(kcd->curr.co, lh->hit);
copy_v3_v3(kcd->curr.cage, lh->cagehit);
knife_add_single_cut(kcd);
}
@ -782,7 +782,7 @@ static void knife_add_cut(KnifeTool_OpData *kcd)
kcd->prev = savcur;
}
else {
kcd->cur = savcur;
kcd->curr = savcur;
knife_add_single_cut(kcd);
}
@ -935,38 +935,38 @@ static void knifetool_draw(const bContext *C, ARegion *UNUSED(ar), void *arg)
glBegin(GL_LINES);
glVertex3fv(kcd->prev.cage);
glVertex3fv(kcd->cur.cage);
glVertex3fv(kcd->curr.cage);
glEnd();
glLineWidth(1.0);
}
if (kcd->cur.edge) {
if (kcd->curr.edge) {
glColor3ubv(kcd->colors.edge);
glLineWidth(2.0);
glBegin(GL_LINES);
glVertex3fv(kcd->cur.edge->v1->cageco);
glVertex3fv(kcd->cur.edge->v2->cageco);
glVertex3fv(kcd->curr.edge->v1->cageco);
glVertex3fv(kcd->curr.edge->v2->cageco);
glEnd();
glLineWidth(1.0);
}
else if (kcd->cur.vert) {
else if (kcd->curr.vert) {
glColor3ubv(kcd->colors.point);
glPointSize(11);
glBegin(GL_POINTS);
glVertex3fv(kcd->cur.cage);
glVertex3fv(kcd->curr.cage);
glEnd();
}
if (kcd->cur.bmface) {
if (kcd->curr.bmface) {
glColor3ubv(kcd->colors.curpoint);
glPointSize(9);
glBegin(GL_POINTS);
glVertex3fv(kcd->cur.cage);
glVertex3fv(kcd->curr.cage);
glEnd();
}
@ -1121,13 +1121,17 @@ static BMEdgeHit *knife_edge_tri_isect(KnifeTool_OpData *kcd, BMBVHTree *bmtree,
interp_v3_v3v3(p, kfe->v1->cageco, kfe->v2->cageco, lambda);
if (kcd->cur.vert && len_squared_v3v3(kcd->cur.vert->cageco, p) < depsilon_squared)
if (kcd->curr.vert && len_squared_v3v3(kcd->curr.vert->cageco, p) < depsilon_squared) {
continue;
if (kcd->prev.vert && len_squared_v3v3(kcd->prev.vert->cageco, p) < depsilon_squared)
}
if (kcd->prev.vert && len_squared_v3v3(kcd->prev.vert->cageco, p) < depsilon_squared) {
continue;
}
if (len_squared_v3v3(kcd->prev.cage, p) < depsilon_squared ||
len_squared_v3v3(kcd->cur.cage, p) < depsilon_squared)
len_squared_v3v3(kcd->curr.cage, p) < depsilon_squared)
{
continue;
}
knife_project_v3(kcd, p, sp);
view3d_unproject(mats, view, sp[0], sp[1], 0.0f);
@ -1135,7 +1139,8 @@ static BMEdgeHit *knife_edge_tri_isect(KnifeTool_OpData *kcd, BMBVHTree *bmtree,
if (kcd->cut_through) {
hitf = FALSE;
} else {
}
else {
/* check if this point is visible in the viewport */
float p1[3], lambda1;
@ -1163,7 +1168,7 @@ static BMEdgeHit *knife_edge_tri_isect(KnifeTool_OpData *kcd, BMBVHTree *bmtree,
if (!hitf && !BLI_smallhash_haskey(ehash, (intptr_t)kfe)) {
BMEdgeHit hit;
if (len_squared_v3v3(p, kcd->cur.co) < depsilon_squared ||
if (len_squared_v3v3(p, kcd->curr.co) < depsilon_squared ||
len_squared_v3v3(p, kcd->prev.co) < depsilon_squared)
continue;
@ -1239,7 +1244,7 @@ static void knife_find_line_hits(KnifeTool_OpData *kcd)
}
copy_v3_v3(v1, kcd->prev.cage);
copy_v3_v3(v2, kcd->cur.cage);
copy_v3_v3(v2, kcd->curr.cage);
/* project screen line's 3d coordinates back into 2d */
knife_project_v3(kcd, v1, s1);
@ -1435,7 +1440,7 @@ static KnifeEdge *knife_find_closest_edge(KnifeTool_OpData *kcd, float p[3], flo
copy_v3_v3(p, co);
copy_v3_v3(cagep, cageco);
kcd->cur.bmface = f;
kcd->curr.bmface = f;
if (f) {
KnifeEdge *cure = NULL;
@ -1499,8 +1504,8 @@ static KnifeEdge *knife_find_closest_edge(KnifeTool_OpData *kcd, float p[3], flo
/* update mouse coordinates to the snapped-to edge's screen coordinates
* this is important for angle snap, which uses the previous mouse position */
edgesnap = new_knife_vert(kcd, p, cagep);
kcd->cur.mval[0] = (int)edgesnap->sco[0];
kcd->cur.mval[1] = (int)edgesnap->sco[1];
kcd->curr.mval[0] = (int)edgesnap->sco[0];
kcd->curr.mval[1] = (int)edgesnap->sco[1];
}
else {
@ -1532,7 +1537,7 @@ static KnifeVert *knife_find_closest_vert(KnifeTool_OpData *kcd, float p[3], flo
/* set p to co, in case we don't find anything, means a face cut */
copy_v3_v3(p, co);
copy_v3_v3(cagep, p);
kcd->cur.bmface = f;
kcd->curr.bmface = f;
if (f) {
ListBase *lst;
@ -1583,8 +1588,8 @@ static KnifeVert *knife_find_closest_vert(KnifeTool_OpData *kcd, float p[3], flo
/* update mouse coordinates to the snapped-to vertex's screen coordinates
* this is important for angle snap, which uses the previous mouse position */
kcd->cur.mval[0] = (int)curv->sco[0];
kcd->cur.mval[1] = (int)curv->sco[1];
kcd->curr.mval[0] = (int)curv->sco[0];
kcd->curr.mval[1] = (int)curv->sco[1];
}
return curv;
@ -1641,30 +1646,30 @@ static int knife_update_active(KnifeTool_OpData *kcd)
if (kcd->angle_snapping != ANGLE_FREE && kcd->mode == MODE_DRAGGING)
knife_snap_angle(kcd);
knife_pos_data_clear(&kcd->cur);
kcd->cur.mval[0] = kcd->vc.mval[0];
kcd->cur.mval[1] = kcd->vc.mval[1];
knife_pos_data_clear(&kcd->curr);
kcd->curr.mval[0] = kcd->vc.mval[0];
kcd->curr.mval[1] = kcd->vc.mval[1];
/* XXX knife_snap_angle updates the view coordinate mouse values to constrained angles,
* which current mouse values are set to current mouse values are then used
* for vertex and edge snap detection, without regard to the exact angle constraint */
kcd->cur.vert = knife_find_closest_vert(kcd, kcd->cur.co, kcd->cur.cage, &kcd->cur.bmface, &kcd->cur.is_space);
kcd->curr.vert = knife_find_closest_vert(kcd, kcd->curr.co, kcd->curr.cage, &kcd->curr.bmface, &kcd->curr.is_space);
if (!kcd->cur.vert) {
kcd->cur.edge = knife_find_closest_edge(kcd, kcd->cur.co, kcd->cur.cage, &kcd->cur.bmface, &kcd->cur.is_space);
if (!kcd->curr.vert) {
kcd->curr.edge = knife_find_closest_edge(kcd, kcd->curr.co, kcd->curr.cage, &kcd->curr.bmface, &kcd->curr.is_space);
}
/* if no hits are found this would normally default to (0, 0, 0) so instead
* get a point at the mouse ray closest to the previous point.
* Note that drawing lines in `free-space` isn't properly supported
* but theres no guarantee (0, 0, 0) has any geometry either - campbell */
if (kcd->cur.vert == NULL && kcd->cur.edge == NULL) {
if (kcd->curr.vert == NULL && kcd->curr.edge == NULL) {
float origin[3], ray[3], co[3];
knife_input_ray_cast(kcd, kcd->vc.mval, origin, ray);
add_v3_v3v3(co, origin, ray);
closest_to_line_v3(kcd->cur.cage, kcd->prev.cage, co, origin);
closest_to_line_v3(kcd->curr.cage, kcd->prev.cage, co, origin);
}
if (kcd->mode == MODE_DRAGGING) {
@ -2872,7 +2877,7 @@ static int knifetool_init(bContext *C, wmOperator *op, int UNUSED(do_cut))
/* can't usefully select resulting edges in face mode */
kcd->select_result = (kcd->em->selectmode != SCE_SELECT_FACE);
knife_pos_data_clear(&kcd->cur);
knife_pos_data_clear(&kcd->curr);
knife_pos_data_clear(&kcd->prev);
knife_init_colors(&kcd->colors);

@ -3761,12 +3761,14 @@ static int drawDispListwire(ListBase *dlbase)
}
glEnd();
/* (ton) this code crashes for me when resolv is 86 or higher... no clue */
// glVertexPointer(3, GL_FLOAT, sizeof(float)*3*dl->nr, data + 3*nr);
// if (dl->flag & DL_CYCL_V)
// glDrawArrays(GL_LINE_LOOP, 0, dl->parts);
// else
// glDrawArrays(GL_LINE_STRIP, 0, dl->parts);
#if 0
/* (ton) this code crashes for me when resolv is 86 or higher... no clue */
glVertexPointer(3, GL_FLOAT, sizeof(float) * 3 * dl->nr, data + 3*nr);
if (dl->flag & DL_CYCL_V)
glDrawArrays(GL_LINE_LOOP, 0, dl->parts);
else
glDrawArrays(GL_LINE_STRIP, 0, dl->parts);
#endif
}
break;

@ -4977,8 +4977,8 @@ static int createSlideVerts(TransInfo *t)
zero_v3(dir);
maxdist = -1.0f;
loop_dir = MEM_callocN(sizeof(float)*3*loop_nr, "sv loop_dir");
loop_maxdist = MEM_callocN(sizeof(float)*loop_nr, "sv loop_maxdist");
loop_dir = MEM_callocN(sizeof(float) * 3 * loop_nr, "sv loop_dir");
loop_maxdist = MEM_callocN(sizeof(float) * loop_nr, "sv loop_maxdist");
for (j = 0; j < loop_nr; j++)
loop_maxdist[j] = -1.0f;

@ -65,8 +65,8 @@ typedef struct IpoDriver {
typedef struct IpoCurve {
struct IpoCurve *next, *prev;
struct BPoint *bp; /* array of BPoints (sizeof(BPoint)*totvert) - i.e. baked/imported data */
struct BezTriple *bezt; /* array of BezTriples (sizeof(BezTriple)*totvert) - i.e. user-editable keyframes */
struct BPoint *bp; /* array of BPoints (sizeof(BPoint) * totvert) - i.e. baked/imported data */
struct BezTriple *bezt; /* array of BezTriples (sizeof(BezTriple) * totvert) - i.e. user-editable keyframes */
rctf maxrct, totrct; /* bounding boxes */

@ -2881,8 +2881,8 @@ static const char *cpp_classes = ""
" T data[Tsize];\n"
"\n"
" Array() {}\n"
" Array(const Array<T, Tsize>& other) { memcpy(data, other.data, sizeof(T)*Tsize); }\n"
" const Array<T, Tsize>& operator=(const Array<T, Tsize>& other) { memcpy(data, other.data, sizeof(T)*Tsize); "
" Array(const Array<T, Tsize>& other) { memcpy(data, other.data, sizeof(T) * Tsize); }\n"
" const Array<T, Tsize>& operator=(const Array<T, Tsize>& other) { memcpy(data, other.data, sizeof(T) * Tsize); "
"return *this; }\n"
"\n"
" operator T*() { return data; }\n"

@ -66,15 +66,15 @@ static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func)
Lamp *la;
World *wo;
for (ma= main->mat.first; ma; ma= ma->id.next)
for (ma = main->mat.first; ma; ma = ma->id.next)
if (ma->nodetree)
func(calldata, &ma->id, ma->nodetree);
for (la= main->lamp.first; la; la= la->id.next)
for (la = main->lamp.first; la; la = la->id.next)
if (la->nodetree)
func(calldata, &la->id, la->nodetree);
for (wo= main->world.first; wo; wo= wo->id.next)
for (wo = main->world.first; wo; wo = wo->id.next)
if (wo->nodetree)
func(calldata, &wo->id, wo->nodetree);
}
@ -101,7 +101,7 @@ static void localize(bNodeTree *localtree, bNodeTree *UNUSED(ntree))
bNode *node, *node_next;
/* replace muted nodes and reroute nodes by internal links */
for (node= localtree->nodes.first; node; node= node_next) {
for (node = localtree->nodes.first; node; node = node_next) {
node_next = node->next;
if (node->flag & NODE_MUTED || node->type == NODE_REROUTE) {
@ -116,15 +116,15 @@ static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
bNode *lnode;
/* copy over contents of previews */
for (lnode= localtree->nodes.first; lnode; lnode= lnode->next) {
for (lnode = localtree->nodes.first; lnode; lnode = lnode->next) {
if (ntreeNodeExists(ntree, lnode->new_node)) {
bNode *node= lnode->new_node;
bNode *node = lnode->new_node;
if (node->preview && node->preview->rect) {
if (lnode->preview && lnode->preview->rect) {
int xsize= node->preview->xsize;
int ysize= node->preview->ysize;
memcpy(node->preview->rect, lnode->preview->rect, 4*xsize + xsize*ysize*sizeof(char)*4);
int xsize = node->preview->xsize;
int ysize = node->preview->ysize;
memcpy(node->preview->rect, lnode->preview->rect, 4 * xsize + xsize * ysize * sizeof(char) * 4);
}
}
}
@ -176,7 +176,7 @@ void (*node_shader_lamp_loop)(struct ShadeInput *, struct ShadeResult *);
void set_node_shader_lamp_loop(void (*lamp_loop_func)(ShadeInput *, ShadeResult *))
{
node_shader_lamp_loop= lamp_loop_func;
node_shader_lamp_loop = lamp_loop_func;
}
@ -203,10 +203,10 @@ bNodeTreeExec *ntreeShaderBeginExecTree(bNodeTree *ntree, int use_tree_data)
exec = ntree_exec_begin(ntree);
/* allocate the thread stack listbase array */
exec->threadstack= MEM_callocN(BLENDER_MAX_THREADS*sizeof(ListBase), "thread stack array");
exec->threadstack = MEM_callocN(BLENDER_MAX_THREADS * sizeof(ListBase), "thread stack array");
for (node= exec->nodetree->nodes.first; node; node= node->next)
node->need_exec= 1;
for (node = exec->nodetree->nodes.first; node; node = node->next)
node->need_exec = 1;
if (use_tree_data) {
/* XXX this should not be necessary, but is still used for cmp/sha/tex nodes,
@ -224,19 +224,19 @@ bNodeTreeExec *ntreeShaderBeginExecTree(bNodeTree *ntree, int use_tree_data)
void ntreeShaderEndExecTree(bNodeTreeExec *exec, int use_tree_data)
{
if (exec) {
bNodeTree *ntree= exec->nodetree;
bNodeTree *ntree = exec->nodetree;
bNodeThreadStack *nts;
int a;
if (exec->threadstack) {
for (a=0; a<BLENDER_MAX_THREADS; a++) {
for (nts=exec->threadstack[a].first; nts; nts=nts->next)
for (a = 0; a < BLENDER_MAX_THREADS; a++) {
for (nts = exec->threadstack[a].first; nts; nts = nts->next)
if (nts->stack) MEM_freeN(nts->stack);
BLI_freelistN(&exec->threadstack[a]);
}
MEM_freeN(exec->threadstack);
exec->threadstack= NULL;
exec->threadstack = NULL;
}
ntree_exec_end(exec);
@ -260,8 +260,8 @@ void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
bNodeTreeExec *exec = ntree->execdata;
/* convert caller data to struct */
scd.shi= shi;
scd.shr= shr;
scd.shi = shi;
scd.shr = shr;
/* each material node has own local shaderesult, with optional copying */
memset(shr, 0, sizeof(ShadeResult));
@ -276,14 +276,14 @@ void ntreeShaderExecTree(bNodeTree *ntree, ShadeInput *shi, ShadeResult *shr)
exec = ntree->execdata;
}
nts= ntreeGetThreadStack(exec, shi->thread);
nts = ntreeGetThreadStack(exec, shi->thread);
ntreeExecThreadNodes(exec, nts, &scd, shi->thread);
ntreeReleaseThreadStack(nts);
// \note: set material back to preserved material
shi->mat = mat;
/* better not allow negative for now */
if (shr->combined[0]<0.0f) shr->combined[0]= 0.0f;
if (shr->combined[1]<0.0f) shr->combined[1]= 0.0f;
if (shr->combined[2]<0.0f) shr->combined[2]= 0.0f;
if (shr->combined[0] < 0.0f) shr->combined[0] = 0.0f;
if (shr->combined[1] < 0.0f) shr->combined[1] = 0.0f;
if (shr->combined[2] < 0.0f) shr->combined[2] = 0.0f;
}

@ -58,7 +58,7 @@
static void foreach_nodetree(Main *main, void *calldata, bNodeTreeCallback func)
{
Tex *tx;
for (tx= main->tex.first; tx; tx= tx->id.next) {
for (tx = main->tex.first; tx; tx = tx->id.next) {
if (tx->nodetree) {
func(calldata, &tx->id, tx->nodetree);
}
@ -83,7 +83,7 @@ static void localize(bNodeTree *localtree, bNodeTree *UNUSED(ntree))
bNode *node, *node_next;
/* replace muted nodes and reroute nodes by internal links */
for (node= localtree->nodes.first; node; node= node_next) {
for (node = localtree->nodes.first; node; node = node_next) {
node_next = node->next;
if (node->flag & NODE_MUTED || node->type == NODE_REROUTE) {
@ -98,15 +98,15 @@ static void local_sync(bNodeTree *localtree, bNodeTree *ntree)
bNode *lnode;
/* copy over contents of previews */
for (lnode= localtree->nodes.first; lnode; lnode= lnode->next) {
for (lnode = localtree->nodes.first; lnode; lnode = lnode->next) {
if (ntreeNodeExists(ntree, lnode->new_node)) {
bNode *node= lnode->new_node;
bNode *node = lnode->new_node;
if (node->preview && node->preview->rect) {
if (lnode->preview && lnode->preview->rect) {
int xsize= node->preview->xsize;
int ysize= node->preview->ysize;
memcpy(node->preview->rect, lnode->preview->rect, 4*xsize + xsize*ysize*sizeof(char)*4);
int xsize = node->preview->xsize;
int ysize = node->preview->ysize;
memcpy(node->preview->rect, lnode->preview->rect, 4 * xsize + xsize * ysize * sizeof(char) * 4);
}
}
}
@ -141,15 +141,15 @@ int ntreeTexTagAnimated(bNodeTree *ntree)
{
bNode *node;
if (ntree==NULL) return 0;
if (ntree == NULL) return 0;
for (node= ntree->nodes.first; node; node= node->next) {
if (node->type==TEX_NODE_CURVE_TIME) {
for (node = ntree->nodes.first; node; node = node->next) {
if (node->type == TEX_NODE_CURVE_TIME) {
nodeUpdate(ntree, node);
return 1;
}
else if (node->type==NODE_GROUP) {
if ( ntreeTexTagAnimated((bNodeTree *)node->id) ) {
else if (node->type == NODE_GROUP) {
if (ntreeTexTagAnimated((bNodeTree *)node->id) ) {
return 1;
}
}
@ -178,10 +178,10 @@ bNodeTreeExec *ntreeTexBeginExecTree(bNodeTree *ntree, int use_tree_data)
exec = ntree_exec_begin(ntree);
/* allocate the thread stack listbase array */
exec->threadstack= MEM_callocN(BLENDER_MAX_THREADS*sizeof(ListBase), "thread stack array");
exec->threadstack = MEM_callocN(BLENDER_MAX_THREADS * sizeof(ListBase), "thread stack array");
for (node= exec->nodetree->nodes.first; node; node= node->next)
node->need_exec= 1;
for (node = exec->nodetree->nodes.first; node; node = node->next)
node->need_exec = 1;
if (use_tree_data) {
/* XXX this should not be necessary, but is still used for cmp/sha/tex nodes,
@ -200,9 +200,9 @@ static void tex_free_delegates(bNodeTreeExec *exec)
bNodeStack *ns;
int th, a;
for (th=0; th<BLENDER_MAX_THREADS; th++)
for (nts=exec->threadstack[th].first; nts; nts=nts->next)
for (ns= nts->stack, a=0; a<exec->stacksize; a++, ns++)
for (th = 0; th < BLENDER_MAX_THREADS; th++)
for (nts = exec->threadstack[th].first; nts; nts = nts->next)
for (ns = nts->stack, a = 0; a < exec->stacksize; a++, ns++)
if (ns->data && !ns->is_copy)
MEM_freeN(ns->data);
}
@ -213,21 +213,21 @@ static void tex_free_delegates(bNodeTreeExec *exec)
void ntreeTexEndExecTree(bNodeTreeExec *exec, int use_tree_data)
{
if (exec) {
bNodeTree *ntree= exec->nodetree;
bNodeTree *ntree = exec->nodetree;
bNodeThreadStack *nts;
int a;
if (exec->threadstack) {
tex_free_delegates(exec);
for (a=0; a<BLENDER_MAX_THREADS; a++) {
for (nts=exec->threadstack[a].first; nts; nts=nts->next)
for (a = 0; a < BLENDER_MAX_THREADS; a++) {
for (nts = exec->threadstack[a].first; nts; nts = nts->next)
if (nts->stack) MEM_freeN(nts->stack);
BLI_freelistN(&exec->threadstack[a]);
}
MEM_freeN(exec->threadstack);
exec->threadstack= NULL;
exec->threadstack = NULL;
}
ntree_exec_end(exec);
@ -254,10 +254,10 @@ int ntreeTexExecTree(
MTex *mtex
) {
TexCallData data;
float *nor= texres->nor;
float *nor = texres->nor;
int retval = TEX_INT;
bNodeThreadStack *nts = NULL;
bNodeTreeExec *exec= nodes->execdata;
bNodeTreeExec *exec = nodes->execdata;
data.co = co;
data.dxt = dxt;
@ -267,9 +267,9 @@ int ntreeTexExecTree(
data.do_preview = preview;
data.thread = thread;
data.which_output = which_output;
data.cfra= cfra;
data.mtex= mtex;
data.shi= shi;
data.cfra = cfra;
data.mtex = mtex;
data.shi = shi;
/* ensure execdata is only initialized once */
if (!exec) {
@ -278,10 +278,10 @@ int ntreeTexExecTree(
ntreeTexBeginExecTree(nodes, 1);
BLI_unlock_thread(LOCK_NODES);
exec= nodes->execdata;
exec = nodes->execdata;
}
nts= ntreeGetThreadStack(exec, thread);
nts = ntreeGetThreadStack(exec, thread);
ntreeExecThreadNodes(exec, nts, &data, thread);
ntreeReleaseThreadStack(nts);
@ -289,7 +289,7 @@ int ntreeTexExecTree(
retval |= TEX_RGB;
/* confusing stuff; the texture output node sets this to NULL to indicate no normal socket was set
* however, the texture code checks this for other reasons (namely, a normal is required for material) */
texres->nor= nor;
texres->nor = nor;
return retval;
}

@ -318,7 +318,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
if(qtexport == NULL) qtexport = MEM_callocN(sizeof(QuicktimeExport), "QuicktimeExport");
[QTMovie enterQTKitOnThread];
[QTMovie enterQTKitOnThread];
/* Check first if the QuickTime 7.2.1 initToWritableFile: method is available */
if ([[[[QTMovie alloc] init] autorelease] respondsToSelector:@selector(initToWritableFile:error:)] != YES) {
@ -328,7 +328,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
else {
makeqtstring(rd, name);
qtexport->filename = [[NSString alloc] initWithCString:name
encoding:[NSString defaultCStringEncoding]];
encoding:[NSString defaultCStringEncoding]];
qtexport->movie = nil;
qtexport->audioFile = NULL;
@ -354,7 +354,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
strcpy(extension,".aiff");
break;
}
tmpnam(name);
strcat(name, extension);
outputFileURL = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,(UInt8*) name, strlen(name), false);
@ -362,7 +362,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
if (outputFileURL) {
qtexport->audioFileName = [[NSString alloc] initWithCString:name
encoding:[NSString defaultCStringEncoding]];
encoding:[NSString defaultCStringEncoding]];
qtexport->audioInputFormat.mSampleRate = U.audiorate;
qtexport->audioInputFormat.mFormatID = kAudioFormatLinearPCM;
@ -471,7 +471,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
qtexport->audioOutputFormat.mBytesPerFrame = qtexport->audioOutputFormat.mBytesPerPacket;
break;
}
err = AudioFileCreateWithURL(outputFileURL, audioFileType, &qtexport->audioOutputFormat, kAudioFileFlags_EraseFile, &qtexport->audioFile);
CFRelease(outputFileURL);
@ -489,27 +489,27 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
else {
UInt32 prop,propSize;
/* Set up codec properties */
if (rd->qtcodecsettings.audiocodecType == kAudioFormatMPEG4AAC) { /*Lossy compressed format*/
if (rd->qtcodecsettings.audiocodecType == kAudioFormatMPEG4AAC) { /* Lossy compressed format */
prop = rd->qtcodecsettings.audioBitRate;
AudioConverterSetProperty(qtexport->audioConverter, kAudioConverterEncodeBitRate,
sizeof(prop), &prop);
sizeof(prop), &prop);
if (rd->qtcodecsettings.audioCodecFlags & QTAUDIO_FLAG_CODEC_ISCBR)
prop = kAudioCodecBitRateControlMode_Constant;
else
prop = kAudioCodecBitRateControlMode_LongTermAverage;
AudioConverterSetProperty(qtexport->audioConverter, kAudioCodecPropertyBitRateControlMode,
sizeof(prop), &prop);
sizeof(prop), &prop);
}
/* Conversion quality : if performance impact then offer degraded option */
if ((rd->qtcodecsettings.audioCodecFlags & QTAUDIO_FLAG_RESAMPLE_NOHQ) == 0) {
if ((rd->qtcodecsettings.audioCodecFlags & QTAUDIO_FLAG_RESAMPLE_NOHQ) == 0) {
prop = kAudioConverterSampleRateConverterComplexity_Mastering;
AudioConverterSetProperty(qtexport->audioConverter, kAudioConverterSampleRateConverterComplexity,
sizeof(prop), &prop);
sizeof(prop), &prop);
prop = kAudioConverterQuality_Max;
AudioConverterSetProperty(qtexport->audioConverter, kAudioConverterSampleRateConverterQuality,
sizeof(prop), &prop);
sizeof(prop), &prop);
}
write_cookie(qtexport->audioConverter, qtexport->audioFile);
@ -517,29 +517,30 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
/* Allocate output buffer */
if (qtexport->audioOutputFormat.mBytesPerPacket ==0) /* VBR */
AudioConverterGetProperty(qtexport->audioConverter, kAudioConverterPropertyMaximumOutputPacketSize,
&propSize, &qtexport->audioCodecMaxOutputPacketSize);
&propSize, &qtexport->audioCodecMaxOutputPacketSize);
else
qtexport->audioCodecMaxOutputPacketSize = qtexport->audioOutputFormat.mBytesPerPacket;
qtexport->audioInputBuffer = MEM_mallocN(AUDIOOUTPUTBUFFERSIZE, "qt_audio_inputPacket");
qtexport->audioOutputBuffer = MEM_mallocN(AUDIOOUTPUTBUFFERSIZE, "qt_audio_outputPacket");
qtexport->audioOutputPktDesc = MEM_mallocN(sizeof(AudioStreamPacketDescription)*AUDIOOUTPUTBUFFERSIZE/qtexport->audioCodecMaxOutputPacketSize,
"qt_audio_pktdesc");
qtexport->audioOutputPktDesc = MEM_mallocN(sizeof(AudioStreamPacketDescription) * AUDIOOUTPUTBUFFERSIZE / qtexport->audioCodecMaxOutputPacketSize,
"qt_audio_pktdesc");
}
}
}
if (err == noErr) {
qtexport->videoTempFileName = [[NSString alloc] initWithCString:tmpnam(nil)
encoding:[NSString defaultCStringEncoding]];
if (qtexport->videoTempFileName)
qtexport->videoTempFileName = [[NSString alloc] initWithCString:tmpnam(nil)
encoding:[NSString defaultCStringEncoding]];
if (qtexport->videoTempFileName) {
qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->videoTempFileName error:&error];
}
}
}
else
qtexport->movie = [[QTMovie alloc] initToWritableFile:qtexport->filename error:&error];
if(qtexport->movie == nil) {
BKE_report(reports, RPT_ERROR, "Unable to create quicktime movie.");
success= 0;
@ -585,7 +586,7 @@ int start_qt(struct Scene *scene, struct RenderData *rd, int rectx, int recty, R
specs.rate = U.audiorate;
qtexport->audioInputDevice = AUD_openReadDevice(specs);
AUD_playDevice(qtexport->audioInputDevice, scene->sound_scene, rd->sfra * rd->frs_sec_base / rd->frs_sec);
qtexport->audioOutputPktPos = 0;
qtexport->audioTotalExportedFrames = 0;
qtexport->audioTotalSavedFrames = 0;
@ -655,13 +656,13 @@ int append_qt(struct RenderData *rd, int start_frame, int frame, int *pixels, in
audioPacketsConverted = AUDIOOUTPUTBUFFERSIZE / qtexport->audioCodecMaxOutputPacketSize;
err = AudioConverterFillComplexBuffer(qtexport->audioConverter, AudioConverterInputCallback,
NULL, &audioPacketsConverted, &qtexport->audioBufferList, qtexport->audioOutputPktDesc);
NULL, &audioPacketsConverted, &qtexport->audioBufferList, qtexport->audioOutputPktDesc);
if (audioPacketsConverted) {
AudioFileWritePackets(qtexport->audioFile, false, qtexport->audioBufferList.mBuffers[0].mDataByteSize,
qtexport->audioOutputPktDesc, qtexport->audioOutputPktPos, &audioPacketsConverted, qtexport->audioOutputBuffer);
qtexport->audioOutputPktDesc, qtexport->audioOutputPktPos, &audioPacketsConverted, qtexport->audioOutputBuffer);
qtexport->audioOutputPktPos += audioPacketsConverted;
if (qtexport->audioOutputFormat.mFramesPerPacket) {
if (qtexport->audioOutputFormat.mFramesPerPacket) {
// this is the common case: format has constant frames per packet
qtexport->audioTotalSavedFrames += (audioPacketsConverted * qtexport->audioOutputFormat.mFramesPerPacket);
}
@ -751,8 +752,8 @@ void end_qt(void)
}
/* Save file */
dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:QTMovieFlatten];
dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES]
forKey:QTMovieFlatten];
if (dict) {
[qtexport->movie writeToFile:qtexport->filename withAttributes:dict];