changing row count works \o/
This commit is contained in:
parent
ed688c55b7
commit
2a106f7949
@ -26,7 +26,7 @@ SOCKET clientConnect(SOCKET serverSocket)
|
||||
const char *expectedGreeting = clientGreeting;
|
||||
char recievedGreeting[128];
|
||||
|
||||
while(recv(clientSocket, recievedGreeting, int(strlen(expectedGreeting)), 0) < 0) Sleep(1);
|
||||
recv(clientSocket, recievedGreeting, int(strlen(expectedGreeting)), 0);
|
||||
|
||||
fprintf(stderr, "got: \"%s\"\n", recievedGreeting);
|
||||
if (strncmp(expectedGreeting, recievedGreeting, strlen(expectedGreeting)) != 0)
|
||||
|
||||
@ -4,6 +4,9 @@
|
||||
//
|
||||
#define IDR_ACCELERATOR 101
|
||||
#define IDR_MENU 102
|
||||
#define IDD_SETROWS 103
|
||||
#define IDC_EDIT 1002
|
||||
#define IDC_SETROWS_EDIT 1002
|
||||
#define ID_FILE 40001
|
||||
#define ID_FILE_EXIT 40002
|
||||
#define ID_EDIT 40003
|
||||
@ -13,9 +16,9 @@
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 103
|
||||
#define _APS_NEXT_RESOURCE_VALUE 104
|
||||
#define _APS_NEXT_COMMAND_VALUE 40008
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1003
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||
10
syncdata.h
10
syncdata.h
@ -37,7 +37,7 @@ public:
|
||||
// lerp, bitch
|
||||
float d = (time - lower->first) / (upper->first - lower->first);
|
||||
return lower->second.value + delta * d;
|
||||
};
|
||||
}
|
||||
|
||||
bool isKeyFrame(size_t row) const
|
||||
{
|
||||
@ -63,7 +63,7 @@ public:
|
||||
|
||||
void setKeyFrame(size_t row, const float value)
|
||||
{
|
||||
keyFrames[row] = KeyFrame(value);
|
||||
setKeyFrame(row, KeyFrame(value));
|
||||
}
|
||||
|
||||
size_t getFrameCount() const
|
||||
@ -74,6 +74,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
typedef std::map<size_t, struct KeyFrame> KeyFrameContainer;
|
||||
KeyFrameContainer keyFrames;
|
||||
};
|
||||
@ -98,9 +99,10 @@ public:
|
||||
return trackIter->second;
|
||||
}
|
||||
|
||||
size_t getTrackCount() { return tracks.size(); }
|
||||
size_t getTrackCount() const { return tracks.size(); }
|
||||
|
||||
// private:
|
||||
//private:
|
||||
typedef std::map<const std::basic_string<TCHAR>, SyncTrack> TrackContainer;
|
||||
TrackContainer tracks;
|
||||
};
|
||||
|
||||
|
||||
130
synctracker2.cpp
130
synctracker2.cpp
@ -13,8 +13,57 @@ TrackView *trackView;
|
||||
HWND trackViewWin;
|
||||
HWND statusBarWin;
|
||||
|
||||
#define WM_SETROWS (WM_USER+1)
|
||||
|
||||
#include "network.h"
|
||||
|
||||
static LRESULT CALLBACK setRowsDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
int *rows = (int*)lParam;
|
||||
assert(NULL != rows);
|
||||
|
||||
/* create row-string */
|
||||
char temp[256];
|
||||
_snprintf(temp, 256, "%d", *rows);
|
||||
|
||||
/* set initial row count */
|
||||
SetWindowText(GetDlgItem(hDlg, IDC_SETROWS_EDIT), temp);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
if (LOWORD(wParam) == IDOK)
|
||||
{
|
||||
/* get value */
|
||||
char temp[256];
|
||||
GetWindowText(GetDlgItem(hDlg, IDC_SETROWS_EDIT), temp, 256);
|
||||
int result = atoi(temp);
|
||||
|
||||
/* update editor */
|
||||
SendMessage(GetParent(hDlg), WM_SETROWS, 0, result);
|
||||
|
||||
/* end dialog */
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
return TRUE;
|
||||
}
|
||||
else if(LOWORD(wParam)== IDCANCEL)
|
||||
{
|
||||
EndDialog( hDlg, LOWORD(wParam));
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_CLOSE:
|
||||
EndDialog(hDlg, LOWORD(wParam));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch(msg)
|
||||
@ -61,6 +110,11 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
||||
SetFocus(trackViewWin); // needed to forward keyboard input
|
||||
break;
|
||||
|
||||
case WM_SETROWS:
|
||||
printf("rows: %d\n", int(lParam));
|
||||
trackView->setRows(int(lParam));
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
@ -71,45 +125,25 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
|
||||
case ID_EDIT_COPY: SendMessage(trackViewWin, WM_COPY, 0, 0); break;
|
||||
case ID_EDIT_CUT: SendMessage(trackViewWin, WM_CUT, 0, 0); break;
|
||||
case ID_EDIT_PASTE: SendMessage(trackViewWin, WM_PASTE, 0, 0); break;
|
||||
|
||||
case ID_EDIT_SETROWS:
|
||||
{
|
||||
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||
int rows = trackView->getRows();
|
||||
INT_PTR result = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_SETROWS), hwnd, (DLGPROC)setRowsDialogProc, (LPARAM)&rows);
|
||||
if (FAILED(result)) MessageBox(NULL, "unable to create dialog box", NULL, MB_OK);
|
||||
if (IDOK == result)
|
||||
{
|
||||
printf("result: %d\n", result);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
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);
|
||||
}
|
||||
@ -129,7 +163,7 @@ static ATOM registerMainWindowClass(HINSTANCE hInstance)
|
||||
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wc.hbrBackground = (HBRUSH)0;
|
||||
wc.lpszMenuName = (LPCSTR)IDR_MENU;
|
||||
wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU);
|
||||
wc.lpszClassName = mainWindowClassName;
|
||||
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
|
||||
|
||||
@ -138,7 +172,14 @@ static ATOM registerMainWindowClass(HINSTANCE hInstance)
|
||||
|
||||
int _tmain(int argc, _TCHAR* argv[])
|
||||
{
|
||||
HWND hwnd;
|
||||
#ifdef _DEBUG
|
||||
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
|
||||
_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_DEBUG);
|
||||
_CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_DEBUG);
|
||||
_CrtSetReportMode(_CRT_ASSERT, _CRTDBG_MODE_DEBUG);
|
||||
/* _CrtSetBreakAlloc(68); */
|
||||
#endif
|
||||
|
||||
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||
|
||||
#if 1
|
||||
@ -179,18 +220,19 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
SyncTrack &camXTrack = syncData.getTrack(_T("cam.x"));
|
||||
SyncTrack &camYTrack = syncData.getTrack(_T("cam.y"));
|
||||
SyncTrack &camZTrack = syncData.getTrack(_T("cam.z"));
|
||||
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
char temp[256];
|
||||
sprintf(temp, "gen %02d", i);
|
||||
_snprintf(temp, 256, "gen %02d", i);
|
||||
SyncTrack &temp2 = syncData.getTrack(temp);
|
||||
}
|
||||
|
||||
camXTrack.setKeyFrame(1, SyncTrack::KeyFrame(2.0f));
|
||||
camXTrack.setKeyFrame(4, SyncTrack::KeyFrame(3.0f));
|
||||
camXTrack.setKeyFrame(1, 2.0f);
|
||||
camXTrack.setKeyFrame(4, 3.0f);
|
||||
|
||||
camYTrack.setKeyFrame(0, SyncTrack::KeyFrame(100.0f));
|
||||
camYTrack.setKeyFrame(8, SyncTrack::KeyFrame(999.0f));
|
||||
camYTrack.setKeyFrame(0, 100.0f);
|
||||
camYTrack.setKeyFrame(8, 999.0f);
|
||||
|
||||
camYTrack.setKeyFrame(16, SyncTrack::KeyFrame(float(1E-5)));
|
||||
|
||||
@ -212,7 +254,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
trackView->setSyncData(&syncData);
|
||||
|
||||
// Step 2: Creating the Window
|
||||
hwnd = CreateWindowEx(
|
||||
HWND hwnd = CreateWindowEx(
|
||||
0,
|
||||
mainWindowClassName,
|
||||
_T("SyncTracker 3000"),
|
||||
@ -221,6 +263,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, // width, height
|
||||
NULL, NULL, hInstance, NULL
|
||||
);
|
||||
printf("main window: %p\n", hwnd);
|
||||
|
||||
if (NULL == hwnd)
|
||||
{
|
||||
@ -228,7 +271,7 @@ int _tmain(int argc, _TCHAR* argv[])
|
||||
return 0;
|
||||
}
|
||||
|
||||
HACCEL accel = LoadAccelerators(hInstance, (LPCSTR)IDR_ACCELERATOR);
|
||||
HACCEL accel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR));
|
||||
printf("accel: %p\n", accel);
|
||||
|
||||
ShowWindow(hwnd, TRUE);
|
||||
@ -237,7 +280,6 @@ 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;
|
||||
|
||||
@ -90,6 +90,40 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_SETROWS DIALOGEX 0, 0, 129, 27
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Set Rows"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
EDITTEXT IDC_SETROWS_EDIT,7,6,59,12,ES_AUTOHSCROLL | ES_NUMBER
|
||||
DEFPUSHBUTTON "OK",IDOK,72,6,50,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_SETROWS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 122
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 20
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // Norwegian (Bokmal) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
|
||||
@ -146,7 +146,6 @@ void TrackView::paintTopMargin(HDC hdc, RECT rcTracks)
|
||||
DrawEdge(hdc, &fillRect, BDR_RAISEDINNER | BDR_RAISEDOUTER, BF_ADJUST | BF_BOTTOM);
|
||||
FillRect(hdc, &fillRect, GetSysColorBrush(COLOR_3DFACE));
|
||||
ExcludeClipRect(hdc, topRightMargin.left, topRightMargin.top, topRightMargin.right, topRightMargin.bottom);
|
||||
|
||||
}
|
||||
|
||||
void TrackView::paintTracks(HDC hdc, RECT rcTracks)
|
||||
@ -529,6 +528,15 @@ static int getScrollPos(HWND hwnd, int bar)
|
||||
return int(si.nTrackPos);
|
||||
}
|
||||
|
||||
void TrackView::setRows(int rows)
|
||||
{
|
||||
int oldRows = getRows();
|
||||
this->rows = rows;
|
||||
InvalidateRect(getWin(), NULL, FALSE);
|
||||
setEditRow(min(editRow, rows - 1));
|
||||
}
|
||||
|
||||
|
||||
LRESULT TrackView::onVScroll(UINT sbCode, int newPos)
|
||||
{
|
||||
switch (sbCode)
|
||||
@ -638,7 +646,6 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags)
|
||||
switch (keyCode)
|
||||
{
|
||||
case VK_RETURN:
|
||||
{
|
||||
if (editString.size() > 0)
|
||||
{
|
||||
SyncEditData::EditCommand *cmd = new SyncEditData::EditCommand(
|
||||
@ -651,7 +658,6 @@ LRESULT TrackView::onKeyDown(UINT keyCode, UINT flags)
|
||||
invalidatePos(editTrack, editRow);
|
||||
}
|
||||
else MessageBeep(0);
|
||||
}
|
||||
break;
|
||||
|
||||
case VK_DELETE:
|
||||
@ -705,6 +711,7 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
|
||||
MessageBeep(0);
|
||||
break;
|
||||
}
|
||||
|
||||
case '0':
|
||||
case '1':
|
||||
case '2':
|
||||
@ -806,9 +813,8 @@ static LRESULT CALLBACK trackViewWindowProc(HWND hwnd, UINT msg, WPARAM wParam,
|
||||
break;
|
||||
|
||||
case WM_NCDESTROY:
|
||||
{
|
||||
ASSERT(NULL != trackView);
|
||||
|
||||
{
|
||||
// call the window proc and store away the return code
|
||||
LRESULT res = trackView->windowProc(hwnd, msg, wParam, lParam);
|
||||
|
||||
|
||||
@ -21,6 +21,9 @@ public:
|
||||
void setSyncData(SyncEditData *syncData) { this->syncData = syncData; }
|
||||
SyncEditData *getSyncData() { return syncData; }
|
||||
|
||||
void setRows(int rows);
|
||||
int getRows() const { return rows; }
|
||||
|
||||
private:
|
||||
// some nasty hackery to forward the window messages
|
||||
friend static LRESULT CALLBACK trackViewWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
@ -124,8 +127,6 @@ private:
|
||||
int windowWidth, windowHeight;
|
||||
int windowRows, windowTracks;
|
||||
|
||||
int rows;
|
||||
|
||||
SyncEditData *syncData;
|
||||
|
||||
std::basic_string<TCHAR> editString;
|
||||
@ -134,6 +135,7 @@ private:
|
||||
HBRUSH editBrush;
|
||||
|
||||
UINT clipboardFormat;
|
||||
int rows;
|
||||
};
|
||||
|
||||
ATOM registerTrackViewWindowClass(HINSTANCE hInstance);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user