void SaveSelected() { if (g_pSelTracks) delete [] g_pSelTracks; g_iNumSel = NumSelTracks(); if (g_iNumSel) { g_pSelTracks = new MediaTrack*[g_iNumSel]; int i = 0; for (int j = 0; j <= GetNumTracks(); j++) if (*(int*)GetSetMediaTrackInfo(CSurf_TrackFromID(j, false), "I_SELECTED", NULL)) g_pSelTracks[i++] = CSurf_TrackFromID(j, false); } }
// Gradient stuffs void TrackGradient(COMMAND_T* = NULL) { int iNumSel = NumSelTracks(); int iCurPos = 0; if (iNumSel < 2) return; for (int i = 1; i <= GetNumTracks(); i++) { MediaTrack* tr = CSurf_TrackFromID(i, false); if (*(int*)GetSetMediaTrackInfo(tr, "I_SELECTED", NULL)) { COLORREF cr = CalcGradient(g_crGradStart, g_crGradEnd, (double)iCurPos++ / (iNumSel-1)) | 0x1000000; GetSetMediaTrackInfo(tr, "I_CUSTOMCOLOR", &cr); } } Undo_OnStateChangeEx(__LOCALIZE("Set tracks to color gradient","sws_undo"), UNDO_STATE_TRACKCFG, -1); }