xref: /reactos/sdk/lib/conutils/pager.h (revision f982d77b)
1c2c66affSColin Finck /*
2c2c66affSColin Finck  * PROJECT:     ReactOS Console Utilities Library
34e697feeSHermès Bélusca-Maïto  * LICENSE:     GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4c2c66affSColin Finck  * PURPOSE:     Console/terminal paging functionality.
54e697feeSHermès Bélusca-Maïto  * COPYRIGHT:   Copyright 2017-2018 ReactOS Team
64e697feeSHermès Bélusca-Maïto  *              Copyright 2017-2018 Hermes Belusca-Maito
7c2c66affSColin Finck  */
8c2c66affSColin Finck 
9*f982d77bSHermès Bélusca-Maïto /**
10*f982d77bSHermès Bélusca-Maïto  * @file    pager.h
11*f982d77bSHermès Bélusca-Maïto  * @ingroup ConUtils
12*f982d77bSHermès Bélusca-Maïto  *
13*f982d77bSHermès Bélusca-Maïto  * @brief   Console/terminal paging functionality.
14*f982d77bSHermès Bélusca-Maïto  **/
15*f982d77bSHermès Bélusca-Maïto 
16c2c66affSColin Finck #ifndef __PAGER_H__
17c2c66affSColin Finck #define __PAGER_H__
18c2c66affSColin Finck 
194e697feeSHermès Bélusca-Maïto #pragma once
204e697feeSHermès Bélusca-Maïto 
21c2c66affSColin Finck #ifndef _UNICODE
22c2c66affSColin Finck #error The ConUtils library at the moment only supports compilation with _UNICODE defined!
23c2c66affSColin Finck #endif
24c2c66affSColin Finck 
251e87e2faSHermès Bélusca-Maïto #ifdef __cplusplus
261e87e2faSHermès Bélusca-Maïto extern "C" {
271e87e2faSHermès Bélusca-Maïto #endif
281e87e2faSHermès Bélusca-Maïto 
29c2c66affSColin Finck 
30c2c66affSColin Finck // #include <wincon.h>
31c2c66affSColin Finck 
32c2c66affSColin Finck 
33c2c66affSColin Finck typedef struct _CON_PAGER
34c2c66affSColin Finck {
35c2c66affSColin Finck     PCON_SCREEN Screen;
36c2c66affSColin Finck 
37c2c66affSColin Finck     // TODO: Add more properties. Maybe those extra parameters
38c2c66affSColin Finck     // of PAGE_PROMPT could go there?
39c2c66affSColin Finck 
40c2c66affSColin Finck     /* Used to count number of lines since last pause */
41c2c66affSColin Finck     DWORD LineCount;
42c2c66affSColin Finck } CON_PAGER, *PCON_PAGER;
43c2c66affSColin Finck 
44c2c66affSColin Finck #define INIT_CON_PAGER(pScreen)     {(pScreen), 0}
45c2c66affSColin Finck 
46c2c66affSColin Finck #define InitializeConPager(pPager, pScreen) \
47c2c66affSColin Finck do { \
48c2c66affSColin Finck     (pPager)->Screen = (pScreen);   \
49c2c66affSColin Finck     (pPager)->LineCount = 0;        \
50c2c66affSColin Finck } while (0)
51c2c66affSColin Finck 
524e697feeSHermès Bélusca-Maïto 
53c2c66affSColin Finck                                       // Pager,         Done,     Total
54c2c66affSColin Finck typedef BOOL (__stdcall *PAGE_PROMPT)(IN PCON_PAGER, IN DWORD, IN DWORD);
55c2c66affSColin Finck 
56c2c66affSColin Finck BOOL
57c2c66affSColin Finck ConWritePaging(
58c2c66affSColin Finck     IN PCON_PAGER Pager,
59c2c66affSColin Finck     IN PAGE_PROMPT PagePrompt,
60c2c66affSColin Finck     IN BOOL StartPaging,
61c2c66affSColin Finck     IN PTCHAR szStr,
62c2c66affSColin Finck     IN DWORD len);
63c2c66affSColin Finck 
64c2c66affSColin Finck BOOL
65c2c66affSColin Finck ConPutsPaging(
66c2c66affSColin Finck     IN PCON_PAGER Pager,
67c2c66affSColin Finck     IN PAGE_PROMPT PagePrompt,
68c2c66affSColin Finck     IN BOOL StartPaging,
69c2c66affSColin Finck     IN LPTSTR szStr);
70c2c66affSColin Finck 
71c2c66affSColin Finck BOOL
72c2c66affSColin Finck ConResPagingEx(
73c2c66affSColin Finck     IN PCON_PAGER Pager,
74c2c66affSColin Finck     IN PAGE_PROMPT PagePrompt,
75c2c66affSColin Finck     IN BOOL StartPaging,
76c2c66affSColin Finck     IN HINSTANCE hInstance OPTIONAL,
77c2c66affSColin Finck     IN UINT uID);
78c2c66affSColin Finck 
79c2c66affSColin Finck BOOL
80c2c66affSColin Finck ConResPaging(
81c2c66affSColin Finck     IN PCON_PAGER Pager,
82c2c66affSColin Finck     IN PAGE_PROMPT PagePrompt,
83c2c66affSColin Finck     IN BOOL StartPaging,
84c2c66affSColin Finck     IN UINT uID);
85c2c66affSColin Finck 
861e87e2faSHermès Bélusca-Maïto #ifdef __cplusplus
871e87e2faSHermès Bélusca-Maïto }
881e87e2faSHermès Bélusca-Maïto #endif
894e697feeSHermès Bélusca-Maïto 
90c2c66affSColin Finck #endif  /* __PAGER_H__ */
914e697feeSHermès Bélusca-Maïto 
924e697feeSHermès Bélusca-Maïto /* EOF */
93