From: <sag...@us...> - 2015-04-24 21:05:21
|
Revision: 4989 http://sourceforge.net/p/modplug/code/4989 Author: saga-games Date: 2015-04-24 21:05:15 +0000 (Fri, 24 Apr 2015) Log Message: ----------- [Fix] Effect visualisation could still not show up properly in some cases (http://forum.openmpt.org/index.php?topic=5476.0) [Imp] Effect visualisation window size is now remembered (also across sessions) Modified Paths: -------------- trunk/OpenMPT/mptrack/EffectVis.cpp trunk/OpenMPT/mptrack/EffectVis.h trunk/OpenMPT/mptrack/TrackerSettings.cpp trunk/OpenMPT/mptrack/TrackerSettings.h Modified: trunk/OpenMPT/mptrack/EffectVis.cpp =================================================================== --- trunk/OpenMPT/mptrack/EffectVis.cpp 2015-04-24 19:41:03 UTC (rev 4988) +++ trunk/OpenMPT/mptrack/EffectVis.cpp 2015-04-24 21:05:15 UTC (rev 4989) @@ -2,19 +2,19 @@ * EffectVis.cpp * ------------- * Purpose: Implementation of parameter visualisation dialog. - * Notes : TODO: Take DPI scaling into account. + * Notes : (currenlty none) * Authors: OpenMPT Devs * The OpenMPT source code is released under the BSD license. Read LICENSE for more details. */ #include "stdafx.h" -#include "mptrack.h" -#include "mainfrm.h" -#include "childfrm.h" -#include "moddoc.h" -#include "globals.h" -#include "view_pat.h" +#include "Mptrack.h" +#include "Mainfrm.h" +#include "Childfrm.h" +#include "Moddoc.h" +#include "Globals.h" +#include "View_pat.h" #include "EffectVis.h" @@ -24,23 +24,25 @@ // EffectVis dialog IMPLEMENT_DYNAMIC(CEffectVis, CDialog) -CEffectVis::CEffectVis(CViewPattern *pViewPattern, ROWINDEX startRow, ROWINDEX endRow, CHANNELINDEX nchn, CModDoc *pModDoc, PATTERNINDEX pat) : effectInfo(pModDoc->GetrSoundFile()) +CEffectVis::CEffectVis(CViewPattern *pViewPattern, ROWINDEX startRow, ROWINDEX endRow, CHANNELINDEX nchn, CModDoc *pModDoc, PATTERNINDEX pat) + : effectInfo(pModDoc->GetrSoundFile()) + , m_pViewPattern(pViewPattern) + , m_dwStatus(0) + , m_nDragItem(-1) + , m_forceRedraw(true) + , m_pModDoc(pModDoc) + , m_nRowToErase(-1) + , m_nParamToErase(-1) + , m_nLastDrawnRow(ROWINDEX_INVALID) + , m_nLastDrawnY(-1) + , m_nOldPlayPos(ROWINDEX_INVALID) + , m_nAction(kAction_OverwriteFX) + , m_pixelsPerRow(1) + , m_pixelsPerFXParam(1) + , m_pixelsPerPCParam(1) { - m_pViewPattern = pViewPattern; - m_dwStatus = 0x00; - m_nDragItem = -1; - m_boolForceRedraw = TRUE; - m_pModDoc = pModDoc; - - m_nRowToErase = -1; - m_nParamToErase = -1; - m_nLastDrawnRow = ROWINDEX_INVALID; - m_nLastDrawnY = -1; - m_nOldPlayPos = ROWINDEX_INVALID; m_nFillEffect = effectInfo.GetIndexFromEffect(CMD_SMOOTHMIDI, 0); - m_nAction=kAction_OverwriteFX; m_templatePCNote.Set(NOTE_PCS, 1, 0, 0); - UpdateSelection(startRow, endRow, nchn, pModDoc, pat); } @@ -333,9 +335,9 @@ //--------------------------------------------------- { MPT_UNREFERENCED_PARAMETER(rectBorder); - if (m_boolForceRedraw) + if (m_forceRedraw) { - m_boolForceRedraw = FALSE ; + m_forceRedraw = false; // if we already have a memory dc, destroy it (this occurs for a re-size) if (m_dcGrid.GetSafeHdc()) @@ -479,7 +481,16 @@ //--------------------------------------- { Create(IDD_EFFECTVISUALIZER, parent); - m_boolForceRedraw = TRUE; + m_forceRedraw = true; + + if(TrackerSettings::Instance().effectVisWidth > 0 && TrackerSettings::Instance().effectVisHeight > 0) + { + SetWindowPos(nullptr, + 0, 0, + MulDiv(TrackerSettings::Instance().effectVisWidth, Util::GetDPIx(m_hWnd), 96), MulDiv(TrackerSettings::Instance().effectVisHeight, Util::GetDPIy(m_hWnd), 96), + SWP_NOZORDER | SWP_NOMOVE); + } + ShowWindow(SW_SHOW); return TRUE; } @@ -509,6 +520,11 @@ void CEffectVis::DoClose() //------------------------ { + CRect rect; + GetWindowRect(rect); + TrackerSettings::Instance().effectVisWidth = MulDiv(rect.Width(), 96, Util::GetDPIx(m_hWnd)); + TrackerSettings::Instance().effectVisHeight = MulDiv(rect.Height(), 96, Util::GetDPIy(m_hWnd)); + m_dcGrid.SelectObject(m_pbOldGrid); m_dcGrid.DeleteDC(); m_dcNodes.SelectObject(m_pbOldNodes); @@ -557,7 +573,7 @@ m_pixelsPerRow = 1; m_pixelsPerFXParam = (float)(m_rcDraw.Height())/(float)0xFF; m_pixelsPerPCParam = (float)(m_rcDraw.Height())/(float)ModCommand::maxColumnValue; - m_boolForceRedraw = TRUE; + m_forceRedraw = true; InvalidateRect(NULL, FALSE); //redraw everything } @@ -615,7 +631,7 @@ m_pixelsPerFXParam = (float)(m_rcDraw.Height())/(float)0xFF; m_pixelsPerPCParam = (float)(m_rcDraw.Height())/(float)ModCommand::maxColumnValue; - m_boolForceRedraw = TRUE; + m_forceRedraw = true; Update(); } Modified: trunk/OpenMPT/mptrack/EffectVis.h =================================================================== --- trunk/OpenMPT/mptrack/EffectVis.h 2015-04-24 19:41:03 UTC (rev 4988) +++ trunk/OpenMPT/mptrack/EffectVis.h 2015-04-24 21:05:15 UTC (rev 4989) @@ -10,7 +10,6 @@ #pragma once -#include "afxwin.h" #include "EffectInfo.h" OPENMPT_NAMESPACE_BEGIN @@ -28,7 +27,7 @@ public: enum { - kAction_OverwriteFX=0, + kAction_OverwriteFX, kAction_FillFX, kAction_OverwritePC, kAction_FillPC, @@ -54,7 +53,6 @@ void ShowVis(CDC * pDC, CRect rectBorder); void ShowVisImage(CDC *pDC); - BOOL m_boolForceRedraw, m_boolUseBitmaps; RECT invalidated; ROWINDEX m_nLastDrawnRow; // for interpolation @@ -83,6 +81,8 @@ float m_pixelsPerRow, m_pixelsPerFXParam, m_pixelsPerPCParam; + bool m_forceRedraw : 1; + void InvalidateRow(int row); int RowToScreenX(ROWINDEX row) const; int RowToScreenY(ROWINDEX row) const; Modified: trunk/OpenMPT/mptrack/TrackerSettings.cpp =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.cpp 2015-04-24 19:41:03 UTC (rev 4988) +++ trunk/OpenMPT/mptrack/TrackerSettings.cpp 2015-04-24 21:05:15 UTC (rev 4989) @@ -214,6 +214,8 @@ , orderlistMargins(conf, "Pattern Editor", "DefaultSequenceMargins", 0) , rowDisplayOffset(conf, "Pattern Editor", "RowDisplayOffset", 0) , patternFont(conf, "Pattern Editor", "Font", FontSetting(PATTERNFONT_SMALL, 0)) + , effectVisWidth(conf, "Pattern Editor", "EffectVisWidth", -1) + , effectVisHeight(conf, "Pattern Editor", "EffectVisHeight", -1) // Sample Editor , m_SampleUndoBufferSize(conf, "Sample Editor", "UndoBufferSize", SampleUndoBufferSize()) , sampleEditorKeyBehaviour(conf, "Sample Editor", "KeyBehaviour", seNoteOffOnNewKey) Modified: trunk/OpenMPT/mptrack/TrackerSettings.h =================================================================== --- trunk/OpenMPT/mptrack/TrackerSettings.h 2015-04-24 19:41:03 UTC (rev 4988) +++ trunk/OpenMPT/mptrack/TrackerSettings.h 2015-04-24 21:05:15 UTC (rev 4989) @@ -502,6 +502,8 @@ CachedSetting<int32> orderlistMargins; CachedSetting<int32> rowDisplayOffset; Setting<FontSetting> patternFont; + Setting<int32> effectVisWidth; + Setting<int32> effectVisHeight; // Sample Editor This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |