Ejemplo n.º 1
0
void cutTrack(int tracknum, int blocknum, int windownum){
  if (tracknum==-1 && blocknum==-1){
    struct Tracker_Windows *window=getWindowFromNum(windownum);if(window==NULL) return;
    CB_CutTrack_CurrPos(window);
  } else {

    struct Tracker_Windows *window=NULL;
    struct WTracks *wtrack;
    struct WBlocks *wblock;
    
    wtrack=getWTrackFromNumA(
                             windownum,
                             &window,
                             blocknum,
                             &wblock,
                             tracknum
                             );

    if(wtrack==NULL) return;

    cb_wtrack = CB_CutTrack(window, wblock, wtrack);

    window->must_redraw = true;
  }
}
Ejemplo n.º 2
0
void DeleteTracks(
                  struct Tracker_Windows *window,
                  struct WBlocks *wblock,
                  NInt tracknum,
                  NInt todelete
                  )
{
	NInt lokke;
	NInt num_tracks;
	struct Blocks *block=wblock->block;
	struct WTracks *wtrack;

        if(tracknum>=block->num_tracks+1 || tracknum<0) return;
                
	if(tracknum-todelete>=block->num_tracks){
	  todelete=block->num_tracks-tracknum;
	}

        PC_Pause();
          
	if(block->num_tracks==1){
          CB_CutTrack_CurrPos(window);
          goto exit;
        }

	num_tracks=block->num_tracks-todelete;
	
	fprintf(stderr,"delete track. Curr: %d, num_tracks: %d, todelete: %d\n",tracknum,num_tracks,todelete);

	for(lokke=tracknum ; lokke<num_tracks-1+todelete;lokke++){
	  wtrack=CB_CopyTrack(
			      wblock,
			      ListFindElement1(&wblock->wtracks->l,lokke+todelete)
			      );
	  co_CB_PasteTrack(
                           wblock,
                           wtrack,
                           ListFindElement1(&wblock->wtracks->l,lokke)
                           );
	}
	
	Block_Set_num_tracks(block,num_tracks);

 exit:
        PC_StopPause(NULL);
}