refactoring
This commit is contained in:
parent
9331176838
commit
ed688c55b7
12
client.cpp
12
client.cpp
@ -39,15 +39,21 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned char cmd = 0;
|
||||
int ret = recv(serverSocket, (char*)&cmd, 1, 0);
|
||||
if (0 == ret) done = true;
|
||||
if (0 == ret)
|
||||
{
|
||||
done = true;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (cmd)
|
||||
{
|
||||
case 1:
|
||||
printf("yes, master!\n");
|
||||
unsigned char cmd = 0x1;
|
||||
send(serverSocket, (char*)&cmd, 1, 0);
|
||||
{
|
||||
unsigned char cmd = 0x1;
|
||||
send(serverSocket, (char*)&cmd, 1, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "network.h"
|
||||
#include <stdio.h>
|
||||
|
||||
bool initNetwork()
|
||||
{
|
||||
@ -20,11 +21,14 @@ SOCKET clientConnect(SOCKET serverSocket)
|
||||
{
|
||||
SOCKET clientSocket = accept(serverSocket, NULL, NULL);
|
||||
if (INVALID_SOCKET == clientSocket) return INVALID_SOCKET;
|
||||
printf("%x\n", clientSocket);
|
||||
|
||||
const char *expectedGreeting = clientGreeting;
|
||||
char recievedGreeting[128];
|
||||
|
||||
recv(clientSocket, recievedGreeting, int(strlen(expectedGreeting)), 0);
|
||||
while(recv(clientSocket, recievedGreeting, int(strlen(expectedGreeting)), 0) < 0) Sleep(1);
|
||||
|
||||
fprintf(stderr, "got: \"%s\"\n", recievedGreeting);
|
||||
if (strncmp(expectedGreeting, recievedGreeting, strlen(expectedGreeting)) != 0)
|
||||
{
|
||||
closesocket(clientSocket);
|
||||
|
||||
@ -7,13 +7,14 @@
|
||||
#define ID_FILE 40001
|
||||
#define ID_FILE_EXIT 40002
|
||||
#define ID_EDIT 40003
|
||||
#define ID_EDIT_SETROWS 40007
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_COMMAND_VALUE 40004
|
||||
#define _APS_NEXT_COMMAND_VALUE 40008
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
||||
18
syncdata.h
18
syncdata.h
@ -39,34 +39,34 @@ public:
|
||||
return lower->second.value + delta * d;
|
||||
};
|
||||
|
||||
bool isKeyFrame(int row) const
|
||||
bool isKeyFrame(size_t row) const
|
||||
{
|
||||
return keyFrames.find(row) != keyFrames.end();
|
||||
}
|
||||
|
||||
const KeyFrame *getKeyFrame(int row) const
|
||||
const KeyFrame *getKeyFrame(size_t row) const
|
||||
{
|
||||
KeyFrameContainer::const_iterator iter = keyFrames.find(row);
|
||||
if (iter == keyFrames.end()) return NULL;
|
||||
return &iter->second;
|
||||
}
|
||||
|
||||
void deleteKeyFrame(int row)
|
||||
void deleteKeyFrame(size_t row)
|
||||
{
|
||||
keyFrames.erase(row);
|
||||
}
|
||||
|
||||
void setKeyFrame(int row, const KeyFrame &keyFrame)
|
||||
|
||||
void setKeyFrame(size_t row, const KeyFrame &keyFrame)
|
||||
{
|
||||
keyFrames[row] = keyFrame;
|
||||
}
|
||||
|
||||
void setKeyFrame(int row, const float value)
|
||||
void setKeyFrame(size_t row, const float value)
|
||||
{
|
||||
keyFrames[row] = KeyFrame(value);
|
||||
}
|
||||
|
||||
int getFrameCount()
|
||||
|
||||
size_t getFrameCount() const
|
||||
{
|
||||
KeyFrameContainer::const_iterator iter = keyFrames.end();
|
||||
iter--;
|
||||
@ -74,7 +74,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
typedef std::map<int, struct KeyFrame> KeyFrameContainer;
|
||||
typedef std::map<size_t, struct KeyFrame> KeyFrameContainer;
|
||||
KeyFrameContainer keyFrames;
|
||||
};
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
#include "syncdata.h"
|
||||
#include <stack>
|
||||
#include <list>
|
||||
|
||||
class SyncEditData : public SyncData
|
||||
{
|
||||
@ -19,17 +20,17 @@ public:
|
||||
class EditCommand : public Command
|
||||
{
|
||||
public:
|
||||
EditCommand(int track, int row, bool existing, float value) : track(track), row(row), newValExisting(existing), newVal(value) {}
|
||||
EditCommand(size_t track, size_t row, bool existing, float value) : track(track), row(row), newValExisting(existing), newVal(value) {}
|
||||
~EditCommand() {}
|
||||
|
||||
virtual void exec(SyncEditData *data)
|
||||
{
|
||||
SyncTrack &track = data->getTrack(this->track);
|
||||
|
||||
|
||||
// store old state
|
||||
oldValExisting = track.isKeyFrame(row);
|
||||
if (oldValExisting) oldVal = track.getKeyFrame(row)->value;
|
||||
|
||||
|
||||
// update
|
||||
if (!newValExisting) track.deleteKeyFrame(row);
|
||||
else track.setKeyFrame(row, newVal);
|
||||
@ -38,37 +39,71 @@ public:
|
||||
virtual void undo(SyncEditData *data)
|
||||
{
|
||||
SyncTrack &track = data->getTrack(this->track);
|
||||
|
||||
|
||||
// un-update
|
||||
if (!oldValExisting) track.deleteKeyFrame(row);
|
||||
else track.setKeyFrame(row, oldVal);
|
||||
}
|
||||
|
||||
private:
|
||||
int track, row;
|
||||
size_t track, row;
|
||||
float newVal, oldVal;
|
||||
bool newValExisting, oldValExisting;
|
||||
};
|
||||
|
||||
|
||||
class MultiCommand : public Command
|
||||
{
|
||||
public:
|
||||
~MultiCommand()
|
||||
{
|
||||
std::list<Command*>::iterator it;
|
||||
for (it = commands.begin(); it != commands.end(); ++it)
|
||||
{
|
||||
delete *it;
|
||||
}
|
||||
commands.clear();
|
||||
}
|
||||
|
||||
void addEditCommand(Command *cmd)
|
||||
{
|
||||
commands.push_back(cmd);
|
||||
}
|
||||
|
||||
virtual void exec(SyncEditData *data)
|
||||
{
|
||||
std::list<Command*>::iterator it;
|
||||
for (it = commands.begin(); it != commands.end(); ++it) (*it)->exec(data);
|
||||
}
|
||||
|
||||
virtual void undo(SyncEditData *data)
|
||||
{
|
||||
std::list<Command*>::iterator it;
|
||||
for (it = commands.begin(); it != commands.end(); ++it) (*it)->undo(data);
|
||||
}
|
||||
|
||||
private:
|
||||
std::list<Command*> commands;
|
||||
};
|
||||
|
||||
void exec(Command *cmd)
|
||||
{
|
||||
undoStack.push(cmd);
|
||||
cmd->exec(this);
|
||||
clearRedoStack();
|
||||
}
|
||||
|
||||
|
||||
bool undo()
|
||||
{
|
||||
if (undoStack.size() == 0) return false;
|
||||
|
||||
Command *cmd = undoStack.top();
|
||||
undoStack.pop();
|
||||
|
||||
|
||||
redoStack.push(cmd);
|
||||
cmd->undo(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool redo()
|
||||
{
|
||||
if (redoStack.size() == 0) return false;
|
||||
@ -80,7 +115,7 @@ public:
|
||||
cmd->exec(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void clearRedoStack()
|
||||
{
|
||||
while (!redoStack.empty())
|
||||
@ -90,7 +125,7 @@ public:
|
||||
delete cmd;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
std::stack<Command*> undoStack;
|
||||
|
||||
@ -13,6 +13,8 @@ TrackView *trackView;
|
||||
HWND trackViewWin;
|
||||
HWND statusBarWin;
|
||||
|
||||
#include "network.h"
|
||||
|
||||
static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch(msg)
|
||||
@ -36,8 +38,8 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
||||
|
||||
int statwidths[] = { 100, -1 };
|
||||
SendMessage(statusBarWin, SB_SETPARTS, sizeof(statwidths) / sizeof(int), (LPARAM)statwidths);
|
||||
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)"Hi there :)");
|
||||
SendMessage(statusBarWin, SB_SETTEXT, 1, (LPARAM)"Hi there :)");
|
||||
SendMessage(statusBarWin, SB_SETTEXT, 0, (LPARAM)_T("Hi there :)"));
|
||||
SendMessage(statusBarWin, SB_SETTEXT, 1, (LPARAM)_T("Hi there :)"));
|
||||
}
|
||||
break;
|
||||
|
||||
@ -63,6 +65,7 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case ID_FILE_SAVE: /* meh.*/ break;
|
||||
case ID_FILE_EXIT: PostQuitMessage(0); break;
|
||||
case ID_EDIT_UNDO: SendMessage(trackViewWin, WM_UNDO, 0, 0); break;
|
||||
case ID_EDIT_REDO: SendMessage(trackViewWin, WM_REDO, 0, 0); break;
|
||||
case ID_EDIT_COPY: SendMessage(trackViewWin, WM_COPY, 0, 0); break;
|
||||
@ -72,6 +75,40 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
||||
printf("cmd %d %d\n", wParam, lParam);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_USER+1:
|
||||
{
|
||||
if (WSAGETSELECTERROR(lParam))
|
||||
{
|
||||
printf("ERR!\n");
|
||||
// error occurred
|
||||
WSACleanup ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("tjo %x %x\n", lParam, wParam);
|
||||
SOCKET serverSocket = (SOCKET)wParam;
|
||||
switch (WSAGETSELECTEVENT(lParam))
|
||||
{
|
||||
case FD_ACCEPT:
|
||||
printf("accept\n");
|
||||
{
|
||||
SOCKET clientSocket = clientConnect(serverSocket);
|
||||
if (INVALID_SOCKET != clientSocket)
|
||||
{
|
||||
unsigned char cmd = 0x1;
|
||||
send(clientSocket, (char*)&cmd, 1, 0);
|
||||
closesocket(clientSocket);
|
||||
}
|
||||
else
|
||||
{
|
||||
puts("accept failed!");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProc(hwnd, msg, wParam, lParam);
|
||||
@ -99,8 +136,6 @@ static ATOM registerMainWindowClass(HINSTANCE hInstance)
|
||||
return RegisterClassEx(&wc);
|
||||
}
|
||||
|
||||
#include "network.h"
|
||||
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
{
|
||||
HWND hwnd;
|
||||
@ -201,11 +236,15 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
|
||||
#if 1
|
||||
|
||||
printf("server socket %x\n", serverSocket);
|
||||
// WSAAsyncSelect(serverSocket, hwnd, WM_USER+1, FD_ACCEPT);
|
||||
|
||||
bool done = false;
|
||||
SOCKET clientSocket = INVALID_SOCKET;
|
||||
MSG msg;
|
||||
while (!done)
|
||||
{
|
||||
#if 1
|
||||
if (INVALID_SOCKET == clientSocket)
|
||||
{
|
||||
fd_set fds;
|
||||
@ -256,7 +295,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
closesocket(clientSocket);
|
||||
clientSocket = INVALID_SOCKET; */
|
||||
}
|
||||
|
||||
#endif
|
||||
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
|
||||
{
|
||||
if (!TranslateAccelerator(hwnd, accel, &msg))
|
||||
@ -266,6 +305,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
if (WM_QUIT == msg.message) done = true;
|
||||
}
|
||||
}
|
||||
Sleep(1);
|
||||
}
|
||||
|
||||
closesocket(serverSocket);
|
||||
|
||||
@ -85,6 +85,8 @@ BEGIN
|
||||
MENUITEM "&Copy\tCtrl+C", ID_EDIT_COPY
|
||||
MENUITEM "Cu&t\tCtrl+X", ID_EDIT_CUT
|
||||
MENUITEM "&Paste\tCtrl+V", ID_EDIT_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Set Rows", ID_EDIT_SETROWS
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
@ -11,7 +11,6 @@ static const int fontHeight = 16;
|
||||
static const int fontWidth = 6;
|
||||
|
||||
static const int trackWidth = fontWidth * 16;
|
||||
static const int rows = 0x80;
|
||||
static DWORD darken(DWORD col, float amt)
|
||||
{
|
||||
return RGB(GetRValue(col) * amt, GetGValue(col) * amt, GetBValue(col) * amt);
|
||||
@ -26,11 +25,12 @@ TrackView::TrackView()
|
||||
|
||||
editRow = 0;
|
||||
editTrack = 0;
|
||||
rows = 0x80;
|
||||
|
||||
selectStartTrack = selectStopTrack = 0;
|
||||
selectStartRow = selectStopRow = 0;
|
||||
selectActive = false;
|
||||
|
||||
|
||||
this->hwnd = NULL;
|
||||
|
||||
bgBaseBrush = GetSysColorBrush(COLOR_WINDOW); // CreateSolidBrush(RGB(0xff, 0xff, 0xff));
|
||||
@ -175,14 +175,14 @@ void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
||||
leftMargin.right = leftMarginWidth;
|
||||
leftMargin.top = getScreenY(row);
|
||||
leftMargin.bottom = leftMargin.top + fontHeight;
|
||||
|
||||
|
||||
if (!RectVisible(hdc, &leftMargin)) continue;
|
||||
|
||||
|
||||
HBRUSH fillBrush;
|
||||
if (row == editRow) fillBrush = editBrush;
|
||||
else fillBrush = GetSysColorBrush(COLOR_3DFACE);
|
||||
FillRect(hdc, &leftMargin, fillBrush);
|
||||
|
||||
|
||||
DrawEdge(hdc, &leftMargin, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_RIGHT | BF_BOTTOM | BF_TOP);
|
||||
// Rectangle( hdc, leftMargin.left, leftMargin.top, leftMargin.right, leftMargin.bottom + 1);
|
||||
if ((row % 16) == 0) SetTextColor(hdc, RGB(0, 0, 0));
|
||||
|
||||
@ -124,6 +124,8 @@ private:
|
||||
int windowWidth, windowHeight;
|
||||
int windowRows, windowTracks;
|
||||
|
||||
int rows;
|
||||
|
||||
SyncEditData *syncData;
|
||||
|
||||
std::basic_string<TCHAR> editString;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user