editor: add visual row-bookmarks
This commit is contained in:
parent
2e53f4da00
commit
3a859b781e
1
README
1
README
@ -68,6 +68,7 @@ Ctrl+Left/Right Move track
|
||||
Enter Enter key-frame value
|
||||
Del Delete key-frame
|
||||
i Enumerate interpolation mode
|
||||
k Toggle bookmark
|
||||
Space Pause/Resume demo
|
||||
Shift+Up/Down/Left/Right Select
|
||||
Ctrl+C Copy
|
||||
|
||||
@ -11,6 +11,7 @@ extern "C" {
|
||||
#include <stack>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include <set>
|
||||
#include <string>
|
||||
#include <cassert>
|
||||
|
||||
@ -266,6 +267,19 @@ public:
|
||||
return 0 != savePointDelta;
|
||||
}
|
||||
|
||||
bool isRowBookmark(int row) const
|
||||
{
|
||||
return !!rowBookmarks.count(row);
|
||||
}
|
||||
|
||||
void toggleRowBookmark(int row)
|
||||
{
|
||||
if (isRowBookmark(row))
|
||||
rowBookmarks.erase(row);
|
||||
else
|
||||
rowBookmarks.insert(row);
|
||||
}
|
||||
|
||||
ClientSocket clientSocket;
|
||||
|
||||
size_t getRows() const { return rows; }
|
||||
@ -274,9 +288,10 @@ public:
|
||||
std::wstring fileName;
|
||||
|
||||
private:
|
||||
std::set<int> rowBookmarks;
|
||||
std::vector<size_t> trackOrder;
|
||||
size_t rows;
|
||||
|
||||
|
||||
// undo / redo functionality
|
||||
std::stack<Command*> undoStack;
|
||||
std::stack<Command*> redoStack;
|
||||
|
||||
@ -62,8 +62,9 @@ TrackView::TrackView() :
|
||||
lerpPen = CreatePen(PS_SOLID, 2, RGB(255, 0, 0));
|
||||
cosinePen = CreatePen(PS_SOLID, 2, RGB(0, 255, 0));
|
||||
rampPen = CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
|
||||
|
||||
|
||||
editBrush = CreateSolidBrush(RGB(255, 255, 0)); // yellow
|
||||
bookmarkBrush = CreateSolidBrush(RGB(128, 128, 255)); // red
|
||||
|
||||
handCursor = LoadCursor(NULL, IDC_HAND);
|
||||
|
||||
@ -81,6 +82,7 @@ TrackView::~TrackView()
|
||||
DeleteObject(cosinePen);
|
||||
DeleteObject(rampPen);
|
||||
DeleteObject(editBrush);
|
||||
DeleteObject(bookmarkBrush);
|
||||
DeleteObject(rowPen);
|
||||
DeleteObject(rowSelectPen);
|
||||
if (document)
|
||||
@ -240,12 +242,16 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
||||
leftMargin.bottom = leftMargin.top + rowHeight;
|
||||
|
||||
if (!RectVisible(hdc, &leftMargin)) continue;
|
||||
|
||||
|
||||
HBRUSH fillBrush;
|
||||
if (row == editRow) fillBrush = editBrush;
|
||||
else fillBrush = GetSysColorBrush(COLOR_3DFACE);
|
||||
if (row == editRow)
|
||||
fillBrush = editBrush;
|
||||
else if (doc->isRowBookmark(row))
|
||||
fillBrush = bookmarkBrush;
|
||||
else
|
||||
fillBrush = GetSysColorBrush(COLOR_3DFACE);
|
||||
FillRect(hdc, &leftMargin, fillBrush);
|
||||
|
||||
|
||||
DrawEdge(hdc, &leftMargin, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_RIGHT | BF_BOTTOM | BF_TOP);
|
||||
if ((row % 8) == 0) SetTextColor(hdc, RGB(0, 0, 0));
|
||||
else if ((row % 4) == 0) SetTextColor(hdc, RGB(64, 64, 64));
|
||||
@ -1093,6 +1099,11 @@ LRESULT TrackView::onChar(UINT keyCode, UINT /*flags*/)
|
||||
case 'i':
|
||||
editToggleInterpolationType();
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
getDocument()->toggleRowBookmark(getEditRow());
|
||||
invalidateRow(getEditRow());
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -189,7 +189,7 @@ private:
|
||||
HBRUSH bgBaseBrush, bgDarkBrush;
|
||||
HBRUSH selectBaseBrush, selectDarkBrush;
|
||||
HPEN rowPen, rowSelectPen;
|
||||
HBRUSH editBrush;
|
||||
HBRUSH editBrush, bookmarkBrush;
|
||||
HPEN lerpPen, cosinePen, rampPen;
|
||||
HCURSOR handCursor;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user