1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef FPDFSDK_CFX_SYSTEMHANDLER_H_ 8 #define FPDFSDK_CFX_SYSTEMHANDLER_H_ 9 10 #include "core/fxcrt/fx_coordinates.h" 11 #include "core/fxcrt/fx_system.h" 12 13 using TimerCallback = void (*)(int32_t idEvent); 14 15 struct FX_SYSTEMTIME { 16 FX_SYSTEMTIME() 17 : wYear(0), 18 wMonth(0), 19 wDayOfWeek(0), 20 wDay(0), 21 wHour(0), 22 wMinute(0), 23 wSecond(0), 24 wMilliseconds(0) {} 25 26 uint16_t wYear; 27 uint16_t wMonth; 28 uint16_t wDayOfWeek; 29 uint16_t wDay; 30 uint16_t wHour; 31 uint16_t wMinute; 32 uint16_t wSecond; 33 uint16_t wMilliseconds; 34 }; 35 36 // Cursor style. These must match the values in public/fpdf_formfill.h 37 #define FXCT_ARROW 0 38 #define FXCT_NESW 1 39 #define FXCT_NWSE 2 40 #define FXCT_VBEAM 3 41 #define FXCT_HBEAM 4 42 #define FXCT_HAND 5 43 44 class CFFL_FormFiller; 45 class CPDF_Document; 46 class CPDF_Font; 47 class CPDFSDK_FormFillEnvironment; 48 class CPDFSDK_Widget; 49 50 class CFX_SystemHandler { 51 public: 52 explicit CFX_SystemHandler(CPDFSDK_FormFillEnvironment* pFormFillEnv) 53 : m_pFormFillEnv(pFormFillEnv) {} 54 ~CFX_SystemHandler() {} 55 56 void InvalidateRect(CPDFSDK_Widget* widget, FX_RECT rect); 57 void OutputSelectedRect(CFFL_FormFiller* pFormFiller, CFX_FloatRect& rect); 58 bool IsSelectionImplemented() const; 59 60 void SetCursor(int32_t nCursorType); 61 62 bool FindNativeTrueTypeFont(CFX_ByteString sFontFaceName); 63 CPDF_Font* AddNativeTrueTypeFontToPDF(CPDF_Document* pDoc, 64 CFX_ByteString sFontFaceName, 65 uint8_t nCharset); 66 67 int32_t SetTimer(int32_t uElapse, TimerCallback lpTimerFunc); 68 void KillTimer(int32_t nID); 69 70 bool IsSHIFTKeyDown(uint32_t nFlag) const; 71 bool IsCTRLKeyDown(uint32_t nFlag) const; 72 bool IsALTKeyDown(uint32_t nFlag) const; 73 74 private: 75 CPDFSDK_FormFillEnvironment* const m_pFormFillEnv; 76 }; 77 78 #endif // FPDFSDK_CFX_SYSTEMHANDLER_H_ 79