void UpdateWTempoNodes( struct Tracker_Windows *window, struct WBlocks *wblock ){ struct TempoNodes *prev=wblock->block->temponodes; struct TempoNodes *temponode=NextTempoNode(prev); wblock->wtemponodes=talloc(sizeof(WTempoNodes *) * wblock->num_reallines); while(temponode!=NULL){ MakeNodeLines( window, wblock, NULL, &prev->l.p, &temponode->l.p, prev->reltempo, temponode->reltempo, (float)(-wblock->reltempomax+1.0f), (float)(wblock->reltempomax-1.0f), prev, &MakeWTempoNodesCallBack ); prev=temponode; temponode=NextTempoNode(temponode); } }
void UpdateFXNodeLines( struct Tracker_Windows *window, struct WBlocks *wblock, struct WTracks *wtrack ){ struct FXs *fx=wtrack->track->fxs; struct FXNodeLines *prev; struct FXNodeLines *fxnode; struct FXextrainfo fxextrainfo={0}; wtrack->wfxnodes=talloc(sizeof(WFXNodes *) * wblock->num_reallines); while(fx!=NULL){ fxextrainfo.FXs=fx; prev=fx->fxnodelines; fxnode=NextFXNodeLine(prev); fxextrainfo.color=fx->fx->color; while(fxnode!=NULL){ fxextrainfo.FXNodeLine=prev; MakeNodeLines( window, wblock, wtrack, &prev->l.p, &fxnode->l.p, (float)prev->val,(float)fxnode->val, (float) fx->fx->min,(float) fx->fx->max, &fxextrainfo, &MakeWFXNodesCallBack ); prev=fxnode; fxnode=NextFXNodeLine(fxnode); } fx=NextFX(fx); } }
static void AddTrackReallineNote( struct Tracker_Windows *window, struct WBlocks *wblock, struct WTracks *wtrack, struct Notes *note ){ int realline=FindRealLineForNote(wblock,note->Tline,note); int subtrack=0;//FindFirstFreeSubTrack(wtrack,realline,¬e->l.p); note->subtrack = subtrack; R_ASSERT(note!=NULL); InsertTRLElement( window, wtrack, subtrack, realline, TRE_THISNOTELINES, subtrack, 0.0f,0.0f,0,0, /* Will be filled in in the OrganizeThisNoteLines part. */ note, note ); #if !USE_OPENGL struct Velocities *velocity,*prev; float maxx = MAX_VELOCITY; struct TrackReallineNodeInfo nodeinfo; nodeinfo.wtrack=wtrack; nodeinfo.pointer=note; nodeinfo.type=TRE_VELLINE; nodeinfo.subtype=subtrack; velocity=note->velocities; if(velocity!=NULL){ MakeNodeLines( window, wblock, wtrack, ¬e->l.p,&velocity->l.p, (float)note->velocity,(float)velocity->velocity, 0.0f,maxx, &nodeinfo, &NodeLineCallBack_first ); prev=velocity; velocity=NextVelocity(velocity); while(velocity!=NULL){ nodeinfo.velocity=prev; MakeNodeLines( window, wblock, wtrack, &prev->l.p,&velocity->l.p, (float)prev->velocity,(float)velocity->velocity, 0.0f,maxx, &nodeinfo, &NodeLineCallBack_vel ); prev=velocity; velocity=NextVelocity(velocity); } nodeinfo.velocity=prev; MakeNodeLines( window, wblock, wtrack, &prev->l.p,¬e->end, (float)prev->velocity,(float)note->velocity_end, 0.0f,maxx, &nodeinfo, &NodeLineCallBack_last ); }else{ MakeNodeLines( window, wblock, wtrack, ¬e->l.p,¬e->end, (float)note->velocity,(float)note->velocity_end, 0.0f,maxx, &nodeinfo, &NodeLineCallBack ); } #endif }