Revision: 21448
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21448
Author:   theeth
Date:     2009-07-09 03:48:08 +0200 (Thu, 09 Jul 2009)

Log Message:
-----------
Cosmetic changes in etch-a-ton drawing code, mostly.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenlib/BLI_graph.h
    
branches/blender2.5/blender/source/blender/editors/armature/editarmature_generate.c
    
branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c
    branches/blender2.5/blender/source/blender/editors/armature/reeb.c
    branches/blender2.5/blender/source/blender/editors/armature/reeb.h

Modified: branches/blender2.5/blender/source/blender/blenlib/BLI_graph.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenlib/BLI_graph.h      
2009-07-09 01:32:13 UTC (rev 21447)
+++ branches/blender2.5/blender/source/blender/blenlib/BLI_graph.h      
2009-07-09 01:48:08 UTC (rev 21448)
@@ -88,6 +88,7 @@
        StoppedFct      stopped;
        
        float *p, *no;
+       float size;
        
        int length;
        int index;

Modified: 
branches/blender2.5/blender/source/blender/editors/armature/editarmature_generate.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/armature/editarmature_generate.c
 2009-07-09 01:32:13 UTC (rev 21447)
+++ 
branches/blender2.5/blender/source/blender/editors/armature/editarmature_generate.c
 2009-07-09 01:48:08 UTC (rev 21448)
@@ -285,6 +285,8 @@
        EditBone *lastBone = NULL;
        EditBone *child = NULL;
        EditBone *parent = NULL;
+       float *normal = NULL;
+       float size_buffer = 1.2;
        int bone_start = 0;
        int end = iter->length;
        int index;
@@ -294,6 +296,13 @@
        parent = addEditBone(arm, "Bone");
        VECCOPY(parent->head, iter->p);
        
+       if (iter->size > 0)
+       {
+               parent->rad_head = iter->size * size_buffer;
+       }
+       
+       normal = iter->no;
+       
        index = next_subdividion(toolsettings, iter, bone_start, end, 
parent->head, parent->tail);
        while (index != -1)
        {
@@ -304,21 +313,33 @@
                child->parent = parent;
                child->flag |= BONE_CONNECTED;
                
+               if (iter->size > 0)
+               {
+                       child->rad_head = iter->size * size_buffer;
+                       parent->rad_tail = iter->size * size_buffer;
+               }
+
                /* going to next bone, fix parent */
                Mat4MulVecfl(invmat, parent->tail);
                Mat4MulVecfl(invmat, parent->head);
-               setBoneRollFromNormal(parent, iter->no, invmat, tmat);
+               setBoneRollFromNormal(parent, normal, invmat, tmat);
 
                parent = child; // new child is next parent
                bone_start = index; // start next bone from current index
 
+               normal = iter->no; /* use normal at head, not tail */
+
                index = next_subdividion(toolsettings, iter, bone_start, end, 
parent->head, parent->tail);
        }
        
        iter->tail(iter);
 
        VECCOPY(parent->tail, iter->p);
-
+       if (iter->size > 0)
+       {
+               parent->rad_tail = iter->size * size_buffer;
+       }
+               
        /* fix last bone */
        Mat4MulVecfl(invmat, parent->tail);
        Mat4MulVecfl(invmat, parent->head);

Modified: 
branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c
   2009-07-09 01:32:13 UTC (rev 21447)
+++ 
branches/blender2.5/blender/source/blender/editors/armature/editarmature_sketch.c
   2009-07-09 01:48:08 UTC (rev 21448)
@@ -90,6 +90,7 @@
 {
        float p[3];
        float no[3];
+       float size;
        SK_PType type;
        SK_PMode mode;
 } SK_Point;
@@ -136,6 +137,7 @@
 typedef struct SK_Sketch
 {
        ListBase        strokes;
+       ListBase        depth_peels;
        SK_Stroke       *active_stroke;
        SK_Stroke       *gesture;
        SK_Point        next_point;
@@ -150,9 +152,10 @@
        NextNFct        nextN;
        PreviousFct     previous;
        StoppedFct      stopped;
-       
+
        float *p, *no;
-       
+       float size;
+
        int length;
        int index;
        /*********************************/
@@ -251,19 +254,19 @@
        {
                BLI_ghash_free(TEMPLATES_HASH, NULL, NULL);
        }
-       
+
        TEMPLATES_HASH = BLI_ghash_new(BLI_ghashutil_inthash, 
BLI_ghashutil_intcmp);
        TEMPLATES_CURRENT = 0;
 
        for ( base = FIRSTBASE; base; base = base->next )
        {
                Object *ob = base->object;
-               
+
                if (ob != obedit && ob->type == OB_ARMATURE)
                {
                        index++;
                        BLI_ghash_insert(TEMPLATES_HASH, 
SET_INT_IN_POINTER(index), ob);
-                       
+
                        if (ob == ts->skgen_template)
                        {
                                TEMPLATES_CURRENT = index;
@@ -277,30 +280,30 @@
        GHashIterator ghi;
        char menu_header[] = "Template%t|None%x0|";
        char *p;
-       
+
        if (TEMPLATES_MENU != NULL)
        {
                MEM_freeN(TEMPLATES_MENU);
        }
-       
+
        TEMPLATES_MENU = MEM_callocN(sizeof(char) * 
(BLI_ghash_size(TEMPLATES_HASH) * 32 + 30), "skeleton template menu");
-       
+
        p = TEMPLATES_MENU;
-       
+
        p += sprintf(TEMPLATES_MENU, "%s", menu_header);
-       
+
        BLI_ghashIterator_init(&ghi, TEMPLATES_HASH);
-       
+
        while (!BLI_ghashIterator_isDone(&ghi))
        {
                Object *ob = BLI_ghashIterator_getValue(&ghi);
                int key = GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
-               
+
                p += sprintf(p, "|%s%%x%i", ob->id.name+2, key);
-               
+
                BLI_ghashIterator_step(&ghi);
        }
-       
+
        return TEMPLATES_MENU;
 }
 
@@ -312,22 +315,22 @@
        {
                GHashIterator ghi;
                BLI_ghashIterator_init(&ghi, TEMPLATES_HASH);
-               
+
                while (!BLI_ghashIterator_isDone(&ghi))
                {
                        Object *ob = BLI_ghashIterator_getValue(&ghi);
                        int key = 
GET_INT_FROM_POINTER(BLI_ghashIterator_getKey(&ghi));
-                       
+
                        if (ob == ts->skgen_template)
                        {
                                TEMPLATES_CURRENT = key;
                                break;
                        }
-                       
+
                        BLI_ghashIterator_step(&ghi);
                }
        }
-       
+
        return TEMPLATES_CURRENT;
 }
 
@@ -338,7 +341,7 @@
        {
                return NULL;
        }
-       
+
        if (ob != NULL)
        {
                if (TEMPLATE_RIGG && TEMPLATE_RIGG->ob != ob)
@@ -346,17 +349,17 @@
                        RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG);
                        TEMPLATE_RIGG = NULL;
                }
-               
+
                if (TEMPLATE_RIGG == NULL)
                {
                        bArmature *arm;
 
                        arm = ob->data;
-                       
+
                        TEMPLATE_RIGG = RIG_graphFromArmature(C, ob, arm);
                }
        }
-       
+
        return TEMPLATE_RIGG;
 }
 
@@ -364,14 +367,14 @@
 {
        ToolSettings *ts = CTX_data_tool_settings(C);
        RigGraph *rg = sk_makeTemplateGraph(C, ts->skgen_template);
-       
+
        if (rg)
        {
                return RIG_nbJoints(rg);
        }
        else
        {
-               return -1; 
+               return -1;
        }
 }
 
@@ -386,9 +389,9 @@
        {
                index = stk->active_stroke->nb_points;
        }
-       
+
        rg = sk_makeTemplateGraph(C, ts->skgen_template);
-       
+
        if (rg == NULL)
        {
                return "";
@@ -404,13 +407,13 @@
                MEM_freeN(TEMPLATES_MENU);
                TEMPLATES_MENU = NULL;
        }
-       
+
        if (TEMPLATES_HASH != NULL)
        {
                BLI_ghash_free(TEMPLATES_HASH, NULL, NULL);
                TEMPLATES_HASH = NULL;
        }
-       
+
        if (TEMPLATE_RIGG != NULL)
        {
                RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG);
@@ -428,14 +431,14 @@
        else
        {
                ts->skgen_template = NULL;
-               
+
                if (TEMPLATE_RIGG != NULL)
                {
                        RIG_freeRigGraph((BGraph*)TEMPLATE_RIGG);
                }
                TEMPLATE_RIGG = NULL;
        }
-}      
+}
 
 /*********************** CONVERSION ***************************/
 
@@ -456,7 +459,7 @@
                        char *side = ts->skgen_side_string;
                        int valid = 0;
                        int caps = 0;
-                       
+
                        if (BLI_streq(side, ""))
                        {
                                valid = 1;
@@ -471,7 +474,7 @@
                                valid = 1;
                                caps = 0;
                        }
-                       
+
                        if (valid)
                        {
                                if (arc->head->p[0] < 0)
@@ -490,14 +493,14 @@
 ReebNode *sk_pointToNode(SK_Point *pt, float imat[][4], float tmat[][3])
 {
        ReebNode *node;
-       
+
        node = MEM_callocN(sizeof(ReebNode), "reeb node");
        VECCOPY(node->p, pt->p);
        Mat4MulVecfl(imat, node->p);
-       
+
        VECCOPY(node->no, pt->no);
        Mat3MulVecfl(tmat, node->no);
-       
+
        return node;
 }
 
@@ -505,14 +508,14 @@
 {
        ReebArc *arc;
        int i;
-       
+
        arc = MEM_callocN(sizeof(ReebArc), "reeb arc");
        arc->head = sk_pointToNode(stk->points, imat, tmat);
        arc->tail = sk_pointToNode(sk_lastStrokePoint(stk), imat, tmat);
-       
+
        arc->bcount = stk->nb_points - 2; /* first and last are nodes, don't 
count */
        arc->buckets = MEM_callocN(sizeof(EmbedBucket) * arc->bcount, 
"Buckets");
-       
+
        for (i = 0; i < arc->bcount; i++)
        {
                VECCOPY(arc->buckets[i].p, stk->points[i + 1].p);
@@ -521,7 +524,7 @@
                VECCOPY(arc->buckets[i].no, stk->points[i + 1].no);
                Mat3MulVecfl(tmat, arc->buckets[i].no);
        }
-       
+
        return arc;
 }
 
@@ -533,22 +536,22 @@
        float tmat[3][3];
        ReebArc *arc;
        RigGraph *rg;
-       
+
        Mat4Invert(imat, obedit->obmat);
-       
+
        Mat3CpyMat4(tmat, obedit->obmat);
        Mat3Transp(tmat);
 
        arc = sk_strokeToArc(stk, imat, tmat);
-       
+
        sk_autoname(C, arc);
-       
+
        rg = sk_makeTemplateGraph(C, ts->skgen_template);
 
        BIF_retargetArc(C, arc, rg);
-       
+
        sk_autoname(C, NULL);
-       
+
        MEM_freeN(arc->head);
        MEM_freeN(arc->tail);
        REEB_freeArc((BArc*)arc);
@@ -559,29 +562,31 @@
 void sk_freeSketch(SK_Sketch *sketch)
 {
        SK_Stroke *stk, *next;
-       
+
        for (stk = sketch->strokes.first; stk; stk = next)
        {
                next = stk->next;
-               
+
                sk_freeStroke(stk);
        }
-       
+
+       BLI_freelistN(&sketch->depth_peels);
+
        MEM_freeN(sketch);
 }
 
 SK_Sketch* sk_createSketch()
 {
        SK_Sketch *sketch;
-       
+
        sketch = MEM_callocN(sizeof(SK_Sketch), "SK_Sketch");
-       
+
        sketch->active_stroke = NULL;
        sketch->gesture = NULL;
 
        sketch->strokes.first = NULL;
        sketch->strokes.last = NULL;
-       
+
        return sketch;
 }
 
@@ -614,15 +619,15 @@
 SK_Stroke* sk_createStroke()
 {
        SK_Stroke *stk;
-       
+
        stk = MEM_callocN(sizeof(SK_Stroke), "SK_Stroke");
-       
+
        stk->selected = 0;
        stk->nb_points = 0;
        stk->buf_size = SK_Stroke_BUFFER_INIT_SIZE;
-       
+
        sk_allocStrokeBuffer(stk);
-       
+
        return stk;
 }
 
@@ -631,13 +636,13 @@
        if (stk->nb_points < stk->buf_size)
        {
                SK_Point *old_points = stk->points;
-               
+
                stk->buf_size = stk->nb_points;
 
-               sk_allocStrokeBuffer(stk);              
-               
+               sk_allocStrokeBuffer(stk);
+
                memcpy(stk->points, old_points, sizeof(SK_Point) * 
stk->nb_points);
-               
+
                MEM_freeN(old_points);
        }
 }
@@ -647,13 +652,13 @@
        if (stk->nb_points == stk->buf_size)
        {
                SK_Point *old_points = stk->points;
-               
+
                stk->buf_size *= 2;
-               
+
                sk_allocStrokeBuffer(stk);
-               
+
                memcpy(stk->points, old_points, sizeof(SK_Point) * 
stk->nb_points);
-               
+
                MEM_freeN(old_points);
        }
 }
@@ -663,16 +668,16 @@
        if (stk->nb_points + n > stk->buf_size)
        {
                SK_Point *old_points = stk->points;
-               
+
                while (stk->nb_points + n > stk->buf_size)
                {
                        stk->buf_size *= 2;
                }
-               
+
                sk_allocStrokeBuffer(stk);
-               
+
                memcpy(stk->points, old_points, sizeof(SK_Point) * 
stk->nb_points);
-               
+
                MEM_freeN(old_points);
        }
 }
@@ -686,52 +691,52 @@
 void sk_insertStrokePoint(SK_Stroke *stk, SK_Point *pt, int n)
 {
        int size = stk->nb_points - n;
-       
+
        sk_growStrokeBuffer(stk);
-       
+
        memmove(stk->points + n + 1, stk->points + n, size * sizeof(SK_Point));
-       
+
        memcpy(stk->points + n, pt, sizeof(SK_Point));
-       
+
        stk->nb_points++;
 }
 
 void sk_appendStrokePoint(SK_Stroke *stk, SK_Point *pt)
 {
        sk_growStrokeBuffer(stk);
-       
+
        memcpy(stk->points + stk->nb_points, pt, sizeof(SK_Point));
-       
+
        stk->nb_points++;
 }
 
 void sk_insertStrokePoints(SK_Stroke *stk, SK_Point *pts, int len, int start, 
int end)
 {
        int size = end - start + 1;
-       
+
        sk_growStrokeBufferN(stk, len - size);
-       
+
        if (len != size)
        {
                int tail_size = stk->nb_points - end + 1;
-               
+
                memmove(stk->points + start + len, stk->points + end + 1, 
tail_size * sizeof(SK_Point));
        }
-       
+
        memcpy(stk->points + start, pts, len * sizeof(SK_Point));
-       
+
        stk->nb_points += len - size;
 }
 
 void sk_trimStroke(SK_Stroke *stk, int start, int end)
 {
        int size = end - start + 1;
-       
+
        if (start > 0)
        {

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to