MCPcopy Create free account
hub / github.com/NetHack/NetHack / onMSNHCommand

Function onMSNHCommand

outdated/sys/wince/mhmap.c:441–541  ·  view source on GitHub ↗

on WM_COMMAND */

Source from the content-addressed store, hash-verified

439
440/* on WM_COMMAND */
441void
442onMSNHCommand(HWND hWnd, WPARAM wParam, LPARAM lParam)
443{
444 PNHMapWindow data;
445 RECT rt;
446
447 data = (PNHMapWindow) GetWindowLong(hWnd, GWL_USERDATA);
448 switch (wParam) {
449 case MSNH_MSG_PRINT_GLYPH: {
450 PMSNHMsgPrintGlyph msg_data = (PMSNHMsgPrintGlyph) lParam;
451 data->map[msg_data->x][msg_data->y] = msg_data->glyph;
452
453 /* invalidate the update area */
454 nhcoord2display(data, msg_data->x, msg_data->y, &rt);
455 InvalidateRect(hWnd, &rt, TRUE);
456 } break;
457
458 case MSNH_MSG_CLIPAROUND: {
459 PMSNHMsgClipAround msg_data = (PMSNHMsgClipAround) lParam;
460 int x, y;
461 BOOL scroll_x, scroll_y;
462 int mcam = iflags.wc_scroll_margin;
463
464 /* calculate if you should clip around */
465 scroll_x =
466 !GetNHApp()->bNoHScroll
467 && (msg_data->x < (data->xPos + mcam)
468 || msg_data->x > (data->xPos + data->xPageSize - mcam));
469 scroll_y =
470 !GetNHApp()->bNoVScroll
471 && (msg_data->y < (data->yPos + mcam)
472 || msg_data->y > (data->yPos + data->yPageSize - mcam));
473
474 mcam += iflags.wc_scroll_amount - 1;
475 /* get page size and center horizontally on x-position */
476 if (scroll_x) {
477 if (data->xPageSize <= 2 * mcam) {
478 x = max(0, min(COLNO, msg_data->x - data->xPageSize / 2));
479 } else if (msg_data->x < data->xPos + data->xPageSize / 2) {
480 x = max(0, min(COLNO, msg_data->x - mcam));
481 } else {
482 x = max(0, min(COLNO, msg_data->x - data->xPageSize + mcam));
483 }
484 SendMessage(hWnd, WM_HSCROLL, (WPARAM) MAKELONG(SB_THUMBTRACK, x),
485 (LPARAM) NULL);
486 }
487
488 /* get page size and center vertically on y-position */
489 if (scroll_y) {
490 if (data->yPageSize <= 2 * mcam) {
491 y = max(0, min(ROWNO, msg_data->y - data->yPageSize / 2));
492 } else if (msg_data->y < data->yPos + data->yPageSize / 2) {
493 y = max(0, min(ROWNO, msg_data->y - mcam));
494 } else {
495 y = max(0, min(ROWNO, msg_data->y - data->yPageSize + mcam));
496 }
497 SendMessage(hWnd, WM_VSCROLL, (WPARAM) MAKELONG(SB_THUMBTRACK, y),
498 (LPARAM) NULL);

Callers 1

MapWndProcFunction · 0.70

Calls 2

nhcoord2displayFunction · 0.70
GetNHAppFunction · 0.70

Tested by

no test coverage detected