void *Undo_Do_Block_Delete(
	struct Tracker_Windows *window,
	struct WBlocks *wblock,
	struct WTracks *wtrack,
	int realline,
	void *pointer
){
	struct Undo_Block_InsertDelete *ubi=(struct Undo_Block_InsertDelete *)pointer;

	if(ubi->wblock==NULL){
		return Undo_Do_Block_Insert(window,wblock,wtrack,realline,pointer);
	}

	InsertBlock_IncBlockNums(ubi->blockpos);
	ListAddElement1(&root->song->blocks,&ubi->wblock->block->l);
	ListAddElement1(&window->wblocks,&ubi->wblock->l);

        SEQUENCER_create_from_state(ubi->sequencer_state, root->song);
        
	BS_UpdateBlockList();
	BS_UpdatePlayList();

	ubi->wblock=NULL;
	return ubi;
}
示例#2
0
/*****************************************************************************
  FUNCTION
    Sets the num attribute to the first free elementnum and inserts the
    element.
*****************************************************************************/
void ListAddElement1_ff(
	void *voidlistroot,
	struct ListHeader1 *element
){
	struct ListHeaderPointer1 *listroot=voidlistroot;
	element->num=ListFindFirstFreePlace1(listroot->root);
	ListAddElement1(listroot,element);
}
示例#3
0
文件: fxlines.c 项目: erdoukki/radium
static void AddNewTypeOfFxNodeLine(const struct WBlocks *wblock, struct WTracks *wtrack, struct FX *fx, const Place *p2, int val){
  printf("new, fxnum: %d, wtrack->fxs->l.num:%d\n",fx->num,wtrack->track->fxs==NULL?-1000:wtrack->track->fxs->l.num);
  
  struct FXs *fxs=talloc(sizeof(struct FXs));
  fxs->l.num=fx->num;
  fxs->fx=fx;
  ListAddElement1(&wtrack->track->fxs,&fxs->l);
  
  struct FXNodeLines *fxnodeline=talloc(sizeof(struct FXNodeLines));
  fxnodeline->val=val;
  PlaceCopy(&fxnodeline->l.p,p2);
  ListAddElement3(&fxs->fxnodelines,&fxnodeline->l);
}
示例#4
0
int OpenTrackerWindow(int x, int y, int width,int height){
	struct Tracker_Windows *twindow;

	twindow=talloc(sizeof(struct Tracker_Windows));

	twindow->l.num=ListFindFirstFreePlace1(&root->song->tracker_windows->l);

	twindow->x=x;
	twindow->y=y;
	twindow->width=width;
	twindow->height=height;

#ifdef USE_GFX_OP_QUEUE
        GFX_create_op_queue(twindow);
#endif

	if(GFX_CreateVisual(twindow)!=0)
		return -1;

	twindow->l.num=ListFindFirstFreePlace1(&root->song->tracker_windows->l);

	twindow->playalong=true;

        InitSliderValues(twindow);

	twindow->curr_track_sub= -1;

        twindow->show_lpb_track=true;
        twindow->show_bpm_track=true;
        twindow->show_reltempo_track=true;
        
	//twindow->minnodesize=SETTINGS_read_int("minimum_node_size",20);

	UpdateWBlocks(twindow);
	twindow->wblock=twindow->wblocks;

	//UpdateTrackerWindow(twindow);
        //DrawUpTrackerWindow(twindow);

	ListAddElement1(&root->song->tracker_windows,&twindow->l);

	//	PixMap_reset(twindow);

	return twindow->l.num;
}
示例#5
0
static void InitPEQnotesBlock(
	PEQ_UsedTracks **UsedTracks,
	const struct Blocks *block,
	const Place *p,
	int playlistaddpos
){
	PEQ_UsedTracks *peq_usedtrack;

	struct Notes *note;
	struct Tracks *track=block->tracks;

	while(track!=NULL){
		if(
			ListFindElement1_r0(*UsedTracks,track->l.num) == NULL
		){
			note=track->notes;
			if(note!=NULL){

				while(PlaceLessThan(&note->l.p,p)){
					note=NextNote(note);
					if(note==NULL) break;
				}

				if(note!=NULL){
					peq_usedtrack=talloc(sizeof(PEQ_UsedTracks));
					peq_usedtrack->num=track->l.num;
					ListAddElement1(UsedTracks,peq_usedtrack);
					InitPEQnote(block,track,note,playlistaddpos);
				} else{

                                  //PEQ_FindNextNoteAddPlayPos(peq);
                                  
                                }
                        }
		}
		track=NextTrack(track);
	}
}
示例#6
0
文件: tracks.c 项目: onukore/radium
static void NewTrack(struct Blocks *block,struct Tracks *track){
  InitTrack(track);
  ListAddElement1(&block->tracks,&track->l);
}