*/}}
Browse Source

node api renew

YimingWu 1 year ago
parent
commit
0924d86b78
3 changed files with 11 additions and 27 deletions
  1. 10 25
      ournodes.c
  2. 1 1
      ouroperations.c
  3. 0 1
      ourpaint.h

+ 10 - 25
ournodes.c

@@ -67,8 +67,8 @@ void IDN_BrushSettingsDestroy(OurBrushSettingsNode* n){
     laDestroyOutSocket(n->CanvasScale); laDestroyOutSocket(n->Iteration); laDestroyOutSocket(n->Custom1); laDestroyOutSocket(n->Custom2);
     strSafeDestroy(&n->Base.Name);
 }
-int IDN_BrushSettingsVisit(OurBrushSettingsNode* n, laListHandle* l){
-    LA_GUARD_THIS_NODE(n); n->Base.Eval=LA_DAG_FLAG_PERM; lstAppendPointer(l, n);
+int IDN_BrushSettingsVisit(OurBrushSettingsNode* n, laNodeVisitInfo* vi){
+    LA_GUARD_THIS_NODE(n,vi);  LA_ADD_THIS_NODE(n,vi);
     return LA_DAG_FLAG_PERM;
 }
 int IDN_BrushSettingsEval(OurBrushSettingsNode* n){
@@ -142,10 +142,10 @@ void IDN_BrushOutputsDestroy(OurBrushOutputsNode* n){
     laDestroyInSocket(n->Color); laDestroyInSocket(n->Repeats); laDestroyInSocket(n->Discard);
     strSafeDestroy(&n->Base.Name);
 }
-int IDN_BrushOutputsVisit(OurBrushOutputsNode* n, laListHandle* l){
-    LA_GUARD_THIS_NODE(n);
+int IDN_BrushOutputsVisit(OurBrushOutputsNode* n, laNodeVisitInfo* vi){
+    LA_GUARD_THIS_NODE(n,vi);
 #define BRUSH_OUT_VISIT(a) \
-    if(LA_SRC_AND_PARENT(n->a)){ laBaseNode*bn=n->a->Source->Parent; LA_VISIT_NODE(bn); }
+    if(LA_SRC_AND_PARENT(n->a)){ laBaseNode*bn=n->a->Source->Parent; LA_VISIT_NODE(bn,vi); }
     BRUSH_OUT_VISIT(Offset)
     BRUSH_OUT_VISIT(Size)
     BRUSH_OUT_VISIT(Transparency)
@@ -159,7 +159,7 @@ int IDN_BrushOutputsVisit(OurBrushOutputsNode* n, laListHandle* l){
     BRUSH_OUT_VISIT(Repeats)
     BRUSH_OUT_VISIT(Discard)
 #undef BRUSH_OUT_VISIT
-    n->Base.Eval=LA_DAG_FLAG_PERM; lstAppendPointer(l, n);
+    LA_ADD_THIS_NODE(n,vi);
     return LA_DAG_FLAG_PERM;
 }
 int IDN_BrushOutputsEval(OurBrushOutputsNode* n){
@@ -242,8 +242,8 @@ void IDN_BrushDeviceDestroy(OurBrushDeviceNode* n){
     laDestroyOutSocket(n->Angle); laDestroyOutSocket(n->Length); laDestroyOutSocket(n->LengthAccum); 
     strSafeDestroy(&n->Base.Name);
 }
-int IDN_BrushDeviceVisit(OurBrushDeviceNode* n, laListHandle* l){
-    LA_GUARD_THIS_NODE(n); n->Base.Eval=LA_DAG_FLAG_PERM; lstAppendPointer(l, n);
+int IDN_BrushDeviceVisit(OurBrushDeviceNode* n, laNodeVisitInfo* vi){
+    LA_GUARD_THIS_NODE(n,vi); LA_ADD_THIS_NODE(n,vi);
     return LA_DAG_FLAG_PERM;
 }
 int IDN_BrushDeviceEval(OurBrushDeviceNode* n){
@@ -278,25 +278,10 @@ void ui_BrushDeviceNode(laUiList *uil, laPropPack *This, laPropPack *Extra, laCo
 }
 
 int ourEvalBrush(){
-    for(laListItemPointer*lip=Our->BrushEval.pFirst;lip;lip=lip->pNext){
-        laBaseNode* n=lip->p; if(!n->InitDone){ n->Type->Init(n,1); n->InitDone=1; } n->Type->Eval(n); 
-    }
-    return 1;
+    return Our->CurrentBrush?laRunPage(Our->CurrentBrush->Rack, 1):0;
 }
 int ourRebuildBrushEval(){
-    while(lstPopPointer(&Our->BrushEval));
-    if(!Our->CurrentBrush || !Our->CurrentBrush->Rack) return LA_DAG_FLAG_PERM;
-    laListHandle pending={0}; laRackPage* rp=Our->CurrentBrush->Rack; if(!rp)return LA_DAG_FLAG_PERM;
-    for(laNodeRack* ir=rp->Racks.pFirst;ir;ir=ir->Item.pNext){
-        for(laBaseNode*bn=ir->Nodes.pFirst;bn;bn=bn->Item.pNext){ if(!bn->InitDone){ bn->Type->Init(bn,1); bn->InitDone=1; } lstAppendPointer(&pending,bn); bn->Eval=0; }
-    }
-    laBaseNode*n;int result=LA_DAG_FLAG_PERM; laListItemPointer*NextLip;
-    for(laListItemPointer*lip=pending.pFirst;lip;lip=NextLip){ n=lip->p; NextLip=lip->pNext;
-        if(n->Eval&LA_DAG_FLAG_PERM) continue;
-        result=n->Type->Visit(n,&Our->BrushEval); if(result==LA_DAG_FLAG_ERR){ while(lstPopPointer(&pending)); break; }
-    }
-    if(result==LA_DAG_FLAG_ERR){ while(lstPopPointer(&MAIN.InputMapping->Eval)); return LA_DAG_FLAG_ERR; }
-    return LA_DAG_FLAG_PERM;
+    return Our->CurrentBrush?laRebuildPageEval(Our->CurrentBrush->Rack):0;
 }
 
 

+ 1 - 1
ouroperations.c

@@ -1560,7 +1560,7 @@ int ourinv_Action(laOperator* a, laEvent* e){
     if(l->Hide || l->Transparency==1 || l->Lock){ return LA_FINISHED; }
     Our->LockBackground=1; laNotifyUsers("our.lock_background");
     our_EnsureEraser(e->IsEraser);
-    laHideCursor();
+    //laHideCursor();
     return LA_RUNNING;
 }
 int ourmod_Paint(laOperator* a, laEvent* e){

+ 0 - 1
ourpaint.h

@@ -273,7 +273,6 @@ STRUCTURE(OurPaint){
     OurBrush*    CurrentBrush;
     real SaveBrushSize,SaveEraserSize;
     OurDab* Dabs; int NextDab,MaxDab;
-    laListHandle BrushEval;
 
     real CurrentScale;
     real DefaultScale;