// Copyright 2016 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef FPDFSDK_CFX_SYSTEMHANDLER_H_ #define FPDFSDK_CFX_SYSTEMHANDLER_H_ #include "core/fxcrt/include/fx_coordinates.h" #include "core/fxcrt/include/fx_system.h" using FX_HWND = void*; using FX_HMENU = void*; using TimerCallback = void (*)(int32_t idEvent); struct FX_SYSTEMTIME { FX_SYSTEMTIME() : wYear(0), wMonth(0), wDayOfWeek(0), wDay(0), wHour(0), wMinute(0), wSecond(0), wMilliseconds(0) {} uint16_t wYear; uint16_t wMonth; uint16_t wDayOfWeek; uint16_t wDay; uint16_t wHour; uint16_t wMinute; uint16_t wSecond; uint16_t wMilliseconds; }; // Cursor style. These must match the values in public/fpdf_formfill.h #define FXCT_ARROW 0 #define FXCT_NESW 1 #define FXCT_NWSE 2 #define FXCT_VBEAM 3 #define FXCT_HBEAM 4 #define FXCT_HAND 5 class CPDF_Document; class CPDF_Font; class CPDFDoc_Environment; class CFX_SystemHandler { public: explicit CFX_SystemHandler(CPDFDoc_Environment* pEnv) : m_pEnv(pEnv), m_nCharSet(-1) {} ~CFX_SystemHandler() {} void InvalidateRect(FX_HWND hWnd, FX_RECT rect); void OutputSelectedRect(void* pFormFiller, CFX_FloatRect& rect); bool IsSelectionImplemented() const; void SetCursor(int32_t nCursorType); bool FindNativeTrueTypeFont(int32_t nCharset, CFX_ByteString sFontFaceName); CPDF_Font* AddNativeTrueTypeFontToPDF(CPDF_Document* pDoc, CFX_ByteString sFontFaceName, uint8_t nCharset); int32_t SetTimer(int32_t uElapse, TimerCallback lpTimerFunc); void KillTimer(int32_t nID); bool IsSHIFTKeyDown(uint32_t nFlag) const; bool IsCTRLKeyDown(uint32_t nFlag) const; bool IsALTKeyDown(uint32_t nFlag) const; FX_SYSTEMTIME GetLocalTime(); int32_t GetCharSet() const { return m_nCharSet; } void SetCharSet(int32_t nCharSet) { m_nCharSet = nCharSet; } private: CPDFDoc_Environment* const m_pEnv; int m_nCharSet; }; #endif // FPDFSDK_CFX_SYSTEMHANDLER_H_