📄 main.c
字号:
width * (minutes % 10), 0);
// Separator
window_bmp_blt(hWnd, graphics.bmp_main_time_font,
left + (5 * width), top, width, height, width * 10,
0);
// seconds
window_bmp_blt(hWnd, graphics.bmp_main_time_font,
left + (6 * width), top, width, height,
width * (seconds / 10), 0);
window_bmp_blt(hWnd, graphics.bmp_main_time_font,
left + (7 * width), top, width, height,
width * (seconds % 10), 0);
if (options.show_remaining_time == TRUE)
window_bmp_blt(hWnd, graphics.bmp_main_time_font, left, top,
width, height, width * 11, 0);
else
window_bmp_blt(hWnd, graphics.bmp_main_up, left, top, width,
height, left, top);
}
}
void main_draw_tracknr(HWND hWnd)
{
int top = Skin.Object[TrackText].y;
int left = Skin.Object[TrackText].x;
int width = Skin.Object[TrackText].w;
int height = Skin.Object[TrackText].h;
int nummertje;
int tracknr = 0;//globals.main_int_playlist_track_number;
CP_HPLAYLISTITEM hCursor;
for(hCursor= CPL_GetActiveItem(globals.m_hPlaylist); hCursor; hCursor = CPLI_Prev(hCursor))
tracknr++;
if (left) {
nummertje = tracknr % 10;
window_bmp_blt(hWnd, graphics.bmp_main_track_font,
left + (2 * width), top, width, height,
width * (nummertje), 0);
nummertje = ((tracknr - nummertje) % 100);
window_bmp_blt(hWnd, graphics.bmp_main_track_font, left + width,
top, width, height, width * (nummertje / 10), 0);
nummertje = ((tracknr - nummertje) % 1000);
window_bmp_blt(hWnd, graphics.bmp_main_track_font, left, top,
width, height, width * (nummertje / 100), 0);
}
}
BOOL path_is_directory(char *filename)
{
DWORD attribs = GetFileAttributes(filename);
if (attribs & FILE_ATTRIBUTE_DIRECTORY)
return TRUE;
else
return FALSE;
}
int playlist_open_file(BOOL clearlist)
{
OPENFILENAME fn;
char filefilter[] =
"All Supported files\0*.mp1;*.mp2;*.mp3;*.m3u;*.pls;*.wav;*.ogg\0"
"MPEG audio files (*.mp1;*.mp2;*.mp3)\0*.mp1;*.mp2;*.mp3\0"
"Vorbis files (*.ogg)\0*.ogg\0"
"Playlist files (*.m3u;*.pls)\0*.m3u;*.pls\0"
"WAV files (*.wav)\0*.wav\0"
"All Files (*.*)\0*.*\0";
BOOL returnval;
char initialfilename[MAX_PATH * 200] = "";
fn.lStructSize = sizeof(OPENFILENAME);
fn.hwndOwner = (HWND) GetWindowLong(windows.wnd_main, DWL_USER);
fn.hInstance = NULL;
fn.lpstrFilter = filefilter;
fn.lpstrCustomFilter = NULL;
fn.nMaxCustFilter = 0;
fn.nFilterIndex = 0;
fn.lpstrFile = initialfilename;
fn.nMaxFile = MAX_PATH * 200;
fn.lpstrFileTitle = NULL;
fn.nMaxFileTitle = 0;
fn.lpstrInitialDir = options.last_used_directory;
fn.lpstrTitle = NULL;
fn.Flags =
OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_EXPLORER |
OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_ENABLESIZING;
fn.nFileOffset = 0;
fn.nFileExtension = 0;
fn.lpstrDefExt = NULL;
fn.lCustData = 0;
fn.lpfnHook = NULL;
fn.lpTemplateName = NULL;
returnval = GetOpenFileName(&fn);
if (returnval != FALSE) {
char *newfilename;
char path_buffer[_MAX_PATH];
char path_buffer2[_MAX_PATH];
if (clearlist)
CPL_Empty(globals.m_hPlaylist);
strcpy(path_buffer, fn.lpstrFile);
if (path_is_directory(fn.lpstrFile) == TRUE) {
path_add_backslash(path_buffer);
} else {
path_remove_filespec(path_buffer);
}
strcpy(options.last_used_directory, path_buffer);
newfilename = fn.lpstrFile + fn.nFileOffset;
while (newfilename[0] != 0) {
strcpy(path_buffer2, path_buffer);
strcat(path_buffer2, newfilename);
CPL_SyncLoadNextFile(globals.m_hPlaylist);
CPL_AddFile(globals.m_hPlaylist, path_buffer2);
newfilename = newfilename + strlen(newfilename) + 1;
}
return 1;
}
return 0;
}
void main_draw_vu_from_mouse(HWND hWnd, int vunummer, int vuwaarde)
{
if (Skin.Object[vunummer].maxw == 1) // Vertical Slider
{
if (Skin.Object[vunummer].x2 != 0) {
window_bmp_blt(hWnd, graphics.bmp_main_up,
Skin.Object[vunummer].x,
Skin.Object[vunummer].y,
Skin.Object[vunummer].w,
Skin.Object[vunummer].h +
Skin.Object[vunummer].h2,
Skin.Object[vunummer].x,
Skin.Object[vunummer].y);
window_bmp_blt(hWnd, graphics.bmp_main_down,
Skin.Object[vunummer].x,
vuwaarde,
Skin.Object[vunummer].w2,
Skin.Object[vunummer].h2,
Skin.Object[vunummer].x2,
Skin.Object[vunummer].y2);
return;
}
window_bmp_blt(hWnd, graphics.bmp_main_up,
Skin.Object[vunummer].x,
vuwaarde,
Skin.Object[vunummer].w,
Skin.Object[vunummer].h - (vuwaarde -
Skin.Object[vunummer].y),
Skin.Object[vunummer].x, vuwaarde);
window_bmp_blt(hWnd, graphics.bmp_main_down,
Skin.Object[vunummer].x,
Skin.Object[vunummer].y,
Skin.Object[vunummer].w,
vuwaarde - Skin.Object[vunummer].y,
Skin.Object[vunummer].x, Skin.Object[vunummer].y);
} else // Horizontal Slider
{
if (Skin.Object[vunummer].x2 != 0) {
window_bmp_blt(hWnd, graphics.bmp_main_up,
Skin.Object[vunummer].x,
Skin.Object[vunummer].y,
Skin.Object[vunummer].w +
Skin.Object[vunummer].w2,
Skin.Object[vunummer].h,
Skin.Object[vunummer].x,
Skin.Object[vunummer].y);
window_bmp_blt(hWnd, graphics.bmp_main_down,
vuwaarde,
Skin.Object[vunummer].y,
Skin.Object[vunummer].w2,
Skin.Object[vunummer].h2,
Skin.Object[vunummer].x2,
Skin.Object[vunummer].y2);
return;
}
window_bmp_blt(hWnd, graphics.bmp_main_up,
Skin.Object[vunummer].x,
Skin.Object[vunummer].y,
vuwaarde - Skin.Object[vunummer].x,
Skin.Object[vunummer].h,
Skin.Object[vunummer].x, Skin.Object[vunummer].y);
window_bmp_blt(hWnd, graphics.bmp_main_down,
vuwaarde,
Skin.Object[vunummer].y,
Skin.Object[vunummer].w - (vuwaarde -
Skin.Object[vunummer].x),
Skin.Object[vunummer].h, vuwaarde,
Skin.Object[vunummer].y);
}
}
void main_draw_vu_from_value(HWND hWnd, int vunummer, int vuwaarde)
{
int positionwaarde;
if (Skin.Object[vunummer].maxw == 1) // Vertical slider
{
switch (vunummer) {
case VolumeSlider:
positionwaarde =
(int) ((float) Skin.Object[vunummer].y +
Skin.Object[vunummer].h -
(((float) vuwaarde / (float) 100.0f) *
(float) Skin.Object[vunummer].h));
break;
case PositionSlider:
positionwaarde =
(int) (Skin.Object[PositionSlider].y +
Skin.Object[PositionSlider].h) - vuwaarde;
if (vuwaarde > Skin.Object[PositionSlider].h)
positionwaarde = Skin.Object[PositionSlider].y;
break;
default: // so it's a eq
positionwaarde =
(int) ((float) Skin.Object[vunummer].y +
Skin.Object[vunummer].h -
(
((float) (vuwaarde + 128.0f) /
(float) 255.0f) * (float) Skin.Object[vunummer].h));
}
main_draw_vu_from_mouse(hWnd, vunummer, positionwaarde);
} else // Horizontal Slider
{
switch (vunummer) {
case VolumeSlider:
positionwaarde =
(int) ((float) Skin.Object[vunummer].x +
(((float) vuwaarde / (float) 100.0f) *
(float) Skin.Object[vunummer].w));
break;
case PositionSlider:
positionwaarde =
(int) vuwaarde + Skin.Object[PositionSlider].x;
if (vuwaarde > Skin.Object[PositionSlider].w)
positionwaarde =
Skin.Object[PositionSlider].w +
Skin.Object[PositionSlider].x;
break;
default: // so it's a eq
positionwaarde =
(int) ((float) Skin.Object[vunummer].x +
(
((float) (vuwaarde + 128.0) /
(float) 255.0f) * (float) Skin.Object[vunummer].w));
}
main_draw_vu_from_mouse(hWnd, vunummer, positionwaarde);
}
}
BOOL main_draw_vu_all(HWND hWnd, WPARAM wParam, LPARAM lParam,
BOOL rememberlastval)
{
POINTS cursorpos;
int teller;
int moveit = TRUE;
cursorpos = MAKEPOINTS(lParam);
for (teller = VolumeSlider; teller <= Eq8; teller++) {
int knobx=0,knoby=0;
int addx=0,addy=0;
if (Skin.Object[teller].maxw == 0) { // we have a horizontal one
knobx=Skin.Object[teller].w2/2;
addx=1;
}
else { // we have a vertical one
knoby=Skin.Object[teller].h2/2;
addy=1;
}
if (cursorpos.x >= Skin.Object[teller].x + knobx - addx
&& cursorpos.y >= Skin.Object[teller].y + knoby - addy
&& cursorpos.x <=
Skin.Object[teller].x + Skin.Object[teller].w + (knobx*2) + addx
&& cursorpos.y <=
Skin.Object[teller].y + Skin.Object[teller].h + (knoby*2) + addy) {
int waarde=0;
if (Skin.Object[teller].maxw == 0)
cursorpos.x-=knobx;
else
cursorpos.y-=knoby;
moveit = FALSE;
switch (teller) {
case Eq1:
case Eq2:
case Eq3:
case Eq4:
case Eq5:
case Eq6:
case Eq7:
case Eq8:
if (globals.main_bool_slider_keep_focus == FALSE) {
if (Skin.Object[teller].maxw == 1)
options.eq_settings[(teller - Eq1) + 1] =
(int) (
((Skin.Object
[teller].y +
Skin.Object[teller].h) -
cursorpos.y) * (255 /
(float)
Skin.Object[teller].
h)) - 128;
else
options.eq_settings[(teller - Eq1) + 1] =
(int) ((cursorpos.x - Skin.Object[teller].x) *
(255 / (float) Skin.Object[teller].w)) -
128;
if(options.eq_settings[(teller - Eq1) + 1]>127) options.eq_settings[(teller - Eq1) + 1]=127;
if(options.eq_settings[(teller - Eq1) + 1]<-128) options.eq_settings[(teller - Eq1) + 1]=-128;
waarde=options.eq_settings[(teller - Eq1) + 1];
main_set_eq();
}
break;
case VolumeSlider:
{
globals.main_bool_slider_keep_focus = TRUE;
if (Skin.Object[teller].maxw == 1) // we have a vertical one
{
globals.m_iVolume = (int) (((100.0f / (float)
Skin.Object[teller].h) *
( (Skin.Object[teller].y +
Skin.Object[teller].h) -
cursorpos.y)));
}
else
{
globals.m_iVolume =
(int) ((cursorpos.x - Skin.Object[teller].x) *
(100 / (float) Skin.Object[teller].w));
}
if(globals.m_iVolume>100) globals.m_iVolume=100;
if(globals.m_iVolume<0) globals.m_iVolume=0;
// CP_TRACE1("level=%d",globals.m_iVolume);
CPI_Player__SetVolume(globals.m_hPlayer, globals.m_iVolume);
waarde=globals.m_iVolume;
break;
}
case PositionSlider:
if(globals.m_bStreaming == TRUE)
{
waarde = globals.m_iStreamingPortion;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -