diff --git a/editor/editor.vcproj b/editor/editor.vcproj
index 6280c2f..dee7738 100644
--- a/editor/editor.vcproj
+++ b/editor/editor.vcproj
@@ -226,6 +226,10 @@
>
+
+
diff --git a/editor/synceditdata.h b/editor/syncdocument.h
similarity index 90%
rename from editor/synceditdata.h
rename to editor/syncdocument.h
index 7e1e150..771d226 100644
--- a/editor/synceditdata.h
+++ b/editor/syncdocument.h
@@ -9,10 +9,10 @@
#include
#include
-class SyncEditData : public sync::Data
+class SyncDocument : public sync::Data
{
public:
- SyncEditData() : sync::Data(), clientPaused(true) {}
+ SyncDocument() : sync::Data(), clientPaused(true) {}
void sendSetKeyCommand(int track, int row, const sync::Track::KeyFrame &key)
{
@@ -41,8 +41,6 @@ public:
void sendSetRowCommand(int row)
{
if (INVALID_SOCKET == clientSocket) return;
- printf("sending row pos\n");
-
unsigned char cmd = SET_ROW;
send(clientSocket, (char*)&cmd, 1, 0);
send(clientSocket, (char*)&row, sizeof(int), 0);
@@ -67,8 +65,8 @@ public:
{
public:
virtual ~Command() {}
- virtual void exec(SyncEditData *data) = 0;
- virtual void undo(SyncEditData *data) = 0;
+ virtual void exec(SyncDocument *data) = 0;
+ virtual void undo(SyncDocument *data) = 0;
};
class InsertCommand : public Command
@@ -77,7 +75,7 @@ public:
InsertCommand(int track, int row, const sync::Track::KeyFrame &key) : track(track), row(row), key(key) {}
~InsertCommand() {}
- virtual void exec(SyncEditData *data)
+ virtual void exec(SyncDocument *data)
{
sync::Track &t = data->getTrack(this->track);
assert(!t.isKeyFrame(row));
@@ -86,7 +84,7 @@ public:
data->sendSetKeyCommand(track, row, key); // update clients
}
- virtual void undo(SyncEditData *data)
+ virtual void undo(SyncDocument *data)
{
sync::Track &t = data->getTrack(this->track);
assert(t.isKeyFrame(row));
@@ -106,7 +104,7 @@ public:
DeleteCommand(int track, int row) : track(track), row(row) {}
~DeleteCommand() {}
- virtual void exec(SyncEditData *data)
+ virtual void exec(SyncDocument *data)
{
sync::Track &t = data->getTrack(this->track);
assert(t.isKeyFrame(row));
@@ -116,7 +114,7 @@ public:
data->sendDeleteKeyCommand(track, row); // update clients
}
- virtual void undo(SyncEditData *data)
+ virtual void undo(SyncDocument *data)
{
sync::Track &t = data->getTrack(this->track);
assert(!t.isKeyFrame(row));
@@ -137,7 +135,7 @@ public:
EditCommand(int track, int row, const sync::Track::KeyFrame &key) : track(track), row(row), key(key) {}
~EditCommand() {}
- virtual void exec(SyncEditData *data)
+ virtual void exec(SyncDocument *data)
{
sync::Track &t = data->getTrack(this->track);
@@ -151,7 +149,7 @@ public:
data->sendSetKeyCommand(track, row, key); // update clients
}
- virtual void undo(SyncEditData *data)
+ virtual void undo(SyncDocument *data)
{
sync::Track &t = data->getTrack(this->track);
@@ -186,13 +184,13 @@ public:
size_t getSize() const { return commands.size(); }
- virtual void exec(SyncEditData *data)
+ virtual void exec(SyncDocument *data)
{
std::list::iterator it;
for (it = commands.begin(); it != commands.end(); ++it) (*it)->exec(data);
}
- virtual void undo(SyncEditData *data)
+ virtual void undo(SyncDocument *data)
{
std::list::iterator it;
for (it = commands.begin(); it != commands.end(); ++it) (*it)->undo(data);
@@ -246,17 +244,17 @@ public:
Command *getSetKeyFrameCommand(int track, int row, const sync::Track::KeyFrame &key)
{
sync::Track &t = getTrack(track);
- SyncEditData::Command *cmd;
+ SyncDocument::Command *cmd;
if (t.isKeyFrame(row)) cmd = new EditCommand(track, row, key);
else cmd = new InsertCommand(track, row, key);
return cmd;
}
SOCKET clientSocket;
-// private:
std::map clientRemap;
bool clientPaused;
+private:
std::stack undoStack;
std::stack redoStack;
};
diff --git a/editor/synctracker2.cpp b/editor/synctracker2.cpp
index 101bc12..5511925 100644
--- a/editor/synctracker2.cpp
+++ b/editor/synctracker2.cpp
@@ -234,6 +234,19 @@ static ATOM registerMainWindowClass(HINSTANCE hInstance)
return RegisterClassEx(&wc);
}
+SyncDocument loadDocument()
+{
+ SyncDocument document;
+ for (int i = 0; i < 10; ++i)
+ {
+ std::string trackName = "balle";
+
+ // find track
+ const sync::Track &track = document.getTrack(trackName);
+ }
+ return document;
+}
+
int _tmain(int argc, _TCHAR* argv[])
{
#ifdef _DEBUG
@@ -281,7 +294,7 @@ int _tmain(int argc, _TCHAR* argv[])
} */
#endif
- SyncEditData syncData;
+ SyncDocument syncData;
syncData.clientSocket = INVALID_SOCKET;
ATOM mainClass = registerMainWindowClass(hInstance);
@@ -293,7 +306,7 @@ int _tmain(int argc, _TCHAR* argv[])
}
trackView = new TrackView();
- trackView->setSyncData(&syncData);
+ trackView->setDocument(&syncData);
HWND hwnd = CreateWindowEx(
0,
@@ -377,7 +390,6 @@ int _tmain(int argc, _TCHAR* argv[])
{
size_t clientIndex = 0;
int ret = recv(clientSocket, (char*)&clientIndex, sizeof(int), 0);
- printf("client index: %d\n", clientIndex);
// get len
int str_len = 0;
@@ -393,7 +405,6 @@ int _tmain(int argc, _TCHAR* argv[])
// find track
size_t serverIndex = syncData.getTrackIndex(trackName.c_str());
- printf("name: \"%s\"\n", trackName.c_str());
// setup remap
syncData.clientRemap[serverIndex] = clientIndex;
diff --git a/editor/trackview.cpp b/editor/trackview.cpp
index 3fed9e2..ccfccbe 100644
--- a/editor/trackview.cpp
+++ b/editor/trackview.cpp
@@ -110,15 +110,15 @@ void TrackView::paintTopMargin(HDC hdc, RECT rcTracks)
int firstTrack = min(max(scrollPosX / trackWidth, 0), getTrackCount() - 1);
int lastTrack = min(max(firstTrack + windowTracks + 1, 0), getTrackCount() - 1);
- sync::Data *syncData = getSyncData();
- if (NULL == syncData) return;
+ SyncDocument *document = getDocument();
+ if (NULL == document) return;
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
- sync::Data::TrackContainer::iterator trackIter = syncData->tracks.begin();
+ sync::Data::TrackContainer::iterator trackIter = document->tracks.begin();
for (int track = 0; track <= lastTrack; ++track, ++trackIter)
{
- assert(trackIter != syncData->tracks.end());
+ assert(trackIter != document->tracks.end());
if (track < firstTrack) continue;
RECT topMargin;
@@ -141,7 +141,7 @@ void TrackView::paintTopMargin(HDC hdc, RECT rcTracks)
const std::basic_string &trackName = trackIter->first;
- if (this->syncData->clientRemap.count(track) == 0) SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
+ if (this->document->clientRemap.count(track) == 0) SetTextColor(hdc, GetSysColor(COLOR_GRAYTEXT));
else SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
TextOut(hdc,
fillRect.left, 0,
@@ -210,20 +210,17 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
- sync::Data *syncData = getSyncData();
- if (NULL == syncData) return;
-
int selectLeft = min(selectStartTrack, selectStopTrack);
int selectRight = max(selectStartTrack, selectStopTrack);
int selectTop = min(selectStartRow, selectStopRow);
int selectBottom = max(selectStartRow, selectStopRow);
- sync::Data::TrackContainer::iterator trackIter = syncData->tracks.begin();
+ sync::Data::TrackContainer::iterator trackIter = document->tracks.begin();
for (int track = 0; track <= lastTrack; ++track, ++trackIter)
{
- assert(trackIter != syncData->tracks.end());
+ assert(trackIter != document->tracks.end());
size_t trackIndex = trackIter->second;
- const sync::Track &t = *syncData->actualTracks[trackIndex];
+ const sync::Track &t = *document->actualTracks[trackIndex];
if (track < firstTrack) continue;
for (int row = firstRow; row <= lastRow; ++row)
@@ -377,7 +374,7 @@ void TrackView::editCopy()
for (int track = selectLeft; track <= selectRight; ++track)
{
int localTrack = track - selectLeft;
- const sync::Track &t = syncData->getTrack(track);
+ const sync::Track &t = document->getTrack(track);
for (int row = selectTop; row <= selectBottom; ++row)
{
int localRow = row - selectTop;
@@ -448,17 +445,17 @@ void TrackView::editPaste()
{
char *src = clipbuf + 2 * sizeof(int) + sizeof(size_t);
- SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
+ SyncDocument::MultiCommand *multiCmd = new SyncDocument::MultiCommand();
for (int i = 0; i < buffer_size; ++i)
{
struct CopyEntry ce;
memcpy(&ce, src, sizeof(CopyEntry));
- SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack + ce.track, editRow + ce.row, ce.keyFrame);
+ SyncDocument::Command *cmd = document->getSetKeyFrameCommand(editTrack + ce.track, editRow + ce.row, ce.keyFrame);
multiCmd->addCommand(cmd);
src += sizeof(CopyEntry);
}
- syncData->exec(multiCmd);
+ document->exec(multiCmd);
}
GlobalUnlock(hmem);
@@ -548,9 +545,9 @@ void TrackView::setEditRow(int newEditRow)
selectStartRow = selectStopRow = editRow;
selectStartTrack = selectStopTrack = editTrack;
}
- if (getSyncData()->clientPaused)
+ if (document->clientPaused)
{
- getSyncData()->sendSetRowCommand(editRow);
+ document->sendSetRowCommand(editRow);
}
}
@@ -683,16 +680,16 @@ LRESULT TrackView::onHScroll(UINT sbCode, int /*newPos*/)
void TrackView::editEnterValue()
{
- if (int(editString.size()) > 0 && editTrack < int(syncData->getTrackCount()))
+ if (int(editString.size()) > 0 && editTrack < int(document->getTrackCount()))
{
- sync::Track &t = syncData->getTrack(editTrack);
+ sync::Track &t = document->getTrack(editTrack);
sync::Track::KeyFrame newKey;
if (t.isKeyFrame(editRow)) newKey = *t.getKeyFrame(editRow); // copy old key
newKey.value = float(_tstof(editString.c_str())); // modify value
- SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack, editRow, newKey);
- syncData->exec(cmd);
+ SyncDocument::Command *cmd = document->getSetKeyFrameCommand(editTrack, editRow, newKey);
+ document->exec(cmd);
editString.clear();
// invalidatePos(editTrack, editRow);
@@ -703,9 +700,9 @@ void TrackView::editEnterValue()
void TrackView::editToggleInterpolationType()
{
- if (editTrack < int(syncData->getTrackCount()))
+ if (editTrack < int(document->getTrackCount()))
{
- sync::Track &t = syncData->getTrack(editTrack);
+ sync::Track &t = document->getTrack(editTrack);
// find key to modify
sync::Track::KeyFrameContainer::const_iterator upper = t.keyFrames.upper_bound(editRow);
@@ -731,8 +728,8 @@ void TrackView::editToggleInterpolationType()
(int(newKey.interpolationType) + 1) % sync::Track::KeyFrame::IT_COUNT
);
- SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(editTrack, int(lower->first), newKey);
- syncData->exec(cmd);
+ SyncDocument::Command *cmd = document->getSetKeyFrameCommand(editTrack, int(lower->first), newKey);
+ document->exec(cmd);
invalidateRange(editTrack, editTrack, int(lower->first), int(upper->first));
}
@@ -746,21 +743,21 @@ void TrackView::editDelete()
int selectTop = min(selectStartRow, selectStopRow);
int selectBottom = max(selectStartRow, selectStopRow);
- if (selectRight >= int(syncData->getTrackCount()))
+ if (selectRight >= int(document->getTrackCount()))
{
MessageBeep(0);
return;
}
- SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
+ SyncDocument::MultiCommand *multiCmd = new SyncDocument::MultiCommand();
for (int track = selectLeft; track <= selectRight; ++track)
{
- sync::Track &t = syncData->getTrack(track);
+ sync::Track &t = document->getTrack(track);
for (int row = selectTop; row <= selectBottom; ++row)
{
if (t.isKeyFrame(row))
{
- SyncEditData::Command *cmd = new SyncEditData::DeleteCommand(track, row);
+ SyncDocument::Command *cmd = new SyncDocument::DeleteCommand(track, row);
multiCmd->addCommand(cmd);
}
}
@@ -773,7 +770,7 @@ void TrackView::editDelete()
}
else
{
- syncData->exec(multiCmd);
+ document->exec(multiCmd);
InvalidateRect(getWin(), NULL, FALSE);
// invalidateRange(selectLeft, selectRight, selectTop, selectBottom);
}
@@ -786,10 +783,10 @@ void TrackView::editBiasValue(float amount)
int selectTop = min(selectStartRow, selectStopRow);
int selectBottom = max(selectStartRow, selectStopRow);
- SyncEditData::MultiCommand *multiCmd = new SyncEditData::MultiCommand();
+ SyncDocument::MultiCommand *multiCmd = new SyncDocument::MultiCommand();
for (int track = selectLeft; track <= selectRight; ++track)
{
- sync::Track &t = syncData->getTrack(track);
+ sync::Track &t = document->getTrack(track);
for (int row = selectTop; row <= selectBottom; ++row)
{
if (t.isKeyFrame(row))
@@ -798,7 +795,7 @@ void TrackView::editBiasValue(float amount)
newKey.value += amount; // modify value
// add sub-command
- SyncEditData::Command *cmd = syncData->getSetKeyFrameCommand(track, row, newKey);
+ SyncDocument::Command *cmd = document->getSetKeyFrameCommand(track, row, newKey);
multiCmd->addCommand(cmd);
}
}
@@ -811,14 +808,14 @@ void TrackView::editBiasValue(float amount)
}
else
{
- syncData->exec(multiCmd);
+ document->exec(multiCmd);
invalidateRange(selectLeft, selectRight, selectTop, selectBottom);
}
}
LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
{
- if (editString.empty() && getSyncData()->clientPaused)
+ if (editString.empty() && document->clientPaused)
{
switch (keyCode)
{
@@ -898,7 +895,7 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT /*flags*/)
invalidatePos(editTrack, editRow);
MessageBeep(0);
}
- getSyncData()->sendPauseCommand( !getSyncData()->clientPaused );
+ document->sendPauseCommand( !document->clientPaused );
break;
}
return FALSE;
@@ -932,7 +929,7 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
case '7':
case '8':
case '9':
- if (editTrack < int(syncData->getTrackCount()))
+ if (editTrack < int(document->getTrackCount()))
{
editString.push_back(char(keyCode));
invalidatePos(editTrack, editRow);
@@ -945,7 +942,7 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
break;
case 's':
- syncData->sendSaveCommand();
+ document->sendSaveCommand();
break;
}
return FALSE;
@@ -995,13 +992,13 @@ LRESULT TrackView::windowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
break;
case WM_UNDO:
- if (!syncData->undo()) MessageBeep(0);
+ if (!document->undo()) MessageBeep(0);
// unfortunately, we don't know how much to invalidate... so we'll just invalidate it all.
InvalidateRect(hwnd, NULL, FALSE);
break;
case WM_REDO:
- if (!syncData->redo()) MessageBeep(0);
+ if (!document->redo()) MessageBeep(0);
// unfortunately, we don't know how much to invalidate... so we'll just invalidate it all.
InvalidateRect(hwnd, NULL, FALSE);
break;
diff --git a/editor/trackview.h b/editor/trackview.h
index fb8f847..d2e5cf7 100644
--- a/editor/trackview.h
+++ b/editor/trackview.h
@@ -4,7 +4,7 @@
#pragma once
-#include "synceditdata.h"
+#include "syncdocument.h"
#include
#include
@@ -22,8 +22,8 @@ public:
HWND create(HINSTANCE hInstance, HWND hwndParent);
HWND getWin(){ return hwnd; }
- void setSyncData(SyncEditData *syncData) { this->syncData = syncData; }
- SyncEditData *getSyncData() { return syncData; }
+ void setDocument(SyncDocument *document) { this->document = document; }
+ SyncDocument *getDocument() { return document; }
void setRows(int rows);
int getRows() const { return rows; }
@@ -115,7 +115,7 @@ private:
int getTrackCount()
{
- sync::Data *syncData = getSyncData();
+ sync::Data *syncData = getDocument();
if (NULL == syncData) return 0;
return int(syncData->getTrackCount());
};
@@ -136,7 +136,7 @@ private:
int windowWidth, windowHeight;
int windowRows, windowTracks;
- SyncEditData *syncData;
+ SyncDocument *document;
std::basic_string editString;