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