| Index: fpdfsdk/fsdk_mgr.cpp
|
| diff --git a/fpdfsdk/fsdk_mgr.cpp b/fpdfsdk/fsdk_mgr.cpp
|
| index cfb1b8a8b38152fc7d24a4d59e7e6437ab31e20d..4ab4850c4d477fe0e8c504cc9cff5a421cfb91c4 100644
|
| --- a/fpdfsdk/fsdk_mgr.cpp
|
| +++ b/fpdfsdk/fsdk_mgr.cpp
|
| @@ -33,194 +33,11 @@
|
| #include <ctime>
|
| #endif
|
|
|
| -namespace {
|
| -
|
| -int CharSet2CP(int charset) {
|
| - if (charset == 128)
|
| - return 932;
|
| - if (charset == 134)
|
| - return 936;
|
| - if (charset == 129)
|
| - return 949;
|
| - if (charset == 136)
|
| - return 950;
|
| - return 0;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| FPDF_WIDESTRING AsFPDFWideString(CFX_ByteString* bsUTF16LE) {
|
| return reinterpret_cast<FPDF_WIDESTRING>(
|
| bsUTF16LE->GetBuffer(bsUTF16LE->GetLength()));
|
| }
|
|
|
| -class CFX_SystemHandler : public IFX_SystemHandler {
|
| - public:
|
| - explicit CFX_SystemHandler(CPDFDoc_Environment* pEnv)
|
| - : m_pEnv(pEnv), m_nCharSet(-1) {}
|
| - ~CFX_SystemHandler() override {}
|
| -
|
| - public:
|
| - // IFX_SystemHandler
|
| - void InvalidateRect(FX_HWND hWnd, FX_RECT rect) override;
|
| - void OutputSelectedRect(void* pFormFiller, CFX_FloatRect& rect) override;
|
| - FX_BOOL IsSelectionImplemented() override;
|
| - CFX_WideString GetClipboardText(FX_HWND hWnd) override { return L""; }
|
| - FX_BOOL SetClipboardText(FX_HWND hWnd, CFX_WideString str) override {
|
| - return FALSE;
|
| - }
|
| - void ClientToScreen(FX_HWND hWnd, int32_t& x, int32_t& y) override {}
|
| - void ScreenToClient(FX_HWND hWnd, int32_t& x, int32_t& y) override {}
|
| - void SetCursor(int32_t nCursorType) override;
|
| - FX_HMENU CreatePopupMenu() override { return NULL; }
|
| - FX_BOOL AppendMenuItem(FX_HMENU hMenu,
|
| - int32_t nIDNewItem,
|
| - CFX_WideString str) override {
|
| - return FALSE;
|
| - }
|
| - FX_BOOL EnableMenuItem(FX_HMENU hMenu,
|
| - int32_t nIDItem,
|
| - FX_BOOL bEnabled) override {
|
| - return FALSE;
|
| - }
|
| - int32_t TrackPopupMenu(FX_HMENU hMenu,
|
| - int32_t x,
|
| - int32_t y,
|
| - FX_HWND hParent) override {
|
| - return -1;
|
| - }
|
| - void DestroyMenu(FX_HMENU hMenu) override {}
|
| - CFX_ByteString GetNativeTrueTypeFont(int32_t nCharset) override;
|
| - FX_BOOL FindNativeTrueTypeFont(int32_t nCharset,
|
| - CFX_ByteString sFontFaceName) override;
|
| - CPDF_Font* AddNativeTrueTypeFontToPDF(CPDF_Document* pDoc,
|
| - CFX_ByteString sFontFaceName,
|
| - uint8_t nCharset) override;
|
| - int32_t SetTimer(int32_t uElapse, TimerCallback lpTimerFunc) override;
|
| - void KillTimer(int32_t nID) override;
|
| - FX_BOOL IsSHIFTKeyDown(uint32_t nFlag) override {
|
| - return m_pEnv->FFI_IsSHIFTKeyDown(nFlag);
|
| - }
|
| - FX_BOOL IsCTRLKeyDown(uint32_t nFlag) override {
|
| - return m_pEnv->FFI_IsCTRLKeyDown(nFlag);
|
| - }
|
| - FX_BOOL IsALTKeyDown(uint32_t nFlag) override {
|
| - return m_pEnv->FFI_IsALTKeyDown(nFlag);
|
| - }
|
| - FX_BOOL IsINSERTKeyDown(uint32_t nFlag) override {
|
| - return m_pEnv->FFI_IsINSERTKeyDown(nFlag);
|
| - }
|
| - FX_SYSTEMTIME GetLocalTime() override;
|
| - int32_t GetCharSet() override { return m_nCharSet; }
|
| - void SetCharSet(int32_t nCharSet) override { m_nCharSet = nCharSet; }
|
| -
|
| - private:
|
| - CPDFDoc_Environment* m_pEnv;
|
| - int m_nCharSet;
|
| -};
|
| -
|
| -void CFX_SystemHandler::SetCursor(int32_t nCursorType) {
|
| - m_pEnv->FFI_SetCursor(nCursorType);
|
| -}
|
| -
|
| -void CFX_SystemHandler::InvalidateRect(FX_HWND hWnd, FX_RECT rect) {
|
| - CPDFSDK_Annot* pSDKAnnot = (CPDFSDK_Annot*)hWnd;
|
| - CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView();
|
| - UnderlyingPageType* pPage = pSDKAnnot->GetUnderlyingPage();
|
| - if (!pPage || !pPageView)
|
| - return;
|
| - CFX_Matrix page2device;
|
| - pPageView->GetCurrentMatrix(page2device);
|
| - CFX_Matrix device2page;
|
| - device2page.SetReverse(page2device);
|
| - FX_FLOAT left, top, right, bottom;
|
| - device2page.Transform((FX_FLOAT)rect.left, (FX_FLOAT)rect.top, left, top);
|
| - device2page.Transform((FX_FLOAT)rect.right, (FX_FLOAT)rect.bottom, right,
|
| - bottom);
|
| - CFX_FloatRect rcPDF(left, bottom, right, top);
|
| - rcPDF.Normalize();
|
| -
|
| - m_pEnv->FFI_Invalidate(pPage, rcPDF.left, rcPDF.top, rcPDF.right,
|
| - rcPDF.bottom);
|
| -}
|
| -void CFX_SystemHandler::OutputSelectedRect(void* pFormFiller,
|
| - CFX_FloatRect& rect) {
|
| - CFFL_FormFiller* pFFL = (CFFL_FormFiller*)pFormFiller;
|
| - if (pFFL) {
|
| - CFX_FloatPoint leftbottom = CFX_FloatPoint(rect.left, rect.bottom);
|
| - CFX_FloatPoint righttop = CFX_FloatPoint(rect.right, rect.top);
|
| - CFX_FloatPoint ptA = pFFL->PWLtoFFL(leftbottom);
|
| - CFX_FloatPoint ptB = pFFL->PWLtoFFL(righttop);
|
| - CPDFSDK_Annot* pAnnot = pFFL->GetSDKAnnot();
|
| - UnderlyingPageType* pPage = pAnnot->GetUnderlyingPage();
|
| - ASSERT(pPage);
|
| - m_pEnv->FFI_OutputSelectedRect(pPage, ptA.x, ptB.y, ptB.x, ptA.y);
|
| - }
|
| -}
|
| -
|
| -FX_BOOL CFX_SystemHandler::IsSelectionImplemented() {
|
| - if (m_pEnv) {
|
| - FPDF_FORMFILLINFO* pInfo = m_pEnv->GetFormFillInfo();
|
| - if (pInfo && pInfo->FFI_OutputSelectedRect)
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -
|
| -CFX_ByteString CFX_SystemHandler::GetNativeTrueTypeFont(int32_t nCharset) {
|
| - return "";
|
| -}
|
| -
|
| -FX_BOOL CFX_SystemHandler::FindNativeTrueTypeFont(
|
| - int32_t nCharset,
|
| - CFX_ByteString sFontFaceName) {
|
| - CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr();
|
| - if (!pFontMgr)
|
| - return FALSE;
|
| -
|
| - CFX_FontMapper* pFontMapper = pFontMgr->GetBuiltinMapper();
|
| - if (!pFontMapper)
|
| - return FALSE;
|
| -
|
| - if (pFontMapper->m_InstalledTTFonts.empty())
|
| - pFontMapper->LoadInstalledFonts();
|
| -
|
| - for (const auto& font : pFontMapper->m_InstalledTTFonts) {
|
| - if (font.Compare(sFontFaceName.AsStringC()))
|
| - return TRUE;
|
| - }
|
| -
|
| - return FALSE;
|
| -}
|
| -
|
| -CPDF_Font* CFX_SystemHandler::AddNativeTrueTypeFontToPDF(
|
| - CPDF_Document* pDoc,
|
| - CFX_ByteString sFontFaceName,
|
| - uint8_t nCharset) {
|
| - if (pDoc) {
|
| - CFX_Font* pFXFont = new CFX_Font();
|
| - pFXFont->LoadSubst(sFontFaceName, TRUE, 0, 0, 0, CharSet2CP(nCharset),
|
| - FALSE);
|
| - CPDF_Font* pFont = pDoc->AddFont(pFXFont, nCharset, FALSE);
|
| - delete pFXFont;
|
| - return pFont;
|
| - }
|
| -
|
| - return NULL;
|
| -}
|
| -
|
| -int32_t CFX_SystemHandler::SetTimer(int32_t uElapse,
|
| - TimerCallback lpTimerFunc) {
|
| - return m_pEnv->FFI_SetTimer(uElapse, lpTimerFunc);
|
| -}
|
| -void CFX_SystemHandler::KillTimer(int32_t nID) {
|
| - m_pEnv->FFI_KillTimer(nID);
|
| -}
|
| -
|
| -FX_SYSTEMTIME CFX_SystemHandler::GetLocalTime() {
|
| - return m_pEnv->FFI_GetLocalTime();
|
| -}
|
| -
|
| CPDFDoc_Environment::CPDFDoc_Environment(UnderlyingDocumentType* pDoc,
|
| FPDF_FORMFILLINFO* pFFinfo)
|
| : m_pInfo(pFFinfo), m_pSDKDoc(NULL), m_pUnderlyingDoc(pDoc) {
|
|
|