[CLIPBRD] Improvements for the Clipboard Viewer.
[reactos.git] / base / applications / clipbrd / scrollutils.h
1 /*
2 * PROJECT: ReactOS Clipboard Viewer
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Scrolling related helper functions.
5 * COPYRIGHT: Copyright 2015-2018 Ricardo Hanke
6 * Copyright 2015-2018 Hermes Belusca-Maito
7 */
8
9 #pragma once
10
11 typedef struct _SCROLLSTATE
12 {
13 UINT uLinesToScroll; /* Number of lines to scroll on one wheel rotation movement (== one "click" == WHEEL_DELTA ticks) */
14 INT iWheelCarryoverX; /* Unused wheel ticks (< WHEEL_DELTA) */
15 INT iWheelCarryoverY;
16 INT nPageX; /* Number of lines per page */
17 INT nPageY;
18 INT CurrentX; /* Current scrollbar position */
19 INT CurrentY;
20 INT MaxX; /* Maximum scrollbar position */
21 INT MaxY;
22 INT nMaxWidth; /* Maximum span of displayed data */
23 INT nMaxHeight;
24 } SCROLLSTATE, *LPSCROLLSTATE;
25
26 void OnKeyScroll(HWND hWnd, WPARAM wParam, LPARAM lParam, LPSCROLLSTATE state);
27 void OnMouseScroll(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LPSCROLLSTATE state);
28 void OnScroll(HWND hWnd, INT nBar, WPARAM wParam, INT iDelta, LPSCROLLSTATE state);
29
30 void UpdateLinesToScroll(LPSCROLLSTATE state);
31 void UpdateWindowScrollState(HWND hWnd, INT nMaxWidth, INT nMaxHeight, LPSCROLLSTATE lpState);