refactoring

This commit is contained in:
Erik Faye-Lund 2008-02-14 23:50:56 +00:00
parent 04da67a5e4
commit 4927f902d3
7 changed files with 104 additions and 47 deletions

View File

@ -68,11 +68,11 @@ int main(int argc, char *argv[])
timer.play(); timer.play();
while (1) while (1)
{ {
float row = timer.getRow(); float row = float(timer.getRow()) / 10;
if (!syncDevice->update(row)) break; if (!syncDevice->update(row)) break;
printf("%2.2f: %2.2f \n", row, track.getValue(row)); printf("%2.2f: %2.2f \n", row, track.getValue(row));
Sleep(1000); Sleep(100);
} }
return 0; return 0;

View File

@ -15,6 +15,7 @@ enum RemoteCommand {
SET_KEY = 0, SET_KEY = 0,
DELETE_KEY = 1, DELETE_KEY = 1,
GET_TRACK = 2, GET_TRACK = 2,
SET_ROW = 3,
}; };
#endif /* NETWORK_H */ #endif /* NETWORK_H */

38
sync/data.cpp Normal file
View File

@ -0,0 +1,38 @@
#include "data.h"
using namespace sync;
size_t Data::getTrackIndex(const std::basic_string<TCHAR> &name)
{
TrackContainer::iterator iter = tracks.find(name);
if (iter != tracks.end()) return int(iter->second);
size_t index = actualTracks.size();
tracks[name] = index;
actualTracks.push_back(new sync::Track);
return index;
}
Track &Data::getTrack(const std::basic_string<TCHAR> &name)
{
size_t index = getTrackIndex(name);
assert(index >= 0);
assert(index < int(actualTracks.size()));
assert(NULL != actualTracks[index]);
return *actualTracks[index];
}
Track &Data::getTrack(size_t track)
{
assert(track >= 0);
assert(track < tracks.size());
sync::Data::TrackContainer::iterator trackIter = tracks.begin();
for (size_t currTrack = 0; currTrack < track; ++currTrack, ++trackIter);
return *actualTracks[trackIter->second];
}
size_t Data::getTrackCount() const
{
return tracks.size();
}

View File

@ -10,7 +10,8 @@ public:
ClientDevice(const std::string &baseName, SOCKET serverSocket, Timer &timer) : ClientDevice(const std::string &baseName, SOCKET serverSocket, Timer &timer) :
baseName(baseName), baseName(baseName),
timer(timer), timer(timer),
serverSocket(serverSocket) serverSocket(serverSocket),
serverRow(-1)
{ {
} }
@ -24,12 +25,12 @@ private:
sync::Data syncData; sync::Data syncData;
Timer &timer; Timer &timer;
int serverRow;
SOCKET serverSocket; SOCKET serverSocket;
}; };
ClientDevice::~ClientDevice() ClientDevice::~ClientDevice()
{ {
} }
Track &ClientDevice::getTrack(const std::string &trackName) Track &ClientDevice::getTrack(const std::string &trackName)
@ -94,7 +95,7 @@ bool ClientDevice::update(float row)
int track, row; int track, row;
recv(serverSocket, (char*)&track, sizeof(int), 0); recv(serverSocket, (char*)&track, sizeof(int), 0);
recv(serverSocket, (char*)&row, sizeof(int), 0); recv(serverSocket, (char*)&row, sizeof(int), 0);
printf("delete: %d,%d = %f\n", track, row); printf("delete: %d,%d\n", track, row);
sync::Track &t = syncData.getTrack(track); sync::Track &t = syncData.getTrack(track);
t.deleteKeyFrame(row); t.deleteKeyFrame(row);
@ -106,6 +107,19 @@ bool ClientDevice::update(float row)
} }
} }
} }
if (timer.isPlaying())
{
int newServerRow = int(floor(row));
if (serverRow != newServerRow)
{
unsigned char cmd = SET_ROW;
send(serverSocket, (char*)&cmd, 1, 0);
send(serverSocket, (char*)&newServerRow, sizeof(int), 0);
serverRow = newServerRow;
}
}
return !done; return !done;
} }

View File

@ -318,7 +318,7 @@ int _tmain(int argc, _TCHAR* argv[])
ATOM mainClass = registerMainWindowClass(hInstance); ATOM mainClass = registerMainWindowClass(hInstance);
ATOM trackViewClass = registerTrackViewWindowClass(hInstance); ATOM trackViewClass = registerTrackViewWindowClass(hInstance);
if(!mainClass || ! trackViewClass) if (!mainClass || !trackViewClass)
{ {
MessageBox(NULL, _T("Window Registration Failed!"), _T("Error!"), MB_ICONEXCLAMATION | MB_OK); MessageBox(NULL, _T("Window Registration Failed!"), _T("Error!"), MB_ICONEXCLAMATION | MB_OK);
return 0; return 0;
@ -327,7 +327,6 @@ int _tmain(int argc, _TCHAR* argv[])
trackView = new TrackView(); trackView = new TrackView();
trackView->setSyncData(&syncData); trackView->setSyncData(&syncData);
// Step 2: Creating the Window
HWND hwnd = CreateWindowEx( HWND hwnd = CreateWindowEx(
0, 0,
mainWindowClassName, mainWindowClassName,
@ -405,6 +404,7 @@ int _tmain(int argc, _TCHAR* argv[])
switch (cmd) switch (cmd)
{ {
case GET_TRACK: case GET_TRACK:
{
size_t clientIndex = 0; size_t clientIndex = 0;
int ret = recv(clientSocket, (char*)&clientIndex, sizeof(int), 0); int ret = recv(clientSocket, (char*)&clientIndex, sizeof(int), 0);
printf("client index: %d\n", clientIndex); printf("client index: %d\n", clientIndex);
@ -413,8 +413,8 @@ int _tmain(int argc, _TCHAR* argv[])
int str_len = 0; int str_len = 0;
ret = recv(clientSocket, (char*)&str_len, sizeof(int), 0); ret = recv(clientSocket, (char*)&str_len, sizeof(int), 0);
// int clientAddr = 0; // int clientAddr = 0;
// int ret = recv(clientSocket, (char*)&clientAddr, sizeof(int), 0); // int ret = recv(clientSocket, (char*)&clientAddr, sizeof(int), 0);
// get string // get string
std::string trackName; std::string trackName;
@ -439,8 +439,17 @@ int _tmain(int argc, _TCHAR* argv[])
} }
InvalidateRect(trackViewWin, NULL, FALSE); InvalidateRect(trackViewWin, NULL, FALSE);
}
break;
case SET_ROW:
{
int newRow = 0;
int ret = recv(clientSocket, (char*)&newRow, sizeof(int), 0);
printf("new row: %d\n", newRow);
trackView->setEditRow(newRow);
}
break; break;
// case SOMETHING_ELSE:
} }
} }
} }

View File

@ -222,10 +222,6 @@
> >
</File> </File>
<File <File
RelativePath=".\syncdata.h"
>
</File>
<File
RelativePath=".\synceditdata.h" RelativePath=".\synceditdata.h"
> >
</File> </File>

View File

@ -25,6 +25,8 @@ public:
int getRows() const { return rows; } int getRows() const { return rows; }
void editBiasValue(float amount); void editBiasValue(float amount);
void setEditRow(int newEditRow);
private: private:
// some nasty hackery to forward the window messages // some nasty hackery to forward the window messages
friend static LRESULT CALLBACK trackViewWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); friend static LRESULT CALLBACK trackViewWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
@ -45,8 +47,6 @@ private:
void editCut(); void editCut();
void editPaste(); void editPaste();
// the window procedure
void paintTracks(HDC hdc, RECT rcTracks); void paintTracks(HDC hdc, RECT rcTracks);
void paintTopMargin(HDC hdc, RECT rcTracks); void paintTopMargin(HDC hdc, RECT rcTracks);
@ -102,7 +102,6 @@ private:
InvalidateRect(hwnd, &rect, FALSE); InvalidateRect(hwnd, &rect, FALSE);
} }
void setEditRow(int newEditRow);
void setEditTrack(int newEditTrack); void setEditTrack(int newEditTrack);
int getScreenY(int row); int getScreenY(int row);