This commit is contained in:
Erik Faye-Lund 2008-02-14 23:32:40 +00:00
parent 0534c70719
commit 04da67a5e4
9 changed files with 56 additions and 71 deletions

30
sync/data.h Normal file
View File

@ -0,0 +1,30 @@
#pragma once
#include <string>
#include <map>
#include <vector>
#include <exception>
#include <cmath>
#include <cassert>
#include <tchar.h>
#include "track.h"
namespace sync
{
class Data
{
public:
size_t getTrackIndex(const std::basic_string<TCHAR> &name);
Track &getTrack(const std::basic_string<TCHAR> &name);
Track &getTrack(size_t track);
size_t getTrackCount() const;
// private:
typedef std::map<const std::basic_string<TCHAR>, size_t> TrackContainer;
// typedef std::map<const std::basic_string<TCHAR>, SyncTrack> TrackContainer;
TrackContainer tracks;
std::vector<Track*> actualTracks;
};
}

View File

@ -1,6 +1,6 @@
#include "device.h"
#include "data.h"
#include "../network.h"
#include "../syncdata.h"
using namespace sync;
@ -21,7 +21,7 @@ public:
private:
const std::string &baseName;
SyncData syncData;
sync::Data syncData;
Timer &timer;
SOCKET serverSocket;
@ -34,7 +34,7 @@ ClientDevice::~ClientDevice()
Track &ClientDevice::getTrack(const std::string &trackName)
{
SyncData::TrackContainer::iterator iter = syncData.tracks.find(trackName);
sync::Data::TrackContainer::iterator iter = syncData.tracks.find(trackName);
if (iter != syncData.tracks.end()) return *syncData.actualTracks[iter->second];
unsigned char cmd = GET_TRACK;
@ -83,6 +83,9 @@ bool ClientDevice::update(float row)
recv(serverSocket, (char*)&row, sizeof(int), 0);
recv(serverSocket, (char*)&value, sizeof(float), 0);
printf("set: %d,%d = %f\n", track, row, value);
sync::Track &t = syncData.getTrack(track);
t.setKeyFrame(row, Track::KeyFrame(value));
}
break;
@ -92,6 +95,9 @@ bool ClientDevice::update(float row)
recv(serverSocket, (char*)&track, sizeof(int), 0);
recv(serverSocket, (char*)&row, sizeof(int), 0);
printf("delete: %d,%d = %f\n", track, row);
sync::Track &t = syncData.getTrack(track);
t.deleteKeyFrame(row);
}
break;
@ -125,7 +131,7 @@ Device *sync::createDevice(const std::string &baseName, Timer &timer)
return NULL;
}
Device *device = new ClientDevice(serverSocket, timer);
Device *device = new ClientDevice(baseName, serverSocket, timer);
return device;
}

View File

@ -1,6 +1,6 @@
#include "device.h"
#include "data.h"
#include "../network.h"
#include "../syncdata.h"
using namespace sync;
@ -20,7 +20,7 @@ public:
private:
const std::string &baseName;
SyncData syncData;
sync::Data syncData;
Timer &timer;
};
@ -28,7 +28,7 @@ PlayerDevice::~PlayerDevice() { }
Track &PlayerDevice::getTrack(const std::string &trackName)
{
SyncData::TrackContainer::iterator iter = syncData.tracks.find(trackName);
sync::Data::TrackContainer::iterator iter = syncData.tracks.find(trackName);
if (iter != syncData.tracks.end()) return *syncData.actualTracks[iter->second];
sync::Track *track = new sync::Track();

View File

@ -1,5 +1,5 @@
#include "track.h"
#include "../syncdata.h"
#include "data.h"
using namespace sync;
#include <cmath>

View File

@ -1,55 +0,0 @@
#pragma once
#include <string>
#include <map>
#include <vector>
#include <exception>
#include <cmath>
#include <cassert>
#include <tchar.h>
#include "sync/track.h"
class SyncData
{
public:
size_t 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;
}
sync::Track &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];
}
sync::Track &getTrack(size_t track)
{
assert(track >= 0);
assert(track < tracks.size());
SyncData::TrackContainer::iterator trackIter = tracks.begin();
for (size_t currTrack = 0; currTrack < track; ++currTrack, ++trackIter);
return *actualTracks[trackIter->second];
}
size_t getTrackCount() const { return tracks.size(); }
// private:
typedef std::map<const std::basic_string<TCHAR>, size_t> TrackContainer;
// typedef std::map<const std::basic_string<TCHAR>, SyncTrack> TrackContainer;
TrackContainer tracks;
std::vector<sync::Track*> actualTracks;
};

View File

@ -1,15 +1,15 @@
#pragma once
#include "syncdata.h"
#include "sync/data.h"
#include <stack>
#include <list>
#include "network.h"
class SyncEditData : public SyncData
class SyncEditData : public sync::Data
{
public:
SyncEditData() : SyncData() {}
SyncEditData() : sync::Data() {}
void sendSetKeyCommand(int track, int row, const sync::Track::KeyFrame &key)
{

View File

@ -180,6 +180,10 @@
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath=".\sync\data.cpp"
>
</File>
<File
RelativePath=".\network.cpp"
>
</File>

View File

@ -104,12 +104,12 @@ 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);
SyncData *syncData = getSyncData();
sync::Data *syncData = getSyncData();
if (NULL == syncData) return;
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
SyncData::TrackContainer::iterator trackIter = syncData->tracks.begin();
sync::Data::TrackContainer::iterator trackIter = syncData->tracks.begin();
for (int track = 0; track <= lastTrack; ++track, ++trackIter)
{
ASSERT(trackIter != syncData->tracks.end());
@ -204,7 +204,7 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
SyncData *syncData = getSyncData();
sync::Data *syncData = getSyncData();
if (NULL == syncData) return;
int selectLeft = min(selectStartTrack, selectStopTrack);
@ -212,7 +212,7 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
int selectTop = min(selectStartRow, selectStopRow);
int selectBottom = max(selectStartRow, selectStopRow);
SyncData::TrackContainer::iterator trackIter = syncData->tracks.begin();
sync::Data::TrackContainer::iterator trackIter = syncData->tracks.begin();
for (int track = 0; track <= lastTrack; ++track, ++trackIter)
{
ASSERT(trackIter != syncData->tracks.end());

View File

@ -110,7 +110,7 @@ private:
int getTrackCount()
{
SyncData *syncData = getSyncData();
sync::Data *syncData = getSyncData();
if (NULL == syncData) return 0;
return int(syncData->getTrackCount());
};