diff --git a/editor/trackview.cpp b/editor/trackview.cpp index 9d7a8b3..850127b 100644 --- a/editor/trackview.cpp +++ b/editor/trackview.cpp @@ -7,14 +7,29 @@ static const TCHAR *trackViewWindowClassName = _T("TrackView"); -static const int topMarginHeight = 20; -static const int leftMarginWidth = 60; - static DWORD darken(DWORD col, float amt) { return RGB(GetRValue(col) * amt, GetGValue(col) * amt, GetBValue(col) * amt); } +static int getMaxCharacterWidth(HDC hdc, TCHAR *chars, size_t len) +{ + int maxDigitWidth = 0; + for (size_t i = 0; i < len; ++i) + { + SIZE size; + GetTextExtentPoint32(hdc, &chars[i], 1, &size); + maxDigitWidth = max(maxDigitWidth, int(size.cx)); + } + return maxDigitWidth; +} + +static int getMaxCharacterWidthFromString(HDC hdc, TCHAR *chars) +{ + return getMaxCharacterWidth(hdc, chars, _tcslen(chars)); +} + + void TrackView::setFont(HFONT font) { this->font = font; @@ -28,7 +43,10 @@ void TrackView::setFont(HFONT font) rowHeight = tm.tmHeight + tm.tmExternalLeading; fontWidth = tm.tmAveCharWidth; - trackWidth = fontWidth * 16; + trackWidth = getMaxCharacterWidthFromString(hdc, _T("0123456789.")) * 16; + + topMarginHeight = rowHeight + 4; + leftMarginWidth = getMaxCharacterWidthFromString(hdc, _T("0123456789abcdefh")) * 8; } TrackView::TrackView() diff --git a/editor/trackview.h b/editor/trackview.h index bd73289..cdb2954 100644 --- a/editor/trackview.h +++ b/editor/trackview.h @@ -155,6 +155,9 @@ private: int rowHeight; int fontWidth; int trackWidth; + int topMarginHeight; + int leftMarginWidth; + HBRUSH bgBaseBrush, bgDarkBrush; HBRUSH selectBaseBrush, selectDarkBrush;