| 79 | } |
| 80 | |
| 81 | void |
| 82 | mswin_map_stretch(HWND hWnd, LPSIZE lpsz, BOOL redraw) |
| 83 | { |
| 84 | PNHMapWindow data; |
| 85 | RECT client_rt; |
| 86 | SCROLLINFO si; |
| 87 | SIZE wnd_size; |
| 88 | LOGFONT lgfnt; |
| 89 | |
| 90 | /* check arguments */ |
| 91 | if (!IsWindow(hWnd) || !lpsz || lpsz->cx <= 0 || lpsz->cy <= 0) |
| 92 | return; |
| 93 | |
| 94 | /* calculate window size */ |
| 95 | GetClientRect(hWnd, &client_rt); |
| 96 | wnd_size.cx = client_rt.right - client_rt.left; |
| 97 | wnd_size.cy = client_rt.bottom - client_rt.top; |
| 98 | |
| 99 | /* set new screen tile size */ |
| 100 | data = (PNHMapWindow) GetWindowLong(hWnd, GWL_USERDATA); |
| 101 | data->xScrTile = |
| 102 | max(1, (data->bFitToScreenMode ? wnd_size.cx : lpsz->cx) / COLNO); |
| 103 | data->yScrTile = |
| 104 | max(1, (data->bFitToScreenMode ? wnd_size.cy : lpsz->cy) / ROWNO); |
| 105 | |
| 106 | /* set map origin point */ |
| 107 | data->map_orig.x = |
| 108 | max(0, client_rt.left + (wnd_size.cx - data->xScrTile * COLNO) / 2); |
| 109 | data->map_orig.y = |
| 110 | max(0, client_rt.top + (wnd_size.cy - data->yScrTile * ROWNO) / 2); |
| 111 | |
| 112 | data->map_orig.x -= data->map_orig.x % data->xScrTile; |
| 113 | data->map_orig.y -= data->map_orig.y % data->yScrTile; |
| 114 | |
| 115 | /* adjust horizontal scroll bar */ |
| 116 | if (data->bFitToScreenMode) |
| 117 | data->xPageSize = COLNO + 1; /* disable scroll bar */ |
| 118 | else |
| 119 | data->xPageSize = wnd_size.cx / data->xScrTile; |
| 120 | |
| 121 | if (data->xPageSize >= COLNO) { |
| 122 | data->xPos = 0; |
| 123 | GetNHApp()->bNoHScroll = TRUE; |
| 124 | } else { |
| 125 | GetNHApp()->bNoHScroll = FALSE; |
| 126 | data->xPos = max( |
| 127 | 0, min(COLNO - data->xPageSize + 1, u.ux - data->xPageSize / 2)); |
| 128 | } |
| 129 | |
| 130 | if (!GetNHApp()->bHideScrollBars) { |
| 131 | si.cbSize = sizeof(si); |
| 132 | si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS; |
| 133 | si.nMin = 0; |
| 134 | si.nMax = COLNO; |
| 135 | si.nPage = data->xPageSize; |
| 136 | si.nPos = data->xPos; |
| 137 | SetScrollInfo(hWnd, SB_HORZ, &si, TRUE); |
| 138 | } |
no test coverage detected