Cosmetic changes in fsdk_define.h
[pdfium.git] / fpdfsdk / include / fx_systemhandler.h
1 // Copyright 2014 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_INCLUDE_FX_SYSTEMHANDLER_H_
8 #define FPDFSDK_INCLUDE_FX_SYSTEMHANDLER_H_
9
10 typedef void* FX_HWND;
11 typedef void* FX_HMENU;
12 typedef void (*TimerCallback)(int32_t idEvent);
13
14 typedef struct _FX_SYSTEMTIME {
15   _FX_SYSTEMTIME()
16       : wYear(0),
17         wMonth(0),
18         wDayOfWeek(0),
19         wDay(0),
20         wHour(0),
21         wMinute(0),
22         wSecond(0),
23         wMilliseconds(0) {}
24   FX_WORD wYear;
25   FX_WORD wMonth;
26   FX_WORD wDayOfWeek;
27   FX_WORD wDay;
28   FX_WORD wHour;
29   FX_WORD wMinute;
30   FX_WORD wSecond;
31   FX_WORD wMilliseconds;
32 } FX_SYSTEMTIME;
33
34 // cursor style
35 #define FXCT_ARROW 0
36 #define FXCT_NESW 1
37 #define FXCT_NWSE 2
38 #define FXCT_VBEAM 3
39 #define FXCT_HBEAM 4
40 #define FXCT_HAND 5
41
42 class IFX_SystemHandler {
43  public:
44   virtual ~IFX_SystemHandler() {}
45   virtual void InvalidateRect(FX_HWND hWnd, FX_RECT rect) = 0;
46   virtual void OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect) = 0;
47
48   virtual FX_BOOL IsSelectionImplemented() = 0;
49
50   virtual CFX_WideString GetClipboardText(FX_HWND hWnd) = 0;
51   virtual FX_BOOL SetClipboardText(FX_HWND hWnd, CFX_WideString string) = 0;
52
53   virtual void ClientToScreen(FX_HWND hWnd, int32_t& x, int32_t& y) = 0;
54   virtual void ScreenToClient(FX_HWND hWnd, int32_t& x, int32_t& y) = 0;
55
56   /*cursor style
57   FXCT_ARROW
58   FXCT_NESW
59   FXCT_NWSE
60   FXCT_VBEAM
61   FXCT_HBEAM
62   FXCT_HAND
63   */
64   virtual void SetCursor(int32_t nCursorType) = 0;
65
66   virtual FX_HMENU CreatePopupMenu() = 0;
67   virtual FX_BOOL AppendMenuItem(FX_HMENU hMenu,
68                                  int32_t nIDNewItem,
69                                  CFX_WideString string) = 0;
70   virtual FX_BOOL EnableMenuItem(FX_HMENU hMenu,
71                                  int32_t nIDItem,
72                                  FX_BOOL bEnabled) = 0;
73   virtual int32_t TrackPopupMenu(FX_HMENU hMenu,
74                                  int32_t x,
75                                  int32_t y,
76                                  FX_HWND hParent) = 0;
77   virtual void DestroyMenu(FX_HMENU hMenu) = 0;
78
79   virtual CFX_ByteString GetNativeTrueTypeFont(int32_t nCharset) = 0;
80   virtual FX_BOOL FindNativeTrueTypeFont(int32_t nCharset,
81                                          CFX_ByteString sFontFaceName) = 0;
82   virtual CPDF_Font* AddNativeTrueTypeFontToPDF(CPDF_Document* pDoc,
83                                                 CFX_ByteString sFontFaceName,
84                                                 uint8_t nCharset) = 0;
85
86   virtual int32_t SetTimer(int32_t uElapse, TimerCallback lpTimerFunc) = 0;
87   virtual void KillTimer(int32_t nID) = 0;
88
89   virtual FX_BOOL IsSHIFTKeyDown(FX_DWORD nFlag) = 0;
90   virtual FX_BOOL IsCTRLKeyDown(FX_DWORD nFlag) = 0;
91   virtual FX_BOOL IsALTKeyDown(FX_DWORD nFlag) = 0;
92   virtual FX_BOOL IsINSERTKeyDown(FX_DWORD nFlag) = 0;
93
94   virtual FX_SYSTEMTIME GetLocalTime() = 0;
95
96   virtual int32_t GetCharSet() = 0;
97   virtual void SetCharSet(int32_t nCharSet) = 0;
98 };
99
100 #endif  // FPDFSDK_INCLUDE_FX_SYSTEMHANDLER_H_