From: <sag...@us...> - 2014-03-25 23:02:16
|
Revision: 3963 http://sourceforge.net/p/modplug/code/3963 Author: saga-games Date: 2014-03-25 23:01:50 +0000 (Tue, 25 Mar 2014) Log Message: ----------- [Imp] Replaced the "slightly" aged Win95-style icon set with a slightly more modern one (VS 200x icons). [Fix] Instrument tab / Effect vis: Grid is now also displayed correctly on Win98. [Mod] OpenMPT: Version is now 1.22.07.33 Modified Paths: -------------- trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/mptrack/Ctrl_ins.cpp trunk/OpenMPT/mptrack/Ctrl_pat.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/EffectVis.cpp trunk/OpenMPT/mptrack/EffectVis.h trunk/OpenMPT/mptrack/Globals.cpp trunk/OpenMPT/mptrack/Globals.h trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainbar.h trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Mpdlgs.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/View_ins.cpp trunk/OpenMPT/mptrack/View_ins.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/mptrack_08.vcproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters trunk/OpenMPT/mptrack/view_com.cpp Added Paths: ----------- trunk/OpenMPT/mptrack/CImageListEx.h trunk/OpenMPT/mptrack/PNG.cpp trunk/OpenMPT/mptrack/res/envelope_toolbar.png trunk/OpenMPT/mptrack/res/icons.png trunk/OpenMPT/mptrack/res/main_toolbar.png trunk/OpenMPT/mptrack/res/originals/ trunk/OpenMPT/mptrack/res/originals/NewDoc.pfi trunk/OpenMPT/mptrack/res/originals/envelope_toolbar.pfi trunk/OpenMPT/mptrack/res/originals/icons.pfi trunk/OpenMPT/mptrack/res/originals/main_toolbar.pfi trunk/OpenMPT/mptrack/res/originals/note.pfi trunk/OpenMPT/mptrack/res/originals/pattern_toolbar.pfi trunk/OpenMPT/mptrack/res/originals/readme.txt trunk/OpenMPT/mptrack/res/originals/sample_toolbar.pfi trunk/OpenMPT/mptrack/res/pattern_toolbar.png trunk/OpenMPT/mptrack/res/sample_toolbar.png trunk/OpenMPT/mptrack/res/splashno.png Removed Paths: ------------- trunk/OpenMPT/mptrack/res/MAINBAR.BMP trunk/OpenMPT/mptrack/res/envbar.bmp trunk/OpenMPT/mptrack/res/img_list.bmp trunk/OpenMPT/mptrack/res/modplthingmorecontrast.bmp trunk/OpenMPT/mptrack/res/patterns.bmp trunk/OpenMPT/mptrack/res/smptoolb.bmp trunk/OpenMPT/mptrack/res/splash.bmp trunk/OpenMPT/mptrack/res/splash0.bmp trunk/OpenMPT/mptrack/res/splash_new.bmp trunk/OpenMPT/mptrack/res/splash_old.bmp Modified: trunk/OpenMPT/common/versionNumber.h =================================================================== --- trunk/OpenMPT/common/versionNumber.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/common/versionNumber.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -17,7 +17,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 22 #define VER_MINOR 07 -#define VER_MINORMINOR 32 +#define VER_MINORMINOR 33 //Version string. For example "1.17.02.28" #define MPT_VERSION_STR VER_STRINGIZE(VER_MAJORMAJOR) "." VER_STRINGIZE(VER_MAJOR) "." VER_STRINGIZE(VER_MINOR) "." VER_STRINGIZE(VER_MINORMINOR) Added: trunk/OpenMPT/mptrack/CImageListEx.h =================================================================== --- trunk/OpenMPT/mptrack/CImageListEx.h (rev 0) +++ trunk/OpenMPT/mptrack/CImageListEx.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -0,0 +1,88 @@ +/* + * CImageListEx.h + * -------------- + * Purpose: A class that extends MFC's CImageList to handle alpha-blended images properly. Also provided 1-bit transparency fallback for legacy Win9x systems. + * Notes : (currently none) + * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + +#pragma once + +class CImageListEx : public CImageList +{ +public: + BOOL Create(UINT resourceID, int cx, int cy, int nInitial, int nGrow) + { + CBitmap *bitmap = ReadPNG(MAKEINTRESOURCE(resourceID)); + if(bitmap == nullptr) + { + return FALSE; + } + +#ifdef _M_IX86 + // This is only relevant for Win9x (testing for supported SDK version won't work here because we only support Win9x through KernelEx). + // Win9x only supports 1-bit transparency, so we pre-multiply all pixels with the default button face colour and create a transparency mask. + if(!mpt::Windows::IsWinNT()) + { + BITMAP bm; + bitmap->GetBitmap(&bm); + uint32_t bitmapSize = bm.bmWidthBytes * bm.bmHeight; + + std::vector<RGBQUAD> bitmapBytes(bitmapSize / sizeof(RGBQUAD)), maskBytes(bitmapSize / sizeof(RGBQUAD)); + bitmap->GetBitmapBits(bitmapSize, &bitmapBytes[0]); + + CBitmap bitmapMask; + bitmapMask.CreateBitmapIndirect(&bm); + bitmapMask.GetBitmapBits(bitmapSize, &maskBytes[0]); + + const COLORREF buttonColor = GetSysColor(COLOR_BTNFACE); + const uint8_t r = GetRValue(buttonColor), g = GetGValue(buttonColor), b = GetBValue(buttonColor); + + RGBQUAD *pixel = &bitmapBytes[0], *mask = &maskBytes[0]; + for(size_t i = bitmapBytes.size(); i != 0; i--, pixel++, mask++) + { + if(pixel->rgbReserved != 0) + { + // Pixel not fully transparent - multiply with default background colour +#define MIXCOLOR(a, b) (((a) * pixel->rgbReserved + (b) * (255 - pixel->rgbReserved)) >> 8); + pixel->rgbRed = MIXCOLOR(pixel->rgbRed, r); + pixel->rgbGreen = MIXCOLOR(pixel->rgbGreen, g); + pixel->rgbBlue = MIXCOLOR(pixel->rgbBlue, b); + pixel->rgbReserved = 255; +#undef MIXCOLOR + mask->rgbRed = 0; + mask->rgbGreen = 0; + mask->rgbBlue = 0; + mask->rgbReserved = 255; + } else + { + // Transparent pixel + mask->rgbRed = 255; + mask->rgbGreen = 255; + mask->rgbBlue = 255; + mask->rgbReserved = 255; + } + } + bitmap->SetBitmapBits(bitmapSize, &bitmapBytes[0]); + bitmapMask.SetBitmapBits(bitmapSize, &maskBytes[0]); + + if(!CImageList::Create(cx, cy, ILC_COLOR32 | ILC_MASK, nInitial, nGrow)) + { + return FALSE; + } + CImageList::Add(bitmap, &bitmapMask); + } else +#endif + { + if(!CImageList::Create(cx, cy, ILC_COLOR32, nInitial, nGrow)) + { + return FALSE; + } + CImageList::Add(bitmap, RGB(0, 0, 0)); + } + bitmap->Detach(); + delete bitmap; + return TRUE; + } +}; \ No newline at end of file Modified: trunk/OpenMPT/mptrack/Ctrl_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Ctrl_ins.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -885,7 +885,7 @@ CModControlDlg::OnInitDialog(); m_bInitialized = FALSE; - m_ToolBar.Init(); + m_ToolBar.Init(IDB_PATTERNS); m_ToolBar.AddButton(IDC_INSTRUMENT_NEW, TIMAGE_INSTR_NEW); m_ToolBar.AddButton(IDC_INSTRUMENT_OPEN, TIMAGE_OPEN); m_ToolBar.AddButton(IDC_INSTRUMENT_SAVEAS, TIMAGE_SAVE); Modified: trunk/OpenMPT/mptrack/Ctrl_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Ctrl_pat.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -133,7 +133,7 @@ rcOrderList.right = rect.right - 4; m_OrderList.Init(rcOrderList, pMainFrm->GetGUIFont()); // Toolbar buttons - m_ToolBar.Init(); + m_ToolBar.Init(IDB_PATTERNS); m_ToolBar.AddButton(IDC_PATTERN_NEW, TIMAGE_PATTERN_NEW); m_ToolBar.AddButton(IDC_PATTERN_PLAY, TIMAGE_PATTERN_PLAY); m_ToolBar.AddButton(IDC_PATTERN_PLAYFROMSTART, TIMAGE_PATTERN_RESTART); Modified: trunk/OpenMPT/mptrack/Ctrl_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Ctrl_smp.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -218,12 +218,12 @@ m_ComboZoom.SetItemData(m_ComboZoom.AddString("1:128"), 8); m_ComboZoom.SetCurSel(0); // File ToolBar - m_ToolBar1.Init(); + m_ToolBar1.Init(IDB_PATTERNS); m_ToolBar1.AddButton(IDC_SAMPLE_NEW, TIMAGE_SAMPLE_NEW); m_ToolBar1.AddButton(IDC_SAMPLE_OPEN, TIMAGE_OPEN); m_ToolBar1.AddButton(IDC_SAMPLE_SAVEAS, TIMAGE_SAVE); // Edit ToolBar - m_ToolBar2.Init(); + m_ToolBar2.Init(IDB_PATTERNS); m_ToolBar2.AddButton(IDC_SAMPLE_PLAY, TIMAGE_PREVIEW); m_ToolBar2.AddButton(IDC_SAMPLE_NORMALIZE, TIMAGE_SAMPLE_NORMALIZE); m_ToolBar2.AddButton(IDC_SAMPLE_AMPLIFY, TIMAGE_SAMPLE_AMPLIFY); Modified: trunk/OpenMPT/mptrack/EffectVis.cpp =================================================================== --- trunk/OpenMPT/mptrack/EffectVis.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/EffectVis.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -36,7 +36,6 @@ m_pViewPattern = pViewPattern; m_dwStatus = 0x00; m_nDragItem = -1; - m_brushBlack.CreateSolidBrush(RGB(0, 0, 0)); m_boolForceRedraw = TRUE; m_pModDoc = pModDoc; @@ -266,6 +265,7 @@ } void CEffectVis::DrawGrid() +//------------------------- { // Lots of room for optimisation here. // Draw vertical grid lines @@ -275,6 +275,8 @@ nBeat = m_pSndFile->Patterns[m_nPattern].GetRowsPerBeat(); nMeasure = m_pSndFile->Patterns[m_nPattern].GetRowsPerMeasure(); } + + m_dcGrid.FillSolidRect(m_rcDraw, 0); for (ROWINDEX row = m_startRow; row <= m_endRow; row++) { if (row % nMeasure == 0) @@ -310,7 +312,9 @@ } + void CEffectVis::SetPlayCursor(PATTERNINDEX nPat, ROWINDEX nRow) +//-------------------------------------------------------------- { int x1; //erase current playpos: @@ -334,8 +338,9 @@ InvalidateRect(NULL, FALSE); } -//----------------------------------------------------------------------------------------- + void CEffectVis::ShowVis(CDC * pDC, CRect rectBorder) +//--------------------------------------------------- { MPT_UNREFERENCED_PARAMETER(rectBorder); if (m_boolForceRedraw) @@ -388,9 +393,9 @@ void CEffectVis::ShowVisImage(CDC *pDC) //------------------------------------- { - CDC memDC ; - CBitmap memBitmap ; - CBitmap* oldBitmap ; // bitmap originally found in CMemDC + CDC memDC; + CBitmap memBitmap; + CBitmap* oldBitmap; // bitmap originally found in CMemDC // to avoid flicker, establish a memory dc, draw to it // and then BitBlt it to the destination "pDC" @@ -422,7 +427,7 @@ pDC->BitBlt(LEFTBORDER, TOPBORDER, m_rcDraw.Width()+LEFTBORDER, m_rcDraw.Height()+TOPBORDER, &memDC, 0, 0, SRCCOPY) ; } - memDC.SelectObject(oldBitmap) ; + memDC.SelectObject(oldBitmap); } @@ -433,12 +438,12 @@ //erase if ((UINT)m_nRowToErase<m_startRow || m_nParamToErase < 0) { - ::FillRect(m_dcNodes.m_hDC, &m_rcDraw, m_brushBlack); + m_dcNodes.FillSolidRect(m_rcDraw, 0); } else { int x = RowToScreenX(m_nRowToErase); - CRect r( x-NODEHALF-1, m_rcDraw.top, x-NODEHALF+NODESIZE+1, m_rcDraw.bottom); - ::FillRect(m_dcNodes.m_hDC, r, m_brushBlack); + CRect r(x - NODEHALF - 1, m_rcDraw.top, x - NODEHALF + NODESIZE + 1, m_rcDraw.bottom); + m_dcNodes.FillSolidRect(r, 0); } //Draw @@ -446,7 +451,7 @@ { int x = RowToScreenX(row); int y = RowToScreenY(row); - DibBlt(m_dcNodes.m_hDC, x-NODEHALF, y-NODEHALF, NODESIZE, NODESIZE, 0, 0, IsPcNote(row)? CMainFrame::bmpVisPcNode : CMainFrame::bmpVisNode); + DibBlt(m_dcNodes.m_hDC, x-NODEHALF, y-NODEHALF, NODESIZE, NODESIZE, 0, 0, IsPcNote(row) ? CMainFrame::bmpVisPcNode : CMainFrame::bmpVisNode); } } @@ -478,41 +483,40 @@ } -VOID CEffectVis::OnClose() +void CEffectVis::OnClose() //------------------------ { DoClose(); } -VOID CEffectVis::OnOK() +void CEffectVis::OnOK() //--------------------- { OnClose(); } -VOID CEffectVis::OnCancel() +void CEffectVis::OnCancel() //------------------------- { OnClose(); } -VOID CEffectVis::DoClose() +void CEffectVis::DoClose() //------------------------ { m_dcGrid.SelectObject(m_pbOldGrid); m_dcGrid.DeleteDC(); m_dcNodes.SelectObject(m_pbOldNodes); m_dcNodes.DeleteDC(); - m_dcPlayPos.SelectObject(m_pbOldPlayPos) ; - m_dcPlayPos.DeleteDC() ; + m_dcPlayPos.SelectObject(m_pbOldPlayPos); + m_dcPlayPos.DeleteDC(); m_bGrid.DeleteObject(); m_bNodes.DeleteObject(); - m_bPlayPos.DeleteObject() ; - m_brushBlack.DeleteObject(); + m_bPlayPos.DeleteObject(); if (m_hWnd) { Modified: trunk/OpenMPT/mptrack/EffectVis.h =================================================================== --- trunk/OpenMPT/mptrack/EffectVis.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/EffectVis.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -62,8 +62,6 @@ ROWINDEX m_nOldPlayPos; ModCommand m_templatePCNote; - CBrush m_brushBlack; - protected: ROWINDEX m_startRow; ROWINDEX m_endRow; @@ -101,8 +99,8 @@ CComboBox m_cmbEffectList, m_cmbActionList; CEdit m_edVisStatus; - virtual VOID OnOK(); - virtual VOID OnCancel(); + virtual void OnOK(); + virtual void OnCancel(); afx_msg void OnClose(); Setting<LONG>* GetSplitPosRef() {return NULL;} //rewbs.varWindowSize Modified: trunk/OpenMPT/mptrack/Globals.cpp =================================================================== --- trunk/OpenMPT/mptrack/Globals.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Globals.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -167,8 +167,8 @@ } -UINT CModTabCtrl::GetItemData(int nIndex) -//--------------------------------------- +LPARAM CModTabCtrl::GetItemData(int nIndex) +//----------------------------------------- { TC_ITEM tci; tci.mask = TCIF_PARAM; @@ -450,7 +450,7 @@ if (mask & 2) m_TabCtrl.InsertItem(count++, "Patterns", IDD_CONTROL_PATTERNS, IMAGE_PATTERNS); if (mask & 4) m_TabCtrl.InsertItem(count++, "Samples", IDD_CONTROL_SAMPLES, IMAGE_SAMPLES); if (mask & 8) m_TabCtrl.InsertItem(count++, "Instruments", IDD_CONTROL_INSTRUMENTS, IMAGE_INSTRUMENTS); - if (mask & 32) m_TabCtrl.InsertItem(count++, "Graph", IDD_CONTROL_GRAPH, IMAGE_GRAPH); //rewbs.graph + //if (mask & 32) m_TabCtrl.InsertItem(count++, "Graph", IDD_CONTROL_GRAPH, IMAGE_GRAPH); //rewbs.graph if (mask & 16) m_TabCtrl.InsertItem(count++, "Comments", IDD_CONTROL_COMMENTS, IMAGE_COMMENTS); } } @@ -730,33 +730,17 @@ END_MESSAGE_MAP() -CModControlBar::~CModControlBar() -//------------------------------- -{ - if (m_hBarBmp) - { - DeleteObject(m_hBarBmp); - m_hBarBmp = NULL; - } -} - - BOOL CModControlBar::Init(UINT nId) //--------------------------------- { - HINSTANCE hInstance = AfxGetInstanceHandle(); - TBADDBITMAP tbab; - SetButtonStructSize(sizeof(TBBUTTON)); - SetBitmapSize(CSize(16, 15)); + SetBitmapSize(CSize(16, 16)); SetButtonSize(CSize(27, 24)); + // Add bitmaps - m_hBarBmp = AfxLoadSysColorBitmap( - hInstance, - ::FindResource(hInstance, MAKEINTRESOURCE(nId), RT_BITMAP)); - tbab.hInst = NULL; - tbab.nID = (UINT_PTR)m_hBarBmp; - ::SendMessage(m_hWnd, TB_ADDBITMAP, 16, (LPARAM)&tbab); + m_ImageList.Create(nId, 16, 16, IMGLIST_NUMIMAGES, 1); + + SetImageList(&m_ImageList); UpdateStyle(); return TRUE; } Modified: trunk/OpenMPT/mptrack/Globals.h =================================================================== --- trunk/OpenMPT/mptrack/Globals.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Globals.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -28,14 +28,10 @@ //======================================= { protected: - HBITMAP m_hBarBmp; + CImageListEx m_ImageList; public: - CModControlBar() { m_hBarBmp=NULL; } - ~CModControlBar(); - -public: - BOOL Init(UINT nId=IDB_PATTERNS); + BOOL Init(UINT nId); void UpdateStyle(); BOOL AddButton(UINT nID, int iImage=0, UINT nStyle=TBSTYLE_BUTTON, UINT nState=TBSTATE_ENABLED); afx_msg LRESULT OnHelpHitTest(WPARAM, LPARAM); @@ -113,7 +109,7 @@ public: BOOL InsertItem(int nIndex, LPSTR pszText, LPARAM lParam=0, int iImage=-1); BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); - UINT GetItemData(int nIndex); + LPARAM GetItemData(int nIndex); }; Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -290,7 +290,9 @@ if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // Load resources m_hIcon = theApp.LoadIcon(IDR_MAINFRAME); - m_ImageList.Create(IDB_IMAGELIST, 16, 0, RGB(0,128,128)); + + m_ImageList.Create(IDB_IMAGELIST, 16, 16, IMGLIST_NUMIMAGES, 1); + m_hGUIFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); m_hFixedFont = ::CreateFont(12,5, 0,0, 300, FALSE, FALSE, FALSE, Modified: trunk/OpenMPT/mptrack/Mainbar.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Mainbar.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -230,9 +230,16 @@ DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY; if (!CToolBar::Create(parent, dwStyle)) return FALSE; - if (!LoadBitmap(IDB_MAINBAR)) return FALSE; + + m_ImageList.Create(IDB_MAINBAR, 16, 16, IMGLIST_NUMIMAGES, 1); + GetToolBarCtrl().SetImageList(&m_ImageList); + if (!SetButtons(MainButtons, CountOf(MainButtons))) return FALSE; + CRect temp; + GetItemRect(0,&temp); + SetSizes(CSize(temp.Width(), temp.Height()), CSize(16, 16)); + nCurrentSpeed = 6; nCurrentTempo = 125; nCurrentRowsPerBeat = 4; Modified: trunk/OpenMPT/mptrack/Mainbar.h =================================================================== --- trunk/OpenMPT/mptrack/Mainbar.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Mainbar.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -74,6 +74,7 @@ //=================================== { protected: + CImageListEx m_ImageList; CStatic m_EditTempo, m_EditSpeed, m_EditOctave, m_EditRowsPerBeat; CStatic m_StaticTempo, m_StaticSpeed, m_StaticRowsPerBeat; CSpinButtonCtrl m_SpinTempo, m_SpinSpeed, m_SpinOctave, m_SpinRowsPerBeat; Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -138,31 +138,25 @@ IMAGE_PATTERNS, IMAGE_SAMPLES, IMAGE_INSTRUMENTS, + IMAGE_PLUGININSTRUMENT = IMAGE_INSTRUMENTS, IMAGE_GENERAL, IMAGE_FOLDER, IMAGE_OPENFOLDER, IMAGE_PARTITION, IMAGE_NOSAMPLE, - IMAGE_NOINSTRUMENT, - IMAGE_NETWORKDRIVE, - IMAGE_CDROMDRIVE, - IMAGE_RAMDRIVE, - IMAGE_FLOPPYDRIVE, - IMAGE_REMOVABLEDRIVE, - IMAGE_FIXEDDRIVE, IMAGE_FOLDERPARENT, IMAGE_FOLDERSONG, IMAGE_DIRECTX, IMAGE_WAVEOUT, + IMAGE_EFFECTPLUGIN = IMAGE_WAVEOUT, IMAGE_ASIO, - IMAGE_GRAPH, + IMAGE_CHIP, IMAGE_SAMPLEMUTE, IMAGE_INSTRMUTE, IMAGE_SAMPLEACTIVE, IMAGE_INSTRACTIVE, IMAGE_NOPLUGIN, - IMAGE_EFFECTPLUGIN, - IMAGE_PLUGININSTRUMENT, + IMGLIST_NUMIMAGES }; @@ -174,7 +168,7 @@ TIMAGE_PATTERN_PLAY, TIMAGE_PATTERN_RESTART, TIMAGE_PATTERN_RECORD, - TIMAGE_MIDI_RECORD, // unused? + TIMAGE_SAMPLE_FIXLOOP, TIMAGE_SAMPLE_NEW, TIMAGE_INSTR_NEW, TIMAGE_SAMPLE_NORMALIZE, @@ -184,7 +178,7 @@ TIMAGE_OPEN, TIMAGE_SAVE, TIMAGE_PREVIEW, - TIMAGE_PAUSE, // unused? + TIMAGE_SAMPLE_AUTOTUNE, TIMAGE_PATTERN_VUMETERS, TIMAGE_MACROEDITOR, TIMAGE_CHORDEDITOR, @@ -192,9 +186,7 @@ TIMAGE_PATTERN_EXPAND, TIMAGE_PATTERN_SHRINK, TIMAGE_SAMPLE_SILENCE, - TIMAGE_TAB_SAMPLES, - TIMAGE_TAB_INSTRUMENTS, - TIMAGE_TAB_PATTERNS, + TIMAGE_PATTERN_OVERFLOWPASTE, TIMAGE_UNDO, TIMAGE_REDO, TIMAGE_PATTERN_PLAYROW, @@ -207,9 +199,7 @@ TIMAGE_SAMPLE_INVERT, TIMAGE_SAMPLE_UNSIGN, TIMAGE_SAMPLE_DCOFFSET, - TIMAGE_PATTERN_OVERFLOWPASTE, - TIMAGE_SAMPLE_FIXLOOP, - TIMAGE_SAMPLE_AUTOTUNE, + PATTERNIMG_NUMIMAGES }; @@ -219,11 +209,11 @@ SIMAGE_CHECKED = 0, SIMAGE_ZOOMUP, SIMAGE_ZOOMDOWN, - SIMAGE_NODRAW, SIMAGE_DRAW, SIMAGE_RESIZE, SIMAGE_GENERATE, SIMAGE_GRID, + SAMPLEIMG_NUMIMAGES }; @@ -251,6 +241,7 @@ IIMAGE_NOZOOMIN, IIMAGE_ZOOMOUT, IIMAGE_NOZOOMOUT, + ENVIMG_NUMIMAGES }; @@ -263,7 +254,9 @@ #define TIMERID_GUI 1 #define TIMERID_NOTIFY 2 -#include "mainbar.h" +extern CBitmap *ReadPNG(const TCHAR *resource); +#include "CImageListEx.h" +#include "Mainbar.h" #include "TrackerSettings.h" struct MODPLUGDIB; @@ -275,6 +268,7 @@ return DecodeBinarySetting<WINDOWPLACEMENT>(val.as<std::vector<char> >()); } + //====================================================================================== class CMainFrame: public CMDIFrameWnd, public ISoundSource, public ISoundMessageReceiver //====================================================================================== @@ -319,7 +313,7 @@ CModTreeBar m_wndTree; CStatusBar m_wndStatusBar; CMainToolBar m_wndToolBar; - CImageList m_ImageList; + CImageListEx m_ImageList; CSoundFile *m_pSndFile; // != NULL only when currently playing or rendering HWND m_hWndMidi; CSoundFile::samplecount_t m_dwTimeSec; @@ -399,7 +393,7 @@ UINT GetBaseOctave() const; CModDoc *GetActiveDoc(); CView *GetActiveView(); //rewbs.customKeys - CImageList *GetImageList() { return &m_ImageList; } + CImageListEx *GetImageList() { return &m_ImageList; } void OnDocumentCreated(CModDoc *pModDoc); void OnDocumentClosed(CModDoc *pModDoc); void UpdateTree(CModDoc *pModDoc, DWORD lHint=0, CObject *pHint=NULL); @@ -408,7 +402,7 @@ CWnd *m_pNoteMapHasFocus; //rewbs.customKeys CWnd* m_pOrderlistHasFocus; double GetApproxBPM(); - void ThreadSafeSetModified(CModDoc* modified) {m_pJustModifiedDoc=modified;} + void ThreadSafeSetModified(CModDoc* modified) { InterlockedExchangePointer(reinterpret_cast<void **>(&m_pJustModifiedDoc), modified); } void SetElapsedTime(double t) { m_dwTimeSec = static_cast<CSoundFile::samplecount_t>(t); } CModTree *GetUpperTreeview() { return m_wndTree.m_pModTree; } Modified: trunk/OpenMPT/mptrack/Mpdlgs.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Mpdlgs.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -298,7 +298,7 @@ case SNDDEV_PORTAUDIO_WDMKS: // No real image available for now, // prepend API name to name and misuse another icon. - cbi.iImage = IMAGE_RAMDRIVE; + cbi.iImage = IMAGE_CHIP; name = mpt::ToCString(it->apiName) + TEXT(" - ") + name; break; default: Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -1484,7 +1484,6 @@ virtual BOOL OnInitDialog(); virtual void OnOK(); virtual void OnCancel(); - virtual void DoDataExchange(CDataExchange* pDX); }; static CAboutDlg *gpAboutDlg = NULL; @@ -1496,14 +1495,6 @@ gpAboutDlg = NULL; } -void CAboutDlg::DoDataExchange(CDataExchange* pDX) -//------------------------------------------------------ -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CModTypeDlg) - //}}AFX_DATA_MAP -} - void CAboutDlg::OnOK() //-------------------- { @@ -1560,31 +1551,62 @@ //================================= { protected: - CPaletteBitmap m_Bmp; + CBitmap *m_Bitmap; + BITMAP bm; public: - CSplashScreen() {} + CSplashScreen(CWnd *parent); ~CSplashScreen(); - BOOL Initialize(CWnd *); virtual BOOL OnInitDialog(); virtual void OnOK(); virtual void OnCancel() { OnOK(); } + virtual void OnPaint(); + virtual BOOL OnEraseBkgnd(CDC *) { return TRUE; } + + DECLARE_MESSAGE_MAP() }; +BEGIN_MESSAGE_MAP(CSplashScreen, CDialog) + ON_WM_PAINT() + ON_WM_ERASEBKGND() +END_MESSAGE_MAP() + static CSplashScreen *gpSplashScreen = NULL; +CSplashScreen::CSplashScreen(CWnd *parent) +//---------------------------------------- +{ + m_Bitmap = ReadPNG(MAKEINTRESOURCE(IDB_SPLASHNOFOLDFIN)); + m_Bitmap->GetBitmap(&bm); + + Create(IDD_SPLASHSCREEN, parent); + ASSERT(m_Bitmap); +} + + CSplashScreen::~CSplashScreen() //----------------------------- { gpSplashScreen = NULL; + m_Bitmap->DeleteObject(); } -BOOL CSplashScreen::Initialize(CWnd *parent) -//------------------------------------------ +void CSplashScreen::OnPaint() +//--------------------------- { - Create(IDD_SPLASHSCREEN, parent); - return TRUE; + CRect rect; + GetUpdateRect(&rect); + CPaintDC dc(this); + + CDC hdcMem; + hdcMem.CreateCompatibleDC(&dc); + CBitmap *oldBitmap = hdcMem.SelectObject(m_Bitmap); + dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &hdcMem, 0, 0, SRCCOPY); + hdcMem.SelectObject(oldBitmap); + hdcMem.DeleteDC(); + + CDialog::OnPaint(); } @@ -1595,22 +1617,21 @@ int cx, cy, newcx, newcy; CDialog::OnInitDialog(); - m_Bmp.SubclassDlgItem(IDC_SPLASH, this); - m_Bmp.LoadBitmap(MAKEINTRESOURCE(IDB_SPLASHNOFOLDFIN)); + GetWindowRect(&rect); cx = rect.Width(); cy = rect.Height(); - newcx = m_Bmp.GetWidth(); - newcy = m_Bmp.GetHeight(); - if ((newcx) && (newcy)) + newcx = bm.bmWidth; + newcy = bm.bmHeight; + if(newcx && newcy) { LONG ExStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE); ExStyle |= WS_EX_TOPMOST; SetWindowLong(m_hWnd, GWL_EXSTYLE, ExStyle); rect.left -= (newcx - cx) / 2; rect.top -= (newcy - cy) / 2; - SetWindowPos(&wndTop, rect.left, rect.top, newcx, newcy, 0); - m_Bmp.SetWindowPos(NULL, 0,0, newcx, newcy, SWP_NOZORDER); + SetWindowPos(&wndTop, rect.left, rect.top, newcx, newcy, SWP_NOCOPYBITS); + } return TRUE; } @@ -1634,10 +1655,9 @@ { if (!gpSplashScreen) { - gpSplashScreen = new CSplashScreen(); + gpSplashScreen = new CSplashScreen(m_pMainWnd); if (gpSplashScreen) { - gpSplashScreen->Initialize(m_pMainWnd); gpSplashScreen->ShowWindow(SW_SHOW); gpSplashScreen->UpdateWindow(); gpSplashScreen->BeginWaitCursor(); @@ -2027,7 +2047,7 @@ m_pPluginManager->AddPlugin(plugPath, true, true, &nonFoundPlugs); } - if(!dialogShown && GetTickCount() >= scanStart + 1000) + if(!dialogShown && GetTickCount() >= scanStart + 2000) { // If this is taking too long, show the user what he's waiting for. dialogShown = true; Added: trunk/OpenMPT/mptrack/PNG.cpp =================================================================== --- trunk/OpenMPT/mptrack/PNG.cpp (rev 0) +++ trunk/OpenMPT/mptrack/PNG.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -0,0 +1,210 @@ +/* + * PNG.cpp + * ------- + * Purpose: Extremely minimalistic PNG loader (only for internal data resources) + * Notes : Currenlty implemented: 8-bit, 24-bit and 32-bit images (8 bits per component), no filters, no interlaced pictures. + * Paletted pictures are automatically depalettized. + * Authors: OpenMPT Devs + * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. + */ + + +#include "stdafx.h" +#include "MPTrackUtil.h" +#include "../soundlib/FileReader.h" +#if !defined(NO_ZLIB) +#include <zlib.h> +#elif !defined(NO_MINIZ) +#define MINIZ_HEADER_FILE_ONLY +#include "miniz/miniz.c" +#endif + + +CBitmap *ReadPNG(FileReader &file) +//-------------------------------- +{ + file.Rewind(); + if(!file.ReadMagic("\211PNG\r\n\032\n")) + { + return nullptr; + } + + uint32_t width = 0; + uint32_t height = 0; + uint8_t bitDepth; + uint8_t colorType; + uint8_t compressionMethod; + uint8_t filterMethod; + uint8_t interlaceMethod; + + std::vector<uint8_t> dataIn; + std::vector<RGBQUAD> palette; + + while(file.AreBytesLeft()) + { + uint32_t chunkLength = file.ReadUint32BE(); + char magic[4]; + file.ReadArray(magic); + FileReader chunk = file.ReadChunk(chunkLength); + file.Skip(4); + if(!memcmp(magic, "IHDR", 4)) + { + // Image header + width = chunk.ReadUint32BE(); + height = chunk.ReadUint32BE(); + bitDepth = chunk.ReadUint8(); + colorType = chunk.ReadUint8(); + compressionMethod = chunk.ReadUint8(); + filterMethod = chunk.ReadUint8(); + interlaceMethod = chunk.ReadUint8(); + ASSERT(!filterMethod && !interlaceMethod); + } else if(!memcmp(magic, "IDAT", 4)) + { + // Data block(s) + z_stream strm; + strm.zalloc = Z_NULL; + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + strm.avail_in = static_cast<uInt>(chunk.GetLength()); + strm.next_in = (Bytef *)(chunk.GetRawData()); + if(inflateInit2(&strm, 15) != Z_OK) + { + break; + } + int retVal; + do + { + dataIn.resize(dataIn.size() + 4096); + strm.avail_out = 4096; + strm.next_out = (Bytef *)&dataIn[dataIn.size() - 4096]; + retVal = inflate(&strm, Z_NO_FLUSH); + } while(retVal == Z_OK); + inflateEnd(&strm); + } else if(!memcmp(magic, "PLTE", 4)) + { + // Palette for <= 8-bit images + palette.resize(256); + size_t numEntries = std::min<size_t>(256u, chunk.GetLength() / 3u); + for(size_t i = 0; i < numEntries; i++) + { + RGBQUAD col; + col.rgbRed = chunk.ReadUint8(); + col.rgbGreen = chunk.ReadUint8(); + col.rgbBlue = chunk.ReadUint8(); + col.rgbReserved = 255; + palette[i] = col; + } + } + } + + // LUT for translating the color type into a number of color samples + const uint32_t sampleTable[] = + { + 1, // 0: Grayscale + 0, + 3, // 2: RGB + 1, // 3: Palette bitmap + 2, // 4: Grayscale + Alpha + 0, + 4 // 6: RGBA + }; + const uint32_t bitsPerPixel = colorType < CountOf(sampleTable) ? sampleTable[colorType] * bitDepth : 0; + + if(!width || !height || !bitsPerPixel + || (colorType != 2 && colorType != 3 && colorType != 6) || bitDepth != 8 // Only RGB(A) and 8-bit palette PNGs for now. + || compressionMethod || interlaceMethod + || dataIn.size() < (bitsPerPixel * width * height) / 8 + height) // Enough data present? + { + return nullptr; + } + + CBitmap *bitmap = new CBitmap; + if(!bitmap->CreateBitmap(width, height, 1, 32, nullptr)) + { + delete bitmap; + return nullptr; + } + + const uint32_t imageSize = width * height * sizeof(RGBQUAD); + std::vector<RGBQUAD> dataOut(width * height); + bitmap->GetBitmapBits(imageSize, &dataOut[0]); + + FileReader imageData(&dataIn[0], dataIn.size()); + + RGBQUAD *pixelOut = &dataOut[0]; + uint32_t x = 0, y = 0; + size_t offset = 0; + while(y < height) + { + if(x == 0) + { + filterMethod = dataIn[offset++]; + ASSERT(!filterMethod); + } + + if(colorType == 6) + { + // RGBA + struct PNGPixel32 + { + uint8_t r, g, b, a; + }; + + const PNGPixel32 &inPixel = reinterpret_cast<const PNGPixel32 &>(dataIn[offset]); + pixelOut->rgbRed = inPixel.r; + pixelOut->rgbGreen = inPixel.g; + pixelOut->rgbBlue = inPixel.b; + pixelOut->rgbReserved= inPixel.a; + offset += 4; + } else if(colorType == 2) + { + // RGB + struct PNGPixel24 + { + uint8_t r, g, b; + }; + + const PNGPixel24 &inPixel = reinterpret_cast<const PNGPixel24 &>(dataIn[offset]); + pixelOut->rgbRed = inPixel.r; + pixelOut->rgbGreen = inPixel.g; + pixelOut->rgbBlue = inPixel.b; + pixelOut->rgbReserved= 255; + offset += 3; + } else if(colorType == 3) + { + // Palette + *pixelOut = palette[dataIn[offset++]]; + } + pixelOut++; + x++; + + if(x == width) + { + y++; + x = 0; + } + } + + bitmap->SetBitmapBits(imageSize, &dataOut[0]); + return bitmap; +} + + +CBitmap *ReadPNG(const TCHAR *resource) +//------------------------------------- +{ + const char *pData = nullptr; + HGLOBAL hglob = nullptr; + size_t nSize = 0; + if(LoadResource(resource, TEXT("PNG"), pData, nSize, hglob) == nullptr) + { + return nullptr; + } + + FileReader file(pData, nSize); + + CBitmap *bitmap = ReadPNG(file); + + FreeResource(hglob); + return bitmap; +} Modified: trunk/OpenMPT/mptrack/View_ins.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_ins.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/View_ins.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -130,7 +130,9 @@ m_dwNotifyPos[i] = (uint32)Notification::PosInvalid; } MemsetZero(m_NcButtonState); - m_bmpEnvBar.Create(IDB_ENVTOOLBAR, 20, 0, RGB(192,192,192)); + + m_bmpEnvBar.Create(IDB_ENVTOOLBAR, 20, 18, ENVIMG_NUMIMAGES, 1); + m_baPlayingNote.reset(); //rewbs.envRowGrid m_bGrid=true; @@ -808,11 +810,11 @@ // create a memory based dc for drawing the grid m_dcGrid.CreateCompatibleDC(pDC); - m_bmpGrid.CreateCompatibleBitmap(pDC, m_rcClient.right-m_rcClient.left, m_rcClient.bottom-m_rcClient.top); + m_bmpGrid.CreateCompatibleBitmap(pDC, m_rcClient.Width(), m_rcClient.Height()); m_pbmpOldGrid = m_dcGrid.SelectObject(&m_bmpGrid); //do draw - int width = m_rcClient.right - m_rcClient.left; + int width = m_rcClient.Width(); int nPrevTick = -1; int nTick, nRow; int nRowsPerBeat = 1, nRowsPerMeasure = 1; @@ -823,6 +825,9 @@ nRowsPerMeasure = modDoc->GetrSoundFile().m_nDefaultRowsPerMeasure; } + // Paint it black! + m_dcGrid.FillSolidRect(&m_rcClient, 0); + for (int x = 3; x < width; x++) { nTick = ScreenToTick(x); @@ -831,9 +836,9 @@ nPrevTick = nTick; nRow = nTick / speed; - if (nRow % MAX(1, nRowsPerMeasure) == 0) + if (nRow % std::max(1, nRowsPerMeasure) == 0) m_dcGrid.SelectObject(CMainFrame::penGray80); - else if (nRow % MAX(1, nRowsPerBeat) == 0) + else if (nRow % std::max(1, nRowsPerBeat) == 0) m_dcGrid.SelectObject(CMainFrame::penGray55); else m_dcGrid.SelectObject(CMainFrame::penGray33); @@ -883,10 +888,13 @@ if ((!pModDoc) || (!pDC)) return; //hdc = pDC->m_hDC; oldpen = m_dcMemMain.SelectObject(CMainFrame::penDarkGray); - m_dcMemMain.FillRect(&m_rcClient, CBrush::FromHandle(CMainFrame::brushBlack)); if (m_bGrid) { DrawGrid(&m_dcMemMain, pModDoc->GetrSoundFile().m_PlayState.m_nMusicSpeed); + } else + { + // Paint it black! + m_dcMemMain.FillSolidRect(&m_rcClient, 0); } // Middle line (half volume or pitch / panning center) Modified: trunk/OpenMPT/mptrack/View_ins.h =================================================================== --- trunk/OpenMPT/mptrack/View_ins.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/View_ins.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -23,7 +23,7 @@ //========================================== { protected: - CImageList m_bmpEnvBar; + CImageListEx m_bmpEnvBar; POINT m_ptMenu; CRect m_rcClient; Modified: trunk/OpenMPT/mptrack/View_smp.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_smp.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/View_smp.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -128,7 +128,9 @@ m_dwNotifyPos[i] = Notification::PosInvalid; } MemsetZero(m_NcButtonState); - m_bmpEnvBar.Create(IDB_SMPTOOLBAR, 20, 0, RGB(192,192,192)); + + m_bmpEnvBar.Create(IDB_SMPTOOLBAR, 20, 18, SAMPLEIMG_NUMIMAGES, 1); + m_lastDrawPoint.SetPoint(-1, -1); noteChannel.assign(NOTE_MAX - NOTE_MIN + 1, CHANNELINDEX_INVALID); offScreenDC = nullptr; @@ -1305,7 +1307,7 @@ { case ID_SAMPLE_ZOOMUP: nImage = SIMAGE_ZOOMUP; break; case ID_SAMPLE_ZOOMDOWN: nImage = SIMAGE_ZOOMDOWN; break; - case ID_SAMPLE_DRAW: nImage = (dwStyle & NCBTNS_DISABLED) ? SIMAGE_NODRAW : SIMAGE_DRAW; break; + case ID_SAMPLE_DRAW: nImage = SIMAGE_DRAW; break; case ID_SAMPLE_ADDSILENCE: nImage = SIMAGE_RESIZE; break; case ID_SAMPLE_GRID: nImage = SIMAGE_GRID; break; } Modified: trunk/OpenMPT/mptrack/View_smp.h =================================================================== --- trunk/OpenMPT/mptrack/View_smp.h 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/View_smp.h 2014-03-25 23:01:50 UTC (rev 3963) @@ -29,7 +29,7 @@ }; protected: - CImageList m_bmpEnvBar; + CImageListEx m_bmpEnvBar; CRect m_rcClient; HDC offScreenDC; HGDIOBJ offScreenBitmap; Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -482,7 +482,7 @@ HTREEITEM parent = GetChildItem(m_hMidiLib); for(UINT iMidi = 0; iMidi < 128; iMidi++) { - DWORD dwImage = IMAGE_NOINSTRUMENT; + DWORD dwImage = IMAGE_INSTRMUTE; s = StringifyW(iMidi) + L": " + mpt::ToWide(mpt::CharsetASCII, szMidiProgramNames[iMidi]); const LPARAM param = (MODITEM_MIDIINSTRUMENT << MIDILIB_SHIFT) | iMidi; if(!midiLib.MidiMap[iMidi].empty()) @@ -1661,25 +1661,22 @@ // Enumerating Drives... if(!IsSampleBrowser()) { + CImageListEx &images = *CMainFrame::GetMainFrame()->GetImageList(); + // Avoid adding the same images again and again... + images.SetImageCount(IMGLIST_NUMIMAGES); + WCHAR s[16]; wcscpy(s, L"?:\\"); for(UINT iDrive = 'A'; iDrive <= 'Z'; iDrive++) { s[0] = (WCHAR)iDrive; UINT nDriveType = GetDriveTypeW(s); - int nImage = 0; - switch(nDriveType) + if(nDriveType != DRIVE_UNKNOWN && nDriveType != DRIVE_NO_ROOT_DIR) { - case DRIVE_REMOVABLE: nImage = (iDrive < 'C') ? IMAGE_FLOPPYDRIVE : IMAGE_REMOVABLEDRIVE; break; - case DRIVE_FIXED: nImage = IMAGE_FIXEDDRIVE; break; - case DRIVE_REMOTE: nImage = IMAGE_NETWORKDRIVE; break; - case DRIVE_CDROM: nImage = IMAGE_CDROMDRIVE; break; - case DRIVE_RAMDISK: nImage = IMAGE_RAMDRIVE; break; + SHFILEINFOW fileInfo; + SHGetFileInfoW(s, 0, &fileInfo, sizeof(fileInfo), SHGFI_ICON | SHGFI_SMALLICON); + ModTreeInsert(s, images.Add(fileInfo.hIcon)); } - if(nImage) - { - ModTreeInsert(s, nImage); - } } } Modified: trunk/OpenMPT/mptrack/mptrack.rc =================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/mptrack.rc 2014-03-25 23:01:50 UTC (rev 3963) @@ -457,6 +457,18 @@ // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDR_MODULETYPE ICON "res\\moddoc.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// PNG +// + +IDB_ENVTOOLBAR PNG "res\\envelope_toolbar.png" +IDB_IMAGELIST PNG "res\\icons.png" +IDB_MAINBAR PNG "res\\main_toolbar.png" +IDB_PATTERNS PNG "res\\pattern_toolbar.png" +IDB_SMPTOOLBAR PNG "res\\sample_toolbar.png" +IDB_SPLASHNOFOLDFIN PNG "res\\splashno.png" #endif // German (Germany) resources ///////////////////////////////////////////////////////////////////////////// @@ -1399,11 +1411,10 @@ LTEXT "In ""Relative"" base note mode, all notes are relative to a previously entered note in the pattern cell where the chord is entered.",IDC_STATIC,6,136,234,20 END -IDD_SPLASHSCREEN DIALOG 0, 0, 188, 95 -STYLE DS_SETFONT | DS_SETFOREGROUND | DS_CENTER | WS_POPUP -FONT 8, "MS Shell Dlg" +IDD_SPLASHSCREEN DIALOGEX 0, 0, 188, 95 +STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - CONTROL "",IDC_SPLASH,"Static",SS_WHITERECT,0,0,187,94 END IDD_TREEVIEW DIALOG 0, 0, 85, 266 @@ -1812,6 +1823,10 @@ BOTTOMMARGIN, 154 END + IDD_SPLASHSCREEN, DIALOG + BEGIN + END + IDD_MOD2MIDI, DIALOG BEGIN LEFTMARGIN, 4 @@ -1944,13 +1959,9 @@ // IDB_MPTRACK BITMAP "res\\mptrack.bmp" -IDB_IMAGELIST BITMAP "res\\img_list.bmp" -IDB_PATTERNS BITMAP "res\\patterns.bmp" IDB_PATTERNVIEW BITMAP "res\\view_pat.bmp" IDB_COLORSETUP BITMAP "res\\colors.bmp" IDB_VUMETERS BITMAP "res\\vumeters.bmp" -IDB_ENVTOOLBAR BITMAP "res\\envbar.bmp" -IDB_SMPTOOLBAR BITMAP "res\\smptoolb.bmp" IDB_VISNODE BITMAP "res\\bitmap1.bmp" IDB_VISPCNODE BITMAP "res\\vispcnode.bmp" @@ -2739,14 +2750,6 @@ ///////////////////////////////////////////////////////////////////////////// // -// Bitmap -// - -IDB_SPLASHNOFOLDFIN BITMAP "res\\splashno.bmp" -IDB_MAINBAR BITMAP "res\\MAINBAR.BMP" - -///////////////////////////////////////////////////////////////////////////// -// // Menu // Modified: trunk/OpenMPT/mptrack/mptrack_08.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/mptrack_08.vcproj 2014-03-25 23:01:50 UTC (rev 3963) @@ -975,6 +975,10 @@ > </File> <File + RelativePath=".\PNG.cpp" + > + </File> + <File RelativePath=".\PSRatioCalc.cpp" > </File> @@ -1146,6 +1150,10 @@ > </File> <File + RelativePath=".\CImageListEx.h" + > + </File> + <File RelativePath=".\ctrl_com.h" > </File> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2014-03-25 23:01:50 UTC (rev 3963) @@ -562,6 +562,7 @@ <ClCompile Include="PatternClipboard.cpp" /> <ClCompile Include="PatternEditorDialogs.cpp" /> <ClCompile Include="PatternGotoDialog.cpp" /> + <ClCompile Include="PNG.cpp" /> <ClCompile Include="PSRatioCalc.cpp" /> <ClCompile Include="Reporting.cpp" /> <ClCompile Include="SampleEditorDialogs.cpp" /> @@ -725,6 +726,7 @@ <ClInclude Include="AutoSaver.h" /> <ClInclude Include="Autotune.h" /> <ClInclude Include="Childfrm.h" /> + <ClInclude Include="CImageListEx.h" /> <ClInclude Include="CleanupSong.h" /> <ClInclude Include="ColourEdit.h" /> <ClInclude Include="CommandSet.h" /> @@ -803,11 +805,15 @@ <ItemGroup> <None Include="..\soundlib\Tunings\built-inTunings.tc" /> <None Include="res\bitmap1.bmp" /> + <None Include="res\bmp00001.bmp" /> <None Include="res\colors.bmp" /> <None Include="res\dragging.cur" /> <None Include="Res\envbar.bmp" /> + <None Include="res\envelope_toolbar.png" /> + <None Include="res\icons.png" /> <None Include="res\img_list.bmp" /> <None Include="res\mainbar.bmp" /> + <None Include="res\main_toolbar.png" /> <None Include="res\moddoc.ico" /> <None Include="res\MPTRACK.bmp" /> <None Include="res\mptrack.ico" /> @@ -815,9 +821,12 @@ <None Include="Res\nodrag.cur" /> <None Include="res\nodrop.cur" /> <None Include="res\patterns.bmp" /> + <None Include="res\pattern_toolbar.png" /> <None Include="res\rt_manif.bin" /> + <None Include="res\sample_toolbar.png" /> <None Include="Res\smptoolb.bmp" /> <None Include="res\splashno.bmp" /> + <None Include="res\splashno.png" /> <None Include="res\view_pat.bmp" /> <None Include="res\visnode1.bmp" /> <None Include="res\vispcnode.bmp" /> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2014-03-25 23:01:50 UTC (rev 3963) @@ -511,6 +511,9 @@ <ClCompile Include="..\pluginBridge\BridgeWrapper.cpp"> <Filter>Source Files\pluginBridgeWrapper</Filter> </ClCompile> + <ClCompile Include="PNG.cpp"> + <Filter>Source Files\mptrack</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="..\soundlib\Loaders.h"> @@ -1002,6 +1005,9 @@ <ClInclude Include="..\pluginBridge\BridgeWrapper.h"> <Filter>Header Files\pluginBridgeWrapper</Filter> </ClInclude> + <ClInclude Include="CImageListEx.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="res\bitmap1.bmp"> @@ -1076,6 +1082,15 @@ <None Include="..\soundlib\Tunings\built-inTunings.tc"> <Filter>Resource Files</Filter> </None> + <None Include="res\bmp00001.bmp"> + <Filter>Resource Files</Filter> + </None> + <None Include="res\envelope_toolbar.png" /> + <None Include="res\icons.png" /> + <None Include="res\main_toolbar.png" /> + <None Include="res\pattern_toolbar.png" /> + <None Include="res\sample_toolbar.png" /> + <None Include="res\splashno.png" /> </ItemGroup> <ItemGroup> <Filter Include="Header Files"> Deleted: trunk/OpenMPT/mptrack/res/MAINBAR.BMP =================================================================== (Binary files differ) Deleted: trunk/OpenMPT/mptrack/res/envbar.bmp =================================================================== (Binary files differ) Added: trunk/OpenMPT/mptrack/res/envelope_toolbar.png =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/envelope_toolbar.png =================================================================== --- trunk/OpenMPT/mptrack/res/envelope_toolbar.png 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/envelope_toolbar.png 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/envelope_toolbar.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/icons.png =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/icons.png =================================================================== --- trunk/OpenMPT/mptrack/res/icons.png 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/icons.png 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/icons.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Deleted: trunk/OpenMPT/mptrack/res/img_list.bmp =================================================================== (Binary files differ) Added: trunk/OpenMPT/mptrack/res/main_toolbar.png =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/main_toolbar.png =================================================================== --- trunk/OpenMPT/mptrack/res/main_toolbar.png 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/main_toolbar.png 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/main_toolbar.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Deleted: trunk/OpenMPT/mptrack/res/modplthingmorecontrast.bmp =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals =================================================================== --- trunk/OpenMPT/mptrack/res/originals 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals ___________________________________________________________________ Added: tsvn:logminsize ## -0,0 +1 ## +10 \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/NewDoc.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/NewDoc.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/NewDoc.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/NewDoc.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/NewDoc.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/envelope_toolbar.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/envelope_toolbar.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/envelope_toolbar.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/envelope_toolbar.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/envelope_toolbar.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/icons.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/icons.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/icons.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/icons.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/icons.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/main_toolbar.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/main_toolbar.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/main_toolbar.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/main_toolbar.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/main_toolbar.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/note.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/note.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/note.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/note.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/note.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/pattern_toolbar.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/pattern_toolbar.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/pattern_toolbar.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/pattern_toolbar.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/pattern_toolbar.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/originals/readme.txt =================================================================== --- trunk/OpenMPT/mptrack/res/originals/readme.txt (rev 0) +++ trunk/OpenMPT/mptrack/res/originals/readme.txt 2014-03-25 23:01:50 UTC (rev 3963) @@ -0,0 +1,3 @@ +These PFI files were made with PhotoFiltre (http://www.photofiltre.com/). +They contain all the icons as separate layers, some icons are also divided into several layers. +Export them to PNG to use them in OpenMPT. \ No newline at end of file Added: trunk/OpenMPT/mptrack/res/originals/sample_toolbar.pfi =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/originals/sample_toolbar.pfi =================================================================== --- trunk/OpenMPT/mptrack/res/originals/sample_toolbar.pfi 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/originals/sample_toolbar.pfi 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/originals/sample_toolbar.pfi ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/OpenMPT/mptrack/res/pattern_toolbar.png =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/pattern_toolbar.png =================================================================== --- trunk/OpenMPT/mptrack/res/pattern_toolbar.png 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/pattern_toolbar.png 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/pattern_toolbar.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Deleted: trunk/OpenMPT/mptrack/res/patterns.bmp =================================================================== (Binary files differ) Added: trunk/OpenMPT/mptrack/res/sample_toolbar.png =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/sample_toolbar.png =================================================================== --- trunk/OpenMPT/mptrack/res/sample_toolbar.png 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/sample_toolbar.png 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/sample_toolbar.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Deleted: trunk/OpenMPT/mptrack/res/smptoolb.bmp =================================================================== (Binary files differ) Deleted: trunk/OpenMPT/mptrack/res/splash.bmp =================================================================== (Binary files differ) Deleted: trunk/OpenMPT/mptrack/res/splash0.bmp =================================================================== (Binary files differ) Deleted: trunk/OpenMPT/mptrack/res/splash_new.bmp =================================================================== (Binary files differ) Deleted: trunk/OpenMPT/mptrack/res/splash_old.bmp =================================================================== (Binary files differ) Added: trunk/OpenMPT/mptrack/res/splashno.png =================================================================== (Binary files differ) Index: trunk/OpenMPT/mptrack/res/splashno.png =================================================================== --- trunk/OpenMPT/mptrack/res/splashno.png 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/res/splashno.png 2014-03-25 23:01:50 UTC (rev 3963) Property changes on: trunk/OpenMPT/mptrack/res/splashno.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Modified: trunk/OpenMPT/mptrack/view_com.cpp =================================================================== --- trunk/OpenMPT/mptrack/view_com.cpp 2014-03-24 20:03:07 UTC (rev 3962) +++ trunk/OpenMPT/mptrack/view_com.cpp 2014-03-25 23:01:50 UTC (rev 3963) @@ -147,12 +147,12 @@ } GetClientRect(&rect); m_ToolBar.Create(WS_CHILD|WS_VISIBLE|CCS_NOPARENTALIGN, rect, this, IDC_TOOLBAR_DETAILS); - m_ToolBar.Init(); + m_ToolBar.Init(IDB_IMAGELIST); m_ItemList.Create(WS_CHILD|WS_VISIBLE|LVS_REPORT|LVS_SINGLESEL|LVS_EDITLABELS|LVS_NOSORTHEADER, rect, this, IDC_LIST_DETAILS); m_ItemList.ModifyStyleEx(0, WS_EX_STATICEDGE); // Add ToolBar Buttons - m_ToolBar.AddButton(IDC_LIST_SAMPLES, TIMAGE_TAB_SAMPLES); - m_ToolBar.AddButton(IDC_LIST_INSTRUMENTS, TIMAGE_TAB_INSTRUMENTS); + m_ToolBar.AddButton(IDC_LIST_SAMPLES, IMAGE_SAMPLES); + m_ToolBar.AddButton(IDC_LIST_INSTRUMENTS, IMAGE_INSTRUMENTS); //m_ToolBar.AddButton(IDC_LIST_PATTERNS, TIMAGE_TAB_PATTERNS); m_ToolBar.SetIndent(4); UpdateButtonState(); @@ -194,7 +194,6 @@ //CHAR s[256], stmp[256]; CHAR s[512], stmp[256]; //rewbs.fix3082 CModDoc *pModDoc = GetDocument(); - CSoundFile *pSndFile; LV_COLUMN lvc; LV_ITEM lvi, lvi2; @@ -209,6 +208,11 @@ |HINT_INSNAMES|HINT_INSTRUMENT /*|HINT_PATNAMES|HINT_PATTERNROW*/); // pattern stuff currently unused if (!lHint) return; + + const CSoundFile &sndFile = pModDoc->GetrSoundFile(); + + m_ToolBar.ChangeBitmap(IDC_LIST_INSTRUMENTS, sndFile.GetNumInstruments() ? IMAGE_INSTRUMENTS : IMAGE_INSTRMUTE); + m_ItemList.SetRedraw(FALSE); // Add sample headers if ((m_nListId != m_nCurrentListId) || (lHint & HINT_MODTYPE)) @@ -253,25 +257,24 @@ } // Add Items UINT nCount = m_ItemList.GetItemCount(); - pSndFile = pModDoc->GetSoundFile(); // Add Samples if ((m_nCurrentListId == IDC_LIST_SAMPLES) && (lHint & (HINT_MODTYPE|HINT_SMPNAMES|HINT_SAMPLEINFO))) { SAMPLEINDEX nMax = static_cast<SAMPLEINDEX>(nCount); - if (nMax < pSndFile->GetNumSamples()) nMax = pSndFile->GetNumSamples(); + if (nMax < sndFile.GetNumSamples()) nMax = sndFile.GetNumSamples(); for (SAMPLEINDEX iSmp = 0; iSmp < nMax; iSmp++) { - if (iSmp < pSndFile->GetNumSamples()) + if (iSmp < sndFile.GetNumSamples()) { UINT nCol = 0; for (UINT iCol=0; iCol<SMPLIST_COLUMNS; iCol++) { - const ModSample &sample = pSndFile->GetSample(iSmp + 1); + const ModSample &sample = sndFile.GetSample(iSmp + 1); s[0] = 0; switch(iCol) { case SMPLIST_SAMPLENAME: - mpt::String::Copy(s, pSndFile->m_szNames[iSmp + 1]); + mpt::String::Copy(s, sndFile.m_szNames[iSmp + 1]); break; case SMPLIST_SAMPLENO: wsprintf(s, "%02d", iSmp + 1); @@ -292,12 +295,12 @@ } break; case SMPLIST_INSTR: - if (pSndFile->GetNumInstruments()) + if (sndFile.GetNumInstruments()) { bool first = true; - for (INSTRUMENTINDEX i = 1; i <= pSndFile->GetNumInstruments(); i++) + for (INSTRUMENTINDEX i = 1; i <= sndFile.GetNumInstruments(); i++) { - if (pSndFile->IsSampleReferencedByInstrument(iSmp + 1, i)) + if (sndFile.IsSampleReferencedByInstrument(iSmp + 1, i)) { if (!first) strcat(s, ","); first = false; @@ -317,7 +320,7 @@ case SMPLIST_MIDDLEC: if (sample.nLength) { - wsprintf(s, "%d Hz", sample.GetSampleRate(pSndFile->GetType())); + wsprintf(s, "%d Hz", sample.GetSampleRate(sndFile.GetType())); } break; case SMPLIST_FILENAME: @@ -358,15 +361,15 @@ if ((m_nCurrentListId == IDC_LIST_INSTRUMENTS) && (lHint & (HINT_MODTYPE|HINT_INSNAMES|HINT_INSTRUMENT))) { INSTRUMENTINDEX nMax = static_cast<INSTRUMENTINDEX>(nCount); - if (nMax < pSndFile->GetNumInstruments()) nMax = pSndFile->GetNumInstruments(); + if (nMax < sndFile.GetNumInstruments()) nMax = sndFile.GetNumInstruments(); for (INSTRUMENTINDEX iIns = 0; iIns < nMax; iIns++) { - if (iIns < pSndFile->GetNumInstruments()) + if (iIns < sndFile.GetNumInstruments()) { UINT nCol = 0; for (UINT iCol=0; iCol<INSLIST_COLUMNS; iCol++) { - ModInstrument *pIns = pSndFile->Instruments[iIns+1]; + ModInstrument *pIns = sndFile.Instruments[iIns+1]; s[0] = 0; switch(iCol) { @@ -414,9 +417,9 @@ } break; case INSLIST_PLUGIN: - if (pIns != nullptr && pIns->nMixPlug > 0 && pSndFile->m_MixPlugins[pIns->nMixPlug - 1].pMixPlugin != nullptr) + if (pIns != nullptr && pIns->nMixPlug > 0 && sndFile.m_MixPlugins[pIns->nMixPlug - 1].pMixPlugin !... [truncated message content] |